From be19059068557c44cbdcbcf5ad509c3312b25763 Mon Sep 17 00:00:00 2001 From: "Brian E. Granger" Date: Wed, 18 May 2016 13:35:32 -0700 Subject: [PATCH] Static rendering is working! --- package.json | 2 +- src/embed.css | 7 ---- src/index.js | 88 ++++++++++++++++++++++++++++++++++------ vega/__init__.py | 12 ++---- vega/static/index.js | 38 ++++++++--------- vega/static/index.js.map | 2 +- vega/static/vega-lite.js | 2 +- vega/vegalite.py | 11 ++++- 8 files changed, 110 insertions(+), 52 deletions(-) delete mode 100644 src/embed.css diff --git a/package.json b/package.json index 95841c2d..e00f8fd9 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "ipyvega", + "name": "jupyter-vega", "version": "0.2.0", "description": "iPython/Jupyter notebook module for [Vega](/vega/vega-lite), and [Vega-Lite](/vega/vega-lite), [Polestar](/vega/polestar), and [Voyager](/vega/voyager).", "repository": { diff --git a/src/embed.css b/src/embed.css deleted file mode 100644 index 776fcc25..00000000 --- a/src/embed.css +++ /dev/null @@ -1,7 +0,0 @@ -.vega-embed svg, .vega-embed canvas { - border: 1px dotted gray; -} - -.vega-embed .vega-actions a { - margin-right: 6px; -} diff --git a/src/index.js b/src/index.js index 565d5f10..228a6004 100644 --- a/src/index.js +++ b/src/index.js @@ -1,28 +1,92 @@ -// require('./embed.css'); - var embed = require('vega-embed'); var $ = require('jquery'); var events = require('base/js/events'); +// Polyfill findIndex if needed +if (!Array.prototype.findIndex) { + Array.prototype.findIndex = function(predicate) { + if (this === null) { + throw new TypeError('Array.prototype.findIndex called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return i; + } + } + return -1; + }; +} + +function javascriptIndex(selector, outputs) { + // Return the index in the output array of the JS repr of this viz + var index = outputs.findIndex(function(item, index, array) { + if (item['metadata']['jupyter-vega']===selector && + item['data']['application/javascript']!==undefined) { + return true; + } else { + return false; + } + }); + return index; +} + +function imageIndex(selector, outputs) { + // Return the index in the output array of the PNG repr of this viz + var index = outputs.findIndex(function(item, index, array) { + if (item['metadata']['jupyter-vega']===selector && + item['data']['image/png']!==undefined) { + return true; + } else { + return false; + } + }); + return index; +} + function render(selector, spec, type, output_area) { - var el = $.find(selector); if (type) { var embedSpec = { mode: type, spec: spec } + // Find the indices of this visualizations JS and PNG + // representation. + var imgIndex = imageIndex(selector, output_area.outputs); + var jsIndex = javascriptIndex(selector, output_area.outputs); + + // If we have already rendered a static image, don't render + // the JS version or append a new PNG version + if (imgIndex>-1 && jsIndex>-1 && imgIndex===(jsIndex+1)) { + return; + } + + // Never been rendered, so render JS and append the PNG to the + // outputs for the cell + var el = $.find(selector); embed(el[0], embedSpec, function(error, result) { - console.log(error, result); var imageData = result.view.toImageURL(); - var output = { - data: { - "image/png": imageData.split(",")[1] - }, - metadata: {}, - output_type: "display_data" - }; - output_area.append_output(output); + if (output_area!==undefined) { + var output = { + data: { + "image/png": imageData.split(",")[1] + }, + metadata: {'jupyter-vega': selector}, + output_type: "display_data" + }; + // This appends the PNG output, but doesn't render it this time + // as the JS version will be rendered already. + output_area.outputs.push(output); + } }); } } diff --git a/vega/__init__.py b/vega/__init__.py index 06ee9e87..b9296ee4 100644 --- a/vega/__init__.py +++ b/vega/__init__.py @@ -3,22 +3,16 @@ from warnings import warn -def _jupyter_server_extension_paths(): - return [{ - "module": "vega" - }] - - -# Jupyter Extension points def _jupyter_nbextension_paths(): + """Return metadata for the jupyter-vega nbextension.""" return [dict( section="notebook", # the path is relative to the `vega` directory src="static", # directory in the `nbextension/` namespace - dest="vega", + dest="jupyter-vega", # _also_ in the `nbextension/` namespace - require="vega/index")] + require="jupyter-vega/index")] def find_static_assets(): diff --git a/vega/static/index.js b/vega/static/index.js index e97a9f61..3f547012 100644 --- a/vega/static/index.js +++ b/vega/static/index.js @@ -1,30 +1,30 @@ -define(["jquery","base/js/events"],function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){function r(t,e,n,r){var o=a.find(t);if(n){var u={mode:n,spec:e};i(o[0],u,function(t,e){console.log(t,e);var n=e.view.toImageURL(),i={data:{"image/png":n.split(",")[1]},metadata:{},output_type:"display_data"};r.append_output(i)})}}var i=n(1),a=n(207);n(208);e.render=r},function(t,e,n){function r(t,e,n,r){u.util.load({url:t},function(a,o){if(a||!o)console.error(a||"No data found at "+t);else{var s=e?u.util.extend({source:o},e):JSON.parse(o);i(n,s,r)}})}function i(t,e,n){var s,f,p,g=n||function(){},m=[];try{if(u.util.isString(e))return r(e,null,t,n);if(e.source)s=e.source,f=JSON.parse(s);else if(e.spec)f=e.spec,s=JSON.stringify(f,null,2);else{if(e.url)return r(e.url,e,t,n);f=e,s=JSON.stringify(f,null,2),e={spec:f,actions:!1}}p=h[e.mode]||h.vega,f=d[p](f);var v=o.select(t).classed("vega-embed",!0).html("");if(e.parameters){var y=e.parameter_el?o.select(e.parameter_el):v,x=y.append("div").attr("class","vega-params");m=e.parameters.map(function(t){return l.init(x,t,f)})}}catch(_){g(_)}u.parse.spec(f,function(n,r){if(n)return void g(n);try{var u=e.renderer||"canvas",h=e.actions||{},d=r({el:t,data:e.data||void 0,renderer:u});if(e.actions!==!1){var y=v.append("div").attr("class","vega-actions");if(h["export"]!==!1){var x="canvas"===u?"png":"svg";y.append("a").text("Export as "+x.toUpperCase()).attr("href","#").attr("target","_blank").attr("download",(f.name||"vega")+"."+x).on("mousedown",function(){this.href=d.toImageURL(x),o.event.preventDefault()})}h.source!==!1&&y.append("a").text("View Source").attr("href","#").on("click",function(){a(s),o.event.preventDefault()}),h.editor!==!1&&y.append("a").text("Open in Vega Editor").attr("href","#").on("click",function(){c(window,i.config.editor_url,{spec:s,mode:p}),o.event.preventDefault()})}m.forEach(function(t){l.bind(t,d)}),d.update(),g(null,{view:d,spec:f})}catch(_){g(_)}})}function a(t){var e=""+f.source_header+'
',n="
"+f.source_footer+"",r=window.open("");r.document.write(e+t+n),r.document.title="Vega JSON Source"}var o=n(2),u=n(3),s=n(162),l=n(205),c=n(206),f={editor_url:"http://vega.github.io/vega-editor/",source_header:"",source_footer:""},h={vega:"vega","vega-lite":"vega-lite"},d={vega:function(t){return t},"vega-lite":function(t){return s.compile(t).spec}};i.config=f,t.exports=i},function(t,e,n){var r,i;!function(){function a(t){return t&&(t.ownerDocument||t.document||t).documentElement}function o(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function u(t,e){return e>t?-1:t>e?1:t>=e?0:NaN}function s(t){return null===t?NaN:+t}function l(t){return!isNaN(t)}function c(t){return{left:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}}function f(t){return t.length}function h(t){for(var e=1;t*e%1;)e*=10;return e}function d(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function p(){this._=Object.create(null)}function g(t){return(t+="")===So||t[0]===Ao?Ao+t:t}function m(t){return(t+="")[0]===Ao?t.slice(1):t}function v(t){return g(t)in this._}function y(t){return(t=g(t))in this._&&delete this._[t]}function x(){var t=[];for(var e in this._)t.push(m(e));return t}function _(){var t=0;for(var e in this._)++t;return t}function b(){for(var t in this._)return!1;return!0}function M(){this._=Object.create(null)}function w(t){return t}function k(t,e,n){return function(){var r=n.apply(e,arguments);return r===e?t:r}}function E(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,r=To.length;r>n;++n){var i=To[n]+e;if(i in t)return i}}function S(){}function A(){}function T(t){function e(){for(var e,r=n,i=-1,a=r.length;++in;n++)for(var i,a=t[n],o=0,u=a.length;u>o;o++)(i=a[o])&&e(i,o,n);return t}function G(t){return No(t,Po),t}function Z(t){var e,n;return function(r,i,a){var o,u=t[a].update,s=u.length;for(a!=n&&(n=a,e=0),i>=e&&(e=i+1);!(o=u[e])&&++e0&&(t=t.slice(0,u));var l=zo.get(t);return l&&(t=l,s=K),u?e?i:r:e?S:a}function Q(t,e){return function(n){var r=ho.event;ho.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{ho.event=r}}}function K(t,e){var n=Q(t,e);return function(t){var e=this,r=t.relatedTarget;r&&(r===e||8&r.compareDocumentPosition(e))||n.call(e,t)}}function tt(t){var e=".dragsuppress-"+ ++qo,n="click"+e,r=ho.select(o(t)).on("touchmove"+e,O).on("dragstart"+e,O).on("selectstart"+e,O);if(null==jo&&(jo="onselectstart"in t?!1:E(t.style,"userSelect")),jo){var i=a(t).style,u=i[jo];i[jo]="none"}return function(t){if(r.on(e,null),jo&&(i[jo]=u),t){var a=function(){r.on(n,null)};r.on(n,function(){O(),a()},!0),setTimeout(a,0)}}}function et(t,e){e.changedTouches&&(e=e.changedTouches[0]);var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();if(0>$o){var i=o(t);if(i.scrollX||i.scrollY){n=ho.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=n[0][0].getScreenCTM();$o=!(a.f||a.e),n.remove()}}return $o?(r.x=e.pageX,r.y=e.pageY):(r.x=e.clientX,r.y=e.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var u=t.getBoundingClientRect();return[e.clientX-u.left-t.clientLeft,e.clientY-u.top-t.clientTop]}function nt(){return ho.event.changedTouches[0].identifier}function rt(t){return t>0?1:0>t?-1:0}function it(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function at(t){return t>1?0:-1>t?Ho:Math.acos(t)}function ot(t){return t>1?Xo:-1>t?-Xo:Math.asin(t)}function ut(t){return((t=Math.exp(t))-1/t)/2}function st(t){return((t=Math.exp(t))+1/t)/2}function lt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ct(t){return(t=Math.sin(t/2))*t}function ft(){}function ht(t,e,n){return this instanceof ht?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof ht?new ht(t.h,t.s,t.l):St(""+t,At,ht):new ht(t,e,n)}function dt(t,e,n){function r(t){return t>360?t-=360:0>t&&(t+=360),60>t?a+(o-a)*t/60:180>t?o:240>t?a+(o-a)*(240-t)/60:a}function i(t){return Math.round(255*r(t))}var a,o;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:0>e?0:e>1?1:e,n=0>n?0:n>1?1:n,o=.5>=n?n*(1+e):n+e-n*e,a=2*n-o,new Mt(i(t+120),i(t),i(t-120))}function pt(t,e,n){return this instanceof pt?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof pt?new pt(t.h,t.c,t.l):t instanceof mt?yt(t.l,t.a,t.b):yt((t=Tt((t=ho.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new pt(t,e,n)}function gt(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new mt(n,Math.cos(t*=Wo)*e,Math.sin(t)*e)}function mt(t,e,n){return this instanceof mt?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof mt?new mt(t.l,t.a,t.b):t instanceof pt?gt(t.h,t.c,t.l):Tt((t=Mt(t)).r,t.g,t.b):new mt(t,e,n)}function vt(t,e,n){var r=(t+16)/116,i=r+e/500,a=r-n/200;return i=xt(i)*au,r=xt(r)*ou,a=xt(a)*uu,new Mt(bt(3.2404542*i-1.5371385*r-.4985314*a),bt(-.969266*i+1.8760108*r+.041556*a),bt(.0556434*i-.2040259*r+1.0572252*a))}function yt(t,e,n){return t>0?new pt(Math.atan2(n,e)*Go,Math.sqrt(e*e+n*n),t):new pt(NaN,NaN,t)}function xt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function _t(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function bt(t){return Math.round(255*(.00304>=t?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function Mt(t,e,n){return this instanceof Mt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof Mt?new Mt(t.r,t.g,t.b):St(""+t,Mt,dt):new Mt(t,e,n)}function wt(t){return new Mt(t>>16,t>>8&255,255&t)}function kt(t){return wt(t)+""}function Et(t){return 16>t?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function St(t,e,n){var r,i,a,o=0,u=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return n(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(Nt(i[0]),Nt(i[1]),Nt(i[2]))}return(a=cu.get(t))?e(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o=o>>4|o,u=240&a,u=u>>4|u,s=15&a,s=s<<4|s):7===t.length&&(o=(16711680&a)>>16,u=(65280&a)>>8,s=255&a)),e(o,u,s))}function At(t,e,n){var r,i,a=Math.min(t/=255,e/=255,n/=255),o=Math.max(t,e,n),u=o-a,s=(o+a)/2;return u?(i=.5>s?u/(o+a):u/(2-o-a),r=t==o?(e-n)/u+(n>e?6:0):e==o?(n-t)/u+2:(t-e)/u+4,r*=60):(r=NaN,i=s>0&&1>s?0:r),new ht(r,i,s)}function Tt(t,e,n){t=Ot(t),e=Ot(e),n=Ot(n);var r=_t((.4124564*t+.3575761*e+.1804375*n)/au),i=_t((.2126729*t+.7151522*e+.072175*n)/ou),a=_t((.0193339*t+.119192*e+.9503041*n)/uu);return mt(116*i-16,500*(r-i),200*(i-a))}function Ot(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Nt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function Lt(t){return"function"==typeof t?t:function(){return t}}function Ct(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=null),Rt(e,n,t,r)}}function Rt(t,e,n,r){function i(){var t,e=s.status;if(!e&&It(s)||e>=200&&300>e||304===e){try{t=n.call(a,s)}catch(r){return void o.error.call(a,r)}o.load.call(a,t)}else o.error.call(a,s)}var a={},o=ho.dispatch("beforesend","progress","load","error"),u={},s=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(t)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=i:s.onreadystatechange=function(){s.readyState>3&&i()},s.onprogress=function(t){var e=ho.event;ho.event=t;try{o.progress.call(a,s)}finally{ho.event=e}},a.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?u[t]:(null==e?delete u[t]:u[t]=e+"",a)},a.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",a):e},a.responseType=function(t){return arguments.length?(l=t,a):l},a.response=function(t){return n=t,a},["get","post"].forEach(function(t){a[t]=function(){return a.send.apply(a,[t].concat(go(arguments)))}}),a.send=function(n,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),s.open(n,t,!0),null==e||"accept"in u||(u.accept=e+",*/*"),s.setRequestHeader)for(var c in u)s.setRequestHeader(c,u[c]);return null!=e&&s.overrideMimeType&&s.overrideMimeType(e),null!=l&&(s.responseType=l),null!=i&&a.on("error",i).on("load",function(t){i(null,t)}),o.beforesend.call(a,s),s.send(null==r?null:r),a},a.abort=function(){return s.abort(),a},ho.rebind(a,o,"on"),null==r?a:a.get(Dt(r))}function Dt(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function It(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Ut(t,e,n){var r=arguments.length;2>r&&(e=0),3>r&&(n=Date.now());var i=n+e,a={c:t,t:i,n:null};return hu?hu.n=a:fu=a,hu=a,du||(pu=clearTimeout(pu),du=1,gu(Pt)),a}function Pt(){var t=zt(),e=jt()-t;e>24?(isFinite(e)&&(clearTimeout(pu),pu=setTimeout(Pt,e)),du=0):(du=1,gu(Pt))}function zt(){for(var t=Date.now(),e=fu;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function jt(){for(var t,e=fu,n=1/0;e;)e.c?(e.t8?function(t){return t/n}:function(t){return t*n},symbol:t}}function Ft(t){var e=t.decimal,n=t.thousands,r=t.grouping,i=t.currency,a=r&&n?function(t,e){for(var i=t.length,a=[],o=0,u=r[0],s=0;i>0&&u>0&&(s+u+1>e&&(u=Math.max(1,e-s)),a.push(t.substring(i-=u,i+u)),!((s+=u+1)>e));)u=r[o=(o+1)%r.length];return a.reverse().join(n)}:w;return function(t){var n=vu.exec(t),r=n[1]||" ",o=n[2]||">",u=n[3]||"-",s=n[4]||"",l=n[5],c=+n[6],f=n[7],h=n[8],d=n[9],p=1,g="",m="",v=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),d){case"n":f=!0,d="g";break;case"%":p=100,m="%",d="f";break;case"p":p=100,m="%",d="r";break;case"b":case"o":case"x":case"X":"#"===s&&(g="0"+d.toLowerCase());case"c":y=!1;case"d":v=!0,h=0;break;case"s":p=-1,d="r"}"$"===s&&(g=i[0],m=i[1]),"r"!=d||h||(d="g"),null!=h&&("g"==d?h=Math.max(1,Math.min(21,h)):"e"!=d&&"f"!=d||(h=Math.max(0,Math.min(20,h)))),d=yu.get(d)||Yt;var x=l&&f;return function(t){var n=m;if(v&&t%1)return"";var i=0>t||0===t&&0>1/t?(t=-t,"-"):"-"===u?"":u;if(0>p){var s=ho.formatPrefix(t,h);t=s.scale(t),n=s.symbol+m}else t*=p;t=d(t,h);var _,b,M=t.lastIndexOf(".");if(0>M){var w=y?t.lastIndexOf("e"):-1;0>w?(_=t,b=""):(_=t.substring(0,w),b=t.substring(w))}else _=t.substring(0,M),b=e+t.substring(M+1);!l&&f&&(_=a(_,1/0));var k=g.length+_.length+b.length+(x?0:i.length),E=c>k?new Array(k=c-k+1).join(r):"";return x&&(_=a(E+_,E.length?c-b.length:1/0)),i+=g,t=_+b,("<"===o?i+t+E:">"===o?E+i+t:"^"===o?E.substring(0,k>>=1)+i+t+E.substring(k):i+(x?t:E+t))+n}}}function Yt(t){return t+""}function Ht(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Bt(t,e,n){function r(e){var n=t(e),r=a(n,1);return r-e>e-n?n:r}function i(n){return e(n=t(new _u(n-1)),1),n}function a(t,n){return e(t=new _u(+t),n),t}function o(t,r,a){var o=i(t),u=[];if(a>1)for(;r>o;)n(o)%a||u.push(new Date(+o)),e(o,1);else for(;r>o;)u.push(new Date(+o)),e(o,1);return u}function u(t,e,n){try{_u=Ht;var r=new Ht;return r._=t,o(r,e,n)}finally{_u=Date}}t.floor=t,t.round=r,t.ceil=i,t.offset=a,t.range=o;var s=t.utc=Vt(t);return s.floor=s,s.round=Vt(r),s.ceil=Vt(i),s.offset=Vt(a),s.range=u,t}function Vt(t){return function(e,n){try{_u=Ht;var r=new Ht;return r._=e,t(r,n)._}finally{_u=Date}}}function Xt(t){function e(t){function e(e){for(var n,i,a,o=[],u=-1,s=0;++uu;){if(r>=l)return-1;if(i=e.charCodeAt(u++),37===i){if(o=e.charAt(u++),a=O[o in Mu?e.charAt(u++):o],!a||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function r(t,e,n){M.lastIndex=0;var r=M.exec(e.slice(n));return r?(t.w=w.get(r[0].toLowerCase()),n+r[0].length):-1}function i(t,e,n){_.lastIndex=0;var r=_.exec(e.slice(n));return r?(t.w=b.get(r[0].toLowerCase()),n+r[0].length):-1}function a(t,e,n){S.lastIndex=0;var r=S.exec(e.slice(n));return r?(t.m=A.get(r[0].toLowerCase()),n+r[0].length):-1}function o(t,e,n){k.lastIndex=0;var r=k.exec(e.slice(n));return r?(t.m=E.get(r[0].toLowerCase()),n+r[0].length):-1}function u(t,e,r){return n(t,T.c.toString(),e,r)}function s(t,e,r){return n(t,T.x.toString(),e,r)}function l(t,e,r){return n(t,T.X.toString(),e,r)}function c(t,e,n){var r=x.get(e.slice(n,n+=2).toLowerCase());return null==r?-1:(t.p=r,n)}var f=t.dateTime,h=t.date,d=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{_u=Ht;var e=new _u;return e._=t,r(e)}finally{_u=Date}}var r=e(t);return n.parse=function(t){try{_u=Ht;var e=r.parse(t);return e&&e._}finally{_u=Date}},n.toString=r.toString,n},e.multi=e.utc.multi=de;var x=ho.map(),_=Gt(g),b=Zt(g),M=Gt(m),w=Zt(m),k=Gt(v),E=Zt(v),S=Gt(y),A=Zt(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var T={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(f),d:function(t,e){return Wt(t.getDate(),e,2)},e:function(t,e){return Wt(t.getDate(),e,2)},H:function(t,e){return Wt(t.getHours(),e,2)},I:function(t,e){return Wt(t.getHours()%12||12,e,2)},j:function(t,e){return Wt(1+xu.dayOfYear(t),e,3)},L:function(t,e){return Wt(t.getMilliseconds(),e,3)},m:function(t,e){return Wt(t.getMonth()+1,e,2)},M:function(t,e){return Wt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Wt(t.getSeconds(),e,2)},U:function(t,e){return Wt(xu.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Wt(xu.mondayOfYear(t),e,2)},x:e(h),X:e(d),y:function(t,e){return Wt(t.getFullYear()%100,e,2)},Y:function(t,e){return Wt(t.getFullYear()%1e4,e,4)},Z:fe,"%":function(){return"%"}},O={a:r,A:i,b:a,B:o,c:u,d:ae,e:ae,H:ue,I:ue,j:oe,L:ce,m:ie,M:se,p:c,S:le,U:Qt,w:Jt,W:Kt,x:s,X:l,y:ee,Y:te,Z:ne,"%":he};return e}function Wt(t,e,n){var r=0>t?"-":"",i=(r?-t:t)+"",a=i.length;return r+(n>a?new Array(n-a+1).join(e)+i:i)}function Gt(t){return new RegExp("^(?:"+t.map(ho.requote).join("|")+")","i")}function Zt(t){for(var e=new p,n=-1,r=t.length;++n68?1900:2e3)}function ie(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ae(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function oe(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.j=+r[0],n+r[0].length):-1}function ue(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function se(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function le(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function ce(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function fe(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",r=Eo(e)/60|0,i=Eo(e)%60;return n+Wt(r,"0",2)+Wt(i,"0",2)}function he(t,e,n){ku.lastIndex=0;var r=ku.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function de(t){for(var e=t.length,n=-1;++n=0?1:-1,u=o*n,s=Math.cos(e),l=Math.sin(e),c=a*l,f=i*s+c*Math.cos(u),h=c*o*Math.sin(u);Nu.add(Math.atan2(h,f)),r=t,i=s,a=l}var e,n,r,i,a;Lu.point=function(o,u){Lu.point=t,r=(e=o)*Wo,i=Math.cos(u=(n=u)*Wo/2+Ho/4),a=Math.sin(u)},Lu.lineEnd=function(){t(e,n)}}function _e(t){var e=t[0],n=t[1],r=Math.cos(n);return[r*Math.cos(e),r*Math.sin(e),Math.sin(n)]}function be(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Me(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function we(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ke(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Ee(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Se(t){return[Math.atan2(t[1],t[0]),ot(t[2])]}function Ae(t,e){return Eo(t[0]-e[0])u;++u)i.point((n=t[u])[0],n[1]);return void i.lineEnd()}var s=new Pe(n,t,null,!0),l=new Pe(n,null,s,!1);s.o=l,a.push(s),o.push(l),s=new Pe(r,t,null,!1),l=new Pe(r,null,s,!0),s.o=l,a.push(s),o.push(l)}}),o.sort(e),Ue(a),Ue(o),a.length){for(var u=0,s=n,l=o.length;l>u;++u)o[u].e=s=!s;for(var c,f,h=a[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;c=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(var u=0,l=c.length;l>u;++u)i.point((f=c[u])[0],f[1]);else r(d.x,d.n.x,1,i);d=d.n}else{if(p){c=d.p.z;for(var u=c.length-1;u>=0;--u)i.point((f=c[u])[0],f[1])}else r(d.x,d.p.x,-1,i);d=d.p}d=d.o,c=d.z,p=!p}while(!d.v);i.lineEnd()}}}function Ue(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r0){for(b||(a.polygonStart(),b=!0),a.lineStart();++o1&&2&e&&n.push(n.pop().concat(n.shift())),d.push(n.filter(je))}var d,p,g,m=e(a),v=i.invert(r[0],r[1]),y={point:o,lineStart:s,lineEnd:l,polygonStart:function(){y.point=c,y.lineStart=f,y.lineEnd=h,d=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=s,y.lineEnd=l,d=ho.merge(d);var t=Be(v,p);d.length?(b||(a.polygonStart(),b=!0),Ie(d,$e,t,n,a)):t&&(b||(a.polygonStart(),b=!0),a.lineStart(),n(null,null,1,a),a.lineEnd()),b&&(a.polygonEnd(),b=!1),d=p=null},sphere:function(){a.polygonStart(),a.lineStart(),n(null,null,1,a),a.lineEnd(),a.polygonEnd()}},x=qe(),_=e(x),b=!1;return y}}function je(t){return t.length>1}function qe(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:S,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function $e(t,e){return((t=t.x)[0]<0?t[1]-Xo-Fo:Xo-t[1])-((e=e.x)[0]<0?e[1]-Xo-Fo:Xo-e[1])}function Fe(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var u=a>0?Ho:-Ho,s=Eo(a-n);Eo(s-Ho)0?Xo:-Xo),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(a,r),e=0):i!==u&&s>=Ho&&(Eo(n-i)Fo?Math.atan((Math.sin(e)*(a=Math.cos(r))*Math.sin(n)-Math.sin(r)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+r)/2}function He(t,e,n,r){var i;if(null==t)i=n*Xo,r.point(-Ho,i),r.point(0,i),r.point(Ho,i),r.point(Ho,0),r.point(Ho,-i),r.point(0,-i),r.point(-Ho,-i),r.point(-Ho,0),r.point(-Ho,i);else if(Eo(t[0]-e[0])>Fo){var a=t[0]u;++u){var l=e[u],c=l.length;if(c)for(var f=l[0],h=f[0],d=f[1]/2+Ho/4,p=Math.sin(d),g=Math.cos(d),m=1;;){m===c&&(m=0),t=l[m];var v=t[0],y=t[1]/2+Ho/4,x=Math.sin(y),_=Math.cos(y),b=v-h,M=b>=0?1:-1,w=M*b,k=w>Ho,E=p*x;if(Nu.add(Math.atan2(E*M*Math.sin(w),g*_+E*Math.cos(w))),a+=k?b+M*Bo:b,k^h>=n^v>=n){var S=Me(_e(f),_e(t));Ee(S);var A=Me(i,S);Ee(A);var T=(k^b>=0?-1:1)*ot(A[2]);(r>T||r===T&&(S[0]||S[1]))&&(o+=k^b>=0?1:-1)}if(!m++)break;h=v,p=x,g=_,f=t}}return(-Fo>a||Fo>a&&-Fo>Nu)^1&o}function Ve(t){function e(t,e){return Math.cos(t)*Math.cos(e)>a}function n(t){var n,a,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var d,p=[f,h],g=e(f,h),m=o?g?0:i(f,h):g?i(f+(0>f?Ho:-Ho),h):0;if(!n&&(l=s=g)&&t.lineStart(),g!==s&&(d=r(n,p),(Ae(n,d)||Ae(p,d))&&(p[0]+=Fo,p[1]+=Fo,g=e(p[0],p[1]))),g!==s)c=0,g?(t.lineStart(),d=r(p,n),t.point(d[0],d[1])):(d=r(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(u&&n&&o^g){var v;m&a||!(v=r(p,n,!0))||(c=0,o?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&Ae(n,p)||t.point(p[0],p[1]),n=p,s=g,a=m},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}}function r(t,e,n){var r=_e(t),i=_e(e),o=[1,0,0],u=Me(r,i),s=be(u,u),l=u[0],c=s-l*l;if(!c)return!n&&t;var f=a*s/c,h=-a*l/c,d=Me(o,u),p=ke(o,f),g=ke(u,h);we(p,g);var m=d,v=be(p,m),y=be(m,m),x=v*v-y*(be(p,p)-1);if(!(0>x)){var _=Math.sqrt(x),b=ke(m,(-v-_)/y);if(we(b,p),b=Se(b),!n)return b;var M,w=t[0],k=e[0],E=t[1],S=e[1];w>k&&(M=w,w=k,k=M);var A=k-w,T=Eo(A-Ho)A;if(!T&&E>S&&(M=E,E=S,S=M),O?T?E+S>0^b[1]<(Eo(b[0]-w)Ho^(w<=b[0]&&b[0]<=k)){var N=ke(m,(-v+_)/y);return we(N,p),[b,Se(N)]}}}function i(e,n){var r=o?t:Ho-t,i=0;return-r>e?i|=1:e>r&&(i|=2),-r>n?i|=4:n>r&&(i|=8),i}var a=Math.cos(t),o=a>0,u=Eo(a)>Fo,s=_n(t,6*Wo);return ze(e,n,s,o?[0,-t]:[-Ho,t-Ho])}function Xe(t,e,n,r){return function(i){var a,o=i.a,u=i.b,s=o.x,l=o.y,c=u.x,f=u.y,h=0,d=1,p=c-s,g=f-l;if(a=t-s,p||!(a>0)){if(a/=p,0>p){if(h>a)return;d>a&&(d=a)}else if(p>0){if(a>d)return;a>h&&(h=a)}if(a=n-s,p||!(0>a)){if(a/=p,0>p){if(a>d)return;a>h&&(h=a)}else if(p>0){if(h>a)return;d>a&&(d=a)}if(a=e-l,g||!(a>0)){if(a/=g,0>g){if(h>a)return;d>a&&(d=a)}else if(g>0){if(a>d)return;a>h&&(h=a)}if(a=r-l,g||!(0>a)){if(a/=g,0>g){if(a>d)return;a>h&&(h=a)}else if(g>0){if(h>a)return;d>a&&(d=a)}return h>0&&(i.a={x:s+h*p,y:l+h*g}),1>d&&(i.b={x:s+d*p,y:l+d*g}),i}}}}}}function We(t,e,n,r){function i(r,i){return Eo(r[0]-t)0?0:3:Eo(r[0]-n)0?2:1:Eo(r[1]-e)0?1:0:i>0?3:2}function a(t,e){return o(t.x,e.x)}function o(t,e){var n=i(t,1),r=i(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(u){function s(t){for(var e=0,n=m.length,r=t[1],i=0;n>i;++i)for(var a,o=1,u=m[i],s=u.length,l=u[0];s>o;++o)a=u[o],l[1]<=r?a[1]>r&&it(l,a,t)>0&&++e:a[1]<=r&&it(l,a,t)<0&&--e,l=a;return 0!==e}function l(a,u,s,l){var c=0,f=0;if(null==a||(c=i(a,s))!==(f=i(u,s))||o(a,u)<0^s>0){do l.point(0===c||3===c?t:n,c>1?r:e);while((c=(c+s+4)%4)!==f)}else l.point(u[0],u[1])}function c(i,a){return i>=t&&n>=i&&a>=e&&r>=a}function f(t,e){c(t,e)&&u.point(t,e)}function h(){O.point=p,m&&m.push(v=[]),k=!0,w=!1,b=M=NaN}function d(){g&&(p(y,x),_&&w&&A.rejoin(),g.push(A.buffer())),O.point=f,w&&u.lineEnd()}function p(t,e){t=Math.max(-Bu,Math.min(Bu,t)),e=Math.max(-Bu,Math.min(Bu,e));var n=c(t,e);if(m&&v.push([t,e]),k)y=t,x=e,_=n,k=!1,n&&(u.lineStart(),u.point(t,e));else if(n&&w)u.point(t,e);else{var r={a:{x:b,y:M},b:{x:t,y:e}};T(r)?(w||(u.lineStart(),u.point(r.a.x,r.a.y)),u.point(r.b.x,r.b.y),n||u.lineEnd(),E=!1):n&&(u.lineStart(),u.point(t,e),E=!1)}b=t,M=e,w=n}var g,m,v,y,x,_,b,M,w,k,E,S=u,A=qe(),T=Xe(t,e,n,r),O={point:f,lineStart:h,lineEnd:d,polygonStart:function(){ -u=A,g=[],m=[],E=!0},polygonEnd:function(){u=S,g=ho.merge(g);var e=s([t,r]),n=E&&e,i=g.length;(n||i)&&(u.polygonStart(),n&&(u.lineStart(),l(null,null,1,u),u.lineEnd()),i&&Ie(g,a,e,l,u),u.polygonEnd()),g=m=v=null}};return O}}function Ge(t){var e=0,n=Ho/3,r=hn(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*Ho/180,n=t[1]*Ho/180):[e/Ho*180,n/Ho*180]},i}function Ze(t,e){function n(t,e){var n=Math.sqrt(a-2*i*Math.sin(e))/i;return[n*Math.sin(t*=i),o-n*Math.cos(t)]}var r=Math.sin(t),i=(r+Math.sin(e))/2,a=1+r*(2*i-r),o=Math.sqrt(a)/i;return n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/i,ot((a-(t*t+n*n)*i*i)/(2*i))]},n}function Je(){function t(t,e){Xu+=i*t-r*e,r=t,i=e}var e,n,r,i;Qu.point=function(a,o){Qu.point=t,e=r=a,n=i=o},Qu.lineEnd=function(){t(e,n)}}function Qe(t,e){Wu>t&&(Wu=t),t>Zu&&(Zu=t),Gu>e&&(Gu=e),e>Ju&&(Ju=e)}function Ke(){function t(t,e){o.push("M",t,",",e,a)}function e(t,e){o.push("M",t,",",e),u.point=n}function n(t,e){o.push("L",t,",",e)}function r(){u.point=t}function i(){o.push("Z")}var a=tn(4.5),o=[],u={point:t,lineStart:function(){u.point=e},lineEnd:r,polygonStart:function(){u.lineEnd=i},polygonEnd:function(){u.lineEnd=r,u.point=t},pointRadius:function(t){return a=tn(t),u},result:function(){if(o.length){var t=o.join("");return o=[],t}}};return u}function tn(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function en(t,e){Du+=t,Iu+=e,++Uu}function nn(){function t(t,r){var i=t-e,a=r-n,o=Math.sqrt(i*i+a*a);Pu+=o*(e+t)/2,zu+=o*(n+r)/2,ju+=o,en(e=t,n=r)}var e,n;ts.point=function(r,i){ts.point=t,en(e=r,n=i)}}function rn(){ts.point=en}function an(){function t(t,e){var n=t-r,a=e-i,o=Math.sqrt(n*n+a*a);Pu+=o*(r+t)/2,zu+=o*(i+e)/2,ju+=o,o=i*t-r*e,qu+=o*(r+t),$u+=o*(i+e),Fu+=3*o,en(r=t,i=e)}var e,n,r,i;ts.point=function(a,o){ts.point=t,en(e=r=a,n=i=o)},ts.lineEnd=function(){t(e,n)}}function on(t){function e(e,n){t.moveTo(e+o,n),t.arc(e,n,o,0,Bo)}function n(e,n){t.moveTo(e,n),u.point=r}function r(e,n){t.lineTo(e,n)}function i(){u.point=e}function a(){t.closePath()}var o=4.5,u={point:e,lineStart:function(){u.point=n},lineEnd:i,polygonStart:function(){u.lineEnd=a},polygonEnd:function(){u.lineEnd=i,u.point=e},pointRadius:function(t){return o=t,u},result:S};return u}function un(t){function e(t){return(u?r:n)(t)}function n(e){return cn(e,function(n,r){n=t(n,r),e.point(n[0],n[1])})}function r(e){function n(n,r){n=t(n,r),e.point(n[0],n[1])}function r(){x=NaN,k.point=a,e.lineStart()}function a(n,r){var a=_e([n,r]),o=t(n,r);i(x,_,y,b,M,w,x=o[0],_=o[1],y=n,b=a[0],M=a[1],w=a[2],u,e),e.point(x,_)}function o(){k.point=n,e.lineEnd()}function s(){r(),k.point=l,k.lineEnd=c}function l(t,e){a(f=t,h=e),d=x,p=_,g=b,m=M,v=w,k.point=a}function c(){i(x,_,y,b,M,w,d,p,f,g,m,v,u,e),k.lineEnd=o,o()}var f,h,d,p,g,m,v,y,x,_,b,M,w,k={point:n,lineStart:r,lineEnd:o,polygonStart:function(){e.polygonStart(),k.lineStart=s},polygonEnd:function(){e.polygonEnd(),k.lineStart=r}};return k}function i(e,n,r,u,s,l,c,f,h,d,p,g,m,v){var y=c-e,x=f-n,_=y*y+x*x;if(_>4*a&&m--){var b=u+d,M=s+p,w=l+g,k=Math.sqrt(b*b+M*M+w*w),E=Math.asin(w/=k),S=Eo(Eo(w)-1)a||Eo((y*N+x*L)/_-.5)>.3||o>u*d+s*p+l*g)&&(i(e,n,r,u,s,l,T,O,S,b/=k,M/=k,w,m,v),v.point(T,O),i(T,O,S,b,M,w,c,f,h,d,p,g,m,v))}}var a=.5,o=Math.cos(30*Wo),u=16;return e.precision=function(t){return arguments.length?(u=(a=t*t)>0&&16,e):Math.sqrt(a)},e}function sn(t){var e=un(function(e,n){return t([e*Go,n*Go])});return function(t){return dn(e(t))}}function ln(t){this.stream=t}function cn(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function fn(t){return hn(function(){return t})()}function hn(t){function e(t){return t=u(t[0]*Wo,t[1]*Wo),[t[0]*h+s,l-t[1]*h]}function n(t){return t=u.invert((t[0]-s)/h,(l-t[1])/h),t&&[t[0]*Go,t[1]*Go]}function r(){u=Re(o=mn(v,y,x),a);var t=a(g,m);return s=d-t[0]*h,l=p+t[1]*h,i()}function i(){return c&&(c.valid=!1,c=null),e}var a,o,u,s,l,c,f=un(function(t,e){return t=a(t,e),[t[0]*h+s,l-t[1]*h]}),h=150,d=480,p=250,g=0,m=0,v=0,y=0,x=0,_=Hu,b=w,M=null,k=null;return e.stream=function(t){return c&&(c.valid=!1),c=dn(_(o,f(b(t)))),c.valid=!0,c},e.clipAngle=function(t){return arguments.length?(_=null==t?(M=t,Hu):Ve((M=+t)*Wo),i()):M},e.clipExtent=function(t){return arguments.length?(k=t,b=t?We(t[0][0],t[0][1],t[1][0],t[1][1]):w,i()):k},e.scale=function(t){return arguments.length?(h=+t,r()):h},e.translate=function(t){return arguments.length?(d=+t[0],p=+t[1],r()):[d,p]},e.center=function(t){return arguments.length?(g=t[0]%360*Wo,m=t[1]%360*Wo,r()):[g*Go,m*Go]},e.rotate=function(t){return arguments.length?(v=t[0]%360*Wo,y=t[1]%360*Wo,x=t.length>2?t[2]%360*Wo:0,r()):[v*Go,y*Go,x*Go]},ho.rebind(e,f,"precision"),function(){return a=t.apply(this,arguments),e.invert=a.invert&&n,r()}}function dn(t){return cn(t,function(e,n){t.point(e*Wo,n*Wo)})}function pn(t,e){return[t,e]}function gn(t,e){return[t>Ho?t-Bo:-Ho>t?t+Bo:t,e]}function mn(t,e,n){return t?e||n?Re(yn(t),xn(e,n)):yn(t):e||n?xn(e,n):gn}function vn(t){return function(e,n){return e+=t,[e>Ho?e-Bo:-Ho>e?e+Bo:e,n]}}function yn(t){var e=vn(t);return e.invert=vn(-t),e}function xn(t,e){function n(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*r+u*i;return[Math.atan2(s*a-c*o,u*r-l*i),ot(c*a+s*o)]}var r=Math.cos(t),i=Math.sin(t),a=Math.cos(e),o=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*a-s*o;return[Math.atan2(s*a+l*o,u*r+c*i),ot(c*r-u*i)]},n}function _n(t,e){var n=Math.cos(t),r=Math.sin(t);return function(i,a,o,u){var s=o*e;null!=i?(i=bn(n,i),a=bn(n,a),(o>0?a>i:i>a)&&(i+=o*Bo)):(i=t+o*Bo,a=t-.5*s);for(var l,c=i;o>0?c>a:a>c;c-=s)u.point((l=Se([n,-r*Math.cos(c),-r*Math.sin(c)]))[0],l[1])}}function bn(t,e){var n=_e(e);n[0]-=t,Ee(n);var r=at(-n[1]);return((-n[2]<0?-r:r)+2*Math.PI-Fo)%(2*Math.PI)}function Mn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[t,e]})}}function wn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[e,t]})}}function kn(t){return t.source}function En(t){return t.target}function Sn(t,e,n,r){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(r),u=Math.sin(r),s=i*Math.cos(t),l=i*Math.sin(t),c=o*Math.cos(n),f=o*Math.sin(n),h=2*Math.asin(Math.sqrt(ct(r-e)+i*o*ct(n-t))),d=1/Math.sin(h),p=h?function(t){var e=Math.sin(t*=h)*d,n=Math.sin(h-t)*d,r=n*s+e*c,i=n*l+e*f,o=n*a+e*u;return[Math.atan2(i,r)*Go,Math.atan2(o,Math.sqrt(r*r+i*i))*Go]}:function(){return[t*Go,e*Go]};return p.distance=h,p}function An(){function t(t,i){var a=Math.sin(i*=Wo),o=Math.cos(i),u=Eo((t*=Wo)-e),s=Math.cos(u);es+=Math.atan2(Math.sqrt((u=o*Math.sin(u))*u+(u=r*a-n*o*s)*u),n*a+r*o*s),e=t,n=a,r=o}var e,n,r;ns.point=function(i,a){e=i*Wo,n=Math.sin(a*=Wo),r=Math.cos(a),ns.point=t},ns.lineEnd=function(){ns.point=ns.lineEnd=S}}function Tn(t,e){function n(e,n){var r=Math.cos(e),i=Math.cos(n),a=t(r*i);return[a*i*Math.sin(e),a*Math.sin(n)]}return n.invert=function(t,n){var r=Math.sqrt(t*t+n*n),i=e(r),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,r*o),Math.asin(r&&n*a/r)]},n}function On(t,e){function n(t,e){o>0?-Xo+Fo>e&&(e=-Xo+Fo):e>Xo-Fo&&(e=Xo-Fo);var n=o/Math.pow(i(e),a);return[n*Math.sin(a*t),o-n*Math.cos(a*t)]}var r=Math.cos(t),i=function(t){return Math.tan(Ho/4+t/2)},a=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log(i(e)/i(t)),o=r*Math.pow(i(t),a)/a;return a?(n.invert=function(t,e){var n=o-e,r=rt(a)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/a,2*Math.atan(Math.pow(o/r,1/a))-Xo]},n):Ln}function Nn(t,e){function n(t,e){var n=a-e;return[n*Math.sin(i*t),a-n*Math.cos(i*t)]}var r=Math.cos(t),i=t===e?Math.sin(t):(r-Math.cos(e))/(e-t),a=r/i+t;return Eo(i)i;i++){for(;r>1&&it(t[n[r-2]],t[n[r-1]],t[i])<=0;)--r;n[r++]=i}return n.slice(0,r)}function Pn(t,e){return t[0]-e[0]||t[1]-e[1]}function zn(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function jn(t,e,n,r){var i=t[0],a=n[0],o=e[0]-i,u=r[0]-a,s=t[1],l=n[1],c=e[1]-s,f=r[1]-l,h=(u*(s-l)-f*(i-a))/(f*o-u*c);return[i+h*o,s+h*c]}function qn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function $n(){sr(this),this.edge=this.site=this.circle=null}function Fn(t){var e=ps.pop()||new $n;return e.site=t,e}function Yn(t){Kn(t),fs.remove(t),ps.push(t),sr(t)}function Hn(t){var e=t.circle,n=e.x,r=e.cy,i={x:n,y:r},a=t.P,o=t.N,u=[t];Yn(t);for(var s=a;s.circle&&Eo(n-s.circle.x)c;++c)l=u[c],s=u[c-1],ar(l.edge,s.site,l.site,i);s=u[0],l=u[f-1],l.edge=rr(s.site,l.site,null,i),Qn(s),Qn(l)}function Bn(t){for(var e,n,r,i,a=t.x,o=t.y,u=fs._;u;)if(r=Vn(u,o)-a,r>Fo)u=u.L;else{if(i=a-Xn(u,o),!(i>Fo)){r>-Fo?(e=u.P,n=u):i>-Fo?(e=u,n=u.N):e=n=u;break}if(!u.R){e=u;break}u=u.R}var s=Fn(t);if(fs.insert(e,s),e||n){if(e===n)return Kn(e),n=Fn(e.site),fs.insert(s,n),s.edge=n.edge=rr(e.site,s.site),Qn(e),void Qn(n);if(!n)return void(s.edge=rr(e.site,s.site));Kn(e),Kn(n);var l=e.site,c=l.x,f=l.y,h=t.x-c,d=t.y-f,p=n.site,g=p.x-c,m=p.y-f,v=2*(h*m-d*g),y=h*h+d*d,x=g*g+m*m,_={x:(m*y-d*x)/v+c,y:(h*x-g*y)/v+f};ar(n.edge,l,p,_),s.edge=rr(l,t,null,_),n.edge=rr(t,p,null,_),Qn(e),Qn(n)}}function Vn(t,e){var n=t.site,r=n.x,i=n.y,a=i-e;if(!a)return r;var o=t.P;if(!o)return-(1/0);n=o.site;var u=n.x,s=n.y,l=s-e;if(!l)return u;var c=u-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+i-a/2)))/f+r:(r+u)/2}function Xn(t,e){var n=t.N;if(n)return Vn(n,e);var r=t.site;return r.y===e?r.x:1/0}function Wn(t){this.site=t,this.edges=[]}function Gn(t){for(var e,n,r,i,a,o,u,s,l,c,f=t[0][0],h=t[1][0],d=t[0][1],p=t[1][1],g=cs,m=g.length;m--;)if(a=g[m],a&&a.prepare())for(u=a.edges,s=u.length,o=0;s>o;)c=u[o].end(),r=c.x,i=c.y,l=u[++o%s].start(),e=l.x,n=l.y,(Eo(r-e)>Fo||Eo(i-n)>Fo)&&(u.splice(o,0,new or(ir(a.site,c,Eo(r-f)Fo?{x:f,y:Eo(e-f)Fo?{x:Eo(n-p)Fo?{x:h,y:Eo(e-h)Fo?{x:Eo(n-d)=-Yo)){var d=s*s+l*l,p=c*c+f*f,g=(f*d-l*p)/h,m=(s*p-c*d)/h,f=m+u,v=gs.pop()||new Jn;v.arc=t,v.site=i,v.x=g+o,v.y=f+Math.sqrt(g*g+m*m),v.cy=f,t.circle=v;for(var y=null,x=ds._;x;)if(v.ym||m>=u)return;if(h>p){if(a){if(a.y>=l)return}else a={x:m,y:s};n={x:m,y:l}}else{if(a){if(a.yr||r>1)if(h>p){if(a){if(a.y>=l)return}else a={x:(s-i)/r,y:s};n={x:(l-i)/r,y:l}}else{if(a){if(a.yd){if(a){if(a.x>=u)return}else a={x:o,y:r*o+i};n={x:u,y:r*u+i}}else{if(a){if(a.xa||f>o||r>h||i>d)){if(p=t.point){var p,g=e-t.x,m=n-t.y,v=g*g+m*m;if(s>v){var y=Math.sqrt(s=v);r=e-y,i=n-y,a=e+y,o=n+y,u=p}}for(var x=t.nodes,_=.5*(c+h),b=.5*(f+d),M=e>=_,w=n>=b,k=w<<1|M,E=k+4;E>k;++k)if(t=x[3&k])switch(3&k){case 0:l(t,c,f,_,b);break;case 1:l(t,_,f,h,b);break;case 2:l(t,c,b,_,d);break;case 3:l(t,_,b,h,d)}}}(t,r,i,a,o),u}function _r(t,e){t=ho.rgb(t),e=ho.rgb(e);var n=t.r,r=t.g,i=t.b,a=e.r-n,o=e.g-r,u=e.b-i;return function(t){return"#"+Et(Math.round(n+a*t))+Et(Math.round(r+o*t))+Et(Math.round(i+u*t))}}function br(t,e){var n,r={},i={};for(n in t)n in e?r[n]=kr(t[n],e[n]):i[n]=t[n];for(n in e)n in t||(i[n]=e[n]);return function(t){for(n in r)i[n]=r[n](t);return i}}function Mr(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function wr(t,e){var n,r,i,a=vs.lastIndex=ys.lastIndex=0,o=-1,u=[],s=[];for(t+="",e+="";(n=vs.exec(t))&&(r=ys.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),u[o]?u[o]+=i:u[++o]=i),(n=n[0])===(r=r[0])?u[o]?u[o]+=r:u[++o]=r:(u[++o]=null,s.push({i:o,x:Mr(n,r)})),a=ys.lastIndex;return ar;++r)u[(n=s[r]).i]=n.x(t);return u.join("")})}function kr(t,e){for(var n,r=ho.interpolators.length;--r>=0&&!(n=ho.interpolators[r](t,e)););return n}function Er(t,e){var n,r=[],i=[],a=t.length,o=e.length,u=Math.min(t.length,e.length);for(n=0;u>n;++n)r.push(kr(t[n],e[n]));for(;a>n;++n)i[n]=t[n];for(;o>n;++n)i[n]=e[n];return function(t){for(n=0;u>n;++n)i[n]=r[n](t);return i}}function Sr(t){return function(e){return 0>=e?0:e>=1?1:t(e)}}function Ar(t){return function(e){return 1-t(1-e)}}function Tr(t){return function(e){return.5*(.5>e?t(2*e):2-t(2-2*e))}}function Or(t){return t*t}function Nr(t){return t*t*t}function Lr(t){if(0>=t)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(.5>t?n:3*(t-e)+n-.75)}function Cr(t){return function(e){return Math.pow(e,t)}}function Rr(t){return 1-Math.cos(t*Xo)}function Dr(t){return Math.pow(2,10*(t-1))}function Ir(t){return 1-Math.sqrt(1-t*t)}function Ur(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Bo*Math.asin(1/t):(t=1,n=e/4),function(r){return 1+t*Math.pow(2,-10*r)*Math.sin((r-n)*Bo/e)}}function Pr(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function zr(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function jr(t,e){t=ho.hcl(t),e=ho.hcl(e);var n=t.h,r=t.c,i=t.l,a=e.h-n,o=e.c-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.c:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return gt(n+a*t,r+o*t,i+u*t)+""}}function qr(t,e){t=ho.hsl(t),e=ho.hsl(e);var n=t.h,r=t.s,i=t.l,a=e.h-n,o=e.s-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.s:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return dt(n+a*t,r+o*t,i+u*t)+""}}function $r(t,e){t=ho.lab(t),e=ho.lab(e);var n=t.l,r=t.a,i=t.b,a=e.l-n,o=e.a-r,u=e.b-i;return function(t){return vt(n+a*t,r+o*t,i+u*t)+""}}function Fr(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Yr(t){var e=[t.a,t.b],n=[t.c,t.d],r=Br(e),i=Hr(e,n),a=Br(Vr(n,e,-i))||0;e[0]*n[1]180?e+=360:e-t>180&&(t+=360),r.push({i:n.push(Xr(n)+"rotate(",null,")")-2,x:Mr(t,e)})):e&&n.push(Xr(n)+"rotate("+e+")")}function Zr(t,e,n,r){t!==e?r.push({i:n.push(Xr(n)+"skewX(",null,")")-2,x:Mr(t,e)}):e&&n.push(Xr(n)+"skewX("+e+")")}function Jr(t,e,n,r){if(t[0]!==e[0]||t[1]!==e[1]){var i=n.push(Xr(n)+"scale(",null,",",null,")");r.push({i:i-4,x:Mr(t[0],e[0])},{i:i-2,x:Mr(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(Xr(n)+"scale("+e+")")}function Qr(t,e){var n=[],r=[];return t=ho.transform(t),e=ho.transform(e),Wr(t.translate,e.translate,n,r),Gr(t.rotate,e.rotate,n,r),Zr(t.skew,e.skew,n,r),Jr(t.scale,e.scale,n,r),t=e=null,function(t){for(var e,i=-1,a=r.length;++i=0;)n.push(i[r])}function fi(t,e){for(var n=[t],r=[];null!=(t=n.pop());)if(r.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++on;++n)(e=t[n][1])>i&&(r=n,i=e);return r}function Mi(t){return t.reduce(wi,0)}function wi(t,e){return t+e[1]}function ki(t,e){return Ei(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Ei(t,e){for(var n=-1,r=+t[0],i=(t[1]-r)/e,a=[];++n<=e;)a[n]=i*n+r;return a}function Si(t){return[ho.min(t),ho.max(t)]}function Ai(t,e){return t.value-e.value}function Ti(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Oi(t,e){t._pack_next=e,e._pack_prev=t}function Ni(t,e){var n=e.x-t.x,r=e.y-t.y,i=t.r+e.r;return.999*i*i>n*n+r*r}function Li(t){function e(t){c=Math.min(t.x-t.r,c),f=Math.max(t.x+t.r,f),h=Math.min(t.y-t.r,h),d=Math.max(t.y+t.r,d)}if((n=t.children)&&(l=n.length)){var n,r,i,a,o,u,s,l,c=1/0,f=-(1/0),h=1/0,d=-(1/0);if(n.forEach(Ci),r=n[0],r.x=-r.r,r.y=0,e(r),l>1&&(i=n[1],i.x=i.r,i.y=0,e(i),l>2))for(a=n[2],Ii(r,i,a),e(a),Ti(r,a),r._pack_prev=a,Ti(a,i),i=r._pack_next,o=3;l>o;o++){Ii(r,i,a=n[o]);var p=0,g=1,m=1;for(u=i._pack_next;u!==i;u=u._pack_next,g++)if(Ni(u,a)){p=1;break}if(1==p)for(s=r._pack_prev;s!==u._pack_prev&&!Ni(s,a);s=s._pack_prev,m++);p?(m>g||g==m&&i.ro;o++)a=n[o],a.x-=v,a.y-=y,x=Math.max(x,a.r+Math.sqrt(a.x*a.x+a.y*a.y));t.r=x,n.forEach(Ri)}}function Ci(t){t._pack_next=t._pack_prev=t}function Ri(t){delete t._pack_next,delete t._pack_prev}function Di(t,e,n,r){var i=t.children;if(t.x=e+=r*t.x,t.y=n+=r*t.y,t.r*=r,i)for(var a=-1,o=i.length;++a=0;)e=i[a],e.z+=n,e.m+=n,n+=e.s+(r+=e.c)}function $i(t,e,n){return t.a.parent===e.parent?t.a:n}function Fi(t){return 1+ho.max(t,function(t){return t.y})}function Yi(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Hi(t){var e=t.children;return e&&e.length?Hi(e[0]):t}function Bi(t){var e,n=t.children;return n&&(e=n.length)?Bi(n[e-1]):t}function Vi(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function Xi(t,e){var n=t.x+e[3],r=t.y+e[0],i=t.dx-e[1]-e[3],a=t.dy-e[0]-e[2];return 0>i&&(n+=i/2,i=0),0>a&&(r+=a/2,a=0),{x:n,y:r,dx:i,dy:a}}function Wi(t){var e=t[0],n=t[t.length-1];return n>e?[e,n]:[n,e]}function Gi(t){return t.rangeExtent?t.rangeExtent():Wi(t.range())}function Zi(t,e,n,r){var i=n(t[0],t[1]),a=r(e[0],e[1]);return function(t){return a(i(t))}}function Ji(t,e){var n,r=0,i=t.length-1,a=t[r],o=t[i];return a>o&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t}function Qi(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:Os}function Ki(t,e,n,r){var i=[],a=[],o=0,u=Math.min(t.length,e.length)-1;for(t[u]2?Ki:Zi,s=r?ti:Kr;return o=i(t,e,s,n),u=i(e,t,s,kr),a}function a(t){return o(t)}var o,u;return a.invert=function(t){return u(t)},a.domain=function(e){return arguments.length?(t=e.map(Number),i()):t},a.range=function(t){return arguments.length?(e=t,i()):e},a.rangeRound=function(t){return a.range(t).interpolate(Fr)},a.clamp=function(t){return arguments.length?(r=t,i()):r},a.interpolate=function(t){return arguments.length?(n=t,i()):n},a.ticks=function(e){return ia(t,e)},a.tickFormat=function(e,n){return aa(t,e,n)},a.nice=function(e){return na(t,e),i()},a.copy=function(){return ta(t,e,n,r)},i()}function ea(t,e){return ho.rebind(t,e,"range","rangeRound","interpolate","clamp")}function na(t,e){return Ji(t,Qi(ra(t,e)[2])),Ji(t,Qi(ra(t,e)[2])),t}function ra(t,e){null==e&&(e=10);var n=Wi(t),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/e)/Math.LN10)),a=e/r*i;return.15>=a?i*=10:.35>=a?i*=5:.75>=a&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+.5*i,n[2]=i,n}function ia(t,e){return ho.range.apply(ho,ra(t,e))}function aa(t,e,n){var r=ra(t,e);if(n){var i=vu.exec(n);if(i.shift(),"s"===i[8]){var a=ho.formatPrefix(Math.max(Eo(r[0]),Eo(r[1])));return i[7]||(i[7]="."+oa(a.scale(r[2]))),i[8]="f",n=ho.format(i.join("")),function(t){return n(a.scale(t))+a.symbol}}i[7]||(i[7]="."+ua(i[8],r)),n=i.join("")}else n=",."+oa(r[2])+"f";return ho.format(n)}function oa(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function ua(t,e){var n=oa(e[2]);return t in Ns?Math.abs(n-oa(Math.max(Eo(e[0]),Eo(e[1]))))+ +("e"!==t):n-2*("%"===t)}function sa(t,e,n,r){function i(t){return(n?Math.log(0>t?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((r=e.map(Number)).map(i)),o):r},o.base=function(n){return arguments.length?(e=+n,t.domain(r.map(i)),o):e},o.nice=function(){var e=Ji(r.map(i),n?Math:Cs);return t.domain(e),r=e.map(a),o},o.ticks=function(){var t=Wi(r),o=[],u=t[0],s=t[1],l=Math.floor(i(u)),c=Math.ceil(i(s)),f=e%1?2:e;if(isFinite(c-l)){if(n){for(;c>l;l++)for(var h=1;f>h;h++)o.push(a(l)*h);o.push(a(l))}else for(o.push(a(l));l++0;h--)o.push(a(l)*h);for(l=0;o[l]s;c--);o=o.slice(l,c)}return o},o.tickFormat=function(t,n){if(!arguments.length)return Ls;arguments.length<2?n=Ls:"function"!=typeof n&&(n=ho.format(n));var r=Math.max(1,e*t/o.ticks().length);return function(t){var o=t/a(Math.round(i(t)));return e-.5>o*e&&(o*=e),r>=o?n(t):""}},o.copy=function(){return sa(t.copy(),e,n,r)},ea(o,t)}function la(t,e,n){function r(e){return t(i(e))}var i=ca(e),a=ca(1/e);return r.invert=function(e){return a(t.invert(e))},r.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(i)),r):n},r.ticks=function(t){return ia(n,t)},r.tickFormat=function(t,e){return aa(n,t,e)},r.nice=function(t){return r.domain(na(n,t))},r.exponent=function(o){return arguments.length?(i=ca(e=o),a=ca(1/e),t.domain(n.map(i)),r):e},r.copy=function(){return la(t.copy(),e,n)},ea(r,t)}function ca(t){return function(e){return 0>e?-Math.pow(-e,t):Math.pow(e,t)}}function fa(t,e){function n(n){return a[((i.get(n)||("range"===e.t?i.set(n,t.push(n)):NaN))-1)%a.length]}function r(e,n){return ho.range(t.length).map(function(t){return e+n*t})}var i,a,o;return n.domain=function(r){if(!arguments.length)return t;t=[],i=new p;for(var a,o=-1,u=r.length;++on?[NaN,NaN]:[n>0?i[n-1]:t[0],ne?NaN:e/a+t,[e,e+1/a]},r.copy=function(){return da(t,e,n)},i()}function pa(t,e){function n(n){return n>=n?e[ho.bisect(t,n)]:void 0}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return pa(t,e)},n}function ga(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return ia(t,e)},e.tickFormat=function(e,n){return aa(t,e,n)},e.copy=function(){return ga(t)},e}function ma(){return 0}function va(t){return t.innerRadius}function ya(t){return t.outerRadius}function xa(t){return t.startAngle}function _a(t){return t.endAngle}function ba(t){return t&&t.padAngle}function Ma(t,e,n,r){return(t-n)*e-(e-r)*t>0?0:1}function wa(t,e,n,r,i){var a=t[0]-e[0],o=t[1]-e[1],u=(i?r:-r)/Math.sqrt(a*a+o*o),s=u*o,l=-u*a,c=t[0]+s,f=t[1]+l,h=e[0]+s,d=e[1]+l,p=(c+h)/2,g=(f+d)/2,m=h-c,v=d-f,y=m*m+v*v,x=n-r,_=c*d-h*f,b=(0>v?-1:1)*Math.sqrt(Math.max(0,x*x*y-_*_)),M=(_*v-m*b)/y,w=(-_*m-v*b)/y,k=(_*v+m*b)/y,E=(-_*m+v*b)/y,S=M-p,A=w-g,T=k-p,O=E-g;return S*S+A*A>T*T+O*O&&(M=k,w=E),[[M-s,w-l],[M*n/x,w*n/x]]}function ka(t){function e(e){function o(){l.push("M",a(t(c),u))}for(var s,l=[],c=[],f=-1,h=e.length,d=Lt(n),p=Lt(r);++f1?t.join("L"):t+"Z"}function Sa(t){return t.join("L")+"Z"}function Aa(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1&&i.push("H",r[0]),i.join("")}function Ta(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1){u=e[1],a=t[s],s++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-u[0])+","+(a[1]-u[1])+","+a[0]+","+a[1];for(var l=2;l9&&(i=3*e/Math.sqrt(i),o[u]=i*n,o[u+1]=i*r));for(u=-1;++u<=s;)i=(t[Math.min(s,u+1)][0]-t[Math.max(0,u-1)][0])/(6*(1+o[u]*o[u])),a.push([i||0,o[u]*i||0]);return a}function Ha(t){return t.length<3?Ea(t):t[0]+Ra(t,Ya(t))}function Ba(t){for(var e,n,r,i=-1,a=t.length;++i=e?o(t-e):void(l.c=o)}function o(n){var i=d.active,a=d[i];a&&(a.timer.c=null,a.timer.t=NaN,--d.count,delete d[i],a.event&&a.event.interrupt.call(t,t.__data__,a.index));for(var o in d)if(r>+o){var p=d[o];p.timer.c=null,p.timer.t=NaN,--d.count,delete d[o]}l.c=u,Ut(function(){return l.c&&u(n||1)&&(l.c=null,l.t=NaN),1},0,s),d.active=r,g.event&&g.event.start.call(t,t.__data__,e),h=[],g.tween.forEach(function(n,r){(r=r.call(t,t.__data__,e))&&h.push(r)}),f=g.ease,c=g.duration}function u(i){for(var a=i/c,o=f(a),u=h.length;u>0;)h[--u].call(t,o);return a>=1?(g.event&&g.event.end.call(t,t.__data__,e),--d.count?delete d[r]:delete t[n],1):void 0}var s,l,c,f,h,d=t[n]||(t[n]={active:0,count:0}),g=d[r];g||(s=i.time,l=Ut(a,0,s),g=d[r]={tween:new p,time:s,timer:l,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++d.count)}function ao(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate("+(isFinite(r)?r:n(t))+",0)"})}function oo(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate(0,"+(isFinite(r)?r:n(t))+")"})}function uo(t){return t.toISOString()}function so(t,e,n){function r(e){return t(e)}function i(t,n){var r=t[1]-t[0],i=r/n,a=ho.bisect(rl,i);return a==rl.length?[e.year,ra(t.map(function(t){return t/31536e6}),n)[2]]:a?e[i/rl[a-1]1?{floor:function(e){for(;n(e=t.floor(e));)e=lo(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=lo(+e+1);return e}}:t))},r.ticks=function(t,e){var n=Wi(r.domain()),a=null==t?i(n,10):"number"==typeof t?i(n,t):!t.range&&[{range:t},e];return a&&(t=a[0],e=a[1]),t.range(n[0],lo(+n[1]+1),1>e?1:e)},r.tickFormat=function(){return n},r.copy=function(){return so(t.copy(),e,n)},ea(r,t)}function lo(t){return new Date(t)}function co(t){return JSON.parse(t.responseText)}function fo(t){var e=mo.createRange();return e.selectNode(mo.body),e.createContextualFragment(t.responseText)}var ho={version:"3.5.17"},po=[].slice,go=function(t){return po.call(t)},mo=this.document;if(mo)try{go(mo.documentElement.childNodes)[0].nodeType}catch(vo){go=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),mo)try{mo.createElement("DIV").style.setProperty("opacity",0,"")}catch(yo){var xo=this.Element.prototype,_o=xo.setAttribute,bo=xo.setAttributeNS,Mo=this.CSSStyleDeclaration.prototype,wo=Mo.setProperty;xo.setAttribute=function(t,e){_o.call(this,t,e+"")},xo.setAttributeNS=function(t,e,n){bo.call(this,t,e,n+"")},Mo.setProperty=function(t,e,n){wo.call(this,t,e+"",n)}}ho.ascending=u,ho.descending=function(t,e){return t>e?-1:e>t?1:e>=t?0:NaN},ho.min=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++ir&&(n=r)}else{for(;++i=r){n=r;break}for(;++ir&&(n=r)}return n},ho.max=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++in&&(n=r)}else{for(;++i=r){n=r;break}for(;++in&&(n=r)}return n},ho.extent=function(t,e){var n,r,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}else{for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}return[n,i]},ho.sum=function(t,e){var n,r=0,i=t.length,a=-1;if(1===arguments.length)for(;++a1?o/(c-1):void 0},ho.deviation=function(){var t=ho.variance.apply(this,arguments);return t?Math.sqrt(t):t};var ko=c(u);ho.bisectLeft=ko.left,ho.bisect=ho.bisectRight=ko.right,ho.bisector=function(t){return c(1===t.length?function(e,n){return u(t(e),n)}:t)},ho.shuffle=function(t,e,n){(a=arguments.length)<3&&(n=t.length,2>a&&(e=0));for(var r,i,a=n-e;a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t},ho.permute=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},ho.pairs=function(t){for(var e,n=0,r=t.length-1,i=t[0],a=new Array(0>r?0:r);r>n;)a[n]=[e=i,i=t[++n]];return a},ho.transpose=function(t){if(!(i=t.length))return[];for(var e=-1,n=ho.min(t,f),r=new Array(n);++e=0;)for(r=t[i],e=r.length;--e>=0;)n[--o]=r[e];return n};var Eo=Math.abs;ho.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var r,i=[],a=h(Eo(n)),o=-1;if(t*=a,e*=a,n*=a,0>n)for(;(r=t+n*++o)>e;)i.push(r/a);else for(;(r=t+n*++o)=a.length)return r?r.call(i,o):n?o.sort(n):o;for(var s,l,c,f,h=-1,d=o.length,g=a[u++],m=new p;++h=a.length)return t;var r=[],i=o[n++];return t.forEach(function(t,i){r.push({key:t,values:e(i,n)})}),i?r.sort(function(t,e){return i(t.key,e.key)}):r}var n,r,i={},a=[],o=[];return i.map=function(e,n){return t(n,e,0)},i.entries=function(n){return e(t(ho.map,n,0),0)},i.key=function(t){return a.push(t),i},i.sortKeys=function(t){return o[a.length-1]=t,i},i.sortValues=function(t){return n=t,i},i.rollup=function(t){return r=t,i},i},ho.set=function(t){var e=new M;if(t)for(var n=0,r=t.length;r>n;++n)e.add(t[n]);return e},d(M,{has:v,add:function(t){return this._[g(t+="")]=!0,t},remove:y,values:x,size:_,empty:b,forEach:function(t){for(var e in this._)t.call(this,m(e))}}),ho.behavior={},ho.rebind=function(t,e){for(var n,r=1,i=arguments.length;++r=0&&(r=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(r):this[t].on(r,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(r,null);return this}},ho.event=null,ho.requote=function(t){return t.replace(Oo,"\\$&")};var Oo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,No={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Lo=function(t,e){return e.querySelector(t)},Co=function(t,e){return e.querySelectorAll(t)},Ro=function(t,e){var n=t.matches||t[E(t,"matchesSelector")];return(Ro=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Lo=function(t,e){return Sizzle(t,e)[0]||null},Co=Sizzle,Ro=Sizzle.matchesSelector),ho.selection=function(){return ho.select(mo.documentElement)};var Do=ho.selection.prototype=[];Do.select=function(t){var e,n,r,i,a=[];t=R(t);for(var o=-1,u=this.length;++o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Uo.hasOwnProperty(n)?{space:Uo[n],local:t}:t}},Do.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=ho.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(I(e,t[e]));return this}return this.each(I(t,e))},Do.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),r=(t=z(t)).length,i=-1;if(e=n.classList){for(;++ir){if("string"!=typeof t){2>r&&(e="");for(n in t)this.each($(n,t[n],e));return this}if(2>r){var i=this.node();return o(i).getComputedStyle(i,null).getPropertyValue(t)}n=""}return this.each($(t,e,n))},Do.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(F(e,t[e]));return this}return this.each(F(t,e))},Do.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Do.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Do.append=function(t){return t=Y(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Do.insert=function(t,e){return t=Y(t),e=R(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Do.remove=function(){return this.each(H)},Do.data=function(t,e){function n(t,n){var r,i,a,o=t.length,c=n.length,f=Math.min(o,c),h=new Array(c),d=new Array(c),g=new Array(o);if(e){var m,v=new p,y=new Array(o);for(r=-1;++rr;++r)d[r]=B(n[r]);for(;o>r;++r)g[r]=t[r]}d.update=h,d.parentNode=h.parentNode=g.parentNode=t.parentNode,u.push(d),s.push(h),l.push(g)}var r,i,a=-1,o=this.length;if(!arguments.length){for(t=new Array(o=(r=this[0]).length);++aa;a++){i.push(e=[]),e.parentNode=(n=this[a]).parentNode;for(var u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return C(i)},Do.order=function(){for(var t=-1,e=this.length;++t=0;)(n=r[i])&&(a&&a!==n.nextSibling&&a.parentNode.insertBefore(n,a),a=n);return this},Do.sort=function(t){t=X.apply(this,arguments);for(var e=-1,n=this.length;++et;t++)for(var n=this[t],r=0,i=n.length;i>r;r++){var a=n[r];if(a)return a}return null},Do.size=function(){var t=0;return W(this,function(){++t}),t};var Po=[];ho.selection.enter=G,ho.selection.enter.prototype=Po,Po.append=Do.append,Po.empty=Do.empty,Po.node=Do.node,Po.call=Do.call,Po.size=Do.size,Po.select=function(t){for(var e,n,r,i,a,o=[],u=-1,s=this.length;++ur){if("string"!=typeof t){2>r&&(e=!1);for(n in t)this.each(J(n,t[n],e));return this}if(2>r)return(r=this.node()["__on"+t])&&r._;n=!1}return this.each(J(t,e,n))};var zo=ho.map({mouseenter:"mouseover",mouseleave:"mouseout"});mo&&zo.forEach(function(t){"on"+t in mo&&zo.remove(t)});var jo,qo=0;ho.mouse=function(t){return et(t,N())};var $o=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ho.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=N().changedTouches),e)for(var r,i=0,a=e.length;a>i;++i)if((r=e[i]).identifier===n)return et(t,r)},ho.behavior.drag=function(){function t(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(t,e,i,a,o){return function(){function u(){var t,n,r=e(h,g);r&&(t=r[0]-x[0],n=r[1]-x[1],p|=t|n,x=r,d({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:t,dy:n}))}function s(){e(h,g)&&(v.on(a+m,null).on(o+m,null),y(p),d({type:"dragend"}))}var l,c=this,f=ho.event.target.correspondingElement||ho.event.target,h=c.parentNode,d=n.of(c,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=ho.select(i(f)).on(a+m,u).on(o+m,s),y=tt(f),x=e(h,g);r?(l=r.apply(c,arguments),l=[l.x-x[0],l.y-x[1]]):l=[0,0],d({type:"dragstart"})}}var n=L(t,"drag","dragstart","dragend"),r=null,i=e(S,ho.mouse,o,"mousemove","mouseup"),a=e(nt,ho.touch,w,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},ho.rebind(t,n,"on")},ho.touches=function(t,e){return arguments.length<2&&(e=N().touches),e?go(e).map(function(e){var n=et(t,e);return n.identifier=e.identifier,n}):[]};var Fo=1e-6,Yo=Fo*Fo,Ho=Math.PI,Bo=2*Ho,Vo=Bo-Fo,Xo=Ho/2,Wo=Ho/180,Go=180/Ho,Zo=Math.SQRT2,Jo=2,Qo=4;ho.interpolateZoom=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],u=e[0],s=e[1],l=e[2],c=u-i,f=s-a,h=c*c+f*f;if(Yo>h)r=Math.log(l/o)/Zo,n=function(t){return[i+t*c,a+t*f,o*Math.exp(Zo*t*r)]};else{var d=Math.sqrt(h),p=(l*l-o*o+Qo*h)/(2*o*Jo*d),g=(l*l-o*o-Qo*h)/(2*l*Jo*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Zo,n=function(t){var e=t*r,n=st(m),u=o/(Jo*d)*(n*lt(Zo*e+m)-ut(m));return[i+u*c,a+u*f,o*n/st(Zo*e+m)]}}return n.duration=1e3*r,n},ho.behavior.zoom=function(){function t(t){t.on(N,f).on(tu+".zoom",d).on("dblclick.zoom",p).on(D,h)}function e(t){return[(t[0]-k.x)/k.k,(t[1]-k.y)/k.k]}function n(t){return[t[0]*k.k+k.x,t[1]*k.k+k.y]}function r(t){k.k=Math.max(S[0],Math.min(S[1],t))}function i(t,e){e=n(e),k.x+=t[0]-e[0],k.y+=t[1]-e[1]}function a(e,n,a,o){e.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),i(m=n,a),e=ho.select(e),A>0&&(e=e.transition().duration(A)),e.call(t.event)}function u(){b&&b.domain(_.range().map(function(t){return(t-k.x)/k.k}).map(_.invert)),w&&w.domain(M.range().map(function(t){return(t-k.y)/k.k}).map(M.invert))}function s(t){T++||t({type:"zoomstart"})}function l(t){u(),t({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function c(t){--T||(t({type:"zoomend"}),m=null)}function f(){function t(){u=1,i(ho.mouse(r),h),l(a)}function n(){f.on(C,null).on(R,null),d(u),c(a)}var r=this,a=I.of(r,arguments),u=0,f=ho.select(o(r)).on(C,t).on(R,n),h=e(ho.mouse(r)),d=tt(r);Xs.call(r),s(a)}function h(){function t(){var t=ho.touches(p);return d=k.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=e(t))}),t}function n(){var e=ho.event.target;ho.select(e).on(_,o).on(b,u),M.push(e);for(var n=ho.event.changedTouches,r=0,i=n.length;i>r;++r)m[n[r].identifier]=null;var s=t(),l=Date.now();if(1===s.length){if(500>l-x){var c=s[0];a(p,c,m[c.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),O()}x=l}else if(s.length>1){var c=s[0],f=s[1],h=c[0]-f[0],d=c[1]-f[1];v=h*h+d*d}}function o(){var t,e,n,a,o=ho.touches(p);Xs.call(p);for(var u=0,s=o.length;s>u;++u,a=null)if(n=o[u],a=m[n.identifier]){if(e)break;t=n,e=a}if(a){var c=(c=n[0]-t[0])*c+(c=n[1]-t[1])*c,f=v&&Math.sqrt(c/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+a[0])/2,(e[1]+a[1])/2],r(f*d)}x=null,i(t,e),l(g)}function u(){if(ho.event.touches.length){for(var e=ho.event.changedTouches,n=0,r=e.length;r>n;++n)delete m[e[n].identifier];for(var i in m)return void t()}ho.selectAll(M).on(y,null),w.on(N,f).on(D,h),E(),c(g)}var d,p=this,g=I.of(p,arguments),m={},v=0,y=".zoom-"+ho.event.changedTouches[0].identifier,_="touchmove"+y,b="touchend"+y,M=[],w=ho.select(p),E=tt(p);n(),s(g),w.on(N,null).on(D,n)}function d(){var t=I.of(this,arguments);y?clearTimeout(y):(Xs.call(this),g=e(m=v||ho.mouse(this)),s(t)),y=setTimeout(function(){y=null,c(t)},50),O(),r(Math.pow(2,.002*Ko())*k.k),i(m,g),l(t)}function p(){var t=ho.mouse(this),n=Math.log(k.k)/Math.LN2;a(this,t,e(t),ho.event.shiftKey?Math.ceil(n)-1:Math.floor(n)+1)}var g,m,v,y,x,_,b,M,w,k={x:0,y:0,k:1},E=[960,500],S=eu,A=250,T=0,N="mousedown.zoom",C="mousemove.zoom",R="mouseup.zoom",D="touchstart.zoom",I=L(t,"zoomstart","zoom","zoomend");return tu||(tu="onwheel"in mo?(Ko=function(){return-ho.event.deltaY*(ho.event.deltaMode?120:1)},"wheel"):"onmousewheel"in mo?(Ko=function(){return ho.event.wheelDelta},"mousewheel"):(Ko=function(){return-ho.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=I.of(this,arguments),e=k;Bs?ho.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},s(t)}).tween("zoom:zoom",function(){var n=E[0],r=E[1],i=m?m[0]:n/2,a=m?m[1]:r/2,o=ho.interpolateZoom([(i-k.x)/k.k,(a-k.y)/k.k,n/k.k],[(i-e.x)/e.k,(a-e.y)/e.k,n/e.k]);return function(e){var r=o(e),u=n/r[2];this.__chart__=k={x:i-r[0]*u,y:a-r[1]*u,k:u},l(t)}}).each("interrupt.zoom",function(){c(t)}).each("end.zoom",function(){c(t)}):(this.__chart__=k,s(t),l(t),c(t))})},t.translate=function(e){return arguments.length?(k={x:+e[0],y:+e[1],k:k.k},u(),t):[k.x,k.y]},t.scale=function(e){return arguments.length?(k={x:k.x,y:k.y,k:null},r(+e),u(),t):k.k},t.scaleExtent=function(e){return arguments.length?(S=null==e?eu:[+e[0],+e[1]],t):S},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(E=e&&[+e[0],+e[1]],t):E},t.duration=function(e){return arguments.length?(A=+e,t):A},t.x=function(e){return arguments.length?(b=e,_=e.copy(),k={x:0,y:0,k:1},t):b},t.y=function(e){return arguments.length?(w=e,M=e.copy(),k={x:0,y:0,k:1},t):w},ho.rebind(t,I,"on")};var Ko,tu,eu=[0,1/0];ho.color=ft,ft.prototype.toString=function(){return this.rgb()+""},ho.hsl=ht;var nu=ht.prototype=new ft;nu.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,this.l/t)},nu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,t*this.l)},nu.rgb=function(){return dt(this.h,this.s,this.l)},ho.hcl=pt;var ru=pt.prototype=new ft;ru.brighter=function(t){return new pt(this.h,this.c,Math.min(100,this.l+iu*(arguments.length?t:1)))},ru.darker=function(t){return new pt(this.h,this.c,Math.max(0,this.l-iu*(arguments.length?t:1)))},ru.rgb=function(){return gt(this.h,this.c,this.l).rgb()},ho.lab=mt;var iu=18,au=.95047,ou=1,uu=1.08883,su=mt.prototype=new ft;su.brighter=function(t){return new mt(Math.min(100,this.l+iu*(arguments.length?t:1)),this.a,this.b)},su.darker=function(t){return new mt(Math.max(0,this.l-iu*(arguments.length?t:1)),this.a,this.b)},su.rgb=function(){return vt(this.l,this.a,this.b)},ho.rgb=Mt;var lu=Mt.prototype=new ft;lu.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,r=this.b,i=30;return e||n||r?(e&&i>e&&(e=i),n&&i>n&&(n=i),r&&i>r&&(r=i),new Mt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,r/t))):new Mt(i,i,i)},lu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Mt(t*this.r,t*this.g,t*this.b)},lu.hsl=function(){return At(this.r,this.g,this.b)},lu.toString=function(){return"#"+Et(this.r)+Et(this.g)+Et(this.b)};var cu=ho.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});cu.forEach(function(t,e){cu.set(t,wt(e))}),ho.functor=Lt,ho.xhr=Ct(w),ho.dsv=function(t,e){function n(t,n,a){arguments.length<3&&(a=n,n=null);var o=Rt(t,e,null==n?r:i(n),a);return o.row=function(t){return arguments.length?o.response(null==(n=t)?r:i(t)):n},o}function r(t){return n.parse(t.responseText)}function i(t){return function(e){return n.parse(e.responseText,t)}}function a(e){return e.map(o).join(t)}function o(t){return u.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var u=new RegExp('["'+t+"\n]"),s=t.charCodeAt(0);return n.parse=function(t,e){var r;return n.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");r=e?function(t,n){return e(i(t),n)}:i})},n.parseRows=function(t,e){function n(){if(c>=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var n=e;n++c;){var r=t.charCodeAt(c++),u=1;if(10===r)i=!0;else if(13===r)i=!0,10===t.charCodeAt(c)&&(++c,++u);else if(r!==s)continue;return t.slice(e,c-u)}return t.slice(e)}for(var r,i,a={},o={},u=[],l=t.length,c=0,f=0;(r=n())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=n();e&&null==(h=e(h,f++))||u.push(h)}return u},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var r=new M,i=[];return e.forEach(function(t){for(var e in t)r.has(e)||i.push(r.add(e))}),[i.map(o).join(t)].concat(e.map(function(e){return i.map(function(t){return o(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(a).join("\n")},n},ho.csv=ho.dsv(",","text/csv"),ho.tsv=ho.dsv(" ","text/tab-separated-values");var fu,hu,du,pu,gu=this[E(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};ho.timer=function(){Ut.apply(this,arguments)},ho.timer.flush=function(){zt(),jt()},ho.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var mu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map($t);ho.formatPrefix=function(t,e){var n=0;return(t=+t)&&(0>t&&(t*=-1),e&&(t=ho.round(t,qt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),mu[8+n/3]};var vu=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,yu=ho.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){ -return(t=ho.round(t,qt(t,e))).toFixed(Math.max(0,Math.min(20,qt(t*(1+1e-15),e))))}}),xu=ho.time={},_u=Date;Ht.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(){bu.setUTCDate.apply(this._,arguments)},setDay:function(){bu.setUTCDay.apply(this._,arguments)},setFullYear:function(){bu.setUTCFullYear.apply(this._,arguments)},setHours:function(){bu.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){bu.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){bu.setUTCMinutes.apply(this._,arguments)},setMonth:function(){bu.setUTCMonth.apply(this._,arguments)},setSeconds:function(){bu.setUTCSeconds.apply(this._,arguments)},setTime:function(){bu.setTime.apply(this._,arguments)}};var bu=Date.prototype;xu.year=Bt(function(t){return t=xu.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),xu.years=xu.year.range,xu.years.utc=xu.year.utc.range,xu.day=Bt(function(t){var e=new _u(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),xu.days=xu.day.range,xu.days.utc=xu.day.utc.range,xu.dayOfYear=function(t){var e=xu.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=xu[t]=Bt(function(t){return(t=xu.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});xu[t+"s"]=n.range,xu[t+"s"].utc=n.utc.range,xu[t+"OfYear"]=function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)}}),xu.week=xu.sunday,xu.weeks=xu.sunday.range,xu.weeks.utc=xu.sunday.utc.range,xu.weekOfYear=xu.sundayOfYear;var Mu={"-":"",_:" ",0:"0"},wu=/^\s*\d+/,ku=/^%/;ho.locale=function(t){return{numberFormat:Ft(t),timeFormat:Xt(t)}};var Eu=ho.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",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"]});ho.format=Eu.numberFormat,ho.geo={},pe.prototype={s:0,t:0,add:function(t){ge(t,this.t,Su),ge(Su.s,this.s,this),this.s?this.t+=Su.t:this.s=Su.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Su=new pe;ho.geo.stream=function(t,e){t&&Au.hasOwnProperty(t.type)?Au[t.type](t,e):me(t,e)};var Au={Feature:function(t,e){me(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++rt?4*Ho+t:t,Lu.lineStart=Lu.lineEnd=Lu.point=S}};ho.geo.bounds=function(){function t(t,e){x.push(_=[c=t,h=t]),f>e&&(f=e),e>d&&(d=e)}function e(e,n){var r=_e([e*Wo,n*Wo]);if(v){var i=Me(v,r),a=[i[1],-i[0],0],o=Me(a,i);Ee(o),o=Se(o);var s=e-p,l=s>0?1:-1,g=o[0]*Go*l,m=Eo(s)>180;if(m^(g>l*p&&l*e>g)){var y=o[1]*Go;y>d&&(d=y)}else if(g=(g+360)%360-180,m^(g>l*p&&l*e>g)){var y=-o[1]*Go;f>y&&(f=y)}else f>n&&(f=n),n>d&&(d=n);m?p>e?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e):h>=c?(c>e&&(c=e),e>h&&(h=e)):e>p?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e)}else t(e,n);v=r,p=e}function n(){b.point=e}function r(){_[0]=c,_[1]=h,b.point=t,v=null}function i(t,n){if(v){var r=t-p;y+=Eo(r)>180?r+(r>0?360:-360):r}else g=t,m=n;Lu.point(t,n),e(t,n)}function a(){Lu.lineStart()}function o(){i(g,m),Lu.lineEnd(),Eo(y)>Fo&&(c=-(h=180)),_[0]=c,_[1]=h,v=null}function u(t,e){return(e-=t)<0?e+360:e}function s(t,e){return t[0]-e[0]}function l(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tNu?(c=-(h=180),f=-(d=90)):y>Fo?d=90:-Fo>y&&(f=-90),_[0]=c,_[1]=h}};return function(t){d=h=-(c=f=1/0),x=[],ho.geo.stream(t,b);var e=x.length;if(e){x.sort(s);for(var n,r=1,i=x[0],a=[i];e>r;++r)n=x[r],l(n[0],i)||l(n[1],i)?(u(i[0],n[1])>u(i[0],i[1])&&(i[1]=n[1]),u(n[0],i[1])>u(i[0],i[1])&&(i[0]=n[0])):a.push(i=n);for(var o,n,p=-(1/0),e=a.length-1,r=0,i=a[e];e>=r;i=n,++r)n=a[r],(o=u(i[1],n[0]))>p&&(p=o,c=n[0],h=i[1])}return x=_=null,c===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[c,f],[h,d]]}}(),ho.geo.centroid=function(t){Cu=Ru=Du=Iu=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,Yu);var e=qu,n=$u,r=Fu,i=e*e+n*n+r*r;return Yo>i&&(e=Pu,n=zu,r=ju,Fo>Ru&&(e=Du,n=Iu,r=Uu),i=e*e+n*n+r*r,Yo>i)?[NaN,NaN]:[Math.atan2(n,e)*Go,ot(r/Math.sqrt(i))*Go]};var Cu,Ru,Du,Iu,Uu,Pu,zu,ju,qu,$u,Fu,Yu={sphere:S,point:Te,lineStart:Ne,lineEnd:Le,polygonStart:function(){Yu.lineStart=Ce},polygonEnd:function(){Yu.lineStart=Ne}},Hu=ze(De,Fe,He,[-Ho,-Ho/2]),Bu=1e9;ho.geo.clipExtent=function(){var t,e,n,r,i,a,o={stream:function(t){return i&&(i.valid=!1),i=a(t),i.valid=!0,i},extent:function(u){return arguments.length?(a=We(t=+u[0][0],e=+u[0][1],n=+u[1][0],r=+u[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[n,r]]}};return o.extent([[0,0],[960,500]])},(ho.geo.conicEqualArea=function(){return Ge(Ze)}).raw=Ze,ho.geo.albers=function(){return ho.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ho.geo.albersUsa=function(){function t(t){var a=t[0],o=t[1];return e=null,n(a,o),e||(r(a,o),e)||i(a,o),e}var e,n,r,i,a=ho.geo.albers(),o=ho.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=ho.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?u:a).invert(t)},t.stream=function(t){var e=a.stream(t),n=o.stream(t),r=u.stream(t);return{point:function(t,i){e.point(t,i),n.point(t,i),r.point(t,i)},sphere:function(){e.sphere(),n.sphere(),r.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),r.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),r.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),r.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),r.polygonEnd()}}},t.precision=function(e){return arguments.length?(a.precision(e),o.precision(e),u.precision(e),t):a.precision()},t.scale=function(e){return arguments.length?(a.scale(e),o.scale(.35*e),u.scale(e),t.translate(a.translate())):a.scale()},t.translate=function(e){if(!arguments.length)return a.translate();var l=a.scale(),c=+e[0],f=+e[1];return n=a.translate(e).clipExtent([[c-.455*l,f-.238*l],[c+.455*l,f+.238*l]]).stream(s).point,r=o.translate([c-.307*l,f+.201*l]).clipExtent([[c-.425*l+Fo,f+.12*l+Fo],[c-.214*l-Fo,f+.234*l-Fo]]).stream(s).point,i=u.translate([c-.205*l,f+.212*l]).clipExtent([[c-.214*l+Fo,f+.166*l+Fo],[c-.115*l-Fo,f+.234*l-Fo]]).stream(s).point,t},t.scale(1070)};var Vu,Xu,Wu,Gu,Zu,Ju,Qu={point:S,lineStart:S,lineEnd:S,polygonStart:function(){Xu=0,Qu.lineStart=Je},polygonEnd:function(){Qu.lineStart=Qu.lineEnd=Qu.point=S,Vu+=Eo(Xu/2)}},Ku={point:Qe,lineStart:S,lineEnd:S,polygonStart:S,polygonEnd:S},ts={point:en,lineStart:nn,lineEnd:rn,polygonStart:function(){ts.lineStart=an},polygonEnd:function(){ts.point=en,ts.lineStart=nn,ts.lineEnd=rn}};ho.geo.path=function(){function t(t){return t&&("function"==typeof u&&a.pointRadius(+u.apply(this,arguments)),o&&o.valid||(o=i(a)),ho.geo.stream(t,o)),a.result()}function e(){return o=null,t}var n,r,i,a,o,u=4.5;return t.area=function(t){return Vu=0,ho.geo.stream(t,i(Qu)),Vu},t.centroid=function(t){return Du=Iu=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,i(ts)),Fu?[qu/Fu,$u/Fu]:ju?[Pu/ju,zu/ju]:Uu?[Du/Uu,Iu/Uu]:[NaN,NaN]},t.bounds=function(t){return Zu=Ju=-(Wu=Gu=1/0),ho.geo.stream(t,i(Ku)),[[Wu,Gu],[Zu,Ju]]},t.projection=function(t){return arguments.length?(i=(n=t)?t.stream||sn(t):w,e()):n},t.context=function(t){return arguments.length?(a=null==(r=t)?new Ke:new on(t),"function"!=typeof u&&a.pointRadius(u),e()):r},t.pointRadius=function(e){return arguments.length?(u="function"==typeof e?e:(a.pointRadius(+e),+e),t):u},t.projection(ho.geo.albersUsa()).context(null)},ho.geo.transform=function(t){return{stream:function(e){var n=new ln(e);for(var r in t)n[r]=t[r];return n}}},ln.prototype={point:function(t,e){this.stream.point(t,e)},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()}},ho.geo.projection=fn,ho.geo.projectionMutator=hn,(ho.geo.equirectangular=function(){return fn(pn)}).raw=pn.invert=pn,ho.geo.rotation=function(t){function e(e){return e=t(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e}return t=mn(t[0]%360*Wo,t[1]*Wo,t.length>2?t[2]*Wo:0),e.invert=function(e){return e=t.invert(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e},e},gn.invert=pn,ho.geo.circle=function(){function t(){var t="function"==typeof r?r.apply(this,arguments):r,e=mn(-t[0]*Wo,-t[1]*Wo,0).invert,i=[];return n(null,null,1,{point:function(t,n){i.push(t=e(t,n)),t[0]*=Go,t[1]*=Go}}),{type:"Polygon",coordinates:[i]}}var e,n,r=[0,0],i=6;return t.origin=function(e){return arguments.length?(r=e,t):r},t.angle=function(r){return arguments.length?(n=_n((e=+r)*Wo,i*Wo),t):e},t.precision=function(r){return arguments.length?(n=_n(e*Wo,(i=+r)*Wo),t):i},t.angle(90)},ho.geo.distance=function(t,e){var n,r=(e[0]-t[0])*Wo,i=t[1]*Wo,a=e[1]*Wo,o=Math.sin(r),u=Math.cos(r),s=Math.sin(i),l=Math.cos(i),c=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((n=f*o)*n+(n=l*c-s*f*u)*n),s*c+l*f*u)},ho.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return ho.range(Math.ceil(a/m)*m,i,m).map(h).concat(ho.range(Math.ceil(l/v)*v,s,v).map(d)).concat(ho.range(Math.ceil(r/p)*p,n,p).filter(function(t){return Eo(t%m)>Fo}).map(c)).concat(ho.range(Math.ceil(u/g)*g,o,g).filter(function(t){return Eo(t%v)>Fo}).map(f))}var n,r,i,a,o,u,s,l,c,f,h,d,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(a).concat(d(s).slice(1),h(i).reverse().slice(1),d(l).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(a=+e[0][0],i=+e[1][0],l=+e[0][1],s=+e[1][1],a>i&&(e=a,a=i,i=e),l>s&&(e=l,l=s,s=e),t.precision(y)):[[a,l],[i,s]]},t.minorExtent=function(e){return arguments.length?(r=+e[0][0],n=+e[1][0],u=+e[0][1],o=+e[1][1],r>n&&(e=r,r=n,n=e),u>o&&(e=u,u=o,o=e),t.precision(y)):[[r,u],[n,o]]},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,c=Mn(u,o,90),f=wn(r,n,y),h=Mn(l,s,90),d=wn(a,i,y),t):y},t.majorExtent([[-180,-90+Fo],[180,90-Fo]]).minorExtent([[-180,-80-Fo],[180,80+Fo]])},ho.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||r.apply(this,arguments),n||i.apply(this,arguments)]}}var e,n,r=kn,i=En;return t.distance=function(){return ho.geo.distance(e||r.apply(this,arguments),n||i.apply(this,arguments))},t.source=function(n){return arguments.length?(r=n,e="function"==typeof n?null:n,t):r},t.target=function(e){return arguments.length?(i=e,n="function"==typeof e?null:e,t):i},t.precision=function(){return arguments.length?t:0},t},ho.geo.interpolate=function(t,e){return Sn(t[0]*Wo,t[1]*Wo,e[0]*Wo,e[1]*Wo)},ho.geo.length=function(t){return es=0,ho.geo.stream(t,ns),es};var es,ns={sphere:S,point:S,lineStart:An,lineEnd:S,polygonStart:S,polygonEnd:S},rs=Tn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(ho.geo.azimuthalEqualArea=function(){return fn(rs)}).raw=rs;var is=Tn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},w);(ho.geo.azimuthalEquidistant=function(){return fn(is)}).raw=is,(ho.geo.conicConformal=function(){return Ge(On)}).raw=On,(ho.geo.conicEquidistant=function(){return Ge(Nn)}).raw=Nn;var as=Tn(function(t){return 1/t},Math.atan);(ho.geo.gnomonic=function(){return fn(as)}).raw=as,Ln.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Xo]},(ho.geo.mercator=function(){return Cn(Ln)}).raw=Ln;var os=Tn(function(){return 1},Math.asin);(ho.geo.orthographic=function(){return fn(os)}).raw=os;var us=Tn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(ho.geo.stereographic=function(){return fn(us)}).raw=us,Rn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Xo]},(ho.geo.transverseMercator=function(){var t=Cn(Rn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Rn,ho.geom={},ho.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,i=Lt(n),a=Lt(r),o=t.length,u=[],s=[];for(e=0;o>e;e++)u.push([+i.call(this,t[e],e),+a.call(this,t[e],e),e]);for(u.sort(Pn),e=0;o>e;e++)s.push([u[e][0],-u[e][1]]);var l=Un(u),c=Un(s),f=c[0]===l[0],h=c[c.length-1]===l[l.length-1],d=[];for(e=l.length-1;e>=0;--e)d.push(t[u[l[e]][2]]);for(e=+f;e=r&&l.x<=a&&l.y>=i&&l.y<=o?[[r,o],[a,o],[a,i],[r,i]]:[];c.point=t[u]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(a(t,e)/Fo)*Fo,y:Math.round(o(t,e)/Fo)*Fo,i:e}})}var r=Dn,i=In,a=r,o=i,u=ms;return t?e(t):(e.links=function(t){return hr(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return hr(n(t)).cells.forEach(function(n,r){for(var i,a,o=n.site,u=n.edges.sort(Zn),s=-1,l=u.length,c=u[l-1].edge,f=c.l===o?c.r:c.l;++s=l,h=r>=c,d=h<<1|f;t.leaf=!1,t=t.nodes[d]||(t.nodes[d]=vr()),f?i=l:u=l,h?o=c:s=c,a(t,e,n,r,i,o,u,s)}var c,f,h,d,p,g,m,v,y,x=Lt(u),_=Lt(s);if(null!=e)g=e,m=n,v=r,y=i;else if(v=y=-(g=m=1/0),f=[],h=[],p=t.length,o)for(d=0;p>d;++d)c=t[d],c.xv&&(v=c.x),c.y>y&&(y=c.y),f.push(c.x),h.push(c.y);else for(d=0;p>d;++d){var b=+x(c=t[d],d),M=+_(c,d);g>b&&(g=b),m>M&&(m=M),b>v&&(v=b),M>y&&(y=M),f.push(b),h.push(M)}var w=v-g,k=y-m;w>k?y=m+w:v=g+k;var E=vr();if(E.add=function(t){a(E,t,+x(t,++d),+_(t,d),g,m,v,y)},E.visit=function(t){yr(t,E,g,m,v,y)},E.find=function(t){return xr(E,t[0],t[1],g,m,v,y)},d=-1,null==e){for(;++d=0?t.slice(0,e):t,r=e>=0?t.slice(e+1):"in";return n=_s.get(n)||xs,r=bs.get(r)||w,Sr(r(n.apply(null,po.call(arguments,1))))},ho.interpolateHcl=jr,ho.interpolateHsl=qr,ho.interpolateLab=$r,ho.interpolateRound=Fr,ho.transform=function(t){var e=mo.createElementNS(ho.ns.prefix.svg,"g");return(ho.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Yr(n?n.matrix:Ms)})(t)},Yr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Ms={a:1,b:0,c:0,d:1,e:0,f:0};ho.interpolateTransform=Qr,ho.layout={},ho.layout.bundle=function(){return function(t){for(var e=[],n=-1,r=t.length;++nu*u/v){if(g>s){var l=e.charge/s;t.px-=a*l,t.py-=o*l}return!0}if(e.point&&s&&g>s){var l=e.pointCharge/s;t.px-=a*l,t.py-=o*l}}return!e.charge}}function e(t){t.px=ho.event.x,t.py=ho.event.y,s.resume()}var n,r,i,a,o,u,s={},l=ho.dispatch("start","tick","end"),c=[1,1],f=.9,h=ws,d=ks,p=-30,g=Es,m=.1,v=.64,y=[],x=[];return s.tick=function(){if((i*=.99)<.005)return n=null,l.end({type:"end",alpha:i=0}),!0;var e,r,s,h,d,g,v,_,b,M=y.length,w=x.length;for(r=0;w>r;++r)s=x[r],h=s.source,d=s.target,_=d.x-h.x,b=d.y-h.y,(g=_*_+b*b)&&(g=i*o[r]*((g=Math.sqrt(g))-a[r])/g,_*=g,b*=g,d.x-=_*(v=h.weight+d.weight?h.weight/(h.weight+d.weight):.5),d.y-=b*v,h.x+=_*(v=1-v),h.y+=b*v);if((v=i*m)&&(_=c[0]/2,b=c[1]/2,r=-1,v))for(;++r0?i=t:(n.c=null,n.t=NaN,n=null,l.end({type:"end",alpha:i=0})):t>0&&(l.start({type:"start",alpha:i=t}),n=Ut(s.tick)),s):i},s.start=function(){function t(t,r){if(!n){for(n=new Array(i),s=0;i>s;++s)n[s]=[];for(s=0;l>s;++s){var a=x[s];n[a.source.index].push(a.target),n[a.target.index].push(a.source)}}for(var o,u=n[e],s=-1,c=u.length;++se;++e)(r=y[e]).index=e,r.weight=0;for(e=0;l>e;++e)r=x[e],"number"==typeof r.source&&(r.source=y[r.source]),"number"==typeof r.target&&(r.target=y[r.target]),++r.source.weight,++r.target.weight;for(e=0;i>e;++e)r=y[e],isNaN(r.x)&&(r.x=t("x",f)),isNaN(r.y)&&(r.y=t("y",g)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(a=[],"function"==typeof h)for(e=0;l>e;++e)a[e]=+h.call(this,x[e],e);else for(e=0;l>e;++e)a[e]=h;if(o=[],"function"==typeof d)for(e=0;l>e;++e)o[e]=+d.call(this,x[e],e);else for(e=0;l>e;++e)o[e]=d;if(u=[],"function"==typeof p)for(e=0;i>e;++e)u[e]=+p.call(this,y[e],e);else for(e=0;i>e;++e)u[e]=p;return s.resume()},s.resume=function(){return s.alpha(.1)},s.stop=function(){return s.alpha(0)},s.drag=function(){return r||(r=ho.behavior.drag().origin(w).on("dragstart.force",ii).on("drag.force",e).on("dragend.force",ai)),arguments.length?void this.on("mouseover.force",oi).on("mouseout.force",ui).call(r):r},ho.rebind(s,l,"on")};var ws=20,ks=1,Es=1/0;ho.layout.hierarchy=function(){function t(i){var a,o=[i],u=[];for(i.depth=0;null!=(a=o.pop());)if(u.push(a),(l=n.call(t,a,a.depth))&&(s=l.length)){for(var s,l,c;--s>=0;)o.push(c=l[s]),c.parent=a,c.depth=a.depth+1;r&&(a.value=0),a.children=l}else r&&(a.value=+r.call(t,a,a.depth)||0),delete a.children;return fi(i,function(t){var n,i;e&&(n=t.children)&&n.sort(e),r&&(i=t.parent)&&(i.value+=t.value)}),u}var e=pi,n=hi,r=di;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(r=e,t):r},t.revalue=function(e){return r&&(ci(e,function(t){t.children&&(t.value=0)}),fi(e,function(e){var n;e.children||(e.value=+r.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},ho.layout.partition=function(){function t(e,n,r,i){var a=e.children;if(e.x=n,e.y=e.depth*i,e.dx=r,e.dy=i,a&&(o=a.length)){var o,u,s,l=-1;for(r=e.value?r/e.value:0;++lf?-1:1),p=ho.sum(l),g=p?(f-s*d)/p:0,m=ho.range(s),v=[];return null!=n&&m.sort(n===Ss?function(t,e){return l[e]-l[t]}:function(t,e){return n(o[t],o[e])}),m.forEach(function(t){v[t]={data:o[t],value:u=l[t],startAngle:c,endAngle:c+=u*g+d,padAngle:h}}),v}var e=Number,n=Ss,r=0,i=Bo,a=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(r=e,t):r},t.endAngle=function(e){return arguments.length?(i=e,t):i},t.padAngle=function(e){return arguments.length?(a=e,t):a},t};var Ss={};ho.layout.stack=function(){function t(u,s){if(!(h=u.length))return u;var l=u.map(function(n,r){return e.call(t,n,r)}),c=l.map(function(e){return e.map(function(e,n){return[a.call(t,e,n),o.call(t,e,n)]})}),f=n.call(t,c,s);l=ho.permute(l,f),c=ho.permute(c,f);var h,d,p,g,m=r.call(t,c,s),v=l[0].length;for(p=0;v>p;++p)for(i.call(t,l[0][p],g=m[p],c[0][p][1]),d=1;h>d;++d)i.call(t,l[d][p],g+=c[d-1][p][1],c[d][p][1]);return u}var e=w,n=xi,r=_i,i=yi,a=mi,o=vi;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:As.get(e)||xi,t):n},t.offset=function(e){return arguments.length?(r="function"==typeof e?e:Ts.get(e)||_i,t):r},t.x=function(e){return arguments.length?(a=e,t):a},t.y=function(e){return arguments.length?(o=e,t):o},t.out=function(e){return arguments.length?(i=e,t):i},t};var As=ho.map({"inside-out":function(t){var e,n,r=t.length,i=t.map(bi),a=t.map(Mi),o=ho.range(r).sort(function(t,e){return i[t]-i[e]}),u=0,s=0,l=[],c=[];for(e=0;r>e;++e)n=o[e],s>u?(u+=a[n],l.push(n)):(s+=a[n],c.push(n));return c.reverse().concat(l)},reverse:function(t){return ho.range(t.length).reverse()},"default":xi}),Ts=ho.map({silhouette:function(t){var e,n,r,i=t.length,a=t[0].length,o=[],u=0,s=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];r>u&&(u=r),o.push(r)}for(n=0;a>n;++n)s[n]=(u-o[n])/2;return s},wiggle:function(t){var e,n,r,i,a,o,u,s,l,c=t.length,f=t[0],h=f.length,d=[];for(d[0]=s=l=0,n=1;h>n;++n){for(e=0,i=0;c>e;++e)i+=t[e][n][1];for(e=0,a=0,u=f[n][0]-f[n-1][0];c>e;++e){for(r=0,o=(t[e][n][1]-t[e][n-1][1])/(2*u);e>r;++r)o+=(t[r][n][1]-t[r][n-1][1])/u;a+=o*t[e][n][1]}d[n]=s-=i?a/i*u:0,l>s&&(l=s)}for(n=0;h>n;++n)d[n]-=l;return d},expand:function(t){var e,n,r,i=t.length,a=t[0].length,o=1/i,u=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];if(r)for(e=0;i>e;e++)t[e][n][1]/=r;else for(e=0;i>e;e++)t[e][n][1]=o}for(n=0;a>n;++n)u[n]=0;return u},zero:_i});ho.layout.histogram=function(){function t(t,a){for(var o,u,s=[],l=t.map(n,this),c=r.call(this,l,a),f=i.call(this,c,l,a),a=-1,h=l.length,d=f.length-1,p=e?1:1/h;++a0)for(a=-1;++a=c[0]&&u<=c[1]&&(o=s[ho.bisect(f,u,1,d)-1],o.y+=p,o.push(t[a]));return s}var e=!0,n=Number,r=Si,i=ki;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(r=Lt(e),t):r},t.bins=function(e){return arguments.length?(i="number"==typeof e?function(t){return Ei(t,e)}:Lt(e),t):i},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},ho.layout.pack=function(){function t(t,a){var o=n.call(this,t,a),u=o[0],s=i[0],l=i[1],c=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(u.x=u.y=0,fi(u,function(t){t.r=+c(t.value)}),fi(u,Li),r){var f=r*(e?1:Math.max(2*u.r/s,2*u.r/l))/2;fi(u,function(t){t.r+=f}),fi(u,Li),fi(u,function(t){t.r-=f})}return Di(u,s/2,l/2,e?1:1/Math.max(2*u.r/s,2*u.r/l)),o}var e,n=ho.layout.hierarchy().sort(Ai),r=0,i=[1,1];return t.size=function(e){return arguments.length?(i=e,t):i},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(r=+e,t):r},li(t,n)},ho.layout.tree=function(){function t(t,i){var c=o.call(this,t,i),f=c[0],h=e(f);if(fi(h,n),h.parent.m=-h.z,ci(h,r),l)ci(f,a);else{var d=f,p=f,g=f;ci(f,function(t){t.xp.x&&(p=t),t.depth>g.depth&&(g=t)});var m=u(d,p)/2-d.x,v=s[0]/(p.x+u(p,d)/2+m),y=s[1]/(g.depth||1);ci(f,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return c}function e(t){for(var e,n={A:null,children:[t]},r=[n];null!=(e=r.pop());)for(var i,a=e.children,o=0,u=a.length;u>o;++o)r.push((a[o]=i={ -_:a[o],parent:e,children:(i=a[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(e.length){qi(t);var a=(e[0].z+e[e.length-1].z)/2;r?(t.z=r.z+u(t._,r._),t.m=t.z-a):t.z=a}else r&&(t.z=r.z+u(t._,r._));t.parent.A=i(t,r,t.parent.A||n[0])}function r(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function i(t,e,n){if(e){for(var r,i=t,a=t,o=e,s=i.parent.children[0],l=i.m,c=a.m,f=o.m,h=s.m;o=zi(o),i=Pi(i),o&&i;)s=Pi(s),a=zi(a),a.a=t,r=o.z+f-i.z-l+u(o._,i._),r>0&&(ji($i(o,t,n),t,r),l+=r,c+=r),f+=o.m,l+=i.m,h+=s.m,c+=a.m;o&&!zi(a)&&(a.t=o,a.m+=f-c),i&&!Pi(s)&&(s.t=i,s.m+=l-h,n=t)}return n}function a(t){t.x*=s[0],t.y=t.depth*s[1]}var o=ho.layout.hierarchy().sort(null).value(null),u=Ui,s=[1,1],l=null;return t.separation=function(e){return arguments.length?(u=e,t):u},t.size=function(e){return arguments.length?(l=null==(s=e)?a:null,t):l?null:s},t.nodeSize=function(e){return arguments.length?(l=null==(s=e)?null:a,t):l?s:null},li(t,o)},ho.layout.cluster=function(){function t(t,a){var o,u=e.call(this,t,a),s=u[0],l=0;fi(s,function(t){var e=t.children;e&&e.length?(t.x=Yi(e),t.y=Fi(e)):(t.x=o?l+=n(t,o):0,t.y=0,o=t)});var c=Hi(s),f=Bi(s),h=c.x-n(c,f)/2,d=f.x+n(f,c)/2;return fi(s,i?function(t){t.x=(t.x-s.x)*r[0],t.y=(s.y-t.y)*r[1]}:function(t){t.x=(t.x-h)/(d-h)*r[0],t.y=(1-(s.y?t.y/s.y:1))*r[1]}),u}var e=ho.layout.hierarchy().sort(null).value(null),n=Ui,r=[1,1],i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(i=null==(r=e),t):i?null:r},t.nodeSize=function(e){return arguments.length?(i=null!=(r=e),t):i?r:null},li(t,e)},ho.layout.treemap=function(){function t(t,e){for(var n,r,i=-1,a=t.length;++ie?0:e),n.area=isNaN(r)||0>=r?0:r}function e(n){var a=n.children;if(a&&a.length){var o,u,s,l=f(n),c=[],h=a.slice(),p=1/0,g="slice"===d?l.dx:"dice"===d?l.dy:"slice-dice"===d?1&n.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(t(h,l.dx*l.dy/n.value),c.area=0;(s=h.length)>0;)c.push(o=h[s-1]),c.area+=o.area,"squarify"!==d||(u=r(c,g))<=p?(h.pop(),p=u):(c.area-=c.pop().area,i(c,g,l,!1),g=Math.min(l.dx,l.dy),c.length=c.area=0,p=1/0);c.length&&(i(c,g,l,!0),c.length=c.area=0),a.forEach(e)}}function n(e){var r=e.children;if(r&&r.length){var a,o=f(e),u=r.slice(),s=[];for(t(u,o.dx*o.dy/e.value),s.area=0;a=u.pop();)s.push(a),s.area+=a.area,null!=a.z&&(i(s,a.z?o.dx:o.dy,o,!u.length),s.length=s.area=0);r.forEach(n)}}function r(t,e){for(var n,r=t.area,i=0,a=1/0,o=-1,u=t.length;++on&&(a=n),n>i&&(i=n));return r*=r,e*=e,r?Math.max(e*i*p/r,r/(e*a*p)):1/0}function i(t,e,n,r){var i,a=-1,o=t.length,u=n.x,l=n.y,c=e?s(t.area/e):0;if(e==n.dx){for((r||c>n.dy)&&(c=n.dy);++an.dx)&&(c=n.dx);++an&&(e=1),1>n&&(t=0),function(){var n,r,i;do n=2*Math.random()-1,r=2*Math.random()-1,i=n*n+r*r;while(!i||i>1);return t+e*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=ho.random.normal.apply(ho,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=ho.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;t>n;n++)e+=Math.random();return e}}},ho.scale={};var Os={floor:w,ceil:w};ho.scale.linear=function(){return ta([0,1],[0,1],kr,!1)};var Ns={s:1,g:1,p:1,r:1,e:1};ho.scale.log=function(){return sa(ho.scale.linear().domain([0,1]),10,!0,[1,10])};var Ls=ho.format(".0e"),Cs={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};ho.scale.pow=function(){return la(ho.scale.linear(),1,[0,1])},ho.scale.sqrt=function(){return ho.scale.pow().exponent(.5)},ho.scale.ordinal=function(){return fa([],{t:"range",a:[[]]})},ho.scale.category10=function(){return ho.scale.ordinal().range(Rs)},ho.scale.category20=function(){return ho.scale.ordinal().range(Ds)},ho.scale.category20b=function(){return ho.scale.ordinal().range(Is)},ho.scale.category20c=function(){return ho.scale.ordinal().range(Us)};var Rs=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(kt),Ds=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(kt),Is=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(kt),Us=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(kt);ho.scale.quantile=function(){return ha([],[])},ho.scale.quantize=function(){return da(0,1,[0,1])},ho.scale.threshold=function(){return pa([.5],[0,1])},ho.scale.identity=function(){return ga([0,1])},ho.svg={},ho.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),c=o.apply(this,arguments)-Xo,f=u.apply(this,arguments)-Xo,h=Math.abs(f-c),d=c>f?0:1;if(t>l&&(p=l,l=t,t=p),h>=Vo)return e(l,d)+(t?e(t,1-d):"")+"Z";var p,g,m,v,y,x,_,b,M,w,k,E,S=0,A=0,T=[];if((v=(+s.apply(this,arguments)||0)/2)&&(m=a===Ps?Math.sqrt(t*t+l*l):+a.apply(this,arguments),d||(A*=-1),l&&(A=ot(m/l*Math.sin(v))),t&&(S=ot(m/t*Math.sin(v)))),l){y=l*Math.cos(c+A),x=l*Math.sin(c+A),_=l*Math.cos(f-A),b=l*Math.sin(f-A);var O=Math.abs(f-c-2*A)<=Ho?0:1;if(A&&Ma(y,x,_,b)===d^O){var N=(c+f)/2;y=l*Math.cos(N),x=l*Math.sin(N),_=b=null}}else y=x=0;if(t){M=t*Math.cos(f-S),w=t*Math.sin(f-S),k=t*Math.cos(c+S),E=t*Math.sin(c+S);var L=Math.abs(c-f+2*S)<=Ho?0:1;if(S&&Ma(M,w,k,E)===1-d^L){var C=(c+f)/2;M=t*Math.cos(C),w=t*Math.sin(C),k=E=null}}else M=w=0;if(h>Fo&&(p=Math.min(Math.abs(l-t)/2,+i.apply(this,arguments)))>.001){g=l>t^d?0:1;var R=p,D=p;if(Ho>h){var I=null==k?[M,w]:null==_?[y,x]:jn([y,x],[k,E],[_,b],[M,w]),U=y-I[0],P=x-I[1],z=_-I[0],j=b-I[1],q=1/Math.sin(Math.acos((U*z+P*j)/(Math.sqrt(U*U+P*P)*Math.sqrt(z*z+j*j)))/2),$=Math.sqrt(I[0]*I[0]+I[1]*I[1]);D=Math.min(p,(t-$)/(q-1)),R=Math.min(p,(l-$)/(q+1))}if(null!=_){var F=wa(null==k?[M,w]:[k,E],[y,x],l,R,d),Y=wa([_,b],[M,w],l,R,d);p===R?T.push("M",F[0],"A",R,",",R," 0 0,",g," ",F[1],"A",l,",",l," 0 ",1-d^Ma(F[1][0],F[1][1],Y[1][0],Y[1][1]),",",d," ",Y[1],"A",R,",",R," 0 0,",g," ",Y[0]):T.push("M",F[0],"A",R,",",R," 0 1,",g," ",Y[0])}else T.push("M",y,",",x);if(null!=k){var H=wa([y,x],[k,E],t,-D,d),B=wa([M,w],null==_?[y,x]:[_,b],t,-D,d);p===D?T.push("L",B[0],"A",D,",",D," 0 0,",g," ",B[1],"A",t,",",t," 0 ",d^Ma(B[1][0],B[1][1],H[1][0],H[1][1]),",",1-d," ",H[1],"A",D,",",D," 0 0,",g," ",H[0]):T.push("L",B[0],"A",D,",",D," 0 0,",g," ",H[0])}else T.push("L",M,",",w)}else T.push("M",y,",",x),null!=_&&T.push("A",l,",",l," 0 ",O,",",d," ",_,",",b),T.push("L",M,",",w),null!=k&&T.push("A",t,",",t," 0 ",L,",",1-d," ",k,",",E);return T.push("Z"),T.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=va,r=ya,i=ma,a=Ps,o=xa,u=_a,s=ba;return t.innerRadius=function(e){return arguments.length?(n=Lt(e),t):n},t.outerRadius=function(e){return arguments.length?(r=Lt(e),t):r},t.cornerRadius=function(e){return arguments.length?(i=Lt(e),t):i},t.padRadius=function(e){return arguments.length?(a=e==Ps?Ps:Lt(e),t):a},t.startAngle=function(e){return arguments.length?(o=Lt(e),t):o},t.endAngle=function(e){return arguments.length?(u=Lt(e),t):u},t.padAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.centroid=function(){var t=(+n.apply(this,arguments)+ +r.apply(this,arguments))/2,e=(+o.apply(this,arguments)+ +u.apply(this,arguments))/2-Xo;return[Math.cos(e)*t,Math.sin(e)*t]},t};var Ps="auto";ho.svg.line=function(){return ka(w)};var zs=ho.map({linear:Ea,"linear-closed":Sa,step:Aa,"step-before":Ta,"step-after":Oa,basis:Ia,"basis-open":Ua,"basis-closed":Pa,bundle:za,cardinal:Ca,"cardinal-open":Na,"cardinal-closed":La,monotone:Ha});zs.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var js=[0,2/3,1/3,0],qs=[0,1/3,2/3,0],$s=[0,1/6,2/3,1/6];ho.svg.line.radial=function(){var t=ka(Ba);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Ta.reverse=Oa,Oa.reverse=Ta,ho.svg.area=function(){return Va(w)},ho.svg.area.radial=function(){var t=Va(Ba);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},ho.svg.chord=function(){function t(t,u){var s=e(this,a,t,u),l=e(this,o,t,u);return"M"+s.p0+r(s.r,s.p1,s.a1-s.a0)+(n(s,l)?i(s.r,s.p1,s.r,s.p0):i(s.r,s.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+i(l.r,l.p1,s.r,s.p0))+"Z"}function e(t,e,n,r){var i=e.call(t,n,r),a=u.call(t,i,r),o=s.call(t,i,r)-Xo,c=l.call(t,i,r)-Xo;return{r:a,a0:o,a1:c,p0:[a*Math.cos(o),a*Math.sin(o)],p1:[a*Math.cos(c),a*Math.sin(c)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function r(t,e,n){return"A"+t+","+t+" 0 "+ +(n>Ho)+",1 "+e}function i(t,e,n,r){return"Q 0,0 "+r}var a=kn,o=En,u=Xa,s=xa,l=_a;return t.radius=function(e){return arguments.length?(u=Lt(e),t):u},t.source=function(e){return arguments.length?(a=Lt(e),t):a},t.target=function(e){return arguments.length?(o=Lt(e),t):o},t.startAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.endAngle=function(e){return arguments.length?(l=Lt(e),t):l},t},ho.svg.diagonal=function(){function t(t,i){var a=e.call(this,t,i),o=n.call(this,t,i),u=(a.y+o.y)/2,s=[a,{x:a.x,y:u},{x:o.x,y:u},o];return s=s.map(r),"M"+s[0]+"C"+s[1]+" "+s[2]+" "+s[3]}var e=kn,n=En,r=Wa;return t.source=function(n){return arguments.length?(e=Lt(n),t):e},t.target=function(e){return arguments.length?(n=Lt(e),t):n},t.projection=function(e){return arguments.length?(r=e,t):r},t},ho.svg.diagonal.radial=function(){var t=ho.svg.diagonal(),e=Wa,n=t.projection;return t.projection=function(t){return arguments.length?n(Ga(e=t)):e},t},ho.svg.symbol=function(){function t(t,r){return(Fs.get(e.call(this,t,r))||Qa)(n.call(this,t,r))}var e=Ja,n=Za;return t.type=function(n){return arguments.length?(e=Lt(n),t):e},t.size=function(e){return arguments.length?(n=Lt(e),t):n},t};var Fs=ho.map({circle:Qa,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*Hs)),n=e*Hs;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});ho.svg.symbolTypes=Fs.keys();var Ys=Math.sqrt(3),Hs=Math.tan(30*Wo);Do.transition=function(t){for(var e,n,r=Bs||++Gs,i=ro(t),a=[],o=Vs||{time:Date.now(),ease:Lr,delay:0,duration:250},u=-1,s=this.length;++ua;a++){i.push(e=[]);for(var n=this[a],u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return to(i,this.namespace,this.id)},Ws.tween=function(t,e){var n=this.id,r=this.namespace;return arguments.length<2?this.node()[r][n].tween.get(t):W(this,null==e?function(e){e[r][n].tween.remove(t)}:function(i){i[r][n].tween.set(t,e)})},Ws.attr=function(t,e){function n(){this.removeAttribute(u)}function r(){this.removeAttributeNS(u.space,u.local)}function i(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(u);return n!==t&&(e=o(n,t),function(t){this.setAttribute(u,e(t))})})}function a(t){return null==t?r:(t+="",function(){var e,n=this.getAttributeNS(u.space,u.local);return n!==t&&(e=o(n,t),function(t){this.setAttributeNS(u.space,u.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var o="transform"==t?Qr:kr,u=ho.ns.qualify(t);return eo(this,"attr."+t,e,u.local?a:i)},Ws.attrTween=function(t,e){function n(t,n){var r=e.call(this,t,n,this.getAttribute(i));return r&&function(t){this.setAttribute(i,r(t))}}function r(t,n){var r=e.call(this,t,n,this.getAttributeNS(i.space,i.local));return r&&function(t){this.setAttributeNS(i.space,i.local,r(t))}}var i=ho.ns.qualify(t);return this.tween("attr."+t,i.local?r:n)},Ws.style=function(t,e,n){function r(){this.style.removeProperty(t)}function i(e){return null==e?r:(e+="",function(){var r,i=o(this).getComputedStyle(this,null).getPropertyValue(t);return i!==e&&(r=kr(i,e),function(e){this.style.setProperty(t,r(e),n)})})}var a=arguments.length;if(3>a){if("string"!=typeof t){2>a&&(e="");for(n in t)this.style(n,t[n],e);return this}n=""}return eo(this,"style."+t,e,i)},Ws.styleTween=function(t,e,n){function r(r,i){var a=e.call(this,r,i,o(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),n)}}return arguments.length<3&&(n=""),this.tween("style."+t,r)},Ws.text=function(t){return eo(this,"text",t,no)},Ws.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},Ws.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=ho.ease.apply(ho,arguments)),W(this,function(r){r[n][e].ease=t}))},Ws.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:W(this,"function"==typeof t?function(r,i,a){r[n][e].delay=+t.call(r,r.__data__,i,a)}:(t=+t,function(r){r[n][e].delay=t}))},Ws.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:W(this,"function"==typeof t?function(r,i,a){r[n][e].duration=Math.max(1,t.call(r,r.__data__,i,a))}:(t=Math.max(1,t),function(r){r[n][e].duration=t}))},Ws.each=function(t,e){var n=this.id,r=this.namespace;if(arguments.length<2){var i=Vs,a=Bs;try{Bs=n,W(this,function(e,i,a){Vs=e[r][n],t.call(e,e.__data__,i,a)})}finally{Vs=i,Bs=a}}else W(this,function(i){var a=i[r][n];(a.event||(a.event=ho.dispatch("start","end","interrupt"))).on(t,e)});return this},Ws.transition=function(){for(var t,e,n,r,i=this.id,a=++Gs,o=this.namespace,u=[],s=0,l=this.length;l>s;s++){u.push(t=[]);for(var e=this[s],c=0,f=e.length;f>c;c++)(n=e[c])&&(r=n[o][i],io(n,c,o,a,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),t.push(n)}return to(u,o,a)},ho.svg.axis=function(){function t(t){t.each(function(){var t,l=ho.select(this),c=this.__chart__||n,f=this.__chart__=n.copy(),h=null==s?f.ticks?f.ticks.apply(f,u):f.domain():s,d=null==e?f.tickFormat?f.tickFormat.apply(f,u):w:e,p=l.selectAll(".tick").data(h,f),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Fo),m=ho.transition(p.exit()).style("opacity",Fo).remove(),v=ho.transition(p.order()).style("opacity",1),y=Math.max(i,0)+o,x=Gi(f),_=l.selectAll(".domain").data([0]),b=(_.enter().append("path").attr("class","domain"),ho.transition(_));g.append("line"),g.append("text");var M,k,E,S,A=g.select("line"),T=v.select("line"),O=p.select("text").text(d),N=g.select("text"),L=v.select("text"),C="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(t=ao,M="x",E="y",k="x2",S="y2",O.attr("dy",0>C?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+x[0]+","+C*a+"V0H"+x[1]+"V"+C*a)):(t=oo,M="y",E="x",k="y2",S="x2",O.attr("dy",".32em").style("text-anchor",0>C?"end":"start"),b.attr("d","M"+C*a+","+x[0]+"H0V"+x[1]+"H"+C*a)),A.attr(S,C*i),N.attr(E,C*y),T.attr(k,0).attr(S,C*i),L.attr(M,0).attr(E,C*y),f.rangeBand){var R=f,D=R.rangeBand()/2;c=f=function(t){return R(t)+D}}else c.rangeBand?c=f:m.call(t,f,c);g.call(t,c,f),v.call(t,f,f)})}var e,n=ho.scale.linear(),r=Zs,i=6,a=6,o=3,u=[10],s=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(r=e in Js?e+"":Zs,t):r},t.ticks=function(){return arguments.length?(u=go(arguments),t):u},t.tickValues=function(e){return arguments.length?(s=e,t):s},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(i=+e,a=+arguments[n-1],t):i},t.innerTickSize=function(e){return arguments.length?(i=+e,t):i},t.outerTickSize=function(e){return arguments.length?(a=+e,t):a},t.tickPadding=function(e){return arguments.length?(o=+e,t):o},t.tickSubdivide=function(){return arguments.length&&t},t};var Zs="bottom",Js={top:1,right:1,bottom:1,left:1};ho.svg.brush=function(){function t(a){a.each(function(){var a=ho.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=a.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),a.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var u=a.selectAll(".resize").data(g,w);u.exit().remove(),u.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return Qs[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),u.style("display",t.empty()?"none":null);var s,f=ho.transition(a),h=ho.transition(o);l&&(s=Gi(l),h.attr("x",s[0]).attr("width",s[1]-s[0]),n(f)),c&&(s=Gi(c),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),e(f)})}function e(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+f[+/e$/.test(t)]+","+h[+/^s/.test(t)]+")"})}function n(t){t.select(".extent").attr("x",f[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function r(t){t.select(".extent").attr("y",h[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==ho.event.keyCode&&(T||(x=null,L[0]-=f[1],L[1]-=h[1],T=2),O())}function g(){32==ho.event.keyCode&&2==T&&(L[0]+=f[1],L[1]+=h[1],T=0,O())}function m(){var t=ho.mouse(b),i=!1;_&&(t[0]+=_[0],t[1]+=_[1]),T||(ho.event.altKey?(x||(x=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(t[0]c?(i=r,r=c):i=c),g[0]!=r||g[1]!=i?(n?u=null:a=null,g[0]=r,g[1]=i,!0):void 0}function y(){m(),k.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),ho.select("body").style("cursor",null),C.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,_,b=this,M=ho.select(ho.event.target),w=s.of(b,arguments),k=ho.select(b),E=M.datum(),S=!/^(n|s)$/.test(E)&&l,A=!/^(e|w)$/.test(E)&&c,T=M.classed("extent"),N=tt(b),L=ho.mouse(b),C=ho.select(o(b)).on("keydown.brush",i).on("keyup.brush",g);if(ho.event.changedTouches?C.on("touchmove.brush",m).on("touchend.brush",y):C.on("mousemove.brush",m).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),T)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(E){var R=+/w$/.test(E),D=+/^n/.test(E);_=[f[1-R]-L[0],h[1-D]-L[1]],L[0]=f[R],L[1]=h[D]}else ho.event.altKey&&(x=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ho.select("body").style("cursor",M.style("cursor")),w({type:"brushstart"}),m()}var a,u,s=L(t,"brushstart","brush","brushend"),l=null,c=null,f=[0,0],h=[0,0],d=!0,p=!0,g=Ks[0];return t.event=function(t){t.each(function(){var t=s.of(this,arguments),e={x:f,y:h,i:a,j:u},n=this.__chart__||e;this.__chart__=e,Bs?ho.select(this).transition().each("start.brush",function(){a=n.i,u=n.j,f=n.x,h=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=Er(f,e.x),r=Er(h,e.y);return a=u=null,function(i){f=e.x=n(i),h=e.y=r(i),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,u=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(l=e,g=Ks[!l<<1|!c],t):l},t.y=function(e){return arguments.length?(c=e,g=Ks[!l<<1|!c],t):c},t.clamp=function(e){return arguments.length?(l&&c?(d=!!e[0],p=!!e[1]):l?d=!!e:c&&(p=!!e),t):l&&c?[d,p]:l?d:c?p:null},t.extent=function(e){var n,r,i,o,s;return arguments.length?(l&&(n=e[0],r=e[1],c&&(n=n[0],r=r[0]),a=[n,r],l.invert&&(n=l(n),r=l(r)),n>r&&(s=n,n=r,r=s),n==f[0]&&r==f[1]||(f=[n,r])),c&&(i=e[0],o=e[1],l&&(i=i[1],o=o[1]),u=[i,o],c.invert&&(i=c(i),o=c(o)),i>o&&(s=i,i=o,o=s),i==h[0]&&o==h[1]||(h=[i,o])),t):(l&&(a?(n=a[0],r=a[1]):(n=f[0],r=f[1],l.invert&&(n=l.invert(n),r=l.invert(r)),n>r&&(s=n,n=r,r=s))),c&&(u?(i=u[0],o=u[1]):(i=h[0],o=h[1],c.invert&&(i=c.invert(i),o=c.invert(o)),i>o&&(s=i,i=o,o=s))),l&&c?[[n,i],[r,o]]:l?[n,r]:c&&[i,o])},t.clear=function(){return t.empty()||(f=[0,0],h=[0,0],a=u=null),t},t.empty=function(){return!!l&&f[0]==f[1]||!!c&&h[0]==h[1]},ho.rebind(t,s,"on")};var Qs={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ks=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],tl=xu.format=Eu.timeFormat,el=tl.utc,nl=el("%Y-%m-%dT%H:%M:%S.%LZ");tl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?uo:nl,uo.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},uo.toString=nl.toString,xu.second=Bt(function(t){return new _u(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),xu.seconds=xu.second.range,xu.seconds.utc=xu.second.utc.range,xu.minute=Bt(function(t){return new _u(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),xu.minutes=xu.minute.range,xu.minutes.utc=xu.minute.utc.range,xu.hour=Bt(function(t){var e=t.getTimezoneOffset()/60;return new _u(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),xu.hours=xu.hour.range,xu.hours.utc=xu.hour.utc.range,xu.month=Bt(function(t){return t=xu.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),xu.months=xu.month.range,xu.months.utc=xu.month.utc.range;var rl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],il=[[xu.second,1],[xu.second,5],[xu.second,15],[xu.second,30],[xu.minute,1],[xu.minute,5],[xu.minute,15],[xu.minute,30],[xu.hour,1],[xu.hour,3],[xu.hour,6],[xu.hour,12],[xu.day,1],[xu.day,2],[xu.week,1],[xu.month,1],[xu.month,3],[xu.year,1]],al=tl.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",De]]),ol={range:function(t,e,n){return ho.range(Math.ceil(t/n)*n,+e,n).map(lo)},floor:w,ceil:w};il.year=xu.year,xu.scale=function(){return so(ho.scale.linear(),il,al)};var ul=il.map(function(t){return[t[0].utc,t[1]]}),sl=el.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",De]]);ul.year=xu.year.utc,xu.scale.utc=function(){return so(ho.scale.linear(),ul,sl)},ho.text=Ct(function(t){return t.responseText}),ho.json=function(t,e){return Rt(t,"application/json",co,e)},ho.html=function(t,e){return Rt(t,"text/html",fo,e)},ho.xml=Ct(function(t){return t.responseXML}),this.d3=ho,r=ho,i="function"==typeof r?r.call(e,n,e,t):r,!(void 0!==i&&(t.exports=i))}()},function(t,e,n){t.exports={version:"__VERSION__",dataflow:n(4),parse:n(52),scene:{Bounder:n(153),Builder:n(151),Encoder:n(152),GroupBuilder:n(150),visit:n(155)},transforms:n(103),Transform:n(105),BatchTransform:n(109),Parameter:n(106),schema:n(161),config:n(156),util:n(58),logging:n(8),debug:n(8).debug}},function(t,e,n){t.exports={ChangeSet:n(5),Collector:n(7),DataSource:n(11),Dependencies:n(6),Graph:n(49),Node:n(10),Signal:n(51),Tuple:n(9),debug:n(8).debug}},function(t,e,n){function r(t,e){var n={};return i(t,n),n.add=[],n.mod=[],n.rem=[],n.reflow=e,n}function i(t,e){e.stamp=t?t.stamp:0,e.sort=t?t.sort:null,e.facet=t?t.facet:null,e.trans=t?t.trans:null,e.dirty=t?t.dirty:[],e.request=t?t.request:null;for(var n,r=0,i=a.length;i>r;++r)e[n=a[r]]=t?t[n]:{}}var a=n(6).ALL;t.exports={create:r,copy:i}},function(t,e){var n=t.exports={ALL:["data","fields","scales","signals"]};n.ALL.forEach(function(t){n[t.toUpperCase()]=t})},function(t,e,n){function r(t){o.init.call(this,t),this._data=[],this.router(!0).collector(!0)}var i=n(8),a=n(9),o=n(10).prototype,u=n(5),s=r.prototype=Object.create(o);s.constructor=r,s.data=function(){return this._data},s.evaluate=function(t){i.debug(t,["collecting"]);var e=u.create(t);return t.rem.length&&(this._data=a.idFilter(this._data,t.rem),e.rem=t.rem.slice(0)),t.add.length&&(this._data=this._data.concat(t.add),e.add=t.add.slice(0)),t.mod.length&&(e.mod=t.mod.slice(0)),t.sort&&this._data.sort(t.sort),t.reflow&&(e.mod=e.mod.concat(a.idFilter(this._data,e.add,e.mod,e.rem)),e.reflow=!1),e},t.exports=r},function(t,e){function n(t){console.log("[Vega Log]",t)}function r(t){console.error("[Vega Err]",t)}function i(t,e){if(i.enable){var n=Function.prototype.bind.call(console.log,console),r={prevTime:Date.now()-a,stamp:t.stamp};t.add&&(r.add=t.add.length,r.mod=t.mod.length,r.rem=t.rem.length,r.reflow=!!t.reflow),n.apply(console,(e.push(JSON.stringify(r)),e)),a=Date.now()}}var a=Date.now();t.exports={log:n,error:r,debug:(i.enable=!1,i)}},function(t,e){function n(t){return t=t===Object(t)?t:{data:t},t._id=++a,t._prev&&(t._prev=null),t}function r(t,e){e=e||{};for(var n=0,r=t.length;r>n;++n)e[t[n]._id]=1;return e}function i(t,e){e=e||{};for(var n in t)"_prev"!==n&&"_id"!==n&&(e[n]=t[n]);return e}var a=0;t.exports={ingest:n,idMap:r,derive:function(t){return n(i(t))},rederive:function(t,e){return i(t,e)},set:function(t,e,n){return t[e]===n?0:(t[e]=n,1)},prev:function(t){return t._prev||t},prev_init:function(t){t._prev||(t._prev={_id:t._id})},prev_update:function(t){var e,n,r=t._prev;if(r)for(e in t)"_prev"!==e&&"_id"!==e&&(r[e]=(n=t[e])instanceof Object&&n._prev?n._prev:n)},reset:function(){a=0},idFilter:function(t){for(var e={},n=arguments.length;--n>0;)r(arguments[n],e);return t.filter(function(t){return!e[t._id]})}}},function(t,e,n){function r(t){t&&this.init(t)}var i=n(6).ALL,a=0,o=r.Flags={Router:1,Collector:2,Produces:4,Mutates:8,Reflows:16,Batch:32},u=r.prototype;u.init=function(t){this._id=++a,this._graph=t,this._rank=t.rank(),this._qrank=null,this._stamp=0,this._listeners=[],this._listeners._ids={},this._deps={};for(var e=0,n=i.length;n>e;++e)this._deps[i[e]]=[];return this._flags=0,this},u.rank=function(){return this._rank},u.rerank=function(){for(var t,e=this._graph,n=[this];n.length;)t=n.shift(),t._rank=e.rank(),n.unshift.apply(n,t.listeners());return this},u.qrank=function(){return arguments.length?(this._qrank=this._rank,this):this._qrank},u.last=function(t){return arguments.length?(this._stamp=t,this):this._stamp},u._setf=function(t,e){return e?this._flags|=t:this._flags&=~t,this},u.router=function(t){return arguments.length?this._setf(o.Router,t):this._flags&o.Router},u.collector=function(t){return arguments.length?this._setf(o.Collector,t):this._flags&o.Collector},u.produces=function(t){return arguments.length?this._setf(o.Produces,t):this._flags&o.Produces},u.mutates=function(t){return arguments.length?this._setf(o.Mutates,t):this._flags&o.Mutates},u.reflows=function(t){return arguments.length?this._setf(o.Reflows,t):this._flags&o.Reflows},u.batch=function(t){return arguments.length?this._setf(o.Batch,t):this._flags&o.Batch},u.dependency=function(t,e){var n=this._deps[t],r=n._names||(n._names={});if(1===arguments.length)return n;if(null===e)n.splice(0,n.length),n._names={};else if(Array.isArray(e))for(var i,a=0,o=e.length;o>a;++a)i=e[a],r[i]||(n.push(i),r[i]=1);else{if(r[e])return this;n.push(e),r[e]=1}return this},u.listeners=function(){return this._listeners},u.addListener=function(t){if(!(t instanceof r))throw Error("Listener is not a Node");return this._listeners._ids[t._id]?this:(this._listeners.push(t),this._listeners._ids[t._id]=1,this._rank>t._rank&&t.rerank(),this)},u.removeListener=function(t){if(!this._listeners._ids[t._id])return!1;var e=this._listeners.indexOf(t),n=e>=0;return n&&(this._listeners.splice(e,1),this._listeners._ids[t._id]=null),n},u.disconnect=function(){this._listeners=[],this._listeners._ids={}},u.evaluate=function(t){return t},u.reevaluate=function(t){var e,n,r,a,o,u;for(r=0,a=i.length;a>r;++r)for(e=i[r],n=this._deps[e],o=0,u=n.length;u>o;++o)if(t[e][n[o]])return!0;return!1},r.reset=function(){a=0},t.exports=r},function(t,e,n){function r(t,e,n){this._graph=t,this._name=e,this._data=[],this._source=null,this._facet=n,this._input=l.create(),this._output=null,this._indexes={},this._indexFields=[],this._inputNode=null,this._outputNode=null,this._pipeline=null,this._collector=null,this._mutates=!1}function i(t){var e=new h(t._graph).router(!0).collector(!0);return e.data=function(){return t._data},e.evaluate=function(e){s.debug(e,["input",t._name]);var n,r=t._input,i=l.create(e);for(n in r.fields)i.fields[n]=1;return r.rem.length&&(t._data=f.idFilter(t._data,r.rem)),r.add.length&&(t._data=t._data.concat(r.add)), -r.sort&&t._data.sort(r.sort),e.reflow&&(r.mod=r.mod.concat(f.idFilter(t._data,r.add,r.mod,r.rem))),t._input=l.create(),i.add=r.add,i.mod=r.mod,i.rem=r.rem,i.facet=t._facet,i},e}function a(t){function e(e){var n,r,i,a,o,s,l=t._indexFields;for(n=0;nn;++n)i=l(a[n]),e[i]=(e[i]||0)+1,f.prev_init(a[n]);return o[t]},d.listener=function(){return o(this).addListener(this._inputNode)},d.addListener=function(t){return t instanceof r?this._collector.addListener(t.listener()):this._outputNode.addListener(t),this},d.removeListener=function(t){this._outputNode.removeListener(t)},d.listeners=function(t){return(t?this._collector:this._outputNode).listeners()},t.exports=r},function(t,e,n){var r=n(13),i={version:"__VERSION__",load:n(18),read:n(23),type:n(24),Aggregator:n(36),groupby:n(41),bins:n(42),$bin:n(44).$bin,histogram:n(44).histogram,format:n(32),template:n(45),time:n(43)};r.extend(i,r),r.extend(i,n(46)),r.extend(i,n(39)),r.extend(i,n(38)),r.extend(i,n(47)),r.extend(i.format,n(48)),i.print={table:i.format.table,summary:i.format.summary},t.exports=i},function(t,e,n){(function(e){function n(t,e){var n,r="";for(n=0;t>n;++n)r+=e;return r}function r(t,e,n){var r=0,i=t.split(s);return t=n?(i=i.reverse()).filter(function(t){return r+=t.length,e>=r}).reverse():i.filter(function(t){return r+=t.length,e>=r}),t.length?t.join("").trim():i[0].slice(0,e)}var i=t.exports,a="__name__";i.namedfunc=function(t,e){return e[a]=t,e},i.name=function(t){return null==t?null:t[a]},i.identity=function(t){return t},i["true"]=i.namedfunc("true",function(){return!0}),i["false"]=i.namedfunc("false",function(){return!1}),i.duplicate=function(t){return JSON.parse(JSON.stringify(t))},i.equal=function(t,e){return JSON.stringify(t)===JSON.stringify(e)},i.extend=function(t){for(var e,n,r=1,i=arguments.length;i>r;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t},i.length=function(t){return null!=t&&null!=t.length?t.length:null},i.keys=function(t){var e,n=[];for(e in t)n.push(e);return n},i.vals=function(t){var e,n=[];for(e in t)n.push(t[e]);return n},i.toMap=function(t,e){return(e=i.$(e))?t.reduce(function(t,n){return t[e(n)]=1,t},{}):t.reduce(function(t,e){return t[e]=1,t},{})},i.keystr=function(t){var e=t.length;if(!e)return"";for(var n=String(t[0]),r=1;e>r;++r)n+="|"+String(t[r]);return n};var o=Object.prototype.toString;i.isObject=function(t){return t===Object(t)},i.isFunction=function(t){return"[object Function]"===o.call(t)},i.isString=function(t){return"string"==typeof value||"[object String]"===o.call(t)},i.isArray=Array.isArray||function(t){return"[object Array]"===o.call(t)},i.isNumber=function(t){return"number"==typeof t||"[object Number]"===o.call(t)},i.isBoolean=function(t){return t===!0||t===!1||"[object Boolean]"==o.call(t)},i.isDate=function(t){return"[object Date]"===o.call(t)},i.isValid=function(t){return null!=t&&t===t},i.isBuffer="function"==typeof e&&e.isBuffer||i["false"],i.number=function(t){return null==t||""===t?null:+t},i["boolean"]=function(t){return null==t||""===t?null:"false"===t?!1:!!t},i.date=function(t,e){var n=e?e:Date;return null==t||""===t?null:n.parse(t)},i.array=function(t){return null!=t?i.isArray(t)?t:[t]:[]},i.str=function(t){return i.isArray(t)?"["+t.map(i.str)+"]":i.isObject(t)||i.isString(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t};var u=/\[(.*?)\]|[^.\[]+/g;i.field=function(t){return String(t).match(u).map(function(t){return"["!==t[0]?t:"'"!==t[1]&&'"'!==t[1]?t.slice(1,-1):t.slice(2,-2).replace(/\\(["'])/g,"$1")})},i.accessor=function(t){return null==t||i.isFunction(t)?t:i.namedfunc(t,Function("x","return x["+i.field(t).map(i.str).join("][")+"];"))},i.$=i.accessor,i.mutator=function(t){var e;return i.isString(t)&&(e=i.field(t)).length>1?function(t,n){for(var r=0;ri;++i){if(o=t[i],u=o(n),s=o(r),s>u)return-1*e[i];if(u>s)return e[i]}return 0}},i.cmp=function(t,e){return e>t?-1:t>e?1:t>=e?0:null===t?-1:null===e?1:NaN},i.numcmp=function(t,e){return t-e},i.stablesort=function(t,e,n){var r=t.reduce(function(t,e,r){return t[n(e)]=r,t},{});return t.sort(function(t,i){var a=e(t),o=e(i);return o>a?-1:a>o?1:r[n(t)]-r[n(i)]}),t},i.pad=function(t,e,r,i){i=i||" ";var a=e-t.length;if(0>=a)return t;switch(r){case"left":return n(a,i)+t;case"middle":case"center":return n(Math.floor(a/2),i)+t+n(Math.ceil(a/2),i);default:return t+n(a,i)}},i.truncate=function(t,e,n,i,a){var o=t.length;if(e>=o)return t;a=void 0!==a?String(a):"…";var u=Math.max(0,e-a.length);switch(n){case"left":return a+(i?r(t,u,1):t.slice(o-u));case"middle":case"center":var s=Math.ceil(u/2),l=Math.floor(u/2);return(i?r(t,s):t.slice(0,s))+a+(i?r(t,l,1):t.slice(o-l));default:return(i?r(t,u):t.slice(0,u))+a}};var s=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/}).call(e,n(14).Buffer)},function(t,e,n){(function(t,r){/*! +define(["jquery","base/js/events"],function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){function r(t,e){var n=e.findIndex(function(e,n,r){return e.metadata["jupyter-vega"]===t&&void 0!==e.data["application/javascript"]});return n}function i(t,e){var n=e.findIndex(function(e,n,r){return e.metadata["jupyter-vega"]===t&&void 0!==e.data["image/png"]});return n}function a(t,e,n,a){if(n){var s={mode:n,spec:e},l=i(t,a.outputs),c=r(t,a.outputs);if(l>-1&&c>-1&&l===c+1)return;var f=u.find(t);o(f[0],s,function(e,n){var r=n.view.toImageURL();if(void 0!==a){var i={data:{"image/png":r.split(",")[1]},metadata:{"jupyter-vega":t},output_type:"display_data"};a.outputs.push(i)}})}}var o=n(1),u=n(207);n(208);Array.prototype.findIndex||(Array.prototype.findIndex=function(t){if(null===this)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var e,n=Object(this),r=n.length>>>0,i=arguments[1],a=0;r>a;a++)if(e=n[a],t.call(i,e,a,n))return a;return-1}),e.render=a},function(t,e,n){function r(t,e,n,r){u.util.load({url:t},function(a,o){if(a||!o)console.error(a||"No data found at "+t);else{var s=e?u.util.extend({source:o},e):JSON.parse(o);i(n,s,r)}})}function i(t,e,n){var s,f,p,g=n||function(){},m=[];try{if(u.util.isString(e))return r(e,null,t,n);if(e.source)s=e.source,f=JSON.parse(s);else if(e.spec)f=e.spec,s=JSON.stringify(f,null,2);else{if(e.url)return r(e.url,e,t,n);f=e,s=JSON.stringify(f,null,2),e={spec:f,actions:!1}}p=h[e.mode]||h.vega,f=d[p](f);var v=o.select(t).classed("vega-embed",!0).html("");if(e.parameters){var y=e.parameter_el?o.select(e.parameter_el):v,x=y.append("div").attr("class","vega-params");m=e.parameters.map(function(t){return l.init(x,t,f)})}}catch(_){g(_)}u.parse.spec(f,function(n,r){if(n)return void g(n);try{var u=e.renderer||"canvas",h=e.actions||{},d=r({el:t,data:e.data||void 0,renderer:u});if(e.actions!==!1){var y=v.append("div").attr("class","vega-actions");if(h["export"]!==!1){var x="canvas"===u?"png":"svg";y.append("a").text("Export as "+x.toUpperCase()).attr("href","#").attr("target","_blank").attr("download",(f.name||"vega")+"."+x).on("mousedown",function(){this.href=d.toImageURL(x),o.event.preventDefault()})}h.source!==!1&&y.append("a").text("View Source").attr("href","#").on("click",function(){a(s),o.event.preventDefault()}),h.editor!==!1&&y.append("a").text("Open in Vega Editor").attr("href","#").on("click",function(){c(window,i.config.editor_url,{spec:s,mode:p}),o.event.preventDefault()})}m.forEach(function(t){l.bind(t,d)}),d.update(),g(null,{view:d,spec:f})}catch(_){g(_)}})}function a(t){var e=""+f.source_header+'
',n="
"+f.source_footer+"",r=window.open("");r.document.write(e+t+n),r.document.title="Vega JSON Source"}var o=n(2),u=n(3),s=n(162),l=n(205),c=n(206),f={editor_url:"http://vega.github.io/vega-editor/",source_header:"",source_footer:""},h={vega:"vega","vega-lite":"vega-lite"},d={vega:function(t){return t},"vega-lite":function(t){return s.compile(t).spec}};i.config=f,t.exports=i},function(t,e,n){var r,i;!function(){function a(t){return t&&(t.ownerDocument||t.document||t).documentElement}function o(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function u(t,e){return e>t?-1:t>e?1:t>=e?0:NaN}function s(t){return null===t?NaN:+t}function l(t){return!isNaN(t)}function c(t){return{left:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}}function f(t){return t.length}function h(t){for(var e=1;t*e%1;)e*=10;return e}function d(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function p(){this._=Object.create(null)}function g(t){return(t+="")===So||t[0]===Ao?Ao+t:t}function m(t){return(t+="")[0]===Ao?t.slice(1):t}function v(t){return g(t)in this._}function y(t){return(t=g(t))in this._&&delete this._[t]}function x(){var t=[];for(var e in this._)t.push(m(e));return t}function _(){var t=0;for(var e in this._)++t;return t}function b(){for(var t in this._)return!1;return!0}function M(){this._=Object.create(null)}function w(t){return t}function k(t,e,n){return function(){var r=n.apply(e,arguments);return r===e?t:r}}function E(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,r=To.length;r>n;++n){var i=To[n]+e;if(i in t)return i}}function S(){}function A(){}function T(t){function e(){for(var e,r=n,i=-1,a=r.length;++in;n++)for(var i,a=t[n],o=0,u=a.length;u>o;o++)(i=a[o])&&e(i,o,n);return t}function G(t){return No(t,Po),t}function Z(t){var e,n;return function(r,i,a){var o,u=t[a].update,s=u.length;for(a!=n&&(n=a,e=0),i>=e&&(e=i+1);!(o=u[e])&&++e0&&(t=t.slice(0,u));var l=zo.get(t);return l&&(t=l,s=K),u?e?i:r:e?S:a}function Q(t,e){return function(n){var r=ho.event;ho.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{ho.event=r}}}function K(t,e){var n=Q(t,e);return function(t){var e=this,r=t.relatedTarget;r&&(r===e||8&r.compareDocumentPosition(e))||n.call(e,t)}}function tt(t){var e=".dragsuppress-"+ ++qo,n="click"+e,r=ho.select(o(t)).on("touchmove"+e,O).on("dragstart"+e,O).on("selectstart"+e,O);if(null==jo&&(jo="onselectstart"in t?!1:E(t.style,"userSelect")),jo){var i=a(t).style,u=i[jo];i[jo]="none"}return function(t){if(r.on(e,null),jo&&(i[jo]=u),t){var a=function(){r.on(n,null)};r.on(n,function(){O(),a()},!0),setTimeout(a,0)}}}function et(t,e){e.changedTouches&&(e=e.changedTouches[0]);var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();if(0>$o){var i=o(t);if(i.scrollX||i.scrollY){n=ho.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=n[0][0].getScreenCTM();$o=!(a.f||a.e),n.remove()}}return $o?(r.x=e.pageX,r.y=e.pageY):(r.x=e.clientX,r.y=e.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var u=t.getBoundingClientRect();return[e.clientX-u.left-t.clientLeft,e.clientY-u.top-t.clientTop]}function nt(){return ho.event.changedTouches[0].identifier}function rt(t){return t>0?1:0>t?-1:0}function it(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function at(t){return t>1?0:-1>t?Ho:Math.acos(t)}function ot(t){return t>1?Xo:-1>t?-Xo:Math.asin(t)}function ut(t){return((t=Math.exp(t))-1/t)/2}function st(t){return((t=Math.exp(t))+1/t)/2}function lt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ct(t){return(t=Math.sin(t/2))*t}function ft(){}function ht(t,e,n){return this instanceof ht?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof ht?new ht(t.h,t.s,t.l):St(""+t,At,ht):new ht(t,e,n)}function dt(t,e,n){function r(t){return t>360?t-=360:0>t&&(t+=360),60>t?a+(o-a)*t/60:180>t?o:240>t?a+(o-a)*(240-t)/60:a}function i(t){return Math.round(255*r(t))}var a,o;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:0>e?0:e>1?1:e,n=0>n?0:n>1?1:n,o=.5>=n?n*(1+e):n+e-n*e,a=2*n-o,new Mt(i(t+120),i(t),i(t-120))}function pt(t,e,n){return this instanceof pt?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof pt?new pt(t.h,t.c,t.l):t instanceof mt?yt(t.l,t.a,t.b):yt((t=Tt((t=ho.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new pt(t,e,n)}function gt(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new mt(n,Math.cos(t*=Wo)*e,Math.sin(t)*e)}function mt(t,e,n){return this instanceof mt?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof mt?new mt(t.l,t.a,t.b):t instanceof pt?gt(t.h,t.c,t.l):Tt((t=Mt(t)).r,t.g,t.b):new mt(t,e,n)}function vt(t,e,n){var r=(t+16)/116,i=r+e/500,a=r-n/200;return i=xt(i)*au,r=xt(r)*ou,a=xt(a)*uu,new Mt(bt(3.2404542*i-1.5371385*r-.4985314*a),bt(-.969266*i+1.8760108*r+.041556*a),bt(.0556434*i-.2040259*r+1.0572252*a))}function yt(t,e,n){return t>0?new pt(Math.atan2(n,e)*Go,Math.sqrt(e*e+n*n),t):new pt(NaN,NaN,t)}function xt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function _t(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function bt(t){return Math.round(255*(.00304>=t?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function Mt(t,e,n){return this instanceof Mt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof Mt?new Mt(t.r,t.g,t.b):St(""+t,Mt,dt):new Mt(t,e,n)}function wt(t){return new Mt(t>>16,t>>8&255,255&t)}function kt(t){return wt(t)+""}function Et(t){return 16>t?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function St(t,e,n){var r,i,a,o=0,u=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return n(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(Nt(i[0]),Nt(i[1]),Nt(i[2]))}return(a=cu.get(t))?e(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o=o>>4|o,u=240&a,u=u>>4|u,s=15&a,s=s<<4|s):7===t.length&&(o=(16711680&a)>>16,u=(65280&a)>>8,s=255&a)),e(o,u,s))}function At(t,e,n){var r,i,a=Math.min(t/=255,e/=255,n/=255),o=Math.max(t,e,n),u=o-a,s=(o+a)/2;return u?(i=.5>s?u/(o+a):u/(2-o-a),r=t==o?(e-n)/u+(n>e?6:0):e==o?(n-t)/u+2:(t-e)/u+4,r*=60):(r=NaN,i=s>0&&1>s?0:r),new ht(r,i,s)}function Tt(t,e,n){t=Ot(t),e=Ot(e),n=Ot(n);var r=_t((.4124564*t+.3575761*e+.1804375*n)/au),i=_t((.2126729*t+.7151522*e+.072175*n)/ou),a=_t((.0193339*t+.119192*e+.9503041*n)/uu);return mt(116*i-16,500*(r-i),200*(i-a))}function Ot(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Nt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function Lt(t){return"function"==typeof t?t:function(){return t}}function Ct(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=null),Rt(e,n,t,r)}}function Rt(t,e,n,r){function i(){var t,e=s.status;if(!e&&Dt(s)||e>=200&&300>e||304===e){try{t=n.call(a,s)}catch(r){return void o.error.call(a,r)}o.load.call(a,t)}else o.error.call(a,s)}var a={},o=ho.dispatch("beforesend","progress","load","error"),u={},s=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(t)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=i:s.onreadystatechange=function(){s.readyState>3&&i()},s.onprogress=function(t){var e=ho.event;ho.event=t;try{o.progress.call(a,s)}finally{ho.event=e}},a.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?u[t]:(null==e?delete u[t]:u[t]=e+"",a)},a.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",a):e},a.responseType=function(t){return arguments.length?(l=t,a):l},a.response=function(t){return n=t,a},["get","post"].forEach(function(t){a[t]=function(){return a.send.apply(a,[t].concat(go(arguments)))}}),a.send=function(n,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),s.open(n,t,!0),null==e||"accept"in u||(u.accept=e+",*/*"),s.setRequestHeader)for(var c in u)s.setRequestHeader(c,u[c]);return null!=e&&s.overrideMimeType&&s.overrideMimeType(e),null!=l&&(s.responseType=l),null!=i&&a.on("error",i).on("load",function(t){i(null,t)}),o.beforesend.call(a,s),s.send(null==r?null:r),a},a.abort=function(){return s.abort(),a},ho.rebind(a,o,"on"),null==r?a:a.get(It(r))}function It(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function Dt(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Ut(t,e,n){var r=arguments.length;2>r&&(e=0),3>r&&(n=Date.now());var i=n+e,a={c:t,t:i,n:null};return hu?hu.n=a:fu=a,hu=a,du||(pu=clearTimeout(pu),du=1,gu(Pt)),a}function Pt(){var t=zt(),e=jt()-t;e>24?(isFinite(e)&&(clearTimeout(pu),pu=setTimeout(Pt,e)),du=0):(du=1,gu(Pt))}function zt(){for(var t=Date.now(),e=fu;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function jt(){for(var t,e=fu,n=1/0;e;)e.c?(e.t8?function(t){return t/n}:function(t){return t*n},symbol:t}}function Ft(t){var e=t.decimal,n=t.thousands,r=t.grouping,i=t.currency,a=r&&n?function(t,e){for(var i=t.length,a=[],o=0,u=r[0],s=0;i>0&&u>0&&(s+u+1>e&&(u=Math.max(1,e-s)),a.push(t.substring(i-=u,i+u)),!((s+=u+1)>e));)u=r[o=(o+1)%r.length];return a.reverse().join(n)}:w;return function(t){var n=vu.exec(t),r=n[1]||" ",o=n[2]||">",u=n[3]||"-",s=n[4]||"",l=n[5],c=+n[6],f=n[7],h=n[8],d=n[9],p=1,g="",m="",v=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),d){case"n":f=!0,d="g";break;case"%":p=100,m="%",d="f";break;case"p":p=100,m="%",d="r";break;case"b":case"o":case"x":case"X":"#"===s&&(g="0"+d.toLowerCase());case"c":y=!1;case"d":v=!0,h=0;break;case"s":p=-1,d="r"}"$"===s&&(g=i[0],m=i[1]),"r"!=d||h||(d="g"),null!=h&&("g"==d?h=Math.max(1,Math.min(21,h)):"e"!=d&&"f"!=d||(h=Math.max(0,Math.min(20,h)))),d=yu.get(d)||Yt;var x=l&&f;return function(t){var n=m;if(v&&t%1)return"";var i=0>t||0===t&&0>1/t?(t=-t,"-"):"-"===u?"":u;if(0>p){var s=ho.formatPrefix(t,h);t=s.scale(t),n=s.symbol+m}else t*=p;t=d(t,h);var _,b,M=t.lastIndexOf(".");if(0>M){var w=y?t.lastIndexOf("e"):-1;0>w?(_=t,b=""):(_=t.substring(0,w),b=t.substring(w))}else _=t.substring(0,M),b=e+t.substring(M+1);!l&&f&&(_=a(_,1/0));var k=g.length+_.length+b.length+(x?0:i.length),E=c>k?new Array(k=c-k+1).join(r):"";return x&&(_=a(E+_,E.length?c-b.length:1/0)),i+=g,t=_+b,("<"===o?i+t+E:">"===o?E+i+t:"^"===o?E.substring(0,k>>=1)+i+t+E.substring(k):i+(x?t:E+t))+n}}}function Yt(t){return t+""}function Ht(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Bt(t,e,n){function r(e){var n=t(e),r=a(n,1);return r-e>e-n?n:r}function i(n){return e(n=t(new _u(n-1)),1),n}function a(t,n){return e(t=new _u(+t),n),t}function o(t,r,a){var o=i(t),u=[];if(a>1)for(;r>o;)n(o)%a||u.push(new Date(+o)),e(o,1);else for(;r>o;)u.push(new Date(+o)),e(o,1);return u}function u(t,e,n){try{_u=Ht;var r=new Ht;return r._=t,o(r,e,n)}finally{_u=Date}}t.floor=t,t.round=r,t.ceil=i,t.offset=a,t.range=o;var s=t.utc=Vt(t);return s.floor=s,s.round=Vt(r),s.ceil=Vt(i),s.offset=Vt(a),s.range=u,t}function Vt(t){return function(e,n){try{_u=Ht;var r=new Ht;return r._=e,t(r,n)._}finally{_u=Date}}}function Xt(t){function e(t){function e(e){for(var n,i,a,o=[],u=-1,s=0;++uu;){if(r>=l)return-1;if(i=e.charCodeAt(u++),37===i){if(o=e.charAt(u++),a=O[o in Mu?e.charAt(u++):o],!a||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function r(t,e,n){M.lastIndex=0;var r=M.exec(e.slice(n));return r?(t.w=w.get(r[0].toLowerCase()),n+r[0].length):-1}function i(t,e,n){_.lastIndex=0;var r=_.exec(e.slice(n));return r?(t.w=b.get(r[0].toLowerCase()),n+r[0].length):-1}function a(t,e,n){S.lastIndex=0;var r=S.exec(e.slice(n));return r?(t.m=A.get(r[0].toLowerCase()),n+r[0].length):-1}function o(t,e,n){k.lastIndex=0;var r=k.exec(e.slice(n));return r?(t.m=E.get(r[0].toLowerCase()),n+r[0].length):-1}function u(t,e,r){return n(t,T.c.toString(),e,r)}function s(t,e,r){return n(t,T.x.toString(),e,r)}function l(t,e,r){return n(t,T.X.toString(),e,r)}function c(t,e,n){var r=x.get(e.slice(n,n+=2).toLowerCase());return null==r?-1:(t.p=r,n)}var f=t.dateTime,h=t.date,d=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{_u=Ht;var e=new _u;return e._=t,r(e)}finally{_u=Date}}var r=e(t);return n.parse=function(t){try{_u=Ht;var e=r.parse(t);return e&&e._}finally{_u=Date}},n.toString=r.toString,n},e.multi=e.utc.multi=de;var x=ho.map(),_=Gt(g),b=Zt(g),M=Gt(m),w=Zt(m),k=Gt(v),E=Zt(v),S=Gt(y),A=Zt(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var T={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(f),d:function(t,e){return Wt(t.getDate(),e,2)},e:function(t,e){return Wt(t.getDate(),e,2)},H:function(t,e){return Wt(t.getHours(),e,2)},I:function(t,e){return Wt(t.getHours()%12||12,e,2)},j:function(t,e){return Wt(1+xu.dayOfYear(t),e,3)},L:function(t,e){return Wt(t.getMilliseconds(),e,3)},m:function(t,e){return Wt(t.getMonth()+1,e,2)},M:function(t,e){return Wt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Wt(t.getSeconds(),e,2)},U:function(t,e){return Wt(xu.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Wt(xu.mondayOfYear(t),e,2)},x:e(h),X:e(d),y:function(t,e){return Wt(t.getFullYear()%100,e,2)},Y:function(t,e){return Wt(t.getFullYear()%1e4,e,4)},Z:fe,"%":function(){return"%"}},O={a:r,A:i,b:a,B:o,c:u,d:ae,e:ae,H:ue,I:ue,j:oe,L:ce,m:ie,M:se,p:c,S:le,U:Qt,w:Jt,W:Kt,x:s,X:l,y:ee,Y:te,Z:ne,"%":he};return e}function Wt(t,e,n){var r=0>t?"-":"",i=(r?-t:t)+"",a=i.length;return r+(n>a?new Array(n-a+1).join(e)+i:i)}function Gt(t){return new RegExp("^(?:"+t.map(ho.requote).join("|")+")","i")}function Zt(t){for(var e=new p,n=-1,r=t.length;++n68?1900:2e3)}function ie(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ae(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function oe(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.j=+r[0],n+r[0].length):-1}function ue(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function se(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function le(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function ce(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function fe(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",r=Eo(e)/60|0,i=Eo(e)%60;return n+Wt(r,"0",2)+Wt(i,"0",2)}function he(t,e,n){ku.lastIndex=0;var r=ku.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function de(t){for(var e=t.length,n=-1;++n=0?1:-1,u=o*n,s=Math.cos(e),l=Math.sin(e),c=a*l,f=i*s+c*Math.cos(u),h=c*o*Math.sin(u);Nu.add(Math.atan2(h,f)),r=t,i=s,a=l}var e,n,r,i,a;Lu.point=function(o,u){Lu.point=t,r=(e=o)*Wo,i=Math.cos(u=(n=u)*Wo/2+Ho/4),a=Math.sin(u)},Lu.lineEnd=function(){t(e,n)}}function _e(t){var e=t[0],n=t[1],r=Math.cos(n);return[r*Math.cos(e),r*Math.sin(e),Math.sin(n)]}function be(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Me(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function we(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ke(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Ee(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Se(t){return[Math.atan2(t[1],t[0]),ot(t[2])]}function Ae(t,e){return Eo(t[0]-e[0])u;++u)i.point((n=t[u])[0],n[1]);return void i.lineEnd()}var s=new Pe(n,t,null,!0),l=new Pe(n,null,s,!1);s.o=l,a.push(s),o.push(l),s=new Pe(r,t,null,!1),l=new Pe(r,null,s,!0),s.o=l,a.push(s),o.push(l)}}),o.sort(e),Ue(a),Ue(o),a.length){for(var u=0,s=n,l=o.length;l>u;++u)o[u].e=s=!s;for(var c,f,h=a[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;c=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(var u=0,l=c.length;l>u;++u)i.point((f=c[u])[0],f[1]);else r(d.x,d.n.x,1,i);d=d.n}else{if(p){c=d.p.z;for(var u=c.length-1;u>=0;--u)i.point((f=c[u])[0],f[1])}else r(d.x,d.p.x,-1,i);d=d.p}d=d.o,c=d.z,p=!p}while(!d.v);i.lineEnd()}}}function Ue(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r0){for(b||(a.polygonStart(),b=!0),a.lineStart();++o1&&2&e&&n.push(n.pop().concat(n.shift())),d.push(n.filter(je))}var d,p,g,m=e(a),v=i.invert(r[0],r[1]),y={point:o,lineStart:s,lineEnd:l,polygonStart:function(){y.point=c,y.lineStart=f,y.lineEnd=h,d=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=s,y.lineEnd=l,d=ho.merge(d);var t=Be(v,p);d.length?(b||(a.polygonStart(),b=!0),De(d,$e,t,n,a)):t&&(b||(a.polygonStart(),b=!0),a.lineStart(),n(null,null,1,a),a.lineEnd()),b&&(a.polygonEnd(),b=!1),d=p=null},sphere:function(){a.polygonStart(),a.lineStart(),n(null,null,1,a),a.lineEnd(),a.polygonEnd()}},x=qe(),_=e(x),b=!1;return y}}function je(t){return t.length>1}function qe(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:S,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function $e(t,e){return((t=t.x)[0]<0?t[1]-Xo-Fo:Xo-t[1])-((e=e.x)[0]<0?e[1]-Xo-Fo:Xo-e[1])}function Fe(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var u=a>0?Ho:-Ho,s=Eo(a-n);Eo(s-Ho)0?Xo:-Xo),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(a,r),e=0):i!==u&&s>=Ho&&(Eo(n-i)Fo?Math.atan((Math.sin(e)*(a=Math.cos(r))*Math.sin(n)-Math.sin(r)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+r)/2}function He(t,e,n,r){var i;if(null==t)i=n*Xo,r.point(-Ho,i),r.point(0,i),r.point(Ho,i),r.point(Ho,0),r.point(Ho,-i),r.point(0,-i),r.point(-Ho,-i),r.point(-Ho,0),r.point(-Ho,i);else if(Eo(t[0]-e[0])>Fo){var a=t[0]u;++u){var l=e[u],c=l.length;if(c)for(var f=l[0],h=f[0],d=f[1]/2+Ho/4,p=Math.sin(d),g=Math.cos(d),m=1;;){m===c&&(m=0),t=l[m];var v=t[0],y=t[1]/2+Ho/4,x=Math.sin(y),_=Math.cos(y),b=v-h,M=b>=0?1:-1,w=M*b,k=w>Ho,E=p*x;if(Nu.add(Math.atan2(E*M*Math.sin(w),g*_+E*Math.cos(w))),a+=k?b+M*Bo:b,k^h>=n^v>=n){var S=Me(_e(f),_e(t));Ee(S);var A=Me(i,S);Ee(A);var T=(k^b>=0?-1:1)*ot(A[2]);(r>T||r===T&&(S[0]||S[1]))&&(o+=k^b>=0?1:-1)}if(!m++)break;h=v,p=x,g=_,f=t}}return(-Fo>a||Fo>a&&-Fo>Nu)^1&o}function Ve(t){function e(t,e){return Math.cos(t)*Math.cos(e)>a}function n(t){var n,a,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var d,p=[f,h],g=e(f,h),m=o?g?0:i(f,h):g?i(f+(0>f?Ho:-Ho),h):0;if(!n&&(l=s=g)&&t.lineStart(),g!==s&&(d=r(n,p),(Ae(n,d)||Ae(p,d))&&(p[0]+=Fo,p[1]+=Fo,g=e(p[0],p[1]))),g!==s)c=0,g?(t.lineStart(),d=r(p,n),t.point(d[0],d[1])):(d=r(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(u&&n&&o^g){var v;m&a||!(v=r(p,n,!0))||(c=0,o?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&Ae(n,p)||t.point(p[0],p[1]),n=p,s=g,a=m},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}}function r(t,e,n){var r=_e(t),i=_e(e),o=[1,0,0],u=Me(r,i),s=be(u,u),l=u[0],c=s-l*l;if(!c)return!n&&t;var f=a*s/c,h=-a*l/c,d=Me(o,u),p=ke(o,f),g=ke(u,h);we(p,g);var m=d,v=be(p,m),y=be(m,m),x=v*v-y*(be(p,p)-1);if(!(0>x)){var _=Math.sqrt(x),b=ke(m,(-v-_)/y);if(we(b,p),b=Se(b),!n)return b;var M,w=t[0],k=e[0],E=t[1],S=e[1];w>k&&(M=w,w=k,k=M);var A=k-w,T=Eo(A-Ho)A;if(!T&&E>S&&(M=E,E=S,S=M),O?T?E+S>0^b[1]<(Eo(b[0]-w)Ho^(w<=b[0]&&b[0]<=k)){var N=ke(m,(-v+_)/y);return we(N,p),[b,Se(N)]}}}function i(e,n){var r=o?t:Ho-t,i=0;return-r>e?i|=1:e>r&&(i|=2),-r>n?i|=4:n>r&&(i|=8),i}var a=Math.cos(t),o=a>0,u=Eo(a)>Fo,s=_n(t,6*Wo);return ze(e,n,s,o?[0,-t]:[-Ho,t-Ho])}function Xe(t,e,n,r){return function(i){var a,o=i.a,u=i.b,s=o.x,l=o.y,c=u.x,f=u.y,h=0,d=1,p=c-s,g=f-l;if(a=t-s,p||!(a>0)){if(a/=p,0>p){if(h>a)return;d>a&&(d=a)}else if(p>0){if(a>d)return;a>h&&(h=a)}if(a=n-s,p||!(0>a)){if(a/=p,0>p){if(a>d)return;a>h&&(h=a)}else if(p>0){if(h>a)return;d>a&&(d=a)}if(a=e-l,g||!(a>0)){if(a/=g,0>g){if(h>a)return;d>a&&(d=a)}else if(g>0){if(a>d)return;a>h&&(h=a)}if(a=r-l,g||!(0>a)){if(a/=g,0>g){if(a>d)return;a>h&&(h=a)}else if(g>0){if(h>a)return;d>a&&(d=a)}return h>0&&(i.a={x:s+h*p,y:l+h*g}),1>d&&(i.b={x:s+d*p,y:l+d*g}),i}}}}}}function We(t,e,n,r){function i(r,i){return Eo(r[0]-t)0?0:3:Eo(r[0]-n)0?2:1:Eo(r[1]-e)0?1:0:i>0?3:2}function a(t,e){return o(t.x,e.x)}function o(t,e){var n=i(t,1),r=i(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(u){function s(t){for(var e=0,n=m.length,r=t[1],i=0;n>i;++i)for(var a,o=1,u=m[i],s=u.length,l=u[0];s>o;++o)a=u[o],l[1]<=r?a[1]>r&&it(l,a,t)>0&&++e:a[1]<=r&&it(l,a,t)<0&&--e,l=a;return 0!==e}function l(a,u,s,l){var c=0,f=0;if(null==a||(c=i(a,s))!==(f=i(u,s))||o(a,u)<0^s>0){do l.point(0===c||3===c?t:n,c>1?r:e);while((c=(c+s+4)%4)!==f)}else l.point(u[0],u[1]); +}function c(i,a){return i>=t&&n>=i&&a>=e&&r>=a}function f(t,e){c(t,e)&&u.point(t,e)}function h(){O.point=p,m&&m.push(v=[]),k=!0,w=!1,b=M=NaN}function d(){g&&(p(y,x),_&&w&&A.rejoin(),g.push(A.buffer())),O.point=f,w&&u.lineEnd()}function p(t,e){t=Math.max(-Bu,Math.min(Bu,t)),e=Math.max(-Bu,Math.min(Bu,e));var n=c(t,e);if(m&&v.push([t,e]),k)y=t,x=e,_=n,k=!1,n&&(u.lineStart(),u.point(t,e));else if(n&&w)u.point(t,e);else{var r={a:{x:b,y:M},b:{x:t,y:e}};T(r)?(w||(u.lineStart(),u.point(r.a.x,r.a.y)),u.point(r.b.x,r.b.y),n||u.lineEnd(),E=!1):n&&(u.lineStart(),u.point(t,e),E=!1)}b=t,M=e,w=n}var g,m,v,y,x,_,b,M,w,k,E,S=u,A=qe(),T=Xe(t,e,n,r),O={point:f,lineStart:h,lineEnd:d,polygonStart:function(){u=A,g=[],m=[],E=!0},polygonEnd:function(){u=S,g=ho.merge(g);var e=s([t,r]),n=E&&e,i=g.length;(n||i)&&(u.polygonStart(),n&&(u.lineStart(),l(null,null,1,u),u.lineEnd()),i&&De(g,a,e,l,u),u.polygonEnd()),g=m=v=null}};return O}}function Ge(t){var e=0,n=Ho/3,r=hn(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*Ho/180,n=t[1]*Ho/180):[e/Ho*180,n/Ho*180]},i}function Ze(t,e){function n(t,e){var n=Math.sqrt(a-2*i*Math.sin(e))/i;return[n*Math.sin(t*=i),o-n*Math.cos(t)]}var r=Math.sin(t),i=(r+Math.sin(e))/2,a=1+r*(2*i-r),o=Math.sqrt(a)/i;return n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/i,ot((a-(t*t+n*n)*i*i)/(2*i))]},n}function Je(){function t(t,e){Xu+=i*t-r*e,r=t,i=e}var e,n,r,i;Qu.point=function(a,o){Qu.point=t,e=r=a,n=i=o},Qu.lineEnd=function(){t(e,n)}}function Qe(t,e){Wu>t&&(Wu=t),t>Zu&&(Zu=t),Gu>e&&(Gu=e),e>Ju&&(Ju=e)}function Ke(){function t(t,e){o.push("M",t,",",e,a)}function e(t,e){o.push("M",t,",",e),u.point=n}function n(t,e){o.push("L",t,",",e)}function r(){u.point=t}function i(){o.push("Z")}var a=tn(4.5),o=[],u={point:t,lineStart:function(){u.point=e},lineEnd:r,polygonStart:function(){u.lineEnd=i},polygonEnd:function(){u.lineEnd=r,u.point=t},pointRadius:function(t){return a=tn(t),u},result:function(){if(o.length){var t=o.join("");return o=[],t}}};return u}function tn(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function en(t,e){Iu+=t,Du+=e,++Uu}function nn(){function t(t,r){var i=t-e,a=r-n,o=Math.sqrt(i*i+a*a);Pu+=o*(e+t)/2,zu+=o*(n+r)/2,ju+=o,en(e=t,n=r)}var e,n;ts.point=function(r,i){ts.point=t,en(e=r,n=i)}}function rn(){ts.point=en}function an(){function t(t,e){var n=t-r,a=e-i,o=Math.sqrt(n*n+a*a);Pu+=o*(r+t)/2,zu+=o*(i+e)/2,ju+=o,o=i*t-r*e,qu+=o*(r+t),$u+=o*(i+e),Fu+=3*o,en(r=t,i=e)}var e,n,r,i;ts.point=function(a,o){ts.point=t,en(e=r=a,n=i=o)},ts.lineEnd=function(){t(e,n)}}function on(t){function e(e,n){t.moveTo(e+o,n),t.arc(e,n,o,0,Bo)}function n(e,n){t.moveTo(e,n),u.point=r}function r(e,n){t.lineTo(e,n)}function i(){u.point=e}function a(){t.closePath()}var o=4.5,u={point:e,lineStart:function(){u.point=n},lineEnd:i,polygonStart:function(){u.lineEnd=a},polygonEnd:function(){u.lineEnd=i,u.point=e},pointRadius:function(t){return o=t,u},result:S};return u}function un(t){function e(t){return(u?r:n)(t)}function n(e){return cn(e,function(n,r){n=t(n,r),e.point(n[0],n[1])})}function r(e){function n(n,r){n=t(n,r),e.point(n[0],n[1])}function r(){x=NaN,k.point=a,e.lineStart()}function a(n,r){var a=_e([n,r]),o=t(n,r);i(x,_,y,b,M,w,x=o[0],_=o[1],y=n,b=a[0],M=a[1],w=a[2],u,e),e.point(x,_)}function o(){k.point=n,e.lineEnd()}function s(){r(),k.point=l,k.lineEnd=c}function l(t,e){a(f=t,h=e),d=x,p=_,g=b,m=M,v=w,k.point=a}function c(){i(x,_,y,b,M,w,d,p,f,g,m,v,u,e),k.lineEnd=o,o()}var f,h,d,p,g,m,v,y,x,_,b,M,w,k={point:n,lineStart:r,lineEnd:o,polygonStart:function(){e.polygonStart(),k.lineStart=s},polygonEnd:function(){e.polygonEnd(),k.lineStart=r}};return k}function i(e,n,r,u,s,l,c,f,h,d,p,g,m,v){var y=c-e,x=f-n,_=y*y+x*x;if(_>4*a&&m--){var b=u+d,M=s+p,w=l+g,k=Math.sqrt(b*b+M*M+w*w),E=Math.asin(w/=k),S=Eo(Eo(w)-1)a||Eo((y*N+x*L)/_-.5)>.3||o>u*d+s*p+l*g)&&(i(e,n,r,u,s,l,T,O,S,b/=k,M/=k,w,m,v),v.point(T,O),i(T,O,S,b,M,w,c,f,h,d,p,g,m,v))}}var a=.5,o=Math.cos(30*Wo),u=16;return e.precision=function(t){return arguments.length?(u=(a=t*t)>0&&16,e):Math.sqrt(a)},e}function sn(t){var e=un(function(e,n){return t([e*Go,n*Go])});return function(t){return dn(e(t))}}function ln(t){this.stream=t}function cn(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function fn(t){return hn(function(){return t})()}function hn(t){function e(t){return t=u(t[0]*Wo,t[1]*Wo),[t[0]*h+s,l-t[1]*h]}function n(t){return t=u.invert((t[0]-s)/h,(l-t[1])/h),t&&[t[0]*Go,t[1]*Go]}function r(){u=Re(o=mn(v,y,x),a);var t=a(g,m);return s=d-t[0]*h,l=p+t[1]*h,i()}function i(){return c&&(c.valid=!1,c=null),e}var a,o,u,s,l,c,f=un(function(t,e){return t=a(t,e),[t[0]*h+s,l-t[1]*h]}),h=150,d=480,p=250,g=0,m=0,v=0,y=0,x=0,_=Hu,b=w,M=null,k=null;return e.stream=function(t){return c&&(c.valid=!1),c=dn(_(o,f(b(t)))),c.valid=!0,c},e.clipAngle=function(t){return arguments.length?(_=null==t?(M=t,Hu):Ve((M=+t)*Wo),i()):M},e.clipExtent=function(t){return arguments.length?(k=t,b=t?We(t[0][0],t[0][1],t[1][0],t[1][1]):w,i()):k},e.scale=function(t){return arguments.length?(h=+t,r()):h},e.translate=function(t){return arguments.length?(d=+t[0],p=+t[1],r()):[d,p]},e.center=function(t){return arguments.length?(g=t[0]%360*Wo,m=t[1]%360*Wo,r()):[g*Go,m*Go]},e.rotate=function(t){return arguments.length?(v=t[0]%360*Wo,y=t[1]%360*Wo,x=t.length>2?t[2]%360*Wo:0,r()):[v*Go,y*Go,x*Go]},ho.rebind(e,f,"precision"),function(){return a=t.apply(this,arguments),e.invert=a.invert&&n,r()}}function dn(t){return cn(t,function(e,n){t.point(e*Wo,n*Wo)})}function pn(t,e){return[t,e]}function gn(t,e){return[t>Ho?t-Bo:-Ho>t?t+Bo:t,e]}function mn(t,e,n){return t?e||n?Re(yn(t),xn(e,n)):yn(t):e||n?xn(e,n):gn}function vn(t){return function(e,n){return e+=t,[e>Ho?e-Bo:-Ho>e?e+Bo:e,n]}}function yn(t){var e=vn(t);return e.invert=vn(-t),e}function xn(t,e){function n(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*r+u*i;return[Math.atan2(s*a-c*o,u*r-l*i),ot(c*a+s*o)]}var r=Math.cos(t),i=Math.sin(t),a=Math.cos(e),o=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*a-s*o;return[Math.atan2(s*a+l*o,u*r+c*i),ot(c*r-u*i)]},n}function _n(t,e){var n=Math.cos(t),r=Math.sin(t);return function(i,a,o,u){var s=o*e;null!=i?(i=bn(n,i),a=bn(n,a),(o>0?a>i:i>a)&&(i+=o*Bo)):(i=t+o*Bo,a=t-.5*s);for(var l,c=i;o>0?c>a:a>c;c-=s)u.point((l=Se([n,-r*Math.cos(c),-r*Math.sin(c)]))[0],l[1])}}function bn(t,e){var n=_e(e);n[0]-=t,Ee(n);var r=at(-n[1]);return((-n[2]<0?-r:r)+2*Math.PI-Fo)%(2*Math.PI)}function Mn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[t,e]})}}function wn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[e,t]})}}function kn(t){return t.source}function En(t){return t.target}function Sn(t,e,n,r){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(r),u=Math.sin(r),s=i*Math.cos(t),l=i*Math.sin(t),c=o*Math.cos(n),f=o*Math.sin(n),h=2*Math.asin(Math.sqrt(ct(r-e)+i*o*ct(n-t))),d=1/Math.sin(h),p=h?function(t){var e=Math.sin(t*=h)*d,n=Math.sin(h-t)*d,r=n*s+e*c,i=n*l+e*f,o=n*a+e*u;return[Math.atan2(i,r)*Go,Math.atan2(o,Math.sqrt(r*r+i*i))*Go]}:function(){return[t*Go,e*Go]};return p.distance=h,p}function An(){function t(t,i){var a=Math.sin(i*=Wo),o=Math.cos(i),u=Eo((t*=Wo)-e),s=Math.cos(u);es+=Math.atan2(Math.sqrt((u=o*Math.sin(u))*u+(u=r*a-n*o*s)*u),n*a+r*o*s),e=t,n=a,r=o}var e,n,r;ns.point=function(i,a){e=i*Wo,n=Math.sin(a*=Wo),r=Math.cos(a),ns.point=t},ns.lineEnd=function(){ns.point=ns.lineEnd=S}}function Tn(t,e){function n(e,n){var r=Math.cos(e),i=Math.cos(n),a=t(r*i);return[a*i*Math.sin(e),a*Math.sin(n)]}return n.invert=function(t,n){var r=Math.sqrt(t*t+n*n),i=e(r),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,r*o),Math.asin(r&&n*a/r)]},n}function On(t,e){function n(t,e){o>0?-Xo+Fo>e&&(e=-Xo+Fo):e>Xo-Fo&&(e=Xo-Fo);var n=o/Math.pow(i(e),a);return[n*Math.sin(a*t),o-n*Math.cos(a*t)]}var r=Math.cos(t),i=function(t){return Math.tan(Ho/4+t/2)},a=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log(i(e)/i(t)),o=r*Math.pow(i(t),a)/a;return a?(n.invert=function(t,e){var n=o-e,r=rt(a)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/a,2*Math.atan(Math.pow(o/r,1/a))-Xo]},n):Ln}function Nn(t,e){function n(t,e){var n=a-e;return[n*Math.sin(i*t),a-n*Math.cos(i*t)]}var r=Math.cos(t),i=t===e?Math.sin(t):(r-Math.cos(e))/(e-t),a=r/i+t;return Eo(i)i;i++){for(;r>1&&it(t[n[r-2]],t[n[r-1]],t[i])<=0;)--r;n[r++]=i}return n.slice(0,r)}function Pn(t,e){return t[0]-e[0]||t[1]-e[1]}function zn(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function jn(t,e,n,r){var i=t[0],a=n[0],o=e[0]-i,u=r[0]-a,s=t[1],l=n[1],c=e[1]-s,f=r[1]-l,h=(u*(s-l)-f*(i-a))/(f*o-u*c);return[i+h*o,s+h*c]}function qn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function $n(){sr(this),this.edge=this.site=this.circle=null}function Fn(t){var e=ps.pop()||new $n;return e.site=t,e}function Yn(t){Kn(t),fs.remove(t),ps.push(t),sr(t)}function Hn(t){var e=t.circle,n=e.x,r=e.cy,i={x:n,y:r},a=t.P,o=t.N,u=[t];Yn(t);for(var s=a;s.circle&&Eo(n-s.circle.x)c;++c)l=u[c],s=u[c-1],ar(l.edge,s.site,l.site,i);s=u[0],l=u[f-1],l.edge=rr(s.site,l.site,null,i),Qn(s),Qn(l)}function Bn(t){for(var e,n,r,i,a=t.x,o=t.y,u=fs._;u;)if(r=Vn(u,o)-a,r>Fo)u=u.L;else{if(i=a-Xn(u,o),!(i>Fo)){r>-Fo?(e=u.P,n=u):i>-Fo?(e=u,n=u.N):e=n=u;break}if(!u.R){e=u;break}u=u.R}var s=Fn(t);if(fs.insert(e,s),e||n){if(e===n)return Kn(e),n=Fn(e.site),fs.insert(s,n),s.edge=n.edge=rr(e.site,s.site),Qn(e),void Qn(n);if(!n)return void(s.edge=rr(e.site,s.site));Kn(e),Kn(n);var l=e.site,c=l.x,f=l.y,h=t.x-c,d=t.y-f,p=n.site,g=p.x-c,m=p.y-f,v=2*(h*m-d*g),y=h*h+d*d,x=g*g+m*m,_={x:(m*y-d*x)/v+c,y:(h*x-g*y)/v+f};ar(n.edge,l,p,_),s.edge=rr(l,t,null,_),n.edge=rr(t,p,null,_),Qn(e),Qn(n)}}function Vn(t,e){var n=t.site,r=n.x,i=n.y,a=i-e;if(!a)return r;var o=t.P;if(!o)return-(1/0);n=o.site;var u=n.x,s=n.y,l=s-e;if(!l)return u;var c=u-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+i-a/2)))/f+r:(r+u)/2}function Xn(t,e){var n=t.N;if(n)return Vn(n,e);var r=t.site;return r.y===e?r.x:1/0}function Wn(t){this.site=t,this.edges=[]}function Gn(t){for(var e,n,r,i,a,o,u,s,l,c,f=t[0][0],h=t[1][0],d=t[0][1],p=t[1][1],g=cs,m=g.length;m--;)if(a=g[m],a&&a.prepare())for(u=a.edges,s=u.length,o=0;s>o;)c=u[o].end(),r=c.x,i=c.y,l=u[++o%s].start(),e=l.x,n=l.y,(Eo(r-e)>Fo||Eo(i-n)>Fo)&&(u.splice(o,0,new or(ir(a.site,c,Eo(r-f)Fo?{x:f,y:Eo(e-f)Fo?{x:Eo(n-p)Fo?{x:h,y:Eo(e-h)Fo?{x:Eo(n-d)=-Yo)){var d=s*s+l*l,p=c*c+f*f,g=(f*d-l*p)/h,m=(s*p-c*d)/h,f=m+u,v=gs.pop()||new Jn;v.arc=t,v.site=i,v.x=g+o,v.y=f+Math.sqrt(g*g+m*m),v.cy=f,t.circle=v;for(var y=null,x=ds._;x;)if(v.ym||m>=u)return;if(h>p){if(a){if(a.y>=l)return}else a={x:m,y:s};n={x:m,y:l}}else{if(a){if(a.yr||r>1)if(h>p){if(a){if(a.y>=l)return}else a={x:(s-i)/r,y:s};n={x:(l-i)/r,y:l}}else{if(a){if(a.yd){if(a){if(a.x>=u)return}else a={x:o,y:r*o+i};n={x:u,y:r*u+i}}else{if(a){if(a.xa||f>o||r>h||i>d)){if(p=t.point){var p,g=e-t.x,m=n-t.y,v=g*g+m*m;if(s>v){var y=Math.sqrt(s=v);r=e-y,i=n-y,a=e+y,o=n+y,u=p}}for(var x=t.nodes,_=.5*(c+h),b=.5*(f+d),M=e>=_,w=n>=b,k=w<<1|M,E=k+4;E>k;++k)if(t=x[3&k])switch(3&k){case 0:l(t,c,f,_,b);break;case 1:l(t,_,f,h,b);break;case 2:l(t,c,b,_,d);break;case 3:l(t,_,b,h,d)}}}(t,r,i,a,o),u}function _r(t,e){t=ho.rgb(t),e=ho.rgb(e);var n=t.r,r=t.g,i=t.b,a=e.r-n,o=e.g-r,u=e.b-i;return function(t){return"#"+Et(Math.round(n+a*t))+Et(Math.round(r+o*t))+Et(Math.round(i+u*t))}}function br(t,e){var n,r={},i={};for(n in t)n in e?r[n]=kr(t[n],e[n]):i[n]=t[n];for(n in e)n in t||(i[n]=e[n]);return function(t){for(n in r)i[n]=r[n](t);return i}}function Mr(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function wr(t,e){var n,r,i,a=vs.lastIndex=ys.lastIndex=0,o=-1,u=[],s=[];for(t+="",e+="";(n=vs.exec(t))&&(r=ys.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),u[o]?u[o]+=i:u[++o]=i),(n=n[0])===(r=r[0])?u[o]?u[o]+=r:u[++o]=r:(u[++o]=null,s.push({i:o,x:Mr(n,r)})),a=ys.lastIndex;return ar;++r)u[(n=s[r]).i]=n.x(t);return u.join("")})}function kr(t,e){for(var n,r=ho.interpolators.length;--r>=0&&!(n=ho.interpolators[r](t,e)););return n}function Er(t,e){var n,r=[],i=[],a=t.length,o=e.length,u=Math.min(t.length,e.length);for(n=0;u>n;++n)r.push(kr(t[n],e[n]));for(;a>n;++n)i[n]=t[n];for(;o>n;++n)i[n]=e[n];return function(t){for(n=0;u>n;++n)i[n]=r[n](t);return i}}function Sr(t){return function(e){return 0>=e?0:e>=1?1:t(e)}}function Ar(t){return function(e){return 1-t(1-e)}}function Tr(t){return function(e){return.5*(.5>e?t(2*e):2-t(2-2*e))}}function Or(t){return t*t}function Nr(t){return t*t*t}function Lr(t){if(0>=t)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(.5>t?n:3*(t-e)+n-.75)}function Cr(t){return function(e){return Math.pow(e,t)}}function Rr(t){return 1-Math.cos(t*Xo)}function Ir(t){return Math.pow(2,10*(t-1))}function Dr(t){return 1-Math.sqrt(1-t*t)}function Ur(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Bo*Math.asin(1/t):(t=1,n=e/4),function(r){return 1+t*Math.pow(2,-10*r)*Math.sin((r-n)*Bo/e)}}function Pr(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function zr(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function jr(t,e){t=ho.hcl(t),e=ho.hcl(e);var n=t.h,r=t.c,i=t.l,a=e.h-n,o=e.c-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.c:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return gt(n+a*t,r+o*t,i+u*t)+""}}function qr(t,e){t=ho.hsl(t),e=ho.hsl(e);var n=t.h,r=t.s,i=t.l,a=e.h-n,o=e.s-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.s:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return dt(n+a*t,r+o*t,i+u*t)+""}}function $r(t,e){t=ho.lab(t),e=ho.lab(e);var n=t.l,r=t.a,i=t.b,a=e.l-n,o=e.a-r,u=e.b-i;return function(t){return vt(n+a*t,r+o*t,i+u*t)+""}}function Fr(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Yr(t){var e=[t.a,t.b],n=[t.c,t.d],r=Br(e),i=Hr(e,n),a=Br(Vr(n,e,-i))||0;e[0]*n[1]180?e+=360:e-t>180&&(t+=360),r.push({i:n.push(Xr(n)+"rotate(",null,")")-2,x:Mr(t,e)})):e&&n.push(Xr(n)+"rotate("+e+")")}function Zr(t,e,n,r){t!==e?r.push({i:n.push(Xr(n)+"skewX(",null,")")-2,x:Mr(t,e)}):e&&n.push(Xr(n)+"skewX("+e+")")}function Jr(t,e,n,r){if(t[0]!==e[0]||t[1]!==e[1]){var i=n.push(Xr(n)+"scale(",null,",",null,")");r.push({i:i-4,x:Mr(t[0],e[0])},{i:i-2,x:Mr(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(Xr(n)+"scale("+e+")")}function Qr(t,e){var n=[],r=[];return t=ho.transform(t),e=ho.transform(e),Wr(t.translate,e.translate,n,r),Gr(t.rotate,e.rotate,n,r),Zr(t.skew,e.skew,n,r),Jr(t.scale,e.scale,n,r),t=e=null,function(t){for(var e,i=-1,a=r.length;++i=0;)n.push(i[r])}function fi(t,e){for(var n=[t],r=[];null!=(t=n.pop());)if(r.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++on;++n)(e=t[n][1])>i&&(r=n,i=e);return r}function Mi(t){return t.reduce(wi,0)}function wi(t,e){return t+e[1]}function ki(t,e){return Ei(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Ei(t,e){for(var n=-1,r=+t[0],i=(t[1]-r)/e,a=[];++n<=e;)a[n]=i*n+r;return a}function Si(t){return[ho.min(t),ho.max(t)]}function Ai(t,e){return t.value-e.value}function Ti(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Oi(t,e){t._pack_next=e,e._pack_prev=t}function Ni(t,e){var n=e.x-t.x,r=e.y-t.y,i=t.r+e.r;return.999*i*i>n*n+r*r}function Li(t){function e(t){c=Math.min(t.x-t.r,c),f=Math.max(t.x+t.r,f),h=Math.min(t.y-t.r,h),d=Math.max(t.y+t.r,d)}if((n=t.children)&&(l=n.length)){var n,r,i,a,o,u,s,l,c=1/0,f=-(1/0),h=1/0,d=-(1/0);if(n.forEach(Ci),r=n[0],r.x=-r.r,r.y=0,e(r),l>1&&(i=n[1],i.x=i.r,i.y=0,e(i),l>2))for(a=n[2],Di(r,i,a),e(a),Ti(r,a),r._pack_prev=a,Ti(a,i),i=r._pack_next,o=3;l>o;o++){Di(r,i,a=n[o]);var p=0,g=1,m=1;for(u=i._pack_next;u!==i;u=u._pack_next,g++)if(Ni(u,a)){p=1;break}if(1==p)for(s=r._pack_prev;s!==u._pack_prev&&!Ni(s,a);s=s._pack_prev,m++);p?(m>g||g==m&&i.ro;o++)a=n[o],a.x-=v,a.y-=y,x=Math.max(x,a.r+Math.sqrt(a.x*a.x+a.y*a.y));t.r=x,n.forEach(Ri)}}function Ci(t){t._pack_next=t._pack_prev=t}function Ri(t){delete t._pack_next,delete t._pack_prev}function Ii(t,e,n,r){var i=t.children;if(t.x=e+=r*t.x,t.y=n+=r*t.y,t.r*=r,i)for(var a=-1,o=i.length;++a=0;)e=i[a],e.z+=n,e.m+=n,n+=e.s+(r+=e.c)}function $i(t,e,n){return t.a.parent===e.parent?t.a:n}function Fi(t){return 1+ho.max(t,function(t){return t.y})}function Yi(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Hi(t){var e=t.children;return e&&e.length?Hi(e[0]):t}function Bi(t){var e,n=t.children;return n&&(e=n.length)?Bi(n[e-1]):t}function Vi(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function Xi(t,e){var n=t.x+e[3],r=t.y+e[0],i=t.dx-e[1]-e[3],a=t.dy-e[0]-e[2];return 0>i&&(n+=i/2,i=0),0>a&&(r+=a/2,a=0),{x:n,y:r,dx:i,dy:a}}function Wi(t){var e=t[0],n=t[t.length-1];return n>e?[e,n]:[n,e]}function Gi(t){return t.rangeExtent?t.rangeExtent():Wi(t.range())}function Zi(t,e,n,r){var i=n(t[0],t[1]),a=r(e[0],e[1]);return function(t){return a(i(t))}}function Ji(t,e){var n,r=0,i=t.length-1,a=t[r],o=t[i];return a>o&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t}function Qi(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:Os}function Ki(t,e,n,r){var i=[],a=[],o=0,u=Math.min(t.length,e.length)-1;for(t[u]2?Ki:Zi,s=r?ti:Kr;return o=i(t,e,s,n),u=i(e,t,s,kr),a}function a(t){return o(t)}var o,u;return a.invert=function(t){return u(t)},a.domain=function(e){return arguments.length?(t=e.map(Number),i()):t},a.range=function(t){return arguments.length?(e=t,i()):e},a.rangeRound=function(t){return a.range(t).interpolate(Fr)},a.clamp=function(t){return arguments.length?(r=t,i()):r},a.interpolate=function(t){return arguments.length?(n=t,i()):n},a.ticks=function(e){return ia(t,e)},a.tickFormat=function(e,n){return aa(t,e,n)},a.nice=function(e){return na(t,e),i()},a.copy=function(){return ta(t,e,n,r)},i()}function ea(t,e){return ho.rebind(t,e,"range","rangeRound","interpolate","clamp")}function na(t,e){return Ji(t,Qi(ra(t,e)[2])),Ji(t,Qi(ra(t,e)[2])),t}function ra(t,e){null==e&&(e=10);var n=Wi(t),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/e)/Math.LN10)),a=e/r*i;return.15>=a?i*=10:.35>=a?i*=5:.75>=a&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+.5*i,n[2]=i,n}function ia(t,e){return ho.range.apply(ho,ra(t,e))}function aa(t,e,n){var r=ra(t,e);if(n){var i=vu.exec(n);if(i.shift(),"s"===i[8]){var a=ho.formatPrefix(Math.max(Eo(r[0]),Eo(r[1])));return i[7]||(i[7]="."+oa(a.scale(r[2]))),i[8]="f",n=ho.format(i.join("")),function(t){return n(a.scale(t))+a.symbol}}i[7]||(i[7]="."+ua(i[8],r)),n=i.join("")}else n=",."+oa(r[2])+"f";return ho.format(n)}function oa(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function ua(t,e){var n=oa(e[2]);return t in Ns?Math.abs(n-oa(Math.max(Eo(e[0]),Eo(e[1]))))+ +("e"!==t):n-2*("%"===t)}function sa(t,e,n,r){function i(t){return(n?Math.log(0>t?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((r=e.map(Number)).map(i)),o):r},o.base=function(n){return arguments.length?(e=+n,t.domain(r.map(i)),o):e},o.nice=function(){var e=Ji(r.map(i),n?Math:Cs);return t.domain(e),r=e.map(a),o},o.ticks=function(){var t=Wi(r),o=[],u=t[0],s=t[1],l=Math.floor(i(u)),c=Math.ceil(i(s)),f=e%1?2:e;if(isFinite(c-l)){if(n){for(;c>l;l++)for(var h=1;f>h;h++)o.push(a(l)*h);o.push(a(l))}else for(o.push(a(l));l++0;h--)o.push(a(l)*h);for(l=0;o[l]s;c--);o=o.slice(l,c)}return o},o.tickFormat=function(t,n){if(!arguments.length)return Ls;arguments.length<2?n=Ls:"function"!=typeof n&&(n=ho.format(n));var r=Math.max(1,e*t/o.ticks().length);return function(t){var o=t/a(Math.round(i(t)));return e-.5>o*e&&(o*=e),r>=o?n(t):""}},o.copy=function(){return sa(t.copy(),e,n,r)},ea(o,t)}function la(t,e,n){function r(e){return t(i(e))}var i=ca(e),a=ca(1/e);return r.invert=function(e){return a(t.invert(e))},r.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(i)),r):n},r.ticks=function(t){return ia(n,t)},r.tickFormat=function(t,e){return aa(n,t,e)},r.nice=function(t){return r.domain(na(n,t))},r.exponent=function(o){return arguments.length?(i=ca(e=o),a=ca(1/e),t.domain(n.map(i)),r):e},r.copy=function(){return la(t.copy(),e,n)},ea(r,t)}function ca(t){return function(e){return 0>e?-Math.pow(-e,t):Math.pow(e,t)}}function fa(t,e){function n(n){return a[((i.get(n)||("range"===e.t?i.set(n,t.push(n)):NaN))-1)%a.length]}function r(e,n){return ho.range(t.length).map(function(t){return e+n*t})}var i,a,o;return n.domain=function(r){if(!arguments.length)return t;t=[],i=new p;for(var a,o=-1,u=r.length;++on?[NaN,NaN]:[n>0?i[n-1]:t[0],ne?NaN:e/a+t,[e,e+1/a]},r.copy=function(){return da(t,e,n)},i()}function pa(t,e){function n(n){return n>=n?e[ho.bisect(t,n)]:void 0}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return pa(t,e)},n}function ga(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return ia(t,e)},e.tickFormat=function(e,n){return aa(t,e,n)},e.copy=function(){return ga(t)},e}function ma(){return 0}function va(t){return t.innerRadius}function ya(t){return t.outerRadius}function xa(t){return t.startAngle}function _a(t){return t.endAngle}function ba(t){return t&&t.padAngle}function Ma(t,e,n,r){return(t-n)*e-(e-r)*t>0?0:1}function wa(t,e,n,r,i){var a=t[0]-e[0],o=t[1]-e[1],u=(i?r:-r)/Math.sqrt(a*a+o*o),s=u*o,l=-u*a,c=t[0]+s,f=t[1]+l,h=e[0]+s,d=e[1]+l,p=(c+h)/2,g=(f+d)/2,m=h-c,v=d-f,y=m*m+v*v,x=n-r,_=c*d-h*f,b=(0>v?-1:1)*Math.sqrt(Math.max(0,x*x*y-_*_)),M=(_*v-m*b)/y,w=(-_*m-v*b)/y,k=(_*v+m*b)/y,E=(-_*m+v*b)/y,S=M-p,A=w-g,T=k-p,O=E-g;return S*S+A*A>T*T+O*O&&(M=k,w=E),[[M-s,w-l],[M*n/x,w*n/x]]}function ka(t){function e(e){function o(){l.push("M",a(t(c),u))}for(var s,l=[],c=[],f=-1,h=e.length,d=Lt(n),p=Lt(r);++f1?t.join("L"):t+"Z"}function Sa(t){return t.join("L")+"Z"}function Aa(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1&&i.push("H",r[0]),i.join("")}function Ta(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1){u=e[1],a=t[s],s++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-u[0])+","+(a[1]-u[1])+","+a[0]+","+a[1];for(var l=2;l9&&(i=3*e/Math.sqrt(i),o[u]=i*n,o[u+1]=i*r));for(u=-1;++u<=s;)i=(t[Math.min(s,u+1)][0]-t[Math.max(0,u-1)][0])/(6*(1+o[u]*o[u])),a.push([i||0,o[u]*i||0]);return a}function Ha(t){return t.length<3?Ea(t):t[0]+Ra(t,Ya(t))}function Ba(t){for(var e,n,r,i=-1,a=t.length;++i=e?o(t-e):void(l.c=o)}function o(n){var i=d.active,a=d[i];a&&(a.timer.c=null,a.timer.t=NaN,--d.count,delete d[i],a.event&&a.event.interrupt.call(t,t.__data__,a.index));for(var o in d)if(r>+o){var p=d[o];p.timer.c=null,p.timer.t=NaN,--d.count,delete d[o]}l.c=u,Ut(function(){return l.c&&u(n||1)&&(l.c=null,l.t=NaN),1},0,s),d.active=r,g.event&&g.event.start.call(t,t.__data__,e),h=[],g.tween.forEach(function(n,r){(r=r.call(t,t.__data__,e))&&h.push(r)}),f=g.ease,c=g.duration}function u(i){for(var a=i/c,o=f(a),u=h.length;u>0;)h[--u].call(t,o);return a>=1?(g.event&&g.event.end.call(t,t.__data__,e),--d.count?delete d[r]:delete t[n],1):void 0}var s,l,c,f,h,d=t[n]||(t[n]={active:0,count:0}),g=d[r];g||(s=i.time,l=Ut(a,0,s),g=d[r]={tween:new p,time:s,timer:l,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++d.count)}function ao(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate("+(isFinite(r)?r:n(t))+",0)"})}function oo(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate(0,"+(isFinite(r)?r:n(t))+")"})}function uo(t){return t.toISOString()}function so(t,e,n){function r(e){return t(e)}function i(t,n){var r=t[1]-t[0],i=r/n,a=ho.bisect(rl,i);return a==rl.length?[e.year,ra(t.map(function(t){return t/31536e6}),n)[2]]:a?e[i/rl[a-1]1?{floor:function(e){for(;n(e=t.floor(e));)e=lo(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=lo(+e+1);return e}}:t))},r.ticks=function(t,e){var n=Wi(r.domain()),a=null==t?i(n,10):"number"==typeof t?i(n,t):!t.range&&[{range:t},e];return a&&(t=a[0],e=a[1]),t.range(n[0],lo(+n[1]+1),1>e?1:e)},r.tickFormat=function(){return n},r.copy=function(){return so(t.copy(),e,n)},ea(r,t)}function lo(t){return new Date(t)}function co(t){return JSON.parse(t.responseText)}function fo(t){var e=mo.createRange();return e.selectNode(mo.body),e.createContextualFragment(t.responseText)}var ho={version:"3.5.17"},po=[].slice,go=function(t){return po.call(t)},mo=this.document;if(mo)try{go(mo.documentElement.childNodes)[0].nodeType}catch(vo){go=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),mo)try{mo.createElement("DIV").style.setProperty("opacity",0,"")}catch(yo){var xo=this.Element.prototype,_o=xo.setAttribute,bo=xo.setAttributeNS,Mo=this.CSSStyleDeclaration.prototype,wo=Mo.setProperty;xo.setAttribute=function(t,e){_o.call(this,t,e+"")},xo.setAttributeNS=function(t,e,n){bo.call(this,t,e,n+"")},Mo.setProperty=function(t,e,n){wo.call(this,t,e+"",n)}}ho.ascending=u,ho.descending=function(t,e){return t>e?-1:e>t?1:e>=t?0:NaN},ho.min=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++ir&&(n=r)}else{for(;++i=r){n=r;break}for(;++ir&&(n=r)}return n},ho.max=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++in&&(n=r)}else{for(;++i=r){n=r;break}for(;++in&&(n=r)}return n},ho.extent=function(t,e){var n,r,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}else{for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}return[n,i]},ho.sum=function(t,e){var n,r=0,i=t.length,a=-1;if(1===arguments.length)for(;++a1?o/(c-1):void 0},ho.deviation=function(){var t=ho.variance.apply(this,arguments);return t?Math.sqrt(t):t};var ko=c(u);ho.bisectLeft=ko.left,ho.bisect=ho.bisectRight=ko.right,ho.bisector=function(t){return c(1===t.length?function(e,n){return u(t(e),n)}:t)},ho.shuffle=function(t,e,n){(a=arguments.length)<3&&(n=t.length,2>a&&(e=0));for(var r,i,a=n-e;a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t},ho.permute=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},ho.pairs=function(t){for(var e,n=0,r=t.length-1,i=t[0],a=new Array(0>r?0:r);r>n;)a[n]=[e=i,i=t[++n]];return a},ho.transpose=function(t){if(!(i=t.length))return[];for(var e=-1,n=ho.min(t,f),r=new Array(n);++e=0;)for(r=t[i],e=r.length;--e>=0;)n[--o]=r[e];return n};var Eo=Math.abs;ho.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var r,i=[],a=h(Eo(n)),o=-1;if(t*=a,e*=a,n*=a,0>n)for(;(r=t+n*++o)>e;)i.push(r/a);else for(;(r=t+n*++o)=a.length)return r?r.call(i,o):n?o.sort(n):o;for(var s,l,c,f,h=-1,d=o.length,g=a[u++],m=new p;++h=a.length)return t;var r=[],i=o[n++];return t.forEach(function(t,i){r.push({key:t,values:e(i,n)})}),i?r.sort(function(t,e){return i(t.key,e.key)}):r}var n,r,i={},a=[],o=[];return i.map=function(e,n){return t(n,e,0)},i.entries=function(n){return e(t(ho.map,n,0),0)},i.key=function(t){return a.push(t),i},i.sortKeys=function(t){return o[a.length-1]=t,i},i.sortValues=function(t){return n=t,i},i.rollup=function(t){return r=t,i},i},ho.set=function(t){var e=new M;if(t)for(var n=0,r=t.length;r>n;++n)e.add(t[n]);return e},d(M,{has:v,add:function(t){return this._[g(t+="")]=!0,t},remove:y,values:x,size:_,empty:b,forEach:function(t){for(var e in this._)t.call(this,m(e))}}),ho.behavior={},ho.rebind=function(t,e){for(var n,r=1,i=arguments.length;++r=0&&(r=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(r):this[t].on(r,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(r,null);return this}},ho.event=null,ho.requote=function(t){return t.replace(Oo,"\\$&")};var Oo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,No={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Lo=function(t,e){return e.querySelector(t)},Co=function(t,e){return e.querySelectorAll(t)},Ro=function(t,e){var n=t.matches||t[E(t,"matchesSelector")];return(Ro=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Lo=function(t,e){return Sizzle(t,e)[0]||null},Co=Sizzle,Ro=Sizzle.matchesSelector),ho.selection=function(){return ho.select(mo.documentElement)};var Io=ho.selection.prototype=[];Io.select=function(t){var e,n,r,i,a=[];t=R(t);for(var o=-1,u=this.length;++o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Uo.hasOwnProperty(n)?{space:Uo[n],local:t}:t}},Io.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=ho.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(D(e,t[e]));return this}return this.each(D(t,e))},Io.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),r=(t=z(t)).length,i=-1;if(e=n.classList){for(;++ir){if("string"!=typeof t){2>r&&(e="");for(n in t)this.each($(n,t[n],e));return this}if(2>r){var i=this.node();return o(i).getComputedStyle(i,null).getPropertyValue(t)}n=""}return this.each($(t,e,n))},Io.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(F(e,t[e]));return this}return this.each(F(t,e))},Io.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Io.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Io.append=function(t){return t=Y(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Io.insert=function(t,e){return t=Y(t),e=R(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Io.remove=function(){return this.each(H)},Io.data=function(t,e){function n(t,n){var r,i,a,o=t.length,c=n.length,f=Math.min(o,c),h=new Array(c),d=new Array(c),g=new Array(o);if(e){var m,v=new p,y=new Array(o);for(r=-1;++rr;++r)d[r]=B(n[r]);for(;o>r;++r)g[r]=t[r]}d.update=h,d.parentNode=h.parentNode=g.parentNode=t.parentNode,u.push(d),s.push(h),l.push(g)}var r,i,a=-1,o=this.length;if(!arguments.length){for(t=new Array(o=(r=this[0]).length);++aa;a++){i.push(e=[]),e.parentNode=(n=this[a]).parentNode;for(var u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return C(i)},Io.order=function(){for(var t=-1,e=this.length;++t=0;)(n=r[i])&&(a&&a!==n.nextSibling&&a.parentNode.insertBefore(n,a),a=n);return this},Io.sort=function(t){t=X.apply(this,arguments);for(var e=-1,n=this.length;++et;t++)for(var n=this[t],r=0,i=n.length;i>r;r++){var a=n[r];if(a)return a}return null},Io.size=function(){var t=0;return W(this,function(){++t}),t};var Po=[];ho.selection.enter=G,ho.selection.enter.prototype=Po,Po.append=Io.append,Po.empty=Io.empty,Po.node=Io.node,Po.call=Io.call,Po.size=Io.size,Po.select=function(t){for(var e,n,r,i,a,o=[],u=-1,s=this.length;++ur){if("string"!=typeof t){2>r&&(e=!1);for(n in t)this.each(J(n,t[n],e));return this}if(2>r)return(r=this.node()["__on"+t])&&r._;n=!1}return this.each(J(t,e,n))};var zo=ho.map({mouseenter:"mouseover",mouseleave:"mouseout"});mo&&zo.forEach(function(t){"on"+t in mo&&zo.remove(t)});var jo,qo=0;ho.mouse=function(t){return et(t,N())};var $o=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ho.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=N().changedTouches),e)for(var r,i=0,a=e.length;a>i;++i)if((r=e[i]).identifier===n)return et(t,r)},ho.behavior.drag=function(){function t(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(t,e,i,a,o){return function(){function u(){var t,n,r=e(h,g);r&&(t=r[0]-x[0],n=r[1]-x[1],p|=t|n,x=r,d({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:t,dy:n}))}function s(){e(h,g)&&(v.on(a+m,null).on(o+m,null),y(p),d({type:"dragend"}))}var l,c=this,f=ho.event.target.correspondingElement||ho.event.target,h=c.parentNode,d=n.of(c,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=ho.select(i(f)).on(a+m,u).on(o+m,s),y=tt(f),x=e(h,g);r?(l=r.apply(c,arguments),l=[l.x-x[0],l.y-x[1]]):l=[0,0],d({type:"dragstart"})}}var n=L(t,"drag","dragstart","dragend"),r=null,i=e(S,ho.mouse,o,"mousemove","mouseup"),a=e(nt,ho.touch,w,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},ho.rebind(t,n,"on")},ho.touches=function(t,e){return arguments.length<2&&(e=N().touches),e?go(e).map(function(e){var n=et(t,e);return n.identifier=e.identifier,n}):[]};var Fo=1e-6,Yo=Fo*Fo,Ho=Math.PI,Bo=2*Ho,Vo=Bo-Fo,Xo=Ho/2,Wo=Ho/180,Go=180/Ho,Zo=Math.SQRT2,Jo=2,Qo=4;ho.interpolateZoom=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],u=e[0],s=e[1],l=e[2],c=u-i,f=s-a,h=c*c+f*f;if(Yo>h)r=Math.log(l/o)/Zo,n=function(t){return[i+t*c,a+t*f,o*Math.exp(Zo*t*r)]};else{var d=Math.sqrt(h),p=(l*l-o*o+Qo*h)/(2*o*Jo*d),g=(l*l-o*o-Qo*h)/(2*l*Jo*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Zo,n=function(t){var e=t*r,n=st(m),u=o/(Jo*d)*(n*lt(Zo*e+m)-ut(m));return[i+u*c,a+u*f,o*n/st(Zo*e+m)]}}return n.duration=1e3*r,n},ho.behavior.zoom=function(){function t(t){t.on(N,f).on(tu+".zoom",d).on("dblclick.zoom",p).on(I,h)}function e(t){return[(t[0]-k.x)/k.k,(t[1]-k.y)/k.k]}function n(t){return[t[0]*k.k+k.x,t[1]*k.k+k.y]}function r(t){k.k=Math.max(S[0],Math.min(S[1],t))}function i(t,e){e=n(e),k.x+=t[0]-e[0],k.y+=t[1]-e[1]}function a(e,n,a,o){e.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),i(m=n,a),e=ho.select(e),A>0&&(e=e.transition().duration(A)),e.call(t.event)}function u(){b&&b.domain(_.range().map(function(t){return(t-k.x)/k.k}).map(_.invert)),w&&w.domain(M.range().map(function(t){return(t-k.y)/k.k}).map(M.invert))}function s(t){T++||t({type:"zoomstart"})}function l(t){u(),t({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function c(t){--T||(t({type:"zoomend"}),m=null)}function f(){function t(){u=1,i(ho.mouse(r),h),l(a)}function n(){f.on(C,null).on(R,null),d(u),c(a)}var r=this,a=D.of(r,arguments),u=0,f=ho.select(o(r)).on(C,t).on(R,n),h=e(ho.mouse(r)),d=tt(r);Xs.call(r),s(a)}function h(){function t(){var t=ho.touches(p);return d=k.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=e(t))}),t}function n(){var e=ho.event.target;ho.select(e).on(_,o).on(b,u),M.push(e);for(var n=ho.event.changedTouches,r=0,i=n.length;i>r;++r)m[n[r].identifier]=null;var s=t(),l=Date.now();if(1===s.length){if(500>l-x){var c=s[0];a(p,c,m[c.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),O()}x=l}else if(s.length>1){var c=s[0],f=s[1],h=c[0]-f[0],d=c[1]-f[1];v=h*h+d*d}}function o(){var t,e,n,a,o=ho.touches(p);Xs.call(p);for(var u=0,s=o.length;s>u;++u,a=null)if(n=o[u],a=m[n.identifier]){if(e)break;t=n,e=a}if(a){var c=(c=n[0]-t[0])*c+(c=n[1]-t[1])*c,f=v&&Math.sqrt(c/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+a[0])/2,(e[1]+a[1])/2],r(f*d)}x=null,i(t,e),l(g)}function u(){if(ho.event.touches.length){for(var e=ho.event.changedTouches,n=0,r=e.length;r>n;++n)delete m[e[n].identifier];for(var i in m)return void t()}ho.selectAll(M).on(y,null),w.on(N,f).on(I,h),E(),c(g)}var d,p=this,g=D.of(p,arguments),m={},v=0,y=".zoom-"+ho.event.changedTouches[0].identifier,_="touchmove"+y,b="touchend"+y,M=[],w=ho.select(p),E=tt(p);n(),s(g),w.on(N,null).on(I,n)}function d(){var t=D.of(this,arguments);y?clearTimeout(y):(Xs.call(this),g=e(m=v||ho.mouse(this)),s(t)),y=setTimeout(function(){y=null,c(t)},50),O(),r(Math.pow(2,.002*Ko())*k.k),i(m,g),l(t)}function p(){var t=ho.mouse(this),n=Math.log(k.k)/Math.LN2;a(this,t,e(t),ho.event.shiftKey?Math.ceil(n)-1:Math.floor(n)+1)}var g,m,v,y,x,_,b,M,w,k={x:0,y:0,k:1},E=[960,500],S=eu,A=250,T=0,N="mousedown.zoom",C="mousemove.zoom",R="mouseup.zoom",I="touchstart.zoom",D=L(t,"zoomstart","zoom","zoomend");return tu||(tu="onwheel"in mo?(Ko=function(){return-ho.event.deltaY*(ho.event.deltaMode?120:1)},"wheel"):"onmousewheel"in mo?(Ko=function(){return ho.event.wheelDelta},"mousewheel"):(Ko=function(){return-ho.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=D.of(this,arguments),e=k;Bs?ho.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},s(t)}).tween("zoom:zoom",function(){var n=E[0],r=E[1],i=m?m[0]:n/2,a=m?m[1]:r/2,o=ho.interpolateZoom([(i-k.x)/k.k,(a-k.y)/k.k,n/k.k],[(i-e.x)/e.k,(a-e.y)/e.k,n/e.k]);return function(e){var r=o(e),u=n/r[2];this.__chart__=k={x:i-r[0]*u,y:a-r[1]*u,k:u},l(t)}}).each("interrupt.zoom",function(){c(t)}).each("end.zoom",function(){c(t)}):(this.__chart__=k,s(t),l(t),c(t))})},t.translate=function(e){return arguments.length?(k={x:+e[0],y:+e[1],k:k.k},u(),t):[k.x,k.y]},t.scale=function(e){return arguments.length?(k={x:k.x,y:k.y,k:null},r(+e),u(),t):k.k},t.scaleExtent=function(e){return arguments.length?(S=null==e?eu:[+e[0],+e[1]],t):S},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(E=e&&[+e[0],+e[1]],t):E},t.duration=function(e){return arguments.length?(A=+e,t):A},t.x=function(e){return arguments.length?(b=e,_=e.copy(),k={x:0,y:0,k:1},t):b},t.y=function(e){return arguments.length?(w=e,M=e.copy(),k={x:0,y:0,k:1},t):w},ho.rebind(t,D,"on")};var Ko,tu,eu=[0,1/0];ho.color=ft,ft.prototype.toString=function(){return this.rgb()+""},ho.hsl=ht;var nu=ht.prototype=new ft;nu.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,this.l/t)},nu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,t*this.l)},nu.rgb=function(){return dt(this.h,this.s,this.l)},ho.hcl=pt;var ru=pt.prototype=new ft;ru.brighter=function(t){return new pt(this.h,this.c,Math.min(100,this.l+iu*(arguments.length?t:1)))},ru.darker=function(t){return new pt(this.h,this.c,Math.max(0,this.l-iu*(arguments.length?t:1)))},ru.rgb=function(){return gt(this.h,this.c,this.l).rgb()},ho.lab=mt;var iu=18,au=.95047,ou=1,uu=1.08883,su=mt.prototype=new ft;su.brighter=function(t){return new mt(Math.min(100,this.l+iu*(arguments.length?t:1)),this.a,this.b)},su.darker=function(t){return new mt(Math.max(0,this.l-iu*(arguments.length?t:1)),this.a,this.b)},su.rgb=function(){return vt(this.l,this.a,this.b)},ho.rgb=Mt;var lu=Mt.prototype=new ft;lu.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,r=this.b,i=30;return e||n||r?(e&&i>e&&(e=i),n&&i>n&&(n=i),r&&i>r&&(r=i),new Mt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,r/t))):new Mt(i,i,i)},lu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Mt(t*this.r,t*this.g,t*this.b)},lu.hsl=function(){return At(this.r,this.g,this.b)},lu.toString=function(){return"#"+Et(this.r)+Et(this.g)+Et(this.b)};var cu=ho.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});cu.forEach(function(t,e){cu.set(t,wt(e))}),ho.functor=Lt,ho.xhr=Ct(w),ho.dsv=function(t,e){function n(t,n,a){arguments.length<3&&(a=n,n=null);var o=Rt(t,e,null==n?r:i(n),a);return o.row=function(t){return arguments.length?o.response(null==(n=t)?r:i(t)):n},o}function r(t){return n.parse(t.responseText)}function i(t){return function(e){return n.parse(e.responseText,t)}}function a(e){return e.map(o).join(t)}function o(t){return u.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var u=new RegExp('["'+t+"\n]"),s=t.charCodeAt(0);return n.parse=function(t,e){var r;return n.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");r=e?function(t,n){return e(i(t),n)}:i})},n.parseRows=function(t,e){function n(){if(c>=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var n=e;n++c;){var r=t.charCodeAt(c++),u=1;if(10===r)i=!0;else if(13===r)i=!0,10===t.charCodeAt(c)&&(++c,++u);else if(r!==s)continue;return t.slice(e,c-u)}return t.slice(e)}for(var r,i,a={},o={},u=[],l=t.length,c=0,f=0;(r=n())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=n();e&&null==(h=e(h,f++))||u.push(h)}return u},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var r=new M,i=[];return e.forEach(function(t){for(var e in t)r.has(e)||i.push(r.add(e))}),[i.map(o).join(t)].concat(e.map(function(e){return i.map(function(t){return o(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(a).join("\n")},n},ho.csv=ho.dsv(",","text/csv"),ho.tsv=ho.dsv(" ","text/tab-separated-values");var fu,hu,du,pu,gu=this[E(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};ho.timer=function(){Ut.apply(this,arguments)},ho.timer.flush=function(){zt(),jt()},ho.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var mu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map($t); +ho.formatPrefix=function(t,e){var n=0;return(t=+t)&&(0>t&&(t*=-1),e&&(t=ho.round(t,qt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),mu[8+n/3]};var vu=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,yu=ho.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=ho.round(t,qt(t,e))).toFixed(Math.max(0,Math.min(20,qt(t*(1+1e-15),e))))}}),xu=ho.time={},_u=Date;Ht.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(){bu.setUTCDate.apply(this._,arguments)},setDay:function(){bu.setUTCDay.apply(this._,arguments)},setFullYear:function(){bu.setUTCFullYear.apply(this._,arguments)},setHours:function(){bu.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){bu.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){bu.setUTCMinutes.apply(this._,arguments)},setMonth:function(){bu.setUTCMonth.apply(this._,arguments)},setSeconds:function(){bu.setUTCSeconds.apply(this._,arguments)},setTime:function(){bu.setTime.apply(this._,arguments)}};var bu=Date.prototype;xu.year=Bt(function(t){return t=xu.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),xu.years=xu.year.range,xu.years.utc=xu.year.utc.range,xu.day=Bt(function(t){var e=new _u(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),xu.days=xu.day.range,xu.days.utc=xu.day.utc.range,xu.dayOfYear=function(t){var e=xu.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=xu[t]=Bt(function(t){return(t=xu.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});xu[t+"s"]=n.range,xu[t+"s"].utc=n.utc.range,xu[t+"OfYear"]=function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)}}),xu.week=xu.sunday,xu.weeks=xu.sunday.range,xu.weeks.utc=xu.sunday.utc.range,xu.weekOfYear=xu.sundayOfYear;var Mu={"-":"",_:" ",0:"0"},wu=/^\s*\d+/,ku=/^%/;ho.locale=function(t){return{numberFormat:Ft(t),timeFormat:Xt(t)}};var Eu=ho.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",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"]});ho.format=Eu.numberFormat,ho.geo={},pe.prototype={s:0,t:0,add:function(t){ge(t,this.t,Su),ge(Su.s,this.s,this),this.s?this.t+=Su.t:this.s=Su.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Su=new pe;ho.geo.stream=function(t,e){t&&Au.hasOwnProperty(t.type)?Au[t.type](t,e):me(t,e)};var Au={Feature:function(t,e){me(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++rt?4*Ho+t:t,Lu.lineStart=Lu.lineEnd=Lu.point=S}};ho.geo.bounds=function(){function t(t,e){x.push(_=[c=t,h=t]),f>e&&(f=e),e>d&&(d=e)}function e(e,n){var r=_e([e*Wo,n*Wo]);if(v){var i=Me(v,r),a=[i[1],-i[0],0],o=Me(a,i);Ee(o),o=Se(o);var s=e-p,l=s>0?1:-1,g=o[0]*Go*l,m=Eo(s)>180;if(m^(g>l*p&&l*e>g)){var y=o[1]*Go;y>d&&(d=y)}else if(g=(g+360)%360-180,m^(g>l*p&&l*e>g)){var y=-o[1]*Go;f>y&&(f=y)}else f>n&&(f=n),n>d&&(d=n);m?p>e?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e):h>=c?(c>e&&(c=e),e>h&&(h=e)):e>p?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e)}else t(e,n);v=r,p=e}function n(){b.point=e}function r(){_[0]=c,_[1]=h,b.point=t,v=null}function i(t,n){if(v){var r=t-p;y+=Eo(r)>180?r+(r>0?360:-360):r}else g=t,m=n;Lu.point(t,n),e(t,n)}function a(){Lu.lineStart()}function o(){i(g,m),Lu.lineEnd(),Eo(y)>Fo&&(c=-(h=180)),_[0]=c,_[1]=h,v=null}function u(t,e){return(e-=t)<0?e+360:e}function s(t,e){return t[0]-e[0]}function l(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tNu?(c=-(h=180),f=-(d=90)):y>Fo?d=90:-Fo>y&&(f=-90),_[0]=c,_[1]=h}};return function(t){d=h=-(c=f=1/0),x=[],ho.geo.stream(t,b);var e=x.length;if(e){x.sort(s);for(var n,r=1,i=x[0],a=[i];e>r;++r)n=x[r],l(n[0],i)||l(n[1],i)?(u(i[0],n[1])>u(i[0],i[1])&&(i[1]=n[1]),u(n[0],i[1])>u(i[0],i[1])&&(i[0]=n[0])):a.push(i=n);for(var o,n,p=-(1/0),e=a.length-1,r=0,i=a[e];e>=r;i=n,++r)n=a[r],(o=u(i[1],n[0]))>p&&(p=o,c=n[0],h=i[1])}return x=_=null,c===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[c,f],[h,d]]}}(),ho.geo.centroid=function(t){Cu=Ru=Iu=Du=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,Yu);var e=qu,n=$u,r=Fu,i=e*e+n*n+r*r;return Yo>i&&(e=Pu,n=zu,r=ju,Fo>Ru&&(e=Iu,n=Du,r=Uu),i=e*e+n*n+r*r,Yo>i)?[NaN,NaN]:[Math.atan2(n,e)*Go,ot(r/Math.sqrt(i))*Go]};var Cu,Ru,Iu,Du,Uu,Pu,zu,ju,qu,$u,Fu,Yu={sphere:S,point:Te,lineStart:Ne,lineEnd:Le,polygonStart:function(){Yu.lineStart=Ce},polygonEnd:function(){Yu.lineStart=Ne}},Hu=ze(Ie,Fe,He,[-Ho,-Ho/2]),Bu=1e9;ho.geo.clipExtent=function(){var t,e,n,r,i,a,o={stream:function(t){return i&&(i.valid=!1),i=a(t),i.valid=!0,i},extent:function(u){return arguments.length?(a=We(t=+u[0][0],e=+u[0][1],n=+u[1][0],r=+u[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[n,r]]}};return o.extent([[0,0],[960,500]])},(ho.geo.conicEqualArea=function(){return Ge(Ze)}).raw=Ze,ho.geo.albers=function(){return ho.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ho.geo.albersUsa=function(){function t(t){var a=t[0],o=t[1];return e=null,n(a,o),e||(r(a,o),e)||i(a,o),e}var e,n,r,i,a=ho.geo.albers(),o=ho.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=ho.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?u:a).invert(t)},t.stream=function(t){var e=a.stream(t),n=o.stream(t),r=u.stream(t);return{point:function(t,i){e.point(t,i),n.point(t,i),r.point(t,i)},sphere:function(){e.sphere(),n.sphere(),r.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),r.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),r.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),r.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),r.polygonEnd()}}},t.precision=function(e){return arguments.length?(a.precision(e),o.precision(e),u.precision(e),t):a.precision()},t.scale=function(e){return arguments.length?(a.scale(e),o.scale(.35*e),u.scale(e),t.translate(a.translate())):a.scale()},t.translate=function(e){if(!arguments.length)return a.translate();var l=a.scale(),c=+e[0],f=+e[1];return n=a.translate(e).clipExtent([[c-.455*l,f-.238*l],[c+.455*l,f+.238*l]]).stream(s).point,r=o.translate([c-.307*l,f+.201*l]).clipExtent([[c-.425*l+Fo,f+.12*l+Fo],[c-.214*l-Fo,f+.234*l-Fo]]).stream(s).point,i=u.translate([c-.205*l,f+.212*l]).clipExtent([[c-.214*l+Fo,f+.166*l+Fo],[c-.115*l-Fo,f+.234*l-Fo]]).stream(s).point,t},t.scale(1070)};var Vu,Xu,Wu,Gu,Zu,Ju,Qu={point:S,lineStart:S,lineEnd:S,polygonStart:function(){Xu=0,Qu.lineStart=Je},polygonEnd:function(){Qu.lineStart=Qu.lineEnd=Qu.point=S,Vu+=Eo(Xu/2)}},Ku={point:Qe,lineStart:S,lineEnd:S,polygonStart:S,polygonEnd:S},ts={point:en,lineStart:nn,lineEnd:rn,polygonStart:function(){ts.lineStart=an},polygonEnd:function(){ts.point=en,ts.lineStart=nn,ts.lineEnd=rn}};ho.geo.path=function(){function t(t){return t&&("function"==typeof u&&a.pointRadius(+u.apply(this,arguments)),o&&o.valid||(o=i(a)),ho.geo.stream(t,o)),a.result()}function e(){return o=null,t}var n,r,i,a,o,u=4.5;return t.area=function(t){return Vu=0,ho.geo.stream(t,i(Qu)),Vu},t.centroid=function(t){return Iu=Du=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,i(ts)),Fu?[qu/Fu,$u/Fu]:ju?[Pu/ju,zu/ju]:Uu?[Iu/Uu,Du/Uu]:[NaN,NaN]},t.bounds=function(t){return Zu=Ju=-(Wu=Gu=1/0),ho.geo.stream(t,i(Ku)),[[Wu,Gu],[Zu,Ju]]},t.projection=function(t){return arguments.length?(i=(n=t)?t.stream||sn(t):w,e()):n},t.context=function(t){return arguments.length?(a=null==(r=t)?new Ke:new on(t),"function"!=typeof u&&a.pointRadius(u),e()):r},t.pointRadius=function(e){return arguments.length?(u="function"==typeof e?e:(a.pointRadius(+e),+e),t):u},t.projection(ho.geo.albersUsa()).context(null)},ho.geo.transform=function(t){return{stream:function(e){var n=new ln(e);for(var r in t)n[r]=t[r];return n}}},ln.prototype={point:function(t,e){this.stream.point(t,e)},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()}},ho.geo.projection=fn,ho.geo.projectionMutator=hn,(ho.geo.equirectangular=function(){return fn(pn)}).raw=pn.invert=pn,ho.geo.rotation=function(t){function e(e){return e=t(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e}return t=mn(t[0]%360*Wo,t[1]*Wo,t.length>2?t[2]*Wo:0),e.invert=function(e){return e=t.invert(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e},e},gn.invert=pn,ho.geo.circle=function(){function t(){var t="function"==typeof r?r.apply(this,arguments):r,e=mn(-t[0]*Wo,-t[1]*Wo,0).invert,i=[];return n(null,null,1,{point:function(t,n){i.push(t=e(t,n)),t[0]*=Go,t[1]*=Go}}),{type:"Polygon",coordinates:[i]}}var e,n,r=[0,0],i=6;return t.origin=function(e){return arguments.length?(r=e,t):r},t.angle=function(r){return arguments.length?(n=_n((e=+r)*Wo,i*Wo),t):e},t.precision=function(r){return arguments.length?(n=_n(e*Wo,(i=+r)*Wo),t):i},t.angle(90)},ho.geo.distance=function(t,e){var n,r=(e[0]-t[0])*Wo,i=t[1]*Wo,a=e[1]*Wo,o=Math.sin(r),u=Math.cos(r),s=Math.sin(i),l=Math.cos(i),c=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((n=f*o)*n+(n=l*c-s*f*u)*n),s*c+l*f*u)},ho.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return ho.range(Math.ceil(a/m)*m,i,m).map(h).concat(ho.range(Math.ceil(l/v)*v,s,v).map(d)).concat(ho.range(Math.ceil(r/p)*p,n,p).filter(function(t){return Eo(t%m)>Fo}).map(c)).concat(ho.range(Math.ceil(u/g)*g,o,g).filter(function(t){return Eo(t%v)>Fo}).map(f))}var n,r,i,a,o,u,s,l,c,f,h,d,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(a).concat(d(s).slice(1),h(i).reverse().slice(1),d(l).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(a=+e[0][0],i=+e[1][0],l=+e[0][1],s=+e[1][1],a>i&&(e=a,a=i,i=e),l>s&&(e=l,l=s,s=e),t.precision(y)):[[a,l],[i,s]]},t.minorExtent=function(e){return arguments.length?(r=+e[0][0],n=+e[1][0],u=+e[0][1],o=+e[1][1],r>n&&(e=r,r=n,n=e),u>o&&(e=u,u=o,o=e),t.precision(y)):[[r,u],[n,o]]},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,c=Mn(u,o,90),f=wn(r,n,y),h=Mn(l,s,90),d=wn(a,i,y),t):y},t.majorExtent([[-180,-90+Fo],[180,90-Fo]]).minorExtent([[-180,-80-Fo],[180,80+Fo]])},ho.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||r.apply(this,arguments),n||i.apply(this,arguments)]}}var e,n,r=kn,i=En;return t.distance=function(){return ho.geo.distance(e||r.apply(this,arguments),n||i.apply(this,arguments))},t.source=function(n){return arguments.length?(r=n,e="function"==typeof n?null:n,t):r},t.target=function(e){return arguments.length?(i=e,n="function"==typeof e?null:e,t):i},t.precision=function(){return arguments.length?t:0},t},ho.geo.interpolate=function(t,e){return Sn(t[0]*Wo,t[1]*Wo,e[0]*Wo,e[1]*Wo)},ho.geo.length=function(t){return es=0,ho.geo.stream(t,ns),es};var es,ns={sphere:S,point:S,lineStart:An,lineEnd:S,polygonStart:S,polygonEnd:S},rs=Tn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(ho.geo.azimuthalEqualArea=function(){return fn(rs)}).raw=rs;var is=Tn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},w);(ho.geo.azimuthalEquidistant=function(){return fn(is)}).raw=is,(ho.geo.conicConformal=function(){return Ge(On)}).raw=On,(ho.geo.conicEquidistant=function(){return Ge(Nn)}).raw=Nn;var as=Tn(function(t){return 1/t},Math.atan);(ho.geo.gnomonic=function(){return fn(as)}).raw=as,Ln.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Xo]},(ho.geo.mercator=function(){return Cn(Ln)}).raw=Ln;var os=Tn(function(){return 1},Math.asin);(ho.geo.orthographic=function(){return fn(os)}).raw=os;var us=Tn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(ho.geo.stereographic=function(){return fn(us)}).raw=us,Rn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Xo]},(ho.geo.transverseMercator=function(){var t=Cn(Rn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Rn,ho.geom={},ho.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,i=Lt(n),a=Lt(r),o=t.length,u=[],s=[];for(e=0;o>e;e++)u.push([+i.call(this,t[e],e),+a.call(this,t[e],e),e]);for(u.sort(Pn),e=0;o>e;e++)s.push([u[e][0],-u[e][1]]);var l=Un(u),c=Un(s),f=c[0]===l[0],h=c[c.length-1]===l[l.length-1],d=[];for(e=l.length-1;e>=0;--e)d.push(t[u[l[e]][2]]);for(e=+f;e=r&&l.x<=a&&l.y>=i&&l.y<=o?[[r,o],[a,o],[a,i],[r,i]]:[];c.point=t[u]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(a(t,e)/Fo)*Fo,y:Math.round(o(t,e)/Fo)*Fo,i:e}})}var r=In,i=Dn,a=r,o=i,u=ms;return t?e(t):(e.links=function(t){return hr(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return hr(n(t)).cells.forEach(function(n,r){for(var i,a,o=n.site,u=n.edges.sort(Zn),s=-1,l=u.length,c=u[l-1].edge,f=c.l===o?c.r:c.l;++s=l,h=r>=c,d=h<<1|f;t.leaf=!1,t=t.nodes[d]||(t.nodes[d]=vr()),f?i=l:u=l,h?o=c:s=c,a(t,e,n,r,i,o,u,s)}var c,f,h,d,p,g,m,v,y,x=Lt(u),_=Lt(s);if(null!=e)g=e,m=n,v=r,y=i;else if(v=y=-(g=m=1/0),f=[],h=[],p=t.length,o)for(d=0;p>d;++d)c=t[d],c.xv&&(v=c.x),c.y>y&&(y=c.y),f.push(c.x),h.push(c.y);else for(d=0;p>d;++d){var b=+x(c=t[d],d),M=+_(c,d);g>b&&(g=b),m>M&&(m=M),b>v&&(v=b),M>y&&(y=M),f.push(b),h.push(M)}var w=v-g,k=y-m;w>k?y=m+w:v=g+k;var E=vr();if(E.add=function(t){a(E,t,+x(t,++d),+_(t,d),g,m,v,y)},E.visit=function(t){yr(t,E,g,m,v,y)},E.find=function(t){return xr(E,t[0],t[1],g,m,v,y)},d=-1,null==e){for(;++d=0?t.slice(0,e):t,r=e>=0?t.slice(e+1):"in";return n=_s.get(n)||xs,r=bs.get(r)||w,Sr(r(n.apply(null,po.call(arguments,1))))},ho.interpolateHcl=jr,ho.interpolateHsl=qr,ho.interpolateLab=$r,ho.interpolateRound=Fr,ho.transform=function(t){var e=mo.createElementNS(ho.ns.prefix.svg,"g");return(ho.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Yr(n?n.matrix:Ms)})(t)},Yr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Ms={a:1,b:0,c:0,d:1,e:0,f:0};ho.interpolateTransform=Qr,ho.layout={},ho.layout.bundle=function(){return function(t){for(var e=[],n=-1,r=t.length;++nu*u/v){if(g>s){var l=e.charge/s;t.px-=a*l,t.py-=o*l}return!0}if(e.point&&s&&g>s){var l=e.pointCharge/s;t.px-=a*l,t.py-=o*l}}return!e.charge}}function e(t){t.px=ho.event.x,t.py=ho.event.y,s.resume()}var n,r,i,a,o,u,s={},l=ho.dispatch("start","tick","end"),c=[1,1],f=.9,h=ws,d=ks,p=-30,g=Es,m=.1,v=.64,y=[],x=[];return s.tick=function(){if((i*=.99)<.005)return n=null,l.end({type:"end",alpha:i=0}),!0;var e,r,s,h,d,g,v,_,b,M=y.length,w=x.length;for(r=0;w>r;++r)s=x[r],h=s.source,d=s.target,_=d.x-h.x,b=d.y-h.y,(g=_*_+b*b)&&(g=i*o[r]*((g=Math.sqrt(g))-a[r])/g,_*=g,b*=g,d.x-=_*(v=h.weight+d.weight?h.weight/(h.weight+d.weight):.5),d.y-=b*v,h.x+=_*(v=1-v),h.y+=b*v);if((v=i*m)&&(_=c[0]/2,b=c[1]/2,r=-1,v))for(;++r0?i=t:(n.c=null,n.t=NaN,n=null,l.end({type:"end",alpha:i=0})):t>0&&(l.start({type:"start",alpha:i=t}),n=Ut(s.tick)),s):i},s.start=function(){function t(t,r){if(!n){for(n=new Array(i),s=0;i>s;++s)n[s]=[];for(s=0;l>s;++s){var a=x[s];n[a.source.index].push(a.target),n[a.target.index].push(a.source)}}for(var o,u=n[e],s=-1,c=u.length;++se;++e)(r=y[e]).index=e,r.weight=0;for(e=0;l>e;++e)r=x[e],"number"==typeof r.source&&(r.source=y[r.source]),"number"==typeof r.target&&(r.target=y[r.target]),++r.source.weight,++r.target.weight;for(e=0;i>e;++e)r=y[e],isNaN(r.x)&&(r.x=t("x",f)),isNaN(r.y)&&(r.y=t("y",g)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(a=[],"function"==typeof h)for(e=0;l>e;++e)a[e]=+h.call(this,x[e],e);else for(e=0;l>e;++e)a[e]=h;if(o=[],"function"==typeof d)for(e=0;l>e;++e)o[e]=+d.call(this,x[e],e);else for(e=0;l>e;++e)o[e]=d;if(u=[],"function"==typeof p)for(e=0;i>e;++e)u[e]=+p.call(this,y[e],e);else for(e=0;i>e;++e)u[e]=p;return s.resume()},s.resume=function(){return s.alpha(.1)},s.stop=function(){return s.alpha(0)},s.drag=function(){return r||(r=ho.behavior.drag().origin(w).on("dragstart.force",ii).on("drag.force",e).on("dragend.force",ai)),arguments.length?void this.on("mouseover.force",oi).on("mouseout.force",ui).call(r):r},ho.rebind(s,l,"on")};var ws=20,ks=1,Es=1/0;ho.layout.hierarchy=function(){function t(i){var a,o=[i],u=[];for(i.depth=0;null!=(a=o.pop());)if(u.push(a),(l=n.call(t,a,a.depth))&&(s=l.length)){for(var s,l,c;--s>=0;)o.push(c=l[s]),c.parent=a,c.depth=a.depth+1;r&&(a.value=0),a.children=l}else r&&(a.value=+r.call(t,a,a.depth)||0),delete a.children;return fi(i,function(t){var n,i;e&&(n=t.children)&&n.sort(e),r&&(i=t.parent)&&(i.value+=t.value)}),u}var e=pi,n=hi,r=di;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(r=e,t):r},t.revalue=function(e){return r&&(ci(e,function(t){t.children&&(t.value=0)}),fi(e,function(e){var n;e.children||(e.value=+r.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},ho.layout.partition=function(){function t(e,n,r,i){var a=e.children;if(e.x=n,e.y=e.depth*i,e.dx=r,e.dy=i,a&&(o=a.length)){var o,u,s,l=-1;for(r=e.value?r/e.value:0;++lf?-1:1),p=ho.sum(l),g=p?(f-s*d)/p:0,m=ho.range(s),v=[];return null!=n&&m.sort(n===Ss?function(t,e){return l[e]-l[t]}:function(t,e){return n(o[t],o[e])}),m.forEach(function(t){v[t]={data:o[t],value:u=l[t],startAngle:c,endAngle:c+=u*g+d,padAngle:h}}),v}var e=Number,n=Ss,r=0,i=Bo,a=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(r=e,t):r},t.endAngle=function(e){return arguments.length?(i=e,t):i},t.padAngle=function(e){return arguments.length?(a=e,t):a},t};var Ss={};ho.layout.stack=function(){function t(u,s){if(!(h=u.length))return u;var l=u.map(function(n,r){return e.call(t,n,r)}),c=l.map(function(e){return e.map(function(e,n){return[a.call(t,e,n),o.call(t,e,n)]})}),f=n.call(t,c,s);l=ho.permute(l,f),c=ho.permute(c,f);var h,d,p,g,m=r.call(t,c,s),v=l[0].length;for(p=0;v>p;++p)for(i.call(t,l[0][p],g=m[p],c[0][p][1]),d=1;h>d;++d)i.call(t,l[d][p],g+=c[d-1][p][1],c[d][p][1]);return u}var e=w,n=xi,r=_i,i=yi,a=mi,o=vi;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:As.get(e)||xi,t):n},t.offset=function(e){return arguments.length?(r="function"==typeof e?e:Ts.get(e)||_i,t):r},t.x=function(e){return arguments.length?(a=e,t):a},t.y=function(e){return arguments.length?(o=e,t):o},t.out=function(e){return arguments.length?(i=e,t):i},t};var As=ho.map({"inside-out":function(t){var e,n,r=t.length,i=t.map(bi),a=t.map(Mi),o=ho.range(r).sort(function(t,e){return i[t]-i[e]}),u=0,s=0,l=[],c=[];for(e=0;r>e;++e)n=o[e],s>u?(u+=a[n],l.push(n)):(s+=a[n],c.push(n));return c.reverse().concat(l)},reverse:function(t){return ho.range(t.length).reverse()},"default":xi}),Ts=ho.map({silhouette:function(t){var e,n,r,i=t.length,a=t[0].length,o=[],u=0,s=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];r>u&&(u=r),o.push(r)}for(n=0;a>n;++n)s[n]=(u-o[n])/2;return s},wiggle:function(t){var e,n,r,i,a,o,u,s,l,c=t.length,f=t[0],h=f.length,d=[];for(d[0]=s=l=0,n=1;h>n;++n){for(e=0,i=0;c>e;++e)i+=t[e][n][1];for(e=0,a=0,u=f[n][0]-f[n-1][0];c>e;++e){for(r=0,o=(t[e][n][1]-t[e][n-1][1])/(2*u);e>r;++r)o+=(t[r][n][1]-t[r][n-1][1])/u;a+=o*t[e][n][1]}d[n]=s-=i?a/i*u:0,l>s&&(l=s)}for(n=0;h>n;++n)d[n]-=l;return d},expand:function(t){var e,n,r,i=t.length,a=t[0].length,o=1/i,u=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];if(r)for(e=0;i>e;e++)t[e][n][1]/=r;else for(e=0;i>e;e++)t[e][n][1]=o}for(n=0;a>n;++n)u[n]=0;return u},zero:_i});ho.layout.histogram=function(){function t(t,a){for(var o,u,s=[],l=t.map(n,this),c=r.call(this,l,a),f=i.call(this,c,l,a),a=-1,h=l.length,d=f.length-1,p=e?1:1/h;++a0)for(a=-1;++a=c[0]&&u<=c[1]&&(o=s[ho.bisect(f,u,1,d)-1],o.y+=p,o.push(t[a]));return s}var e=!0,n=Number,r=Si,i=ki;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(r=Lt(e),t):r},t.bins=function(e){return arguments.length?(i="number"==typeof e?function(t){return Ei(t,e)}:Lt(e),t):i},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},ho.layout.pack=function(){function t(t,a){var o=n.call(this,t,a),u=o[0],s=i[0],l=i[1],c=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(u.x=u.y=0,fi(u,function(t){t.r=+c(t.value)}),fi(u,Li),r){var f=r*(e?1:Math.max(2*u.r/s,2*u.r/l))/2;fi(u,function(t){t.r+=f}),fi(u,Li),fi(u,function(t){t.r-=f})}return Ii(u,s/2,l/2,e?1:1/Math.max(2*u.r/s,2*u.r/l)),o}var e,n=ho.layout.hierarchy().sort(Ai),r=0,i=[1,1];return t.size=function(e){ +return arguments.length?(i=e,t):i},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(r=+e,t):r},li(t,n)},ho.layout.tree=function(){function t(t,i){var c=o.call(this,t,i),f=c[0],h=e(f);if(fi(h,n),h.parent.m=-h.z,ci(h,r),l)ci(f,a);else{var d=f,p=f,g=f;ci(f,function(t){t.xp.x&&(p=t),t.depth>g.depth&&(g=t)});var m=u(d,p)/2-d.x,v=s[0]/(p.x+u(p,d)/2+m),y=s[1]/(g.depth||1);ci(f,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return c}function e(t){for(var e,n={A:null,children:[t]},r=[n];null!=(e=r.pop());)for(var i,a=e.children,o=0,u=a.length;u>o;++o)r.push((a[o]=i={_:a[o],parent:e,children:(i=a[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(e.length){qi(t);var a=(e[0].z+e[e.length-1].z)/2;r?(t.z=r.z+u(t._,r._),t.m=t.z-a):t.z=a}else r&&(t.z=r.z+u(t._,r._));t.parent.A=i(t,r,t.parent.A||n[0])}function r(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function i(t,e,n){if(e){for(var r,i=t,a=t,o=e,s=i.parent.children[0],l=i.m,c=a.m,f=o.m,h=s.m;o=zi(o),i=Pi(i),o&&i;)s=Pi(s),a=zi(a),a.a=t,r=o.z+f-i.z-l+u(o._,i._),r>0&&(ji($i(o,t,n),t,r),l+=r,c+=r),f+=o.m,l+=i.m,h+=s.m,c+=a.m;o&&!zi(a)&&(a.t=o,a.m+=f-c),i&&!Pi(s)&&(s.t=i,s.m+=l-h,n=t)}return n}function a(t){t.x*=s[0],t.y=t.depth*s[1]}var o=ho.layout.hierarchy().sort(null).value(null),u=Ui,s=[1,1],l=null;return t.separation=function(e){return arguments.length?(u=e,t):u},t.size=function(e){return arguments.length?(l=null==(s=e)?a:null,t):l?null:s},t.nodeSize=function(e){return arguments.length?(l=null==(s=e)?null:a,t):l?s:null},li(t,o)},ho.layout.cluster=function(){function t(t,a){var o,u=e.call(this,t,a),s=u[0],l=0;fi(s,function(t){var e=t.children;e&&e.length?(t.x=Yi(e),t.y=Fi(e)):(t.x=o?l+=n(t,o):0,t.y=0,o=t)});var c=Hi(s),f=Bi(s),h=c.x-n(c,f)/2,d=f.x+n(f,c)/2;return fi(s,i?function(t){t.x=(t.x-s.x)*r[0],t.y=(s.y-t.y)*r[1]}:function(t){t.x=(t.x-h)/(d-h)*r[0],t.y=(1-(s.y?t.y/s.y:1))*r[1]}),u}var e=ho.layout.hierarchy().sort(null).value(null),n=Ui,r=[1,1],i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(i=null==(r=e),t):i?null:r},t.nodeSize=function(e){return arguments.length?(i=null!=(r=e),t):i?r:null},li(t,e)},ho.layout.treemap=function(){function t(t,e){for(var n,r,i=-1,a=t.length;++ie?0:e),n.area=isNaN(r)||0>=r?0:r}function e(n){var a=n.children;if(a&&a.length){var o,u,s,l=f(n),c=[],h=a.slice(),p=1/0,g="slice"===d?l.dx:"dice"===d?l.dy:"slice-dice"===d?1&n.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(t(h,l.dx*l.dy/n.value),c.area=0;(s=h.length)>0;)c.push(o=h[s-1]),c.area+=o.area,"squarify"!==d||(u=r(c,g))<=p?(h.pop(),p=u):(c.area-=c.pop().area,i(c,g,l,!1),g=Math.min(l.dx,l.dy),c.length=c.area=0,p=1/0);c.length&&(i(c,g,l,!0),c.length=c.area=0),a.forEach(e)}}function n(e){var r=e.children;if(r&&r.length){var a,o=f(e),u=r.slice(),s=[];for(t(u,o.dx*o.dy/e.value),s.area=0;a=u.pop();)s.push(a),s.area+=a.area,null!=a.z&&(i(s,a.z?o.dx:o.dy,o,!u.length),s.length=s.area=0);r.forEach(n)}}function r(t,e){for(var n,r=t.area,i=0,a=1/0,o=-1,u=t.length;++on&&(a=n),n>i&&(i=n));return r*=r,e*=e,r?Math.max(e*i*p/r,r/(e*a*p)):1/0}function i(t,e,n,r){var i,a=-1,o=t.length,u=n.x,l=n.y,c=e?s(t.area/e):0;if(e==n.dx){for((r||c>n.dy)&&(c=n.dy);++an.dx)&&(c=n.dx);++an&&(e=1),1>n&&(t=0),function(){var n,r,i;do n=2*Math.random()-1,r=2*Math.random()-1,i=n*n+r*r;while(!i||i>1);return t+e*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=ho.random.normal.apply(ho,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=ho.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;t>n;n++)e+=Math.random();return e}}},ho.scale={};var Os={floor:w,ceil:w};ho.scale.linear=function(){return ta([0,1],[0,1],kr,!1)};var Ns={s:1,g:1,p:1,r:1,e:1};ho.scale.log=function(){return sa(ho.scale.linear().domain([0,1]),10,!0,[1,10])};var Ls=ho.format(".0e"),Cs={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};ho.scale.pow=function(){return la(ho.scale.linear(),1,[0,1])},ho.scale.sqrt=function(){return ho.scale.pow().exponent(.5)},ho.scale.ordinal=function(){return fa([],{t:"range",a:[[]]})},ho.scale.category10=function(){return ho.scale.ordinal().range(Rs)},ho.scale.category20=function(){return ho.scale.ordinal().range(Is)},ho.scale.category20b=function(){return ho.scale.ordinal().range(Ds)},ho.scale.category20c=function(){return ho.scale.ordinal().range(Us)};var Rs=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(kt),Is=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(kt),Ds=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(kt),Us=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(kt);ho.scale.quantile=function(){return ha([],[])},ho.scale.quantize=function(){return da(0,1,[0,1])},ho.scale.threshold=function(){return pa([.5],[0,1])},ho.scale.identity=function(){return ga([0,1])},ho.svg={},ho.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),c=o.apply(this,arguments)-Xo,f=u.apply(this,arguments)-Xo,h=Math.abs(f-c),d=c>f?0:1;if(t>l&&(p=l,l=t,t=p),h>=Vo)return e(l,d)+(t?e(t,1-d):"")+"Z";var p,g,m,v,y,x,_,b,M,w,k,E,S=0,A=0,T=[];if((v=(+s.apply(this,arguments)||0)/2)&&(m=a===Ps?Math.sqrt(t*t+l*l):+a.apply(this,arguments),d||(A*=-1),l&&(A=ot(m/l*Math.sin(v))),t&&(S=ot(m/t*Math.sin(v)))),l){y=l*Math.cos(c+A),x=l*Math.sin(c+A),_=l*Math.cos(f-A),b=l*Math.sin(f-A);var O=Math.abs(f-c-2*A)<=Ho?0:1;if(A&&Ma(y,x,_,b)===d^O){var N=(c+f)/2;y=l*Math.cos(N),x=l*Math.sin(N),_=b=null}}else y=x=0;if(t){M=t*Math.cos(f-S),w=t*Math.sin(f-S),k=t*Math.cos(c+S),E=t*Math.sin(c+S);var L=Math.abs(c-f+2*S)<=Ho?0:1;if(S&&Ma(M,w,k,E)===1-d^L){var C=(c+f)/2;M=t*Math.cos(C),w=t*Math.sin(C),k=E=null}}else M=w=0;if(h>Fo&&(p=Math.min(Math.abs(l-t)/2,+i.apply(this,arguments)))>.001){g=l>t^d?0:1;var R=p,I=p;if(Ho>h){var D=null==k?[M,w]:null==_?[y,x]:jn([y,x],[k,E],[_,b],[M,w]),U=y-D[0],P=x-D[1],z=_-D[0],j=b-D[1],q=1/Math.sin(Math.acos((U*z+P*j)/(Math.sqrt(U*U+P*P)*Math.sqrt(z*z+j*j)))/2),$=Math.sqrt(D[0]*D[0]+D[1]*D[1]);I=Math.min(p,(t-$)/(q-1)),R=Math.min(p,(l-$)/(q+1))}if(null!=_){var F=wa(null==k?[M,w]:[k,E],[y,x],l,R,d),Y=wa([_,b],[M,w],l,R,d);p===R?T.push("M",F[0],"A",R,",",R," 0 0,",g," ",F[1],"A",l,",",l," 0 ",1-d^Ma(F[1][0],F[1][1],Y[1][0],Y[1][1]),",",d," ",Y[1],"A",R,",",R," 0 0,",g," ",Y[0]):T.push("M",F[0],"A",R,",",R," 0 1,",g," ",Y[0])}else T.push("M",y,",",x);if(null!=k){var H=wa([y,x],[k,E],t,-I,d),B=wa([M,w],null==_?[y,x]:[_,b],t,-I,d);p===I?T.push("L",B[0],"A",I,",",I," 0 0,",g," ",B[1],"A",t,",",t," 0 ",d^Ma(B[1][0],B[1][1],H[1][0],H[1][1]),",",1-d," ",H[1],"A",I,",",I," 0 0,",g," ",H[0]):T.push("L",B[0],"A",I,",",I," 0 0,",g," ",H[0])}else T.push("L",M,",",w)}else T.push("M",y,",",x),null!=_&&T.push("A",l,",",l," 0 ",O,",",d," ",_,",",b),T.push("L",M,",",w),null!=k&&T.push("A",t,",",t," 0 ",L,",",1-d," ",k,",",E);return T.push("Z"),T.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=va,r=ya,i=ma,a=Ps,o=xa,u=_a,s=ba;return t.innerRadius=function(e){return arguments.length?(n=Lt(e),t):n},t.outerRadius=function(e){return arguments.length?(r=Lt(e),t):r},t.cornerRadius=function(e){return arguments.length?(i=Lt(e),t):i},t.padRadius=function(e){return arguments.length?(a=e==Ps?Ps:Lt(e),t):a},t.startAngle=function(e){return arguments.length?(o=Lt(e),t):o},t.endAngle=function(e){return arguments.length?(u=Lt(e),t):u},t.padAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.centroid=function(){var t=(+n.apply(this,arguments)+ +r.apply(this,arguments))/2,e=(+o.apply(this,arguments)+ +u.apply(this,arguments))/2-Xo;return[Math.cos(e)*t,Math.sin(e)*t]},t};var Ps="auto";ho.svg.line=function(){return ka(w)};var zs=ho.map({linear:Ea,"linear-closed":Sa,step:Aa,"step-before":Ta,"step-after":Oa,basis:Da,"basis-open":Ua,"basis-closed":Pa,bundle:za,cardinal:Ca,"cardinal-open":Na,"cardinal-closed":La,monotone:Ha});zs.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var js=[0,2/3,1/3,0],qs=[0,1/3,2/3,0],$s=[0,1/6,2/3,1/6];ho.svg.line.radial=function(){var t=ka(Ba);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Ta.reverse=Oa,Oa.reverse=Ta,ho.svg.area=function(){return Va(w)},ho.svg.area.radial=function(){var t=Va(Ba);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},ho.svg.chord=function(){function t(t,u){var s=e(this,a,t,u),l=e(this,o,t,u);return"M"+s.p0+r(s.r,s.p1,s.a1-s.a0)+(n(s,l)?i(s.r,s.p1,s.r,s.p0):i(s.r,s.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+i(l.r,l.p1,s.r,s.p0))+"Z"}function e(t,e,n,r){var i=e.call(t,n,r),a=u.call(t,i,r),o=s.call(t,i,r)-Xo,c=l.call(t,i,r)-Xo;return{r:a,a0:o,a1:c,p0:[a*Math.cos(o),a*Math.sin(o)],p1:[a*Math.cos(c),a*Math.sin(c)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function r(t,e,n){return"A"+t+","+t+" 0 "+ +(n>Ho)+",1 "+e}function i(t,e,n,r){return"Q 0,0 "+r}var a=kn,o=En,u=Xa,s=xa,l=_a;return t.radius=function(e){return arguments.length?(u=Lt(e),t):u},t.source=function(e){return arguments.length?(a=Lt(e),t):a},t.target=function(e){return arguments.length?(o=Lt(e),t):o},t.startAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.endAngle=function(e){return arguments.length?(l=Lt(e),t):l},t},ho.svg.diagonal=function(){function t(t,i){var a=e.call(this,t,i),o=n.call(this,t,i),u=(a.y+o.y)/2,s=[a,{x:a.x,y:u},{x:o.x,y:u},o];return s=s.map(r),"M"+s[0]+"C"+s[1]+" "+s[2]+" "+s[3]}var e=kn,n=En,r=Wa;return t.source=function(n){return arguments.length?(e=Lt(n),t):e},t.target=function(e){return arguments.length?(n=Lt(e),t):n},t.projection=function(e){return arguments.length?(r=e,t):r},t},ho.svg.diagonal.radial=function(){var t=ho.svg.diagonal(),e=Wa,n=t.projection;return t.projection=function(t){return arguments.length?n(Ga(e=t)):e},t},ho.svg.symbol=function(){function t(t,r){return(Fs.get(e.call(this,t,r))||Qa)(n.call(this,t,r))}var e=Ja,n=Za;return t.type=function(n){return arguments.length?(e=Lt(n),t):e},t.size=function(e){return arguments.length?(n=Lt(e),t):n},t};var Fs=ho.map({circle:Qa,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*Hs)),n=e*Hs;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});ho.svg.symbolTypes=Fs.keys();var Ys=Math.sqrt(3),Hs=Math.tan(30*Wo);Io.transition=function(t){for(var e,n,r=Bs||++Gs,i=ro(t),a=[],o=Vs||{time:Date.now(),ease:Lr,delay:0,duration:250},u=-1,s=this.length;++ua;a++){i.push(e=[]);for(var n=this[a],u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return to(i,this.namespace,this.id)},Ws.tween=function(t,e){var n=this.id,r=this.namespace;return arguments.length<2?this.node()[r][n].tween.get(t):W(this,null==e?function(e){e[r][n].tween.remove(t)}:function(i){i[r][n].tween.set(t,e)})},Ws.attr=function(t,e){function n(){this.removeAttribute(u)}function r(){this.removeAttributeNS(u.space,u.local)}function i(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(u);return n!==t&&(e=o(n,t),function(t){this.setAttribute(u,e(t))})})}function a(t){return null==t?r:(t+="",function(){var e,n=this.getAttributeNS(u.space,u.local);return n!==t&&(e=o(n,t),function(t){this.setAttributeNS(u.space,u.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var o="transform"==t?Qr:kr,u=ho.ns.qualify(t);return eo(this,"attr."+t,e,u.local?a:i)},Ws.attrTween=function(t,e){function n(t,n){var r=e.call(this,t,n,this.getAttribute(i));return r&&function(t){this.setAttribute(i,r(t))}}function r(t,n){var r=e.call(this,t,n,this.getAttributeNS(i.space,i.local));return r&&function(t){this.setAttributeNS(i.space,i.local,r(t))}}var i=ho.ns.qualify(t);return this.tween("attr."+t,i.local?r:n)},Ws.style=function(t,e,n){function r(){this.style.removeProperty(t)}function i(e){return null==e?r:(e+="",function(){var r,i=o(this).getComputedStyle(this,null).getPropertyValue(t);return i!==e&&(r=kr(i,e),function(e){this.style.setProperty(t,r(e),n)})})}var a=arguments.length;if(3>a){if("string"!=typeof t){2>a&&(e="");for(n in t)this.style(n,t[n],e);return this}n=""}return eo(this,"style."+t,e,i)},Ws.styleTween=function(t,e,n){function r(r,i){var a=e.call(this,r,i,o(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),n)}}return arguments.length<3&&(n=""),this.tween("style."+t,r)},Ws.text=function(t){return eo(this,"text",t,no)},Ws.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},Ws.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=ho.ease.apply(ho,arguments)),W(this,function(r){r[n][e].ease=t}))},Ws.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:W(this,"function"==typeof t?function(r,i,a){r[n][e].delay=+t.call(r,r.__data__,i,a)}:(t=+t,function(r){r[n][e].delay=t}))},Ws.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:W(this,"function"==typeof t?function(r,i,a){r[n][e].duration=Math.max(1,t.call(r,r.__data__,i,a))}:(t=Math.max(1,t),function(r){r[n][e].duration=t}))},Ws.each=function(t,e){var n=this.id,r=this.namespace;if(arguments.length<2){var i=Vs,a=Bs;try{Bs=n,W(this,function(e,i,a){Vs=e[r][n],t.call(e,e.__data__,i,a)})}finally{Vs=i,Bs=a}}else W(this,function(i){var a=i[r][n];(a.event||(a.event=ho.dispatch("start","end","interrupt"))).on(t,e)});return this},Ws.transition=function(){for(var t,e,n,r,i=this.id,a=++Gs,o=this.namespace,u=[],s=0,l=this.length;l>s;s++){u.push(t=[]);for(var e=this[s],c=0,f=e.length;f>c;c++)(n=e[c])&&(r=n[o][i],io(n,c,o,a,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),t.push(n)}return to(u,o,a)},ho.svg.axis=function(){function t(t){t.each(function(){var t,l=ho.select(this),c=this.__chart__||n,f=this.__chart__=n.copy(),h=null==s?f.ticks?f.ticks.apply(f,u):f.domain():s,d=null==e?f.tickFormat?f.tickFormat.apply(f,u):w:e,p=l.selectAll(".tick").data(h,f),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Fo),m=ho.transition(p.exit()).style("opacity",Fo).remove(),v=ho.transition(p.order()).style("opacity",1),y=Math.max(i,0)+o,x=Gi(f),_=l.selectAll(".domain").data([0]),b=(_.enter().append("path").attr("class","domain"),ho.transition(_));g.append("line"),g.append("text");var M,k,E,S,A=g.select("line"),T=v.select("line"),O=p.select("text").text(d),N=g.select("text"),L=v.select("text"),C="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(t=ao,M="x",E="y",k="x2",S="y2",O.attr("dy",0>C?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+x[0]+","+C*a+"V0H"+x[1]+"V"+C*a)):(t=oo,M="y",E="x",k="y2",S="x2",O.attr("dy",".32em").style("text-anchor",0>C?"end":"start"),b.attr("d","M"+C*a+","+x[0]+"H0V"+x[1]+"H"+C*a)),A.attr(S,C*i),N.attr(E,C*y),T.attr(k,0).attr(S,C*i),L.attr(M,0).attr(E,C*y),f.rangeBand){var R=f,I=R.rangeBand()/2;c=f=function(t){return R(t)+I}}else c.rangeBand?c=f:m.call(t,f,c);g.call(t,c,f),v.call(t,f,f)})}var e,n=ho.scale.linear(),r=Zs,i=6,a=6,o=3,u=[10],s=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(r=e in Js?e+"":Zs,t):r},t.ticks=function(){return arguments.length?(u=go(arguments),t):u},t.tickValues=function(e){return arguments.length?(s=e,t):s},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(i=+e,a=+arguments[n-1],t):i},t.innerTickSize=function(e){return arguments.length?(i=+e,t):i},t.outerTickSize=function(e){return arguments.length?(a=+e,t):a},t.tickPadding=function(e){return arguments.length?(o=+e,t):o},t.tickSubdivide=function(){return arguments.length&&t},t};var Zs="bottom",Js={top:1,right:1,bottom:1,left:1};ho.svg.brush=function(){function t(a){a.each(function(){var a=ho.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=a.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),a.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var u=a.selectAll(".resize").data(g,w);u.exit().remove(),u.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return Qs[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),u.style("display",t.empty()?"none":null);var s,f=ho.transition(a),h=ho.transition(o);l&&(s=Gi(l),h.attr("x",s[0]).attr("width",s[1]-s[0]),n(f)),c&&(s=Gi(c),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),e(f)})}function e(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+f[+/e$/.test(t)]+","+h[+/^s/.test(t)]+")"})}function n(t){t.select(".extent").attr("x",f[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function r(t){t.select(".extent").attr("y",h[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==ho.event.keyCode&&(T||(x=null,L[0]-=f[1],L[1]-=h[1],T=2),O())}function g(){32==ho.event.keyCode&&2==T&&(L[0]+=f[1],L[1]+=h[1],T=0,O())}function m(){var t=ho.mouse(b),i=!1;_&&(t[0]+=_[0],t[1]+=_[1]),T||(ho.event.altKey?(x||(x=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(t[0]c?(i=r,r=c):i=c),g[0]!=r||g[1]!=i?(n?u=null:a=null,g[0]=r,g[1]=i,!0):void 0}function y(){m(),k.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),ho.select("body").style("cursor",null),C.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,_,b=this,M=ho.select(ho.event.target),w=s.of(b,arguments),k=ho.select(b),E=M.datum(),S=!/^(n|s)$/.test(E)&&l,A=!/^(e|w)$/.test(E)&&c,T=M.classed("extent"),N=tt(b),L=ho.mouse(b),C=ho.select(o(b)).on("keydown.brush",i).on("keyup.brush",g);if(ho.event.changedTouches?C.on("touchmove.brush",m).on("touchend.brush",y):C.on("mousemove.brush",m).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),T)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(E){var R=+/w$/.test(E),I=+/^n/.test(E);_=[f[1-R]-L[0],h[1-I]-L[1]],L[0]=f[R],L[1]=h[I]}else ho.event.altKey&&(x=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ho.select("body").style("cursor",M.style("cursor")),w({type:"brushstart"}),m()}var a,u,s=L(t,"brushstart","brush","brushend"),l=null,c=null,f=[0,0],h=[0,0],d=!0,p=!0,g=Ks[0];return t.event=function(t){t.each(function(){var t=s.of(this,arguments),e={x:f,y:h,i:a,j:u},n=this.__chart__||e;this.__chart__=e,Bs?ho.select(this).transition().each("start.brush",function(){a=n.i,u=n.j,f=n.x,h=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=Er(f,e.x),r=Er(h,e.y);return a=u=null,function(i){f=e.x=n(i),h=e.y=r(i),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,u=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(l=e,g=Ks[!l<<1|!c],t):l},t.y=function(e){return arguments.length?(c=e,g=Ks[!l<<1|!c],t):c},t.clamp=function(e){return arguments.length?(l&&c?(d=!!e[0],p=!!e[1]):l?d=!!e:c&&(p=!!e),t):l&&c?[d,p]:l?d:c?p:null},t.extent=function(e){var n,r,i,o,s;return arguments.length?(l&&(n=e[0],r=e[1],c&&(n=n[0],r=r[0]),a=[n,r],l.invert&&(n=l(n),r=l(r)),n>r&&(s=n,n=r,r=s),n==f[0]&&r==f[1]||(f=[n,r])),c&&(i=e[0],o=e[1],l&&(i=i[1],o=o[1]),u=[i,o],c.invert&&(i=c(i),o=c(o)),i>o&&(s=i,i=o,o=s),i==h[0]&&o==h[1]||(h=[i,o])),t):(l&&(a?(n=a[0],r=a[1]):(n=f[0],r=f[1],l.invert&&(n=l.invert(n),r=l.invert(r)),n>r&&(s=n,n=r,r=s))),c&&(u?(i=u[0],o=u[1]):(i=h[0],o=h[1],c.invert&&(i=c.invert(i),o=c.invert(o)),i>o&&(s=i,i=o,o=s))),l&&c?[[n,i],[r,o]]:l?[n,r]:c&&[i,o])},t.clear=function(){return t.empty()||(f=[0,0],h=[0,0],a=u=null),t},t.empty=function(){return!!l&&f[0]==f[1]||!!c&&h[0]==h[1]},ho.rebind(t,s,"on")};var Qs={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ks=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],tl=xu.format=Eu.timeFormat,el=tl.utc,nl=el("%Y-%m-%dT%H:%M:%S.%LZ");tl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?uo:nl,uo.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},uo.toString=nl.toString,xu.second=Bt(function(t){return new _u(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),xu.seconds=xu.second.range,xu.seconds.utc=xu.second.utc.range,xu.minute=Bt(function(t){return new _u(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),xu.minutes=xu.minute.range,xu.minutes.utc=xu.minute.utc.range,xu.hour=Bt(function(t){var e=t.getTimezoneOffset()/60;return new _u(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),xu.hours=xu.hour.range,xu.hours.utc=xu.hour.utc.range,xu.month=Bt(function(t){return t=xu.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),xu.months=xu.month.range,xu.months.utc=xu.month.utc.range;var rl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],il=[[xu.second,1],[xu.second,5],[xu.second,15],[xu.second,30],[xu.minute,1],[xu.minute,5],[xu.minute,15],[xu.minute,30],[xu.hour,1],[xu.hour,3],[xu.hour,6],[xu.hour,12],[xu.day,1],[xu.day,2],[xu.week,1],[xu.month,1],[xu.month,3],[xu.year,1]],al=tl.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",Ie]]),ol={range:function(t,e,n){return ho.range(Math.ceil(t/n)*n,+e,n).map(lo)},floor:w,ceil:w};il.year=xu.year,xu.scale=function(){return so(ho.scale.linear(),il,al)};var ul=il.map(function(t){return[t[0].utc,t[1]]}),sl=el.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",Ie]]);ul.year=xu.year.utc,xu.scale.utc=function(){return so(ho.scale.linear(),ul,sl)},ho.text=Ct(function(t){return t.responseText}),ho.json=function(t,e){return Rt(t,"application/json",co,e)},ho.html=function(t,e){return Rt(t,"text/html",fo,e)},ho.xml=Ct(function(t){return t.responseXML}),this.d3=ho,r=ho,i="function"==typeof r?r.call(e,n,e,t):r,!(void 0!==i&&(t.exports=i))}()},function(t,e,n){t.exports={version:"__VERSION__",dataflow:n(4),parse:n(52),scene:{Bounder:n(153),Builder:n(151),Encoder:n(152),GroupBuilder:n(150),visit:n(155)},transforms:n(103),Transform:n(105),BatchTransform:n(109),Parameter:n(106),schema:n(161),config:n(156),util:n(58),logging:n(8),debug:n(8).debug}},function(t,e,n){t.exports={ChangeSet:n(5),Collector:n(7),DataSource:n(11),Dependencies:n(6),Graph:n(49),Node:n(10),Signal:n(51),Tuple:n(9),debug:n(8).debug}},function(t,e,n){function r(t,e){var n={};return i(t,n),n.add=[],n.mod=[],n.rem=[],n.reflow=e,n}function i(t,e){e.stamp=t?t.stamp:0,e.sort=t?t.sort:null,e.facet=t?t.facet:null,e.trans=t?t.trans:null,e.dirty=t?t.dirty:[],e.request=t?t.request:null;for(var n,r=0,i=a.length;i>r;++r)e[n=a[r]]=t?t[n]:{}}var a=n(6).ALL;t.exports={create:r,copy:i}},function(t,e){var n=t.exports={ALL:["data","fields","scales","signals"]};n.ALL.forEach(function(t){n[t.toUpperCase()]=t})},function(t,e,n){function r(t){o.init.call(this,t),this._data=[],this.router(!0).collector(!0)}var i=n(8),a=n(9),o=n(10).prototype,u=n(5),s=r.prototype=Object.create(o);s.constructor=r,s.data=function(){return this._data},s.evaluate=function(t){i.debug(t,["collecting"]);var e=u.create(t);return t.rem.length&&(this._data=a.idFilter(this._data,t.rem),e.rem=t.rem.slice(0)),t.add.length&&(this._data=this._data.concat(t.add),e.add=t.add.slice(0)),t.mod.length&&(e.mod=t.mod.slice(0)),t.sort&&this._data.sort(t.sort),t.reflow&&(e.mod=e.mod.concat(a.idFilter(this._data,e.add,e.mod,e.rem)),e.reflow=!1),e},t.exports=r},function(t,e){function n(t){console.log("[Vega Log]",t)}function r(t){console.error("[Vega Err]",t)}function i(t,e){if(i.enable){var n=Function.prototype.bind.call(console.log,console),r={prevTime:Date.now()-a,stamp:t.stamp};t.add&&(r.add=t.add.length,r.mod=t.mod.length,r.rem=t.rem.length,r.reflow=!!t.reflow),n.apply(console,(e.push(JSON.stringify(r)),e)),a=Date.now()}}var a=Date.now();t.exports={log:n,error:r,debug:(i.enable=!1,i)}},function(t,e){function n(t){return t=t===Object(t)?t:{data:t},t._id=++a,t._prev&&(t._prev=null),t}function r(t,e){e=e||{};for(var n=0,r=t.length;r>n;++n)e[t[n]._id]=1;return e}function i(t,e){e=e||{};for(var n in t)"_prev"!==n&&"_id"!==n&&(e[n]=t[n]);return e}var a=0;t.exports={ingest:n,idMap:r,derive:function(t){return n(i(t))},rederive:function(t,e){return i(t,e)},set:function(t,e,n){return t[e]===n?0:(t[e]=n,1)},prev:function(t){return t._prev||t},prev_init:function(t){t._prev||(t._prev={_id:t._id})},prev_update:function(t){var e,n,r=t._prev;if(r)for(e in t)"_prev"!==e&&"_id"!==e&&(r[e]=(n=t[e])instanceof Object&&n._prev?n._prev:n)},reset:function(){a=0},idFilter:function(t){for(var e={},n=arguments.length;--n>0;)r(arguments[n],e);return t.filter(function(t){return!e[t._id]})}}},function(t,e,n){function r(t){t&&this.init(t)}var i=n(6).ALL,a=0,o=r.Flags={Router:1,Collector:2,Produces:4,Mutates:8,Reflows:16,Batch:32},u=r.prototype;u.init=function(t){this._id=++a,this._graph=t,this._rank=t.rank(),this._qrank=null,this._stamp=0,this._listeners=[],this._listeners._ids={},this._deps={};for(var e=0,n=i.length;n>e;++e)this._deps[i[e]]=[];return this._flags=0,this},u.rank=function(){return this._rank},u.rerank=function(){for(var t,e=this._graph,n=[this];n.length;)t=n.shift(),t._rank=e.rank(),n.unshift.apply(n,t.listeners());return this},u.qrank=function(){return arguments.length?(this._qrank=this._rank,this):this._qrank},u.last=function(t){return arguments.length?(this._stamp=t,this):this._stamp},u._setf=function(t,e){return e?this._flags|=t:this._flags&=~t,this},u.router=function(t){return arguments.length?this._setf(o.Router,t):this._flags&o.Router},u.collector=function(t){return arguments.length?this._setf(o.Collector,t):this._flags&o.Collector},u.produces=function(t){return arguments.length?this._setf(o.Produces,t):this._flags&o.Produces},u.mutates=function(t){return arguments.length?this._setf(o.Mutates,t):this._flags&o.Mutates},u.reflows=function(t){return arguments.length?this._setf(o.Reflows,t):this._flags&o.Reflows},u.batch=function(t){return arguments.length?this._setf(o.Batch,t):this._flags&o.Batch},u.dependency=function(t,e){var n=this._deps[t],r=n._names||(n._names={});if(1===arguments.length)return n;if(null===e)n.splice(0,n.length),n._names={};else if(Array.isArray(e))for(var i,a=0,o=e.length;o>a;++a)i=e[a],r[i]||(n.push(i),r[i]=1);else{if(r[e])return this;n.push(e),r[e]=1}return this},u.listeners=function(){return this._listeners},u.addListener=function(t){if(!(t instanceof r))throw Error("Listener is not a Node");return this._listeners._ids[t._id]?this:(this._listeners.push(t),this._listeners._ids[t._id]=1,this._rank>t._rank&&t.rerank(),this)},u.removeListener=function(t){if(!this._listeners._ids[t._id])return!1;var e=this._listeners.indexOf(t),n=e>=0;return n&&(this._listeners.splice(e,1),this._listeners._ids[t._id]=null),n},u.disconnect=function(){this._listeners=[],this._listeners._ids={}},u.evaluate=function(t){return t},u.reevaluate=function(t){var e,n,r,a,o,u;for(r=0,a=i.length;a>r;++r)for(e=i[r],n=this._deps[e],o=0,u=n.length;u>o;++o)if(t[e][n[o]])return!0; +return!1},r.reset=function(){a=0},t.exports=r},function(t,e,n){function r(t,e,n){this._graph=t,this._name=e,this._data=[],this._source=null,this._facet=n,this._input=l.create(),this._output=null,this._indexes={},this._indexFields=[],this._inputNode=null,this._outputNode=null,this._pipeline=null,this._collector=null,this._mutates=!1}function i(t){var e=new h(t._graph).router(!0).collector(!0);return e.data=function(){return t._data},e.evaluate=function(e){s.debug(e,["input",t._name]);var n,r=t._input,i=l.create(e);for(n in r.fields)i.fields[n]=1;return r.rem.length&&(t._data=f.idFilter(t._data,r.rem)),r.add.length&&(t._data=t._data.concat(r.add)),r.sort&&t._data.sort(r.sort),e.reflow&&(r.mod=r.mod.concat(f.idFilter(t._data,r.add,r.mod,r.rem))),t._input=l.create(),i.add=r.add,i.mod=r.mod,i.rem=r.rem,i.facet=t._facet,i},e}function a(t){function e(e){var n,r,i,a,o,s,l=t._indexFields;for(n=0;nn;++n)i=l(a[n]),e[i]=(e[i]||0)+1,f.prev_init(a[n]);return o[t]},d.listener=function(){return o(this).addListener(this._inputNode)},d.addListener=function(t){return t instanceof r?this._collector.addListener(t.listener()):this._outputNode.addListener(t),this},d.removeListener=function(t){this._outputNode.removeListener(t)},d.listeners=function(t){return(t?this._collector:this._outputNode).listeners()},t.exports=r},function(t,e,n){var r=n(13),i={version:"__VERSION__",load:n(18),read:n(23),type:n(24),Aggregator:n(36),groupby:n(41),bins:n(42),$bin:n(44).$bin,histogram:n(44).histogram,format:n(32),template:n(45),time:n(43)};r.extend(i,r),r.extend(i,n(46)),r.extend(i,n(39)),r.extend(i,n(38)),r.extend(i,n(47)),r.extend(i.format,n(48)),i.print={table:i.format.table,summary:i.format.summary},t.exports=i},function(t,e,n){(function(e){function n(t,e){var n,r="";for(n=0;t>n;++n)r+=e;return r}function r(t,e,n){var r=0,i=t.split(s);return t=n?(i=i.reverse()).filter(function(t){return r+=t.length,e>=r}).reverse():i.filter(function(t){return r+=t.length,e>=r}),t.length?t.join("").trim():i[0].slice(0,e)}var i=t.exports,a="__name__";i.namedfunc=function(t,e){return e[a]=t,e},i.name=function(t){return null==t?null:t[a]},i.identity=function(t){return t},i["true"]=i.namedfunc("true",function(){return!0}),i["false"]=i.namedfunc("false",function(){return!1}),i.duplicate=function(t){return JSON.parse(JSON.stringify(t))},i.equal=function(t,e){return JSON.stringify(t)===JSON.stringify(e)},i.extend=function(t){for(var e,n,r=1,i=arguments.length;i>r;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t},i.length=function(t){return null!=t&&null!=t.length?t.length:null},i.keys=function(t){var e,n=[];for(e in t)n.push(e);return n},i.vals=function(t){var e,n=[];for(e in t)n.push(t[e]);return n},i.toMap=function(t,e){return(e=i.$(e))?t.reduce(function(t,n){return t[e(n)]=1,t},{}):t.reduce(function(t,e){return t[e]=1,t},{})},i.keystr=function(t){var e=t.length;if(!e)return"";for(var n=String(t[0]),r=1;e>r;++r)n+="|"+String(t[r]);return n};var o=Object.prototype.toString;i.isObject=function(t){return t===Object(t)},i.isFunction=function(t){return"[object Function]"===o.call(t)},i.isString=function(t){return"string"==typeof value||"[object String]"===o.call(t)},i.isArray=Array.isArray||function(t){return"[object Array]"===o.call(t)},i.isNumber=function(t){return"number"==typeof t||"[object Number]"===o.call(t)},i.isBoolean=function(t){return t===!0||t===!1||"[object Boolean]"==o.call(t)},i.isDate=function(t){return"[object Date]"===o.call(t)},i.isValid=function(t){return null!=t&&t===t},i.isBuffer="function"==typeof e&&e.isBuffer||i["false"],i.number=function(t){return null==t||""===t?null:+t},i["boolean"]=function(t){return null==t||""===t?null:"false"===t?!1:!!t},i.date=function(t,e){var n=e?e:Date;return null==t||""===t?null:n.parse(t)},i.array=function(t){return null!=t?i.isArray(t)?t:[t]:[]},i.str=function(t){return i.isArray(t)?"["+t.map(i.str)+"]":i.isObject(t)||i.isString(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t};var u=/\[(.*?)\]|[^.\[]+/g;i.field=function(t){return String(t).match(u).map(function(t){return"["!==t[0]?t:"'"!==t[1]&&'"'!==t[1]?t.slice(1,-1):t.slice(2,-2).replace(/\\(["'])/g,"$1")})},i.accessor=function(t){return null==t||i.isFunction(t)?t:i.namedfunc(t,Function("x","return x["+i.field(t).map(i.str).join("][")+"];"))},i.$=i.accessor,i.mutator=function(t){var e;return i.isString(t)&&(e=i.field(t)).length>1?function(t,n){for(var r=0;ri;++i){if(o=t[i],u=o(n),s=o(r),s>u)return-1*e[i];if(u>s)return e[i]}return 0}},i.cmp=function(t,e){return e>t?-1:t>e?1:t>=e?0:null===t?-1:null===e?1:NaN},i.numcmp=function(t,e){return t-e},i.stablesort=function(t,e,n){var r=t.reduce(function(t,e,r){return t[n(e)]=r,t},{});return t.sort(function(t,i){var a=e(t),o=e(i);return o>a?-1:a>o?1:r[n(t)]-r[n(i)]}),t},i.pad=function(t,e,r,i){i=i||" ";var a=e-t.length;if(0>=a)return t;switch(r){case"left":return n(a,i)+t;case"middle":case"center":return n(Math.floor(a/2),i)+t+n(Math.ceil(a/2),i);default:return t+n(a,i)}},i.truncate=function(t,e,n,i,a){var o=t.length;if(e>=o)return t;a=void 0!==a?String(a):"…";var u=Math.max(0,e-a.length);switch(n){case"left":return a+(i?r(t,u,1):t.slice(o-u));case"middle":case"center":var s=Math.ceil(u/2),l=Math.floor(u/2);return(i?r(t,s):t.slice(0,s))+a+(i?r(t,l,1):t.slice(o-l));default:return(i?r(t,u):t.slice(0,u))+a}};var s=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/}).call(e,n(14).Buffer)},function(t,e,n){(function(t,r){/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -"use strict";function i(){function t(){}try{var e=new Uint8Array(1);return e.foo=function(){return 42},e.constructor=t,42===e.foo()&&e.constructor===t&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(n){return!1}}function a(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function t(e){return this instanceof t?(t.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),"number"==typeof e?o(this,e):"string"==typeof e?u(this,e,arguments.length>1?arguments[1]:"utf8"):s(this,e)):arguments.length>1?new t(e,arguments[1]):new t(e)}function o(e,n){if(e=g(e,0>n?0:0|m(n)),!t.TYPED_ARRAY_SUPPORT)for(var r=0;n>r;r++)e[r]=0;return e}function u(t,e,n){"string"==typeof n&&""!==n||(n="utf8");var r=0|y(e,n);return t=g(t,r),t.write(e,n),t}function s(e,n){if(t.isBuffer(n))return l(e,n);if(Z(n))return c(e,n);if(null==n)throw new TypeError("must start with number, buffer, array or string");if("undefined"!=typeof ArrayBuffer){if(n.buffer instanceof ArrayBuffer)return f(e,n);if(n instanceof ArrayBuffer)return h(e,n)}return n.length?d(e,n):p(e,n)}function l(t,e){var n=0|m(e.length);return t=g(t,n),e.copy(t,0,0,n),t}function c(t,e){var n=0|m(e.length);t=g(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function f(t,e){var n=0|m(e.length);t=g(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function h(e,n){return t.TYPED_ARRAY_SUPPORT?(n.byteLength,e=t._augment(new Uint8Array(n))):e=f(e,new Uint8Array(n)),e}function d(t,e){var n=0|m(e.length);t=g(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function p(t,e){var n,r=0;"Buffer"===e.type&&Z(e.data)&&(n=e.data,r=0|m(n.length)),t=g(t,r);for(var i=0;r>i;i+=1)t[i]=255&n[i];return t}function g(e,n){t.TYPED_ARRAY_SUPPORT?(e=t._augment(new Uint8Array(n)),e.__proto__=t.prototype):(e.length=n,e._isBuffer=!0);var r=0!==n&&n<=t.poolSize>>>1;return r&&(e.parent=J),e}function m(t){if(t>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function v(e,n){if(!(this instanceof v))return new v(e,n);var r=new t(e,n);return delete r.parent,r}function y(t,e){"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"binary":case"raw":case"raws":return n;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return V(t).length;default:if(r)return Y(t).length;e=(""+e).toLowerCase(),r=!0}}function x(t,e,n){var r=!1;if(e=0|e,n=void 0===n||n===1/0?this.length:0|n,t||(t="utf8"),0>e&&(e=0),n>this.length&&(n=this.length),e>=n)return"";for(;;)switch(t){case"hex":return L(this,e,n);case"utf8":case"utf-8":return A(this,e,n);case"ascii":return O(this,e,n);case"binary":return N(this,e,n);case"base64":return S(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function _(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r),r>i&&(r=i)):r=i;var a=e.length;if(a%2!==0)throw new Error("Invalid hex string");r>a/2&&(r=a/2);for(var o=0;r>o;o++){var u=parseInt(e.substr(2*o,2),16);if(isNaN(u))throw new Error("Invalid hex string");t[n+o]=u}return o}function b(t,e,n,r){return X(Y(e,t.length-n),t,n,r)}function M(t,e,n,r){return X(H(e),t,n,r)}function w(t,e,n,r){return M(t,e,n,r)}function k(t,e,n,r){return X(V(e),t,n,r)}function E(t,e,n,r){return X(B(e,t.length-n),t,n,r)}function S(t,e,n){return 0===e&&n===t.length?W.fromByteArray(t):W.fromByteArray(t.slice(e,n))}function A(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;n>i;){var a=t[i],o=null,u=a>239?4:a>223?3:a>191?2:1;if(n>=i+u){var s,l,c,f;switch(u){case 1:128>a&&(o=a);break;case 2:s=t[i+1],128===(192&s)&&(f=(31&a)<<6|63&s,f>127&&(o=f));break;case 3:s=t[i+1],l=t[i+2],128===(192&s)&&128===(192&l)&&(f=(15&a)<<12|(63&s)<<6|63&l,f>2047&&(55296>f||f>57343)&&(o=f));break;case 4:s=t[i+1],l=t[i+2],c=t[i+3],128===(192&s)&&128===(192&l)&&128===(192&c)&&(f=(15&a)<<18|(63&s)<<12|(63&l)<<6|63&c,f>65535&&1114112>f&&(o=f))}}null===o?(o=65533,u=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=u}return T(r)}function T(t){var e=t.length;if(Q>=e)return String.fromCharCode.apply(String,t);for(var n="",r=0;e>r;)n+=String.fromCharCode.apply(String,t.slice(r,r+=Q));return n}function O(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;n>i;i++)r+=String.fromCharCode(127&t[i]);return r}function N(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;n>i;i++)r+=String.fromCharCode(t[i]);return r}function L(t,e,n){var r=t.length;(!e||0>e)&&(e=0),(!n||0>n||n>r)&&(n=r);for(var i="",a=e;n>a;a++)i+=F(t[a]);return i}function C(t,e,n){for(var r=t.slice(e,n),i="",a=0;at)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function D(e,n,r,i,a,o){if(!t.isBuffer(e))throw new TypeError("buffer must be a Buffer instance");if(n>a||o>n)throw new RangeError("value is out of bounds");if(r+i>e.length)throw new RangeError("index out of range")}function I(t,e,n,r){0>e&&(e=65535+e+1);for(var i=0,a=Math.min(t.length-n,2);a>i;i++)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function U(t,e,n,r){0>e&&(e=4294967295+e+1);for(var i=0,a=Math.min(t.length-n,4);a>i;i++)t[n+i]=e>>>8*(r?i:3-i)&255}function P(t,e,n,r,i,a){if(e>i||a>e)throw new RangeError("value is out of bounds");if(n+r>t.length)throw new RangeError("index out of range");if(0>n)throw new RangeError("index out of range")}function z(t,e,n,r,i){return i||P(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),G.write(t,e,n,r,23,4),n+4}function j(t,e,n,r,i){return i||P(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),G.write(t,e,n,r,52,8),n+8}function q(t){if(t=$(t).replace(tt,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function $(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function F(t){return 16>t?"0"+t.toString(16):t.toString(16)}function Y(t,e){e=e||1/0;for(var n,r=t.length,i=null,a=[],o=0;r>o;o++){if(n=t.charCodeAt(o),n>55295&&57344>n){if(!i){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(e-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(56320>n){(e-=3)>-1&&a.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,128>n){if((e-=1)<0)break;a.push(n)}else if(2048>n){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(65536>n){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(1114112>n))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function H(t){for(var e=[],n=0;n>8,i=n%256,a.push(i),a.push(r);return a}function V(t){return W.toByteArray(q(t))}function X(t,e,n,r){for(var i=0;r>i&&!(i+n>=e.length||i>=t.length);i++)e[i+n]=t[i];return i}var W=n(15),G=n(16),Z=n(17);e.Buffer=t,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,t.poolSize=8192;var J={};t.TYPED_ARRAY_SUPPORT=void 0!==r.TYPED_ARRAY_SUPPORT?r.TYPED_ARRAY_SUPPORT:i(),t.TYPED_ARRAY_SUPPORT?(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array):(t.prototype.length=void 0,t.prototype.parent=void 0),t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,n){if(!t.isBuffer(e)||!t.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(e===n)return 0;for(var r=e.length,i=n.length,a=0,o=Math.min(r,i);o>a&&e[a]===n[a];)++a;return a!==o&&(r=e[a],i=n[a]),i>r?-1:r>i?1:0},t.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},t.concat=function(e,n){if(!Z(e))throw new TypeError("list argument must be an Array of Buffers.");if(0===e.length)return new t(0);var r;if(void 0===n)for(n=0,r=0;r0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},t.prototype.compare=function(e){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?0:t.compare(this,e)},t.prototype.indexOf=function(e,n){function r(t,e,n){for(var r=-1,i=0;n+i2147483647?n=2147483647:-2147483648>n&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(0>n&&(n=Math.max(this.length+n,0)),"string"==typeof e)return 0===e.length?-1:String.prototype.indexOf.call(this,e,n);if(t.isBuffer(e))return r(this,e,n);if("number"==typeof e)return t.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,e,n):r(this,[e],n);throw new TypeError("val must be string, number or Buffer")},t.prototype.get=function(t){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(t)},t.prototype.set=function(t,e){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(t,e)},t.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else if(isFinite(e))e=0|e,isFinite(n)?(n=0|n,void 0===r&&(r="utf8")):(r=n,n=void 0);else{var i=r;r=e,e=0|n,n=i}var a=this.length-e;if((void 0===n||n>a)&&(n=a),t.length>0&&(0>n||0>e)||e>this.length)throw new RangeError("attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return _(this,t,e,n);case"utf8":case"utf-8":return b(this,t,e,n);case"ascii":return M(this,t,e,n);case"binary":return w(this,t,e,n);case"base64":return k(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;t.prototype.slice=function(e,n){var r=this.length;e=~~e,n=void 0===n?r:~~n,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>n?(n+=r,0>n&&(n=0)):n>r&&(n=r),e>n&&(n=e);var i;if(t.TYPED_ARRAY_SUPPORT)i=t._augment(this.subarray(e,n));else{var a=n-e;i=new t(a,void 0);for(var o=0;a>o;o++)i[o]=this[o+e]}return i.length&&(i.parent=this.parent||this),i},t.prototype.readUIntLE=function(t,e,n){t=0|t,e=0|e,n||R(t,e,this.length);for(var r=this[t],i=1,a=0;++a0&&(i*=256);)r+=this[t+--e]*i;return r},t.prototype.readUInt8=function(t,e){return e||R(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||R(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||R(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||R(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||R(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,n){t=0|t,e=0|e,n||R(t,e,this.length);for(var r=this[t],i=1,a=0;++a=i&&(r-=Math.pow(2,8*e)),r},t.prototype.readIntBE=function(t,e,n){t=0|t,e=0|e,n||R(t,e,this.length);for(var r=e,i=1,a=this[t+--r];r>0&&(i*=256);)a+=this[t+--r]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*e)),a},t.prototype.readInt8=function(t,e){return e||R(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},t.prototype.readInt16LE=function(t,e){e||R(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt16BE=function(t,e){e||R(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt32LE=function(t,e){return e||R(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||R(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||R(t,4,this.length),G.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||R(t,4,this.length),G.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||R(t,8,this.length),G.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||R(t,8,this.length),G.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,n,r){t=+t,e=0|e,n=0|n,r||D(this,t,e,n,Math.pow(2,8*n),0);var i=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+i]=t/a&255;return e+n},t.prototype.writeUInt8=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=255&e,n+1},t.prototype.writeUInt16LE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):I(this,e,n,!0),n+2},t.prototype.writeUInt16BE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):I(this,e,n,!1),n+2},t.prototype.writeUInt32LE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=255&e):U(this,e,n,!0),n+4},t.prototype.writeUInt32BE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):U(this,e,n,!1),n+4},t.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e=0|e,!r){var i=Math.pow(2,8*n-1);D(this,t,e,n,i-1,-i)}var a=0,o=1,u=0>t?1:0;for(this[e]=255&t;++a>0)-u&255;return e+n},t.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e=0|e,!r){var i=Math.pow(2,8*n-1);D(this,t,e,n,i-1,-i)}var a=n-1,o=1,u=0>t?1:0;for(this[e+a]=255&t;--a>=0&&(o*=256);)this[e+a]=(t/o>>0)-u&255;return e+n},t.prototype.writeInt8=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[n]=255&e,n+1},t.prototype.writeInt16LE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):I(this,e,n,!0),n+2},t.prototype.writeInt16BE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):I(this,e,n,!1),n+2},t.prototype.writeInt32LE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):U(this,e,n,!0),n+4},t.prototype.writeInt32BE=function(e,n,r){return e=+e,n=0|n,r||D(this,e,n,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):U(this,e,n,!1),n+4},t.prototype.writeFloatLE=function(t,e,n){return z(this,t,e,!0,n)},t.prototype.writeFloatBE=function(t,e,n){return z(this,t,e,!1,n)},t.prototype.writeDoubleLE=function(t,e,n){return j(this,t,e,!0,n)},t.prototype.writeDoubleBE=function(t,e,n){return j(this,t,e,!1,n)},t.prototype.copy=function(e,n,r,i){if(r||(r=0),i||0===i||(i=this.length),n>=e.length&&(n=e.length),n||(n=0),i>0&&r>i&&(i=r),i===r)return 0;if(0===e.length||0===this.length)return 0;if(0>n)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>i)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-nr&&i>n)for(a=o-1;a>=0;a--)e[a+n]=this[a+r];else if(1e3>o||!t.TYPED_ARRAY_SUPPORT)for(a=0;o>a;a++)e[a+n]=this[a+r];else e._set(this.subarray(r,r+o),n);return o},t.prototype.fill=function(t,e,n){if(t||(t=0),e||(e=0),n||(n=this.length),e>n)throw new RangeError("end < start");if(n!==e&&0!==this.length){if(0>e||e>=this.length)throw new RangeError("start out of bounds");if(0>n||n>this.length)throw new RangeError("end out of bounds");var r;if("number"==typeof t)for(r=e;n>r;r++)this[r]=t;else{var i=Y(t.toString()),a=i.length;for(r=e;n>r;r++)this[r]=i[r%a]}return this}},t.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(t.TYPED_ARRAY_SUPPORT)return new t(this).buffer;for(var e=new Uint8Array(this.length),n=0,r=e.length;r>n;n+=1)e[n]=this[n];return e.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var K=t.prototype;t._augment=function(e){return e.constructor=t,e._isBuffer=!0,e._set=e.set,e.get=K.get,e.set=K.set,e.write=K.write,e.toString=K.toString,e.toLocaleString=K.toString,e.toJSON=K.toJSON,e.equals=K.equals,e.compare=K.compare,e.indexOf=K.indexOf,e.copy=K.copy,e.slice=K.slice,e.readUIntLE=K.readUIntLE,e.readUIntBE=K.readUIntBE,e.readUInt8=K.readUInt8,e.readUInt16LE=K.readUInt16LE,e.readUInt16BE=K.readUInt16BE,e.readUInt32LE=K.readUInt32LE,e.readUInt32BE=K.readUInt32BE,e.readIntLE=K.readIntLE,e.readIntBE=K.readIntBE,e.readInt8=K.readInt8,e.readInt16LE=K.readInt16LE,e.readInt16BE=K.readInt16BE,e.readInt32LE=K.readInt32LE,e.readInt32BE=K.readInt32BE,e.readFloatLE=K.readFloatLE,e.readFloatBE=K.readFloatBE,e.readDoubleLE=K.readDoubleLE,e.readDoubleBE=K.readDoubleBE,e.writeUInt8=K.writeUInt8,e.writeUIntLE=K.writeUIntLE,e.writeUIntBE=K.writeUIntBE,e.writeUInt16LE=K.writeUInt16LE,e.writeUInt16BE=K.writeUInt16BE,e.writeUInt32LE=K.writeUInt32LE,e.writeUInt32BE=K.writeUInt32BE,e.writeIntLE=K.writeIntLE,e.writeIntBE=K.writeIntBE,e.writeInt8=K.writeInt8,e.writeInt16LE=K.writeInt16LE,e.writeInt16BE=K.writeInt16BE,e.writeInt32LE=K.writeInt32LE,e.writeInt32BE=K.writeInt32BE,e.writeFloatLE=K.writeFloatLE,e.writeFloatBE=K.writeFloatBE,e.writeDoubleLE=K.writeDoubleLE,e.writeDoubleBE=K.writeDoubleBE,e.fill=K.fill,e.inspect=K.inspect,e.toArrayBuffer=K.toArrayBuffer,e};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,n(14).Buffer,function(){return this}())},function(t,e,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(t){"use strict";function e(t){var e=t.charCodeAt(0);return e===o||e===f?62:e===u||e===h?63:s>e?-1:s+10>e?e-s+26+26:c+26>e?e-c:l+26>e?e-l+26:void 0}function n(t){function n(t){l[f++]=t}var r,i,o,u,s,l;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var c=t.length;s="="===t.charAt(c-2)?2:"="===t.charAt(c-1)?1:0,l=new a(3*t.length/4-s),o=s>0?t.length-4:t.length;var f=0;for(r=0,i=0;o>r;r+=4,i+=3)u=e(t.charAt(r))<<18|e(t.charAt(r+1))<<12|e(t.charAt(r+2))<<6|e(t.charAt(r+3)),n((16711680&u)>>16),n((65280&u)>>8),n(255&u);return 2===s?(u=e(t.charAt(r))<<2|e(t.charAt(r+1))>>4,n(255&u)):1===s&&(u=e(t.charAt(r))<<10|e(t.charAt(r+1))<<4|e(t.charAt(r+2))>>2,n(u>>8&255),n(255&u)),l}function i(t){function e(t){return r.charAt(t)}function n(t){return e(t>>18&63)+e(t>>12&63)+e(t>>6&63)+e(63&t)}var i,a,o,u=t.length%3,s="";for(i=0,o=t.length-u;o>i;i+=3)a=(t[i]<<16)+(t[i+1]<<8)+t[i+2],s+=n(a);switch(u){case 1:a=t[t.length-1],s+=e(a>>2),s+=e(a<<4&63),s+="==";break;case 2:a=(t[t.length-2]<<8)+t[t.length-1],s+=e(a>>10),s+=e(a>>4&63),s+=e(a<<2&63),s+="="}return s}var a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),u="/".charCodeAt(0),s="0".charCodeAt(0),l="a".charCodeAt(0),c="A".charCodeAt(0),f="-".charCodeAt(0),h="_".charCodeAt(0);t.toByteArray=n,t.fromByteArray=i}(e)},function(t,e){e.read=function(t,e,n,r,i){var a,o,u=8*i-r-1,s=(1<>1,c=-7,f=n?i-1:0,h=n?-1:1,d=t[e+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=u;c>0;a=256*a+t[e+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=256*o+t[e+f],f+=h,c-=8);if(0===a)a=1-l;else{if(a===s)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,r),a-=l}return(d?-1:1)*o*Math.pow(2,a-r)},e.write=function(t,e,n,r,i,a){var o,u,s,l=8*a-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,p=r?1:-1,g=0>e||0===e&&0>1/e?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-o))<1&&(o--,s*=2),e+=o+f>=1?h/s:h*Math.pow(2,1-f),e*s>=2&&(o++,s/=2),o+f>=c?(u=0,o=c):o+f>=1?(u=(e*s-1)*Math.pow(2,i),o+=f):(u=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&u,d+=p,u/=256,i-=8);for(o=o<0;t[n+d]=255&o,d+=p,o/=256,l-=8);t[n+d-p]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){function r(t){var e=t.url;if(!e&&t.file)return d+t.file;if(t.baseURL&&!h.test(e)&&(c(e,"/")||"/"===t.baseURL[t.baseURL.length-1]||(e="/"+e),e=t.baseURL+e),!i.useXHR&&c(e,"//")&&(e=(t.defaultProtocol||"http")+":"+e),t.domainWhiteList){var r,a;if(i.useXHR){var o=document.createElement("a");o.href=e,""===o.host&&(o.href=o.href),r=o.hostname.toLowerCase(),a=window.location.hostname}else{var u=n(19).parse(e);r=u.hostname,a=null}if(a!==r){var s=t.domainWhiteList.some(function(t){var e=r.length-t.length;return t===r||e>1&&"."===r[e-1]&&r.lastIndexOf(t)===e});if(!s)throw"URL is not whitelisted: "+e}}return e}function i(t,e){return i.loader(t,e)}function a(t,e){var n,r=e||function(t){throw t};try{n=i.sanitizeUrl(t)}catch(a){return void r(a)}return n?i.useXHR?i.xhr(n,t,e):c(n,d)?i.file(n.slice(d.length),t,e):n.indexOf("://")<0?i.file(n,t,e):i.http(n,t,e):void r("Invalid URL: "+t.url)}function o(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function u(t,e,n){function r(){var t=u.status;!t&&o(u)||t>=200&&300>t||304===t?n(null,u.responseText):n(u,null)}var a=!!n,u=new XMLHttpRequest;if("undefined"==typeof XDomainRequest||"withCredentials"in u||!/^(http(s)?:)?\/\//.test(t)||(u=new XDomainRequest),a&&("onload"in u?u.onload=u.onerror=r:u.onreadystatechange=function(){u.readyState>3&&r()}),u.open("GET",t,a),u.setRequestHeader){var s=f.extend({},i.headers,e.headers);for(var l in s)u.setRequestHeader(l,s[l])}return u.send(),!a&&o(u)?u.responseText:void 0}function s(t,e,r){var i=n(20);return r?void i.readFile(t,r):i.readFileSync(t,"utf8")}function l(t,e,r){var a=f.extend({},i.headers,e.headers);if(!r)return n(21)("GET",t,{headers:a}).getBody();var o={url:t,encoding:null,gzip:!0,headers:a};n(22)(o,function(t,e,n){t||200!==e.statusCode?(t=t||"Load failed with response code "+e.statusCode+".",r(t,null)):r(null,n)})}function c(t,e){return null==t?!1:0===t.lastIndexOf(e,0)}var f=n(13),h=/^([A-Za-z]+:)?\/\//,d="file://";i.loader=a,i.sanitizeUrl=r,i.xhr=u,i.file=s,i.http=l,i.useXHR="undefined"!=typeof XMLHttpRequest,i.headers={},t.exports=i},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){function r(t,e){var n=e&&e.type||"json";return t=u[n](t,e),e&&e.parse&&i(t,e.parse),t}function i(t,e){var n,r,i,u,l,c,f=t.length;for(e="auto"===e?o.inferAll(t):a.duplicate(e),n=a.keys(e),r=n.map(function(t){var n=e[t];if(n&&0===n.indexOf("date:")){var r=n.split(":",2),i=r[1];if(!("'"===i[0]&&"'"===i[i.length-1]||'"'===i[0]&&'"'===i[i.length-1]))throw Error("Format pattern must be quoted: "+i);return i=i.slice(1,-1),i=s(i),function(t){return i.parse(t)}}if(!o.parsers[n])throw Error("Illegal format pattern: "+t+":"+n);return o.parsers[n]}),u=0,c=n.length;f>u;++u)for(i=t[u],l=0;c>l;++l)i[n[l]]=r[l](i[n[l]]);o.annotation(t,e)}var a=n(13),o=n(24),u=n(25),s=n(32).time;r.formats=u,t.exports=r},function(t,e,n){function r(t,e){return e?void(t[l]=e):t&&t[l]||null}function i(t,e){t=s.array(t),e=s.$(e);var n,r,i;if(t[l]&&(n=e(t[l]),s.isString(n)))return n;for(r=0,i=t.length;!s.isValid(n)&&i>r;++r)n=e?e(t[r]):t[r];return s.isDate(n)?"date":s.isNumber(n)?"number":s.isBoolean(n)?"boolean":s.isString(n)?"string":null}function a(t,e){return t.length?(e=e||s.keys(t[0]),e.reduce(function(e,n){return e[n]=i(t,n),e},{})):void 0}function o(t,e){t=s.array(t),e=s.$(e);var n,r,i,a=["boolean","integer","number","date"];for(n=0;n=l)return o;if(i)return i=!1,a;var e,n=c;if(34===t.charCodeAt(n)){for(var r=n;r++c;){var s=1;if(e=t.charCodeAt(c++),10===e)i=!0;else if(13===e)i=!0,10===t.charCodeAt(c)&&(++c,++s);else if(e!==u)continue;return t.slice(n,c-s)}return t.slice(n)}for(var r,i,a={},o={},s=[],l=t.length,c=0,f=0;(r=n())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=n();e&&null==(h=e(h,f++))||s.push(h)}return s},this.format=function(e,n){return null==n&&(n=i(e)),[n.map(a).join(t)].concat(e.map(function(e){return n.map(function(t){return a(e[t])}).join(t)})).join("\n")},this.formatRows=function(t){return t.map(e).join("\n")}}e.prototype=a.prototype;var o=e(","),u=e(" "),s="0.1.14";t.version=s,t.dsv=e,t.csv=o,t.tsv=u})},function(t,e,n){var r=n(13);t.exports=function(t,e){var n=r.isObject(t)&&!r.isBuffer(t)?t:JSON.parse(t);return e&&e.property&&(n=r.accessor(e.property)(n)),n}},function(t,e,n){var r=n(28),i=function(t,e){var n=i.topojson;if(null==n)throw Error("TopoJSON library not loaded.");var a,o=r(t,e);if(e&&e.feature){if(a=o.objects[e.feature])return n.feature(o,a).features;throw Error("Invalid TopoJSON object: "+e.feature)}if(e&&e.mesh){if(a=o.objects[e.mesh])return[n.mesh(o,o.objects[e.mesh])];throw Error("Invalid TopoJSON object: "+e.mesh)}throw Error("Missing TopoJSON feature or mesh parameter.")};i.topojson=n(30),t.exports=i},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(){}function n(t){if(!t)return e;var n,r,i=t.scale[0],a=t.scale[1],o=t.translate[0],u=t.translate[1];return function(t,e){e||(n=r=0),t[0]=(n+=t[0])*i+o,t[1]=(r+=t[1])*a+u}}function r(t){if(!t)return e;var n,r,i=t.scale[0],a=t.scale[1],o=t.translate[0],u=t.translate[1];return function(t,e){e||(n=r=0);var s=Math.round((t[0]-o)/i),l=Math.round((t[1]-u)/a);t[0]=s-n,t[1]=l-r,n=s,r=l}}function i(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function a(t,e){for(var n=0,r=t.length;r>n;){var i=n+r>>>1;t[i]t?~t:t],a=0,o=r.length;o>a;++a)e.push(n=r[a].slice()),c(n,a);0>t&&i(e,o)}function a(t){return t=t.slice(),c(t,0),t}function o(t){for(var e=[],n=0,i=t.length;i>n;++n)r(t[n],e);return e.length<2&&e.push(e[0].slice()),e}function u(t){for(var e=o(t);e.length<4;)e.push(e[0].slice());return e}function s(t){return t.map(u)}function l(t){var e=t.type;return"GeometryCollection"===e?{type:e,geometries:t.geometries.map(l)}:e in h?{type:e,coordinates:h[e](t)}:null}var c=n(t.transform),f=t.arcs,h={Point:function(t){return a(t.coordinates)},MultiPoint:function(t){return t.coordinates.map(a)},LineString:function(t){return o(t.arcs)},MultiLineString:function(t){return t.arcs.map(o)},Polygon:function(t){return s(t.arcs)},MultiPolygon:function(t){return t.arcs.map(s)}};return l(e)}function l(t,e){function n(e){var n,r=t.arcs[0>e?~e:e],i=r[0];return t.transform?(n=[0,0],r.forEach(function(t){n[0]+=t[0],n[1]+=t[1]})):n=r[r.length-1],0>e?[n,i]:[i,n]}function r(t,e){for(var n in t){var r=t[n];delete e[r.start],delete r.start,delete r.end,r.forEach(function(t){i[0>t?~t:t]=1}),u.push(r)}}var i={},a={},o={},u=[],s=-1;return e.forEach(function(n,r){var i,a=t.arcs[0>n?~n:n];a.length<3&&!a[1][0]&&!a[1][1]&&(i=e[++s],e[s]=n,e[r]=i)}),e.forEach(function(t){var e,r,i=n(t),u=i[0],s=i[1];if(e=o[u])if(delete o[e.end],e.push(t),e.end=s,r=a[s]){delete a[r.start];var l=r===e?e:e.concat(r);a[l.start=e.start]=o[l.end=r.end]=l}else a[e.start]=o[e.end]=e;else if(e=a[s])if(delete a[e.start],e.unshift(t),e.start=u,r=o[u]){delete o[r.end];var c=r===e?e:r.concat(e);a[c.start=r.start]=o[c.end=e.end]=c}else a[e.start]=o[e.end]=e;else e=[t],a[e.start=u]=o[e.end=s]=e}),r(o,a),r(a,o),e.forEach(function(t){i[0>t?~t:t]||u.push([t])}),u}function c(t){return s(t,f.apply(this,arguments))}function f(t,e,n){function r(t){var e=0>t?~t:t;(c[e]||(c[e]=[])).push({i:t,g:s})}function i(t){t.forEach(r)}function a(t){t.forEach(i)}function o(t){"GeometryCollection"===t.type?t.geometries.forEach(o):t.type in f&&(s=t,f[t.type](t.arcs))}var u=[];if(arguments.length>1){var s,c=[],f={LineString:i,MultiLineString:a,Polygon:a,MultiPolygon:function(t){t.forEach(a)}};o(e),c.forEach(arguments.length<3?function(t){u.push(t[0].i)}:function(t){n(t[0].g,t[t.length-1].g)&&u.push(t[0].i)})}else for(var h=0,d=t.arcs.length;d>h;++h)u.push(h);return{type:"MultiLineString",arcs:l(t,u)}}function h(t){var e=t[0],n=t[1],r=t[2];return Math.abs((e[0]-r[0])*(n[1]-e[1])-(e[0]-n[0])*(r[1]-e[1]))}function d(t){for(var e,n=-1,r=t.length,i=t[r-1],a=0;++ne?~e:e]||(i[e]=[])).push(t)})}),a.push(t)}function r(e){return Math.abs(d(s(t,{type:"Polygon",arcs:[e]}).coordinates[0]))}var i={},a=[],o=[];return e.forEach(function(t){"Polygon"===t.type?n(t.arcs):"MultiPolygon"===t.type&&t.arcs.forEach(n)}),a.forEach(function(t){if(!t._){var e=[],n=[t];for(t._=1,o.push(e);t=n.pop();)e.push(t),t.forEach(function(t){t.forEach(function(t){i[0>t?~t:t].forEach(function(t){t._||(t._=1,n.push(t))})})})}}),a.forEach(function(t){delete t._}),{type:"MultiPolygon",arcs:o.map(function(e){var n,a=[];if(e.forEach(function(t){t.forEach(function(t){t.forEach(function(t){i[0>t?~t:t].length<2&&a.push(t)})})}),a=l(t,a),(n=a.length)>1)for(var o,u,s=1,c=r(a[0]);n>s;++s)(o=r(a[s]))>c&&(u=a[0], -a[0]=a[s],a[s]=u,c=o);return a})}}function m(t){function e(t,e){t.forEach(function(t){0>t&&(t=~t);var n=i[t];n?n.push(e):i[t]=[e]})}function n(t,n){t.forEach(function(t){e(t,n)})}function r(t,e){"GeometryCollection"===t.type?t.geometries.forEach(function(t){r(t,e)}):t.type in u&&u[t.type](t.arcs,e)}var i={},o=t.map(function(){return[]}),u={LineString:e,MultiLineString:n,Polygon:n,MultiPolygon:function(t,e){t.forEach(function(t){n(t,e)})}};t.forEach(r);for(var s in i)for(var l=i[s],c=l.length,f=0;c>f;++f)for(var h=f+1;c>h;++h){var d,p=l[f],g=l[h];(d=o[p])[s=a(d,g)]!==g&&d.splice(s,0,g),(d=o[g])[s=a(d,p)]!==p&&d.splice(s,0,p)}return o}function v(t,e){return t[1][2]-e[1][2]}function y(){function t(t,e){for(;e>0;){var n=(e+1>>1)-1,i=r[n];if(v(t,i)>=0)break;r[i._=e]=i,r[t._=e=n]=t}}function e(t,e){for(;;){var n=e+1<<1,a=n-1,o=e,u=r[o];if(i>a&&v(r[a],u)<0&&(u=r[o=a]),i>n&&v(r[n],u)<0&&(u=r[o=n]),o===e)break;r[u._=e]=u,r[t._=e=o]=t}}var n={},r=[],i=0;return n.push=function(e){return t(r[e._=i]=e,i++),i},n.pop=function(){if(!(0>=i)){var t,n=r[0];return--i>0&&(t=r[i],e(r[t._=0]=t,0)),n}},n.remove=function(n){var a,o=n._;if(r[o]===n)return o!==--i&&(a=r[i],(v(a,n)<0?t:e)(r[a._=o]=a,o)),o},n}function x(t,e){function i(t){u.remove(t),t[1][2]=e(t),u.push(t)}var a=n(t.transform),o=r(t.transform),u=y();return e||(e=h),t.arcs.forEach(function(t){var n,r,s,l,c=[],f=0;for(r=0,s=t.length;s>r;++r)l=t[r],a(t[r]=[l[0],l[1],1/0],r);for(r=1,s=t.length-1;s>r;++r)n=t.slice(r-1,r+2),n[1][2]=e(n),c.push(n),u.push(n);for(r=0,s=c.length;s>r;++r)n=c[r],n.previous=c[r-1],n.next=c[r+1];for(;n=u.pop();){var h=n.previous,d=n.next;n[1][2]4&&"locale"+(t[0].toUpperCase()+t[1].toLowerCase()+t[3].toUpperCase()+t[4].toLowerCase())}function i(t){var e=x.isString(t)?M[r(t)]:M.locale(t);if(null==e)throw Error("Unrecognized locale: "+t);w=e}function a(t){var e=x.isString(t)?b[r(t)]:b.locale(t);if(null==e)throw Error("Unrecognized locale: "+t);k=e,g=m=v=y=null}function o(t,e){t.length||(t=[0]),null==e&&(e=10);var n=t[0],r=t[t.length-1];n>r&&(o=r,r=n,n=o);var i=r-n||(e=1,n||r||1),a=Math.pow(10,Math.floor(Math.log(i/e)/Math.LN10)),o=i/e/a;return o>=S?a*=10:o>=A?a*=5:o>=T&&(a*=2),[Math.ceil(n/a)*a,Math.floor(r/a)*a+a/2,a]}function u(t,e){return function(n){var r=t(n),i=r.indexOf(e);if(0>i)return r;for(var a=s(r,i),o=ai;)if("0"!==r[a]){++a;break}return r.slice(0,a)+o}}function s(t,e){var n,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>e;)if(n=t.charCodeAt(r),n>=48&&57>=n)return r+1}function l(t){var e=w.format(".1f")(1)[1];switch(null==t&&(t=","),t=M.formatSpecifier(t),null==t.precision&&(t.precision=12),t.type){case"%":t.precision-=2;break;case"e":t.precision-=1}return u(w.format(t),e)}function c(t,e,n){var r=o(t,e);switch(null==n&&(n=",f"),n=M.formatSpecifier(n),n.type){case"s":var i=Math.max(Math.abs(r[0]),Math.abs(r[1]));return null==n.precision&&(n.precision=M.precisionPrefix(r[2],i)),w.formatPrefix(n,i);case"":case"e":case"g":case"p":case"r":null==n.precision&&(n.precision=M.precisionRound(r[2],Math.max(Math.abs(r[0]),Math.abs(r[1])))-("e"===n.type));break;case"f":case"%":null==n.precision&&(n.precision=M.precisionFixed(r[2])-2*("%"===n.type))}return w.format(n)}function f(){var t=k.format,e=t(".%L"),n=t(":%S"),r=t("%I:%M"),i=t("%I %p"),a=t("%a %d"),o=t("%b %d"),u=t("%B"),s=t("%Y");return function(t){var l=+t;return(_.second(t)e-r?r:i},u.ceil=function(e){return t(e=new Date(e-1)),n(e,1),e},u.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},u.range=function(e,r,i){var a=[];if(e=new Date(e-1),r=new Date(+r),i=null==i?1:Math.floor(i),!(r>e&&i>0))return a;for(n(e,1),t(e),r>e&&a.push(new Date(+e));n(e,i),t(e),r>e;)a.push(new Date(+e));return a},u.filter=function(r){return e(function(e){for(;t(e),!r(e);)e.setTime(e-1)},function(t,e){for(;--e>=0;)for(;n(t,1),!r(t););})},r&&(u.count=function(e,n){return i.setTime(+e),a.setTime(+n),t(i),t(a),Math.floor(r(i,a))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(o?function(e){return o(e)%t===0}:function(e){return u.count(0,e)%t===0}):u:null}),u}function n(t){return e(function(e){e.setHours(0,0,0,0),e.setDate(e.getDate()-(e.getDay()+7-t)%7)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5})}function r(t){return e(function(e){e.setUTCHours(0,0,0,0),e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/6048e5})}var i=new Date,a=new Date,o=e(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});o.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?e(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):o:null};var u=e(function(t){t.setMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getSeconds()}),s=e(function(t){t.setSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getMinutes()}),l=e(function(t){t.setMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),c=e(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5},function(t){return t.getDate()-1}),f=n(0),h=n(1),d=n(2),p=n(3),g=n(4),m=n(5),v=n(6),y=e(function(t){t.setHours(0,0,0,0),t.setDate(1)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),x=e(function(t){t.setHours(0,0,0,0),t.setMonth(0,1)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}),_=e(function(t){t.setUTCMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),b=e(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getUTCMinutes()}),M=e(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),w=e(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),k=r(0),E=r(1),S=r(2),A=r(3),T=r(4),O=r(5),N=r(6),L=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCDate(1)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),C=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCMonth(0,1)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}),R=o.range,D=u.range,I=s.range,U=l.range,P=c.range,z=f.range,j=h.range,q=d.range,$=p.range,F=g.range,Y=m.range,H=v.range,B=f.range,V=y.range,X=x.range,W=o,G=R,Z=_.range,J=b.range,Q=M.range,K=w.range,tt=k.range,et=E.range,nt=S.range,rt=A.range,it=T.range,at=O.range,ot=N.range,ut=k.range,st=L.range,lt=C.range,ct="0.1.1";t.version=ct,t.milliseconds=R,t.seconds=D,t.minutes=I,t.hours=U,t.days=P,t.sundays=z,t.mondays=j,t.tuesdays=q,t.wednesdays=$,t.thursdays=F,t.fridays=Y,t.saturdays=H,t.weeks=B,t.months=V,t.years=X,t.utcMillisecond=W,t.utcMilliseconds=G,t.utcSeconds=Z,t.utcMinutes=J,t.utcHours=Q,t.utcDays=K,t.utcSundays=tt,t.utcMondays=et,t.utcTuesdays=nt,t.utcWednesdays=rt,t.utcThursdays=it,t.utcFridays=at,t.utcSaturdays=ot,t.utcWeeks=ut,t.utcMonths=st,t.utcYears=lt,t.millisecond=o,t.second=u,t.minute=s,t.hour=l,t.day=c,t.sunday=f,t.monday=h,t.tuesday=d,t.wednesday=p,t.thursday=g,t.friday=m,t.saturday=v,t.week=f,t.month=y,t.year=x,t.utcSecond=_,t.utcMinute=b,t.utcHour=M,t.utcDay=w,t.utcSunday=k,t.utcMonday=E,t.utcTuesday=S,t.utcWednesday=A,t.utcThursday=T,t.utcFriday=O,t.utcSaturday=N,t.utcWeek=k,t.utcMonth=L,t.utcYear=C,t.interval=e})},function(t,e,n){!function(t,r){r(e,n(33))}(this,function(t,e){"use strict";function n(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function r(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function i(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function a(t){function e(t,e){return function(n){var r,i,a,o=[],u=-1,s=0,l=t.length;for(n instanceof Date||(n=new Date(+n));++uo;){if(r>=s)return-1;if(i=e.charCodeAt(o++),37===i){if(i=e.charAt(o++),a=Pt[i in tt?e.charAt(o++):i],!a||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function u(t,e,n){var r=Et.exec(e.slice(n));return r?(t.p=St[r[0].toLowerCase()],n+r[0].length):-1}function K(t,e,n){var r=Ot.exec(e.slice(n));return r?(t.w=Nt[r[0].toLowerCase()],n+r[0].length):-1}function et(t,e,n){var r=At.exec(e.slice(n));return r?(t.w=Tt[r[0].toLowerCase()],n+r[0].length):-1}function nt(t,e,n){var r=Rt.exec(e.slice(n));return r?(t.m=Dt[r[0].toLowerCase()],n+r[0].length):-1}function rt(t,e,n){var r=Lt.exec(e.slice(n));return r?(t.m=Ct[r[0].toLowerCase()],n+r[0].length):-1}function it(t,e,n){return o(t,vt,e,n)}function at(t,e,n){return o(t,yt,e,n)}function ot(t,e,n){return o(t,xt,e,n)}function ut(t){return Mt[t.getDay()]}function st(t){return bt[t.getDay()]}function lt(t){return kt[t.getMonth()]}function ct(t){return wt[t.getMonth()]}function ft(t){return _t[+(t.getHours()>=12)]}function ht(t){return Mt[t.getUTCDay()]}function dt(t){return bt[t.getUTCDay()]}function pt(t){return kt[t.getUTCMonth()]}function gt(t){return wt[t.getUTCMonth()]}function mt(t){return _t[+(t.getUTCHours()>=12)]}var vt=t.dateTime,yt=t.date,xt=t.time,_t=t.periods,bt=t.days,Mt=t.shortDays,wt=t.months,kt=t.shortMonths,Et=s(_t),St=l(_t),At=s(bt),Tt=l(bt),Ot=s(Mt),Nt=l(Mt),Lt=s(wt),Ct=l(wt),Rt=s(kt),Dt=l(kt),It={a:ut,A:st,b:lt,B:ct,c:null,d:k,e:k,H:E,I:S,j:A,L:T,m:O,M:N,p:ft,S:L,U:C,w:R,W:D,x:null,X:null,y:I,Y:U,Z:P,"%":Q},Ut={a:ht,A:dt,b:pt,B:gt,c:null,d:z,e:z,H:j,I:q,j:$,L:F,m:Y,M:H,p:mt,S:B,U:V,w:X,W:W,x:null,X:null,y:G,Y:Z,Z:J,"%":Q},Pt={a:K,A:et,b:nt,B:rt,c:it,d:v,e:v,H:x,I:x,j:y,L:M,m:m,M:_,p:u,S:b,U:f,w:c,W:h,x:at,X:ot,y:p,Y:d,Z:g,"%":w};return It.x=e(yt,It),It.X=e(xt,It),It.c=e(vt,It),Ut.x=e(yt,Ut),Ut.X=e(xt,Ut),Ut.c=e(vt,Ut),{format:function(t){var r=e(t+="",It);return r.parse=a(t,n),r.toString=function(){return t},r},utcFormat:function(t){var n=e(t+="",Ut);return n.parse=a(t,r),n.toString=function(){return t},n}}}function o(t,e,n){var r=0>t?"-":"",i=(r?-t:t)+"",a=i.length;return r+(n>a?new Array(n-a+1).join(e)+i:i)}function u(t){return t.replace(rt,"\\$&")}function s(t){return new RegExp("^(?:"+t.map(u).join("|")+")","i")}function l(t){for(var e={},n=-1,r=t.length;++n68?1900:2e3),n+r[0].length):-1}function g(t,e,n){var r=/^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function m(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function v(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function y(t,e,n){var r=et.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function x(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function _(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function b(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function M(t,e,n){var r=et.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function w(t,e,n){var r=nt.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function k(t,e){return o(t.getDate(),e,2)}function E(t,e){return o(t.getHours(),e,2)}function S(t,e){return o(t.getHours()%12||12,e,2)}function A(t,n){return o(1+e.day.count(e.year(t),t),n,3)}function T(t,e){return o(t.getMilliseconds(),e,3)}function O(t,e){return o(t.getMonth()+1,e,2)}function N(t,e){return o(t.getMinutes(),e,2)}function L(t,e){return o(t.getSeconds(),e,2)}function C(t,n){return o(e.sunday.count(e.year(t),t),n,2)}function R(t){return t.getDay()}function D(t,n){return o(e.monday.count(e.year(t),t),n,2)}function I(t,e){return o(t.getFullYear()%100,e,2)}function U(t,e){return o(t.getFullYear()%1e4,e,4)}function P(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+o(e/60|0,"0",2)+o(e%60,"0",2)}function z(t,e){return o(t.getUTCDate(),e,2)}function j(t,e){return o(t.getUTCHours(),e,2)}function q(t,e){return o(t.getUTCHours()%12||12,e,2)}function $(t,n){return o(1+e.utcDay.count(e.utcYear(t),t),n,3)}function F(t,e){return o(t.getUTCMilliseconds(),e,3)}function Y(t,e){return o(t.getUTCMonth()+1,e,2)}function H(t,e){return o(t.getUTCMinutes(),e,2)}function B(t,e){return o(t.getUTCSeconds(),e,2)}function V(t,n){return o(e.utcSunday.count(e.utcYear(t),t),n,2)}function X(t){return t.getUTCDay()}function W(t,n){return o(e.utcMonday.count(e.utcYear(t),t),n,2)}function G(t,e){return o(t.getUTCFullYear()%100,e,2)}function Z(t,e){return o(t.getUTCFullYear()%1e4,e,4)}function J(){return"+0000"}function Q(){return"%"}function K(t){return t.toISOString()}var tt={"-":"",_:" ",0:"0"},et=/^\s*\d+/,nt=/^%/,rt=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,it=a({dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",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"]}),at=a({dateTime:"%A, %e de %B de %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],shortDays:["dg.","dl.","dt.","dc.","dj.","dv.","ds."],months:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],shortMonths:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."]}),ot=a({dateTime:"%A, der %e. %B %Y, %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"]}),ut=a({dateTime:"%A, der %e. %B %Y, %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"]}),st=a({dateTime:"%a %b %e %X %Y",date:"%Y-%m-%d",time:"%H:%M:%S",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"]}),lt=a({dateTime:"%a %e %b %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",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"]}),ct=a({dateTime:"%A, %e de %B de %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],shortDays:["dom","lun","mar","mié","jue","vie","sáb"],months:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],shortMonths:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"]}),ft=a({dateTime:"%A, %-d. %Bta %Y klo %X",date:"%-d.%-m.%Y",time:"%H:%M:%S",periods:["a.m.","p.m."],days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],shortDays:["Su","Ma","Ti","Ke","To","Pe","La"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],shortMonths:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"]}),ht=a({dateTime:"%a %e %b %Y %X",date:"%Y-%m-%d",time:"%H:%M:%S",periods:["",""],days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],shortDays:["dim","lun","mar","mer","jeu","ven","sam"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],shortMonths:["jan","fév","mar","avr","mai","jui","jul","aoû","sep","oct","nov","déc"]}),dt=a({dateTime:"%A, le %e %B %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],shortDays:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],shortMonths:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."]}),pt=a({dateTime:"%A, %e ב%B %Y %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],shortDays:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],shortMonths:["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"]}),gt=a({dateTime:"%Y. %B %-e., %A %X",date:"%Y. %m. %d.",time:"%H:%M:%S",periods:["de.","du."],days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],shortDays:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],shortMonths:["jan.","feb.","már.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."]}),mt=a({dateTime:"%A %e %B %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],shortDays:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],shortMonths:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"]}),vt=a({dateTime:"%Y %b %e %a %X",date:"%Y/%m/%d",time:"%H:%M:%S",periods:["AM","PM"],days:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],shortDays:["日","月","火","水","木","金","土"],months:["睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走"],shortMonths:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]}),yt=a({dateTime:"%Y/%m/%d %a %X",date:"%Y/%m/%d",time:"%H:%M:%S",periods:["오전","오후"],days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],shortDays:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],shortMonths:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}),xt=a({dateTime:"%A, %e %B %Y г. %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["недела","понеделник","вторник","среда","четврток","петок","сабота"],shortDays:["нед","пон","вто","сре","чет","пет","саб"],months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],shortMonths:["јан","фев","мар","апр","мај","јун","јул","авг","сеп","окт","ное","дек"]}),_t=a({dateTime:"%a %e %B %Y %T",date:"%d-%m-%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],shortDays:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],shortMonths:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"]}),bt=a({dateTime:"%A, %e %B %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],shortDays:["Niedz.","Pon.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],shortMonths:["Stycz.","Luty","Marz.","Kwie.","Maj","Czerw.","Lipc.","Sierp.","Wrz.","Paźdz.","Listop.","Grudz."]}),Mt=a({dateTime:"%A, %e de %B de %Y. %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],shortDays:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],shortMonths:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"]}),wt=a({dateTime:"%A, %e %B %Y г. %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],shortDays:["вс","пн","вт","ср","чт","пт","сб"],months:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],shortMonths:["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек"]}),kt=a({dateTime:"%A den %d %B %Y %X",date:"%Y-%m-%d",time:"%H:%M:%S",periods:["fm","em"],days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],shortDays:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"]}),Et=a({dateTime:"%a %b %e %X %Y",date:"%Y/%-m/%-d",time:"%H:%M:%S",periods:["上午","下午"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortDays:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],shortMonths:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]}),St="%Y-%m-%dT%H:%M:%S.%LZ";K.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},K.toString=function(){return St};var At=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?K:it.utcFormat(St),Tt=it.format,Ot=it.utcFormat,Nt="0.2.1";t.version=Nt,t.format=Tt,t.utcFormat=Ot,t.locale=a,t.localeCaEs=at,t.localeDeCh=ot,t.localeDeDe=ut,t.localeEnCa=st,t.localeEnGb=lt,t.localeEnUs=it,t.localeEsEs=ct,t.localeFiFi=ft,t.localeFrCa=ht,t.localeFrFr=dt,t.localeHeIl=pt,t.localeHuHu=gt,t.localeItIt=mt,t.localeJaJp=vt,t.localeKoKr=yt,t.localeMkMk=xt,t.localeNlNl=_t,t.localePlPl=bt,t.localePtBr=Mt,t.localeRuRu=wt,t.localeSvSe=kt,t.localeZhCn=Et,t.isoFormat=At})},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function n(t){return t=e(Math.abs(t)),t?t[1]:NaN}function r(t,e){return function(n,r){for(var i=n.length,a=[],o=0,u=t[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),a.push(n.substring(i-=u,i+u)),!((s+=u+1)>r));)u=t[o=(o+1)%t.length];return a.reverse().join(e)}}function i(t,n){var r=e(t,n);if(!r)return t+"";var i=r[0],a=r[1],o=a-(p=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1,u=i.length;return o===u?i:o>u?i+new Array(o-u+1).join("0"):o>0?i.slice(0,o)+"."+i.slice(o):"0."+new Array(1-o).join("0")+e(t,Math.max(0,n+o-1))[0]}function a(t,n){var r=e(t,n);if(!r)return t+"";var i=r[0],a=r[1];return 0>a?"0."+new Array(-a).join("0")+i:i.length>a+1?i.slice(0,a+1)+"."+i.slice(a+1):i+new Array(a-i.length+2).join("0")}function o(t,e){t=t.toPrecision(e);t:for(var n,r=t.length,i=1,a=-1;r>i;++i)switch(t[i]){case".":a=n=i;break;case"0":0===a&&(a=i),n=i;break;case"e":break t;default:a>0&&(a=0)}return a>0?t.slice(0,a)+t.slice(n+1):t}function u(t){return new s(t)}function s(t){if(!(e=m.exec(t)))throw new Error("invalid format: "+t);var e,n=e[1]||" ",r=e[2]||">",i=e[3]||"-",a=e[4]||"",o=!!e[5],u=e[6]&&+e[6],s=!!e[7],l=e[8]&&+e[8].slice(1),c=e[9]||"";"n"===c?(s=!0,c="g"):g[c]||(c=""),(o||"0"===n&&"="===r)&&(o=!0,n="0",r="="),this.fill=n,this.align=r,this.sign=i,this.symbol=a,this.zero=o,this.width=u,this.comma=s,this.precision=l,this.type=c}function l(t){return t}function c(t){function e(t){t=u(t);var e=t.fill,n=t.align,r=t.sign,i=t.symbol,l=t.zero,c=t.width,f=t.comma,h=t.precision,d=t.type,m="$"===i?o[0]:"#"===i&&/[boxX]/.test(d)?"0"+d.toLowerCase():"",y="$"===i?o[1]:/[%p]/.test(d)?"%":"",x=g[d],_=!d||/[defgprs%]/.test(d);return h=null==h?d?6:12:/[gprs]/.test(d)?Math.max(1,Math.min(21,h)):Math.max(0,Math.min(20,h)),function(t){var i=m,o=y;if("c"===d)o=x(t)+o,t="";else{t=+t;var u=(0>t||0>1/t)&&(t*=-1,!0);if(t=x(t,h),u){var g,b=-1,M=t.length;for(u=!1;++b48&&58>g||"x"===d&&g>96&&103>g||"X"===d&&g>64&&71>g){u=!0;break}}if(i=(u?"("===r?r:"-":"-"===r||"("===r?"":r)+i,o=o+("s"===d?v[8+p/3]:"")+(u&&"("===r?")":""),_)for(var g,b=-1,M=t.length;++bg||g>57){o=(46===g?s+t.slice(b+1):t.slice(b))+o,t=t.slice(0,b);break}}f&&!l&&(t=a(t,1/0));var w=i.length+t.length+o.length,k=c>w?new Array(c-w+1).join(e):"";switch(f&&l&&(t=a(k+t,k.length?c-o.length:1/0),k=""),n){case"<":return i+t+o+k;case"=":return i+k+t+o;case"^":return k.slice(0,w=k.length>>1)+i+t+o+k.slice(w)}return k+i+t+o}}function i(t,r){var i=e((t=u(t),t.type="f",t)),a=3*Math.max(-8,Math.min(8,Math.floor(n(r)/3))),o=Math.pow(10,-a),s=v[8+a/3];return function(t){return i(o*t)+s}}var a=t.grouping&&t.thousands?r(t.grouping,t.thousands):l,o=t.currency,s=t.decimal;return{format:e,formatPrefix:i}}function f(t){return Math.max(0,-n(Math.abs(t)))}function h(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(n(e)/3)))-n(Math.abs(t)))}function d(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,n(e)-n(t))+1}var p,g={"":o,"%":function(t,e){return(100*t).toFixed(e)},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,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return a(100*t,e)},r:a,s:i,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},m=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;s.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 v=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],y=c({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),x=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),_=c({decimal:",",thousands:" ",grouping:[3],currency:[""," Kč"]}),b=c({decimal:",",thousands:"'",grouping:[3],currency:[""," CHF"]}),M=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),w=c({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),k=c({decimal:".",thousands:",",grouping:[3],currency:["£",""]}),E=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),S=c({decimal:",",thousands:" ",grouping:[3],currency:[""," €"]}),A=c({decimal:",",thousands:" ",grouping:[3],currency:["","$"]}),T=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),O=c({decimal:".",thousands:",",grouping:[3],currency:["₪",""]}),N=c({decimal:",",thousands:" ",grouping:[3],currency:[""," Ft"]}),L=c({decimal:",",thousands:".",grouping:[3],currency:["€",""]}),C=c({decimal:".",thousands:",",grouping:[3],currency:["","円"]}),R=c({decimal:".",thousands:",",grouping:[3],currency:["₩",""]}),D=c({decimal:",",thousands:".",grouping:[3],currency:[""," ден."]}),I=c({decimal:",",thousands:".",grouping:[3],currency:["€ ",""]}),U=c({decimal:",",thousands:".",grouping:[3],currency:["","zł"]}),P=c({decimal:",",thousands:".",grouping:[3],currency:["R$",""]}),z=c({decimal:",",thousands:" ",grouping:[3],currency:[""," руб."]}),j=c({decimal:",",thousands:" ",grouping:[3],currency:["","SEK"]}),q=c({decimal:".",thousands:",",grouping:[3],currency:["¥",""]}),$=y.format,F=y.formatPrefix,Y="0.4.2";t.version=Y,t.format=$,t.formatPrefix=F,t.locale=c,t.localeCaEs=x,t.localeCsCz=_,t.localeDeCh=b,t.localeDeDe=M,t.localeEnCa=w,t.localeEnGb=k,t.localeEnUs=y,t.localeEsEs=E,t.localeFiFi=S,t.localeFrCa=A,t.localeFrFr=T,t.localeHeIl=O,t.localeHuHu=N,t.localeItIt=L,t.localeJaJp=C,t.localeKoKr=R,t.localeMkMk=D,t.localeNlNl=I,t.localePlPl=U,t.localePtBr=P, +"use strict";function i(){function t(){}try{var e=new Uint8Array(1);return e.foo=function(){return 42},e.constructor=t,42===e.foo()&&e.constructor===t&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(n){return!1}}function a(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function t(e){return this instanceof t?(t.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),"number"==typeof e?o(this,e):"string"==typeof e?u(this,e,arguments.length>1?arguments[1]:"utf8"):s(this,e)):arguments.length>1?new t(e,arguments[1]):new t(e)}function o(e,n){if(e=g(e,0>n?0:0|m(n)),!t.TYPED_ARRAY_SUPPORT)for(var r=0;n>r;r++)e[r]=0;return e}function u(t,e,n){"string"==typeof n&&""!==n||(n="utf8");var r=0|y(e,n);return t=g(t,r),t.write(e,n),t}function s(e,n){if(t.isBuffer(n))return l(e,n);if(Z(n))return c(e,n);if(null==n)throw new TypeError("must start with number, buffer, array or string");if("undefined"!=typeof ArrayBuffer){if(n.buffer instanceof ArrayBuffer)return f(e,n);if(n instanceof ArrayBuffer)return h(e,n)}return n.length?d(e,n):p(e,n)}function l(t,e){var n=0|m(e.length);return t=g(t,n),e.copy(t,0,0,n),t}function c(t,e){var n=0|m(e.length);t=g(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function f(t,e){var n=0|m(e.length);t=g(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function h(e,n){return t.TYPED_ARRAY_SUPPORT?(n.byteLength,e=t._augment(new Uint8Array(n))):e=f(e,new Uint8Array(n)),e}function d(t,e){var n=0|m(e.length);t=g(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function p(t,e){var n,r=0;"Buffer"===e.type&&Z(e.data)&&(n=e.data,r=0|m(n.length)),t=g(t,r);for(var i=0;r>i;i+=1)t[i]=255&n[i];return t}function g(e,n){t.TYPED_ARRAY_SUPPORT?(e=t._augment(new Uint8Array(n)),e.__proto__=t.prototype):(e.length=n,e._isBuffer=!0);var r=0!==n&&n<=t.poolSize>>>1;return r&&(e.parent=J),e}function m(t){if(t>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function v(e,n){if(!(this instanceof v))return new v(e,n);var r=new t(e,n);return delete r.parent,r}function y(t,e){"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"binary":case"raw":case"raws":return n;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return V(t).length;default:if(r)return Y(t).length;e=(""+e).toLowerCase(),r=!0}}function x(t,e,n){var r=!1;if(e=0|e,n=void 0===n||n===1/0?this.length:0|n,t||(t="utf8"),0>e&&(e=0),n>this.length&&(n=this.length),e>=n)return"";for(;;)switch(t){case"hex":return L(this,e,n);case"utf8":case"utf-8":return A(this,e,n);case"ascii":return O(this,e,n);case"binary":return N(this,e,n);case"base64":return S(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function _(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r),r>i&&(r=i)):r=i;var a=e.length;if(a%2!==0)throw new Error("Invalid hex string");r>a/2&&(r=a/2);for(var o=0;r>o;o++){var u=parseInt(e.substr(2*o,2),16);if(isNaN(u))throw new Error("Invalid hex string");t[n+o]=u}return o}function b(t,e,n,r){return X(Y(e,t.length-n),t,n,r)}function M(t,e,n,r){return X(H(e),t,n,r)}function w(t,e,n,r){return M(t,e,n,r)}function k(t,e,n,r){return X(V(e),t,n,r)}function E(t,e,n,r){return X(B(e,t.length-n),t,n,r)}function S(t,e,n){return 0===e&&n===t.length?W.fromByteArray(t):W.fromByteArray(t.slice(e,n))}function A(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;n>i;){var a=t[i],o=null,u=a>239?4:a>223?3:a>191?2:1;if(n>=i+u){var s,l,c,f;switch(u){case 1:128>a&&(o=a);break;case 2:s=t[i+1],128===(192&s)&&(f=(31&a)<<6|63&s,f>127&&(o=f));break;case 3:s=t[i+1],l=t[i+2],128===(192&s)&&128===(192&l)&&(f=(15&a)<<12|(63&s)<<6|63&l,f>2047&&(55296>f||f>57343)&&(o=f));break;case 4:s=t[i+1],l=t[i+2],c=t[i+3],128===(192&s)&&128===(192&l)&&128===(192&c)&&(f=(15&a)<<18|(63&s)<<12|(63&l)<<6|63&c,f>65535&&1114112>f&&(o=f))}}null===o?(o=65533,u=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=u}return T(r)}function T(t){var e=t.length;if(Q>=e)return String.fromCharCode.apply(String,t);for(var n="",r=0;e>r;)n+=String.fromCharCode.apply(String,t.slice(r,r+=Q));return n}function O(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;n>i;i++)r+=String.fromCharCode(127&t[i]);return r}function N(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;n>i;i++)r+=String.fromCharCode(t[i]);return r}function L(t,e,n){var r=t.length;(!e||0>e)&&(e=0),(!n||0>n||n>r)&&(n=r);for(var i="",a=e;n>a;a++)i+=F(t[a]);return i}function C(t,e,n){for(var r=t.slice(e,n),i="",a=0;at)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function I(e,n,r,i,a,o){if(!t.isBuffer(e))throw new TypeError("buffer must be a Buffer instance");if(n>a||o>n)throw new RangeError("value is out of bounds");if(r+i>e.length)throw new RangeError("index out of range")}function D(t,e,n,r){0>e&&(e=65535+e+1);for(var i=0,a=Math.min(t.length-n,2);a>i;i++)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function U(t,e,n,r){0>e&&(e=4294967295+e+1);for(var i=0,a=Math.min(t.length-n,4);a>i;i++)t[n+i]=e>>>8*(r?i:3-i)&255}function P(t,e,n,r,i,a){if(e>i||a>e)throw new RangeError("value is out of bounds");if(n+r>t.length)throw new RangeError("index out of range");if(0>n)throw new RangeError("index out of range")}function z(t,e,n,r,i){return i||P(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),G.write(t,e,n,r,23,4),n+4}function j(t,e,n,r,i){return i||P(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),G.write(t,e,n,r,52,8),n+8}function q(t){if(t=$(t).replace(tt,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function $(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function F(t){return 16>t?"0"+t.toString(16):t.toString(16)}function Y(t,e){e=e||1/0;for(var n,r=t.length,i=null,a=[],o=0;r>o;o++){if(n=t.charCodeAt(o),n>55295&&57344>n){if(!i){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(e-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(56320>n){(e-=3)>-1&&a.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,128>n){if((e-=1)<0)break;a.push(n)}else if(2048>n){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(65536>n){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(1114112>n))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function H(t){for(var e=[],n=0;n>8,i=n%256,a.push(i),a.push(r);return a}function V(t){return W.toByteArray(q(t))}function X(t,e,n,r){for(var i=0;r>i&&!(i+n>=e.length||i>=t.length);i++)e[i+n]=t[i];return i}var W=n(15),G=n(16),Z=n(17);e.Buffer=t,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,t.poolSize=8192;var J={};t.TYPED_ARRAY_SUPPORT=void 0!==r.TYPED_ARRAY_SUPPORT?r.TYPED_ARRAY_SUPPORT:i(),t.TYPED_ARRAY_SUPPORT?(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array):(t.prototype.length=void 0,t.prototype.parent=void 0),t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,n){if(!t.isBuffer(e)||!t.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(e===n)return 0;for(var r=e.length,i=n.length,a=0,o=Math.min(r,i);o>a&&e[a]===n[a];)++a;return a!==o&&(r=e[a],i=n[a]),i>r?-1:r>i?1:0},t.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},t.concat=function(e,n){if(!Z(e))throw new TypeError("list argument must be an Array of Buffers.");if(0===e.length)return new t(0);var r;if(void 0===n)for(n=0,r=0;r0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},t.prototype.compare=function(e){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?0:t.compare(this,e)},t.prototype.indexOf=function(e,n){function r(t,e,n){for(var r=-1,i=0;n+i2147483647?n=2147483647:-2147483648>n&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(0>n&&(n=Math.max(this.length+n,0)),"string"==typeof e)return 0===e.length?-1:String.prototype.indexOf.call(this,e,n);if(t.isBuffer(e))return r(this,e,n);if("number"==typeof e)return t.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,e,n):r(this,[e],n);throw new TypeError("val must be string, number or Buffer")},t.prototype.get=function(t){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(t)},t.prototype.set=function(t,e){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(t,e)},t.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else if(isFinite(e))e=0|e,isFinite(n)?(n=0|n,void 0===r&&(r="utf8")):(r=n,n=void 0);else{var i=r;r=e,e=0|n,n=i}var a=this.length-e;if((void 0===n||n>a)&&(n=a),t.length>0&&(0>n||0>e)||e>this.length)throw new RangeError("attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return _(this,t,e,n);case"utf8":case"utf-8":return b(this,t,e,n);case"ascii":return M(this,t,e,n);case"binary":return w(this,t,e,n);case"base64":return k(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;t.prototype.slice=function(e,n){var r=this.length;e=~~e,n=void 0===n?r:~~n,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>n?(n+=r,0>n&&(n=0)):n>r&&(n=r),e>n&&(n=e);var i;if(t.TYPED_ARRAY_SUPPORT)i=t._augment(this.subarray(e,n));else{var a=n-e;i=new t(a,void 0);for(var o=0;a>o;o++)i[o]=this[o+e]}return i.length&&(i.parent=this.parent||this),i},t.prototype.readUIntLE=function(t,e,n){t=0|t,e=0|e,n||R(t,e,this.length);for(var r=this[t],i=1,a=0;++a0&&(i*=256);)r+=this[t+--e]*i;return r},t.prototype.readUInt8=function(t,e){return e||R(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||R(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||R(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||R(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||R(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,n){t=0|t,e=0|e,n||R(t,e,this.length);for(var r=this[t],i=1,a=0;++a=i&&(r-=Math.pow(2,8*e)),r},t.prototype.readIntBE=function(t,e,n){t=0|t,e=0|e,n||R(t,e,this.length);for(var r=e,i=1,a=this[t+--r];r>0&&(i*=256);)a+=this[t+--r]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*e)),a},t.prototype.readInt8=function(t,e){return e||R(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},t.prototype.readInt16LE=function(t,e){e||R(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt16BE=function(t,e){e||R(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt32LE=function(t,e){return e||R(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||R(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||R(t,4,this.length),G.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||R(t,4,this.length),G.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||R(t,8,this.length),G.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||R(t,8,this.length),G.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,n,r){t=+t,e=0|e,n=0|n,r||I(this,t,e,n,Math.pow(2,8*n),0);var i=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+i]=t/a&255;return e+n},t.prototype.writeUInt8=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=255&e,n+1},t.prototype.writeUInt16LE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):D(this,e,n,!0),n+2},t.prototype.writeUInt16BE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):D(this,e,n,!1),n+2},t.prototype.writeUInt32LE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=255&e):U(this,e,n,!0),n+4},t.prototype.writeUInt32BE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):U(this,e,n,!1),n+4},t.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e=0|e,!r){var i=Math.pow(2,8*n-1);I(this,t,e,n,i-1,-i)}var a=0,o=1,u=0>t?1:0;for(this[e]=255&t;++a>0)-u&255;return e+n},t.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e=0|e,!r){var i=Math.pow(2,8*n-1);I(this,t,e,n,i-1,-i)}var a=n-1,o=1,u=0>t?1:0;for(this[e+a]=255&t;--a>=0&&(o*=256);)this[e+a]=(t/o>>0)-u&255;return e+n},t.prototype.writeInt8=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[n]=255&e,n+1},t.prototype.writeInt16LE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):D(this,e,n,!0),n+2},t.prototype.writeInt16BE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):D(this,e,n,!1),n+2},t.prototype.writeInt32LE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):U(this,e,n,!0),n+4},t.prototype.writeInt32BE=function(e,n,r){return e=+e,n=0|n,r||I(this,e,n,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):U(this,e,n,!1),n+4},t.prototype.writeFloatLE=function(t,e,n){return z(this,t,e,!0,n)},t.prototype.writeFloatBE=function(t,e,n){return z(this,t,e,!1,n)},t.prototype.writeDoubleLE=function(t,e,n){return j(this,t,e,!0,n)},t.prototype.writeDoubleBE=function(t,e,n){return j(this,t,e,!1,n)},t.prototype.copy=function(e,n,r,i){if(r||(r=0),i||0===i||(i=this.length),n>=e.length&&(n=e.length),n||(n=0),i>0&&r>i&&(i=r),i===r)return 0;if(0===e.length||0===this.length)return 0;if(0>n)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>i)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-nr&&i>n)for(a=o-1;a>=0;a--)e[a+n]=this[a+r];else if(1e3>o||!t.TYPED_ARRAY_SUPPORT)for(a=0;o>a;a++)e[a+n]=this[a+r];else e._set(this.subarray(r,r+o),n);return o},t.prototype.fill=function(t,e,n){if(t||(t=0),e||(e=0),n||(n=this.length),e>n)throw new RangeError("end < start");if(n!==e&&0!==this.length){if(0>e||e>=this.length)throw new RangeError("start out of bounds");if(0>n||n>this.length)throw new RangeError("end out of bounds");var r;if("number"==typeof t)for(r=e;n>r;r++)this[r]=t;else{var i=Y(t.toString()),a=i.length;for(r=e;n>r;r++)this[r]=i[r%a]}return this}},t.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(t.TYPED_ARRAY_SUPPORT)return new t(this).buffer;for(var e=new Uint8Array(this.length),n=0,r=e.length;r>n;n+=1)e[n]=this[n];return e.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var K=t.prototype;t._augment=function(e){return e.constructor=t,e._isBuffer=!0,e._set=e.set,e.get=K.get,e.set=K.set,e.write=K.write,e.toString=K.toString,e.toLocaleString=K.toString,e.toJSON=K.toJSON,e.equals=K.equals,e.compare=K.compare,e.indexOf=K.indexOf,e.copy=K.copy,e.slice=K.slice,e.readUIntLE=K.readUIntLE,e.readUIntBE=K.readUIntBE,e.readUInt8=K.readUInt8,e.readUInt16LE=K.readUInt16LE,e.readUInt16BE=K.readUInt16BE,e.readUInt32LE=K.readUInt32LE,e.readUInt32BE=K.readUInt32BE,e.readIntLE=K.readIntLE,e.readIntBE=K.readIntBE,e.readInt8=K.readInt8,e.readInt16LE=K.readInt16LE,e.readInt16BE=K.readInt16BE,e.readInt32LE=K.readInt32LE,e.readInt32BE=K.readInt32BE,e.readFloatLE=K.readFloatLE,e.readFloatBE=K.readFloatBE,e.readDoubleLE=K.readDoubleLE,e.readDoubleBE=K.readDoubleBE,e.writeUInt8=K.writeUInt8,e.writeUIntLE=K.writeUIntLE,e.writeUIntBE=K.writeUIntBE,e.writeUInt16LE=K.writeUInt16LE,e.writeUInt16BE=K.writeUInt16BE,e.writeUInt32LE=K.writeUInt32LE,e.writeUInt32BE=K.writeUInt32BE,e.writeIntLE=K.writeIntLE,e.writeIntBE=K.writeIntBE,e.writeInt8=K.writeInt8,e.writeInt16LE=K.writeInt16LE,e.writeInt16BE=K.writeInt16BE,e.writeInt32LE=K.writeInt32LE,e.writeInt32BE=K.writeInt32BE,e.writeFloatLE=K.writeFloatLE,e.writeFloatBE=K.writeFloatBE,e.writeDoubleLE=K.writeDoubleLE,e.writeDoubleBE=K.writeDoubleBE,e.fill=K.fill,e.inspect=K.inspect,e.toArrayBuffer=K.toArrayBuffer,e};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,n(14).Buffer,function(){return this}())},function(t,e,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(t){"use strict";function e(t){var e=t.charCodeAt(0);return e===o||e===f?62:e===u||e===h?63:s>e?-1:s+10>e?e-s+26+26:c+26>e?e-c:l+26>e?e-l+26:void 0}function n(t){function n(t){l[f++]=t}var r,i,o,u,s,l;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var c=t.length;s="="===t.charAt(c-2)?2:"="===t.charAt(c-1)?1:0,l=new a(3*t.length/4-s),o=s>0?t.length-4:t.length;var f=0;for(r=0,i=0;o>r;r+=4,i+=3)u=e(t.charAt(r))<<18|e(t.charAt(r+1))<<12|e(t.charAt(r+2))<<6|e(t.charAt(r+3)),n((16711680&u)>>16),n((65280&u)>>8),n(255&u);return 2===s?(u=e(t.charAt(r))<<2|e(t.charAt(r+1))>>4,n(255&u)):1===s&&(u=e(t.charAt(r))<<10|e(t.charAt(r+1))<<4|e(t.charAt(r+2))>>2,n(u>>8&255),n(255&u)),l}function i(t){function e(t){return r.charAt(t)}function n(t){return e(t>>18&63)+e(t>>12&63)+e(t>>6&63)+e(63&t)}var i,a,o,u=t.length%3,s="";for(i=0,o=t.length-u;o>i;i+=3)a=(t[i]<<16)+(t[i+1]<<8)+t[i+2],s+=n(a);switch(u){case 1:a=t[t.length-1],s+=e(a>>2),s+=e(a<<4&63),s+="==";break;case 2:a=(t[t.length-2]<<8)+t[t.length-1],s+=e(a>>10),s+=e(a>>4&63),s+=e(a<<2&63),s+="="}return s}var a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),u="/".charCodeAt(0),s="0".charCodeAt(0),l="a".charCodeAt(0),c="A".charCodeAt(0),f="-".charCodeAt(0),h="_".charCodeAt(0);t.toByteArray=n,t.fromByteArray=i}(e)},function(t,e){e.read=function(t,e,n,r,i){var a,o,u=8*i-r-1,s=(1<>1,c=-7,f=n?i-1:0,h=n?-1:1,d=t[e+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=u;c>0;a=256*a+t[e+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=256*o+t[e+f],f+=h,c-=8);if(0===a)a=1-l;else{if(a===s)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,r),a-=l}return(d?-1:1)*o*Math.pow(2,a-r)},e.write=function(t,e,n,r,i,a){var o,u,s,l=8*a-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,p=r?1:-1,g=0>e||0===e&&0>1/e?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-o))<1&&(o--,s*=2),e+=o+f>=1?h/s:h*Math.pow(2,1-f),e*s>=2&&(o++,s/=2),o+f>=c?(u=0,o=c):o+f>=1?(u=(e*s-1)*Math.pow(2,i),o+=f):(u=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&u,d+=p,u/=256,i-=8);for(o=o<0;t[n+d]=255&o,d+=p,o/=256,l-=8);t[n+d-p]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){function r(t){var e=t.url;if(!e&&t.file)return d+t.file;if(t.baseURL&&!h.test(e)&&(c(e,"/")||"/"===t.baseURL[t.baseURL.length-1]||(e="/"+e),e=t.baseURL+e),!i.useXHR&&c(e,"//")&&(e=(t.defaultProtocol||"http")+":"+e),t.domainWhiteList){var r,a;if(i.useXHR){var o=document.createElement("a");o.href=e,""===o.host&&(o.href=o.href),r=o.hostname.toLowerCase(),a=window.location.hostname}else{var u=n(19).parse(e);r=u.hostname,a=null}if(a!==r){var s=t.domainWhiteList.some(function(t){var e=r.length-t.length;return t===r||e>1&&"."===r[e-1]&&r.lastIndexOf(t)===e});if(!s)throw"URL is not whitelisted: "+e}}return e}function i(t,e){return i.loader(t,e)}function a(t,e){var n,r=e||function(t){throw t};try{n=i.sanitizeUrl(t)}catch(a){return void r(a)}return n?i.useXHR?i.xhr(n,t,e):c(n,d)?i.file(n.slice(d.length),t,e):n.indexOf("://")<0?i.file(n,t,e):i.http(n,t,e):void r("Invalid URL: "+t.url)}function o(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function u(t,e,n){function r(){var t=u.status;!t&&o(u)||t>=200&&300>t||304===t?n(null,u.responseText):n(u,null)}var a=!!n,u=new XMLHttpRequest;if("undefined"==typeof XDomainRequest||"withCredentials"in u||!/^(http(s)?:)?\/\//.test(t)||(u=new XDomainRequest),a&&("onload"in u?u.onload=u.onerror=r:u.onreadystatechange=function(){u.readyState>3&&r()}),u.open("GET",t,a),u.setRequestHeader){var s=f.extend({},i.headers,e.headers);for(var l in s)u.setRequestHeader(l,s[l])}return u.send(),!a&&o(u)?u.responseText:void 0}function s(t,e,r){var i=n(20);return r?void i.readFile(t,r):i.readFileSync(t,"utf8")}function l(t,e,r){var a=f.extend({},i.headers,e.headers);if(!r)return n(21)("GET",t,{headers:a}).getBody();var o={url:t,encoding:null,gzip:!0,headers:a};n(22)(o,function(t,e,n){t||200!==e.statusCode?(t=t||"Load failed with response code "+e.statusCode+".",r(t,null)):r(null,n)})}function c(t,e){return null==t?!1:0===t.lastIndexOf(e,0)}var f=n(13),h=/^([A-Za-z]+:)?\/\//,d="file://";i.loader=a,i.sanitizeUrl=r,i.xhr=u,i.file=s,i.http=l,i.useXHR="undefined"!=typeof XMLHttpRequest,i.headers={},t.exports=i},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){function r(t,e){var n=e&&e.type||"json";return t=u[n](t,e),e&&e.parse&&i(t,e.parse),t}function i(t,e){var n,r,i,u,l,c,f=t.length;for(e="auto"===e?o.inferAll(t):a.duplicate(e),n=a.keys(e),r=n.map(function(t){var n=e[t];if(n&&0===n.indexOf("date:")){var r=n.split(":",2),i=r[1];if(!("'"===i[0]&&"'"===i[i.length-1]||'"'===i[0]&&'"'===i[i.length-1]))throw Error("Format pattern must be quoted: "+i);return i=i.slice(1,-1),i=s(i),function(t){return i.parse(t)}}if(!o.parsers[n])throw Error("Illegal format pattern: "+t+":"+n);return o.parsers[n]}),u=0,c=n.length;f>u;++u)for(i=t[u],l=0;c>l;++l)i[n[l]]=r[l](i[n[l]]);o.annotation(t,e)}var a=n(13),o=n(24),u=n(25),s=n(32).time;r.formats=u,t.exports=r},function(t,e,n){function r(t,e){return e?void(t[l]=e):t&&t[l]||null}function i(t,e){t=s.array(t),e=s.$(e);var n,r,i;if(t[l]&&(n=e(t[l]),s.isString(n)))return n;for(r=0,i=t.length;!s.isValid(n)&&i>r;++r)n=e?e(t[r]):t[r];return s.isDate(n)?"date":s.isNumber(n)?"number":s.isBoolean(n)?"boolean":s.isString(n)?"string":null}function a(t,e){return t.length?(e=e||s.keys(t[0]),e.reduce(function(e,n){return e[n]=i(t,n),e},{})):void 0}function o(t,e){t=s.array(t),e=s.$(e);var n,r,i,a=["boolean","integer","number","date"];for(n=0;n=l)return o;if(i)return i=!1,a;var e,n=c;if(34===t.charCodeAt(n)){for(var r=n;r++c;){var s=1;if(e=t.charCodeAt(c++),10===e)i=!0;else if(13===e)i=!0,10===t.charCodeAt(c)&&(++c,++s);else if(e!==u)continue;return t.slice(n,c-s)}return t.slice(n)}for(var r,i,a={},o={},s=[],l=t.length,c=0,f=0;(r=n())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=n();e&&null==(h=e(h,f++))||s.push(h)}return s},this.format=function(e,n){return null==n&&(n=i(e)),[n.map(a).join(t)].concat(e.map(function(e){return n.map(function(t){return a(e[t])}).join(t)})).join("\n")},this.formatRows=function(t){return t.map(e).join("\n")}}e.prototype=a.prototype;var o=e(","),u=e(" "),s="0.1.14";t.version=s,t.dsv=e,t.csv=o,t.tsv=u})},function(t,e,n){var r=n(13);t.exports=function(t,e){var n=r.isObject(t)&&!r.isBuffer(t)?t:JSON.parse(t);return e&&e.property&&(n=r.accessor(e.property)(n)),n}},function(t,e,n){var r=n(28),i=function(t,e){var n=i.topojson;if(null==n)throw Error("TopoJSON library not loaded.");var a,o=r(t,e);if(e&&e.feature){if(a=o.objects[e.feature])return n.feature(o,a).features;throw Error("Invalid TopoJSON object: "+e.feature)}if(e&&e.mesh){if(a=o.objects[e.mesh])return[n.mesh(o,o.objects[e.mesh])];throw Error("Invalid TopoJSON object: "+e.mesh)}throw Error("Missing TopoJSON feature or mesh parameter.")};i.topojson=n(30),t.exports=i},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(){}function n(t){if(!t)return e;var n,r,i=t.scale[0],a=t.scale[1],o=t.translate[0],u=t.translate[1];return function(t,e){e||(n=r=0),t[0]=(n+=t[0])*i+o,t[1]=(r+=t[1])*a+u}}function r(t){if(!t)return e;var n,r,i=t.scale[0],a=t.scale[1],o=t.translate[0],u=t.translate[1];return function(t,e){e||(n=r=0);var s=Math.round((t[0]-o)/i),l=Math.round((t[1]-u)/a);t[0]=s-n,t[1]=l-r,n=s,r=l}}function i(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function a(t,e){for(var n=0,r=t.length;r>n;){var i=n+r>>>1;t[i]t?~t:t],a=0,o=r.length;o>a;++a)e.push(n=r[a].slice()),c(n,a);0>t&&i(e,o)}function a(t){return t=t.slice(),c(t,0),t}function o(t){for(var e=[],n=0,i=t.length;i>n;++n)r(t[n],e);return e.length<2&&e.push(e[0].slice()),e}function u(t){for(var e=o(t);e.length<4;)e.push(e[0].slice());return e}function s(t){return t.map(u)}function l(t){var e=t.type;return"GeometryCollection"===e?{type:e,geometries:t.geometries.map(l)}:e in h?{type:e,coordinates:h[e](t)}:null}var c=n(t.transform),f=t.arcs,h={Point:function(t){return a(t.coordinates)},MultiPoint:function(t){return t.coordinates.map(a)},LineString:function(t){return o(t.arcs)},MultiLineString:function(t){return t.arcs.map(o)},Polygon:function(t){return s(t.arcs)},MultiPolygon:function(t){return t.arcs.map(s)}};return l(e)}function l(t,e){function n(e){var n,r=t.arcs[0>e?~e:e],i=r[0];return t.transform?(n=[0,0],r.forEach(function(t){n[0]+=t[0],n[1]+=t[1]})):n=r[r.length-1],0>e?[n,i]:[i,n]}function r(t,e){for(var n in t){var r=t[n];delete e[r.start],delete r.start,delete r.end,r.forEach(function(t){i[0>t?~t:t]=1}),u.push(r)}}var i={},a={},o={},u=[],s=-1;return e.forEach(function(n,r){var i,a=t.arcs[0>n?~n:n];a.length<3&&!a[1][0]&&!a[1][1]&&(i=e[++s],e[s]=n,e[r]=i)}),e.forEach(function(t){var e,r,i=n(t),u=i[0],s=i[1];if(e=o[u])if(delete o[e.end],e.push(t),e.end=s,r=a[s]){delete a[r.start];var l=r===e?e:e.concat(r);a[l.start=e.start]=o[l.end=r.end]=l}else a[e.start]=o[e.end]=e;else if(e=a[s])if(delete a[e.start],e.unshift(t),e.start=u,r=o[u]){delete o[r.end];var c=r===e?e:r.concat(e);a[c.start=r.start]=o[c.end=e.end]=c}else a[e.start]=o[e.end]=e;else e=[t],a[e.start=u]=o[e.end=s]=e}),r(o,a),r(a,o),e.forEach(function(t){i[0>t?~t:t]||u.push([t])}),u}function c(t){return s(t,f.apply(this,arguments))}function f(t,e,n){function r(t){var e=0>t?~t:t;(c[e]||(c[e]=[])).push({i:t,g:s})}function i(t){t.forEach(r)}function a(t){t.forEach(i)}function o(t){"GeometryCollection"===t.type?t.geometries.forEach(o):t.type in f&&(s=t,f[t.type](t.arcs))}var u=[];if(arguments.length>1){var s,c=[],f={LineString:i,MultiLineString:a,Polygon:a,MultiPolygon:function(t){t.forEach(a)}};o(e),c.forEach(arguments.length<3?function(t){u.push(t[0].i)}:function(t){n(t[0].g,t[t.length-1].g)&&u.push(t[0].i)})}else for(var h=0,d=t.arcs.length;d>h;++h)u.push(h);return{type:"MultiLineString",arcs:l(t,u)}}function h(t){var e=t[0],n=t[1],r=t[2];return Math.abs((e[0]-r[0])*(n[1]-e[1])-(e[0]-n[0])*(r[1]-e[1]))}function d(t){for(var e,n=-1,r=t.length,i=t[r-1],a=0;++ne?~e:e]||(i[e]=[])).push(t)})}),a.push(t)}function r(e){return Math.abs(d(s(t,{type:"Polygon",arcs:[e]}).coordinates[0]))}var i={},a=[],o=[];return e.forEach(function(t){"Polygon"===t.type?n(t.arcs):"MultiPolygon"===t.type&&t.arcs.forEach(n)}),a.forEach(function(t){if(!t._){var e=[],n=[t];for(t._=1,o.push(e);t=n.pop();)e.push(t),t.forEach(function(t){t.forEach(function(t){i[0>t?~t:t].forEach(function(t){t._||(t._=1,n.push(t))})})})}}),a.forEach(function(t){delete t._}),{type:"MultiPolygon",arcs:o.map(function(e){var n,a=[];if(e.forEach(function(t){t.forEach(function(t){t.forEach(function(t){i[0>t?~t:t].length<2&&a.push(t)})})}),a=l(t,a),(n=a.length)>1)for(var o,u,s=1,c=r(a[0]);n>s;++s)(o=r(a[s]))>c&&(u=a[0], +a[0]=a[s],a[s]=u,c=o);return a})}}function m(t){function e(t,e){t.forEach(function(t){0>t&&(t=~t);var n=i[t];n?n.push(e):i[t]=[e]})}function n(t,n){t.forEach(function(t){e(t,n)})}function r(t,e){"GeometryCollection"===t.type?t.geometries.forEach(function(t){r(t,e)}):t.type in u&&u[t.type](t.arcs,e)}var i={},o=t.map(function(){return[]}),u={LineString:e,MultiLineString:n,Polygon:n,MultiPolygon:function(t,e){t.forEach(function(t){n(t,e)})}};t.forEach(r);for(var s in i)for(var l=i[s],c=l.length,f=0;c>f;++f)for(var h=f+1;c>h;++h){var d,p=l[f],g=l[h];(d=o[p])[s=a(d,g)]!==g&&d.splice(s,0,g),(d=o[g])[s=a(d,p)]!==p&&d.splice(s,0,p)}return o}function v(t,e){return t[1][2]-e[1][2]}function y(){function t(t,e){for(;e>0;){var n=(e+1>>1)-1,i=r[n];if(v(t,i)>=0)break;r[i._=e]=i,r[t._=e=n]=t}}function e(t,e){for(;;){var n=e+1<<1,a=n-1,o=e,u=r[o];if(i>a&&v(r[a],u)<0&&(u=r[o=a]),i>n&&v(r[n],u)<0&&(u=r[o=n]),o===e)break;r[u._=e]=u,r[t._=e=o]=t}}var n={},r=[],i=0;return n.push=function(e){return t(r[e._=i]=e,i++),i},n.pop=function(){if(!(0>=i)){var t,n=r[0];return--i>0&&(t=r[i],e(r[t._=0]=t,0)),n}},n.remove=function(n){var a,o=n._;if(r[o]===n)return o!==--i&&(a=r[i],(v(a,n)<0?t:e)(r[a._=o]=a,o)),o},n}function x(t,e){function i(t){u.remove(t),t[1][2]=e(t),u.push(t)}var a=n(t.transform),o=r(t.transform),u=y();return e||(e=h),t.arcs.forEach(function(t){var n,r,s,l,c=[],f=0;for(r=0,s=t.length;s>r;++r)l=t[r],a(t[r]=[l[0],l[1],1/0],r);for(r=1,s=t.length-1;s>r;++r)n=t.slice(r-1,r+2),n[1][2]=e(n),c.push(n),u.push(n);for(r=0,s=c.length;s>r;++r)n=c[r],n.previous=c[r-1],n.next=c[r+1];for(;n=u.pop();){var h=n.previous,d=n.next;n[1][2]4&&"locale"+(t[0].toUpperCase()+t[1].toLowerCase()+t[3].toUpperCase()+t[4].toLowerCase())}function i(t){var e=x.isString(t)?M[r(t)]:M.locale(t);if(null==e)throw Error("Unrecognized locale: "+t);w=e}function a(t){var e=x.isString(t)?b[r(t)]:b.locale(t);if(null==e)throw Error("Unrecognized locale: "+t);k=e,g=m=v=y=null}function o(t,e){t.length||(t=[0]),null==e&&(e=10);var n=t[0],r=t[t.length-1];n>r&&(o=r,r=n,n=o);var i=r-n||(e=1,n||r||1),a=Math.pow(10,Math.floor(Math.log(i/e)/Math.LN10)),o=i/e/a;return o>=S?a*=10:o>=A?a*=5:o>=T&&(a*=2),[Math.ceil(n/a)*a,Math.floor(r/a)*a+a/2,a]}function u(t,e){return function(n){var r=t(n),i=r.indexOf(e);if(0>i)return r;for(var a=s(r,i),o=ai;)if("0"!==r[a]){++a;break}return r.slice(0,a)+o}}function s(t,e){var n,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>e;)if(n=t.charCodeAt(r),n>=48&&57>=n)return r+1}function l(t){var e=w.format(".1f")(1)[1];switch(null==t&&(t=","),t=M.formatSpecifier(t),null==t.precision&&(t.precision=12),t.type){case"%":t.precision-=2;break;case"e":t.precision-=1}return u(w.format(t),e)}function c(t,e,n){var r=o(t,e);switch(null==n&&(n=",f"),n=M.formatSpecifier(n),n.type){case"s":var i=Math.max(Math.abs(r[0]),Math.abs(r[1]));return null==n.precision&&(n.precision=M.precisionPrefix(r[2],i)),w.formatPrefix(n,i);case"":case"e":case"g":case"p":case"r":null==n.precision&&(n.precision=M.precisionRound(r[2],Math.max(Math.abs(r[0]),Math.abs(r[1])))-("e"===n.type));break;case"f":case"%":null==n.precision&&(n.precision=M.precisionFixed(r[2])-2*("%"===n.type))}return w.format(n)}function f(){var t=k.format,e=t(".%L"),n=t(":%S"),r=t("%I:%M"),i=t("%I %p"),a=t("%a %d"),o=t("%b %d"),u=t("%B"),s=t("%Y");return function(t){var l=+t;return(_.second(t)e-r?r:i},u.ceil=function(e){return t(e=new Date(e-1)),n(e,1),e},u.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},u.range=function(e,r,i){var a=[];if(e=new Date(e-1),r=new Date(+r),i=null==i?1:Math.floor(i),!(r>e&&i>0))return a;for(n(e,1),t(e),r>e&&a.push(new Date(+e));n(e,i),t(e),r>e;)a.push(new Date(+e));return a},u.filter=function(r){return e(function(e){for(;t(e),!r(e);)e.setTime(e-1)},function(t,e){for(;--e>=0;)for(;n(t,1),!r(t););})},r&&(u.count=function(e,n){return i.setTime(+e),a.setTime(+n),t(i),t(a),Math.floor(r(i,a))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(o?function(e){return o(e)%t===0}:function(e){return u.count(0,e)%t===0}):u:null}),u}function n(t){return e(function(e){e.setHours(0,0,0,0),e.setDate(e.getDate()-(e.getDay()+7-t)%7)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5})}function r(t){return e(function(e){e.setUTCHours(0,0,0,0),e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/6048e5})}var i=new Date,a=new Date,o=e(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});o.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?e(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):o:null};var u=e(function(t){t.setMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getSeconds()}),s=e(function(t){t.setSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getMinutes()}),l=e(function(t){t.setMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),c=e(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5},function(t){return t.getDate()-1}),f=n(0),h=n(1),d=n(2),p=n(3),g=n(4),m=n(5),v=n(6),y=e(function(t){t.setHours(0,0,0,0),t.setDate(1)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),x=e(function(t){t.setHours(0,0,0,0),t.setMonth(0,1)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}),_=e(function(t){t.setUTCMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),b=e(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getUTCMinutes()}),M=e(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),w=e(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),k=r(0),E=r(1),S=r(2),A=r(3),T=r(4),O=r(5),N=r(6),L=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCDate(1)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),C=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCMonth(0,1)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}),R=o.range,I=u.range,D=s.range,U=l.range,P=c.range,z=f.range,j=h.range,q=d.range,$=p.range,F=g.range,Y=m.range,H=v.range,B=f.range,V=y.range,X=x.range,W=o,G=R,Z=_.range,J=b.range,Q=M.range,K=w.range,tt=k.range,et=E.range,nt=S.range,rt=A.range,it=T.range,at=O.range,ot=N.range,ut=k.range,st=L.range,lt=C.range,ct="0.1.1";t.version=ct,t.milliseconds=R,t.seconds=I,t.minutes=D,t.hours=U,t.days=P,t.sundays=z,t.mondays=j,t.tuesdays=q,t.wednesdays=$,t.thursdays=F,t.fridays=Y,t.saturdays=H,t.weeks=B,t.months=V,t.years=X,t.utcMillisecond=W,t.utcMilliseconds=G,t.utcSeconds=Z,t.utcMinutes=J,t.utcHours=Q,t.utcDays=K,t.utcSundays=tt,t.utcMondays=et,t.utcTuesdays=nt,t.utcWednesdays=rt,t.utcThursdays=it,t.utcFridays=at,t.utcSaturdays=ot,t.utcWeeks=ut,t.utcMonths=st,t.utcYears=lt,t.millisecond=o,t.second=u,t.minute=s,t.hour=l,t.day=c,t.sunday=f,t.monday=h,t.tuesday=d,t.wednesday=p,t.thursday=g,t.friday=m,t.saturday=v,t.week=f,t.month=y,t.year=x,t.utcSecond=_,t.utcMinute=b,t.utcHour=M,t.utcDay=w,t.utcSunday=k,t.utcMonday=E,t.utcTuesday=S,t.utcWednesday=A,t.utcThursday=T,t.utcFriday=O,t.utcSaturday=N,t.utcWeek=k,t.utcMonth=L,t.utcYear=C,t.interval=e})},function(t,e,n){!function(t,r){r(e,n(33))}(this,function(t,e){"use strict";function n(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function r(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function i(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function a(t){function e(t,e){return function(n){var r,i,a,o=[],u=-1,s=0,l=t.length;for(n instanceof Date||(n=new Date(+n));++uo;){if(r>=s)return-1;if(i=e.charCodeAt(o++),37===i){if(i=e.charAt(o++),a=Pt[i in tt?e.charAt(o++):i],!a||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function u(t,e,n){var r=Et.exec(e.slice(n));return r?(t.p=St[r[0].toLowerCase()],n+r[0].length):-1}function K(t,e,n){var r=Ot.exec(e.slice(n));return r?(t.w=Nt[r[0].toLowerCase()],n+r[0].length):-1}function et(t,e,n){var r=At.exec(e.slice(n));return r?(t.w=Tt[r[0].toLowerCase()],n+r[0].length):-1}function nt(t,e,n){var r=Rt.exec(e.slice(n));return r?(t.m=It[r[0].toLowerCase()],n+r[0].length):-1}function rt(t,e,n){var r=Lt.exec(e.slice(n));return r?(t.m=Ct[r[0].toLowerCase()],n+r[0].length):-1}function it(t,e,n){return o(t,vt,e,n)}function at(t,e,n){return o(t,yt,e,n)}function ot(t,e,n){return o(t,xt,e,n)}function ut(t){return Mt[t.getDay()]}function st(t){return bt[t.getDay()]}function lt(t){return kt[t.getMonth()]}function ct(t){return wt[t.getMonth()]}function ft(t){return _t[+(t.getHours()>=12)]}function ht(t){return Mt[t.getUTCDay()]}function dt(t){return bt[t.getUTCDay()]}function pt(t){return kt[t.getUTCMonth()]}function gt(t){return wt[t.getUTCMonth()]}function mt(t){return _t[+(t.getUTCHours()>=12)]}var vt=t.dateTime,yt=t.date,xt=t.time,_t=t.periods,bt=t.days,Mt=t.shortDays,wt=t.months,kt=t.shortMonths,Et=s(_t),St=l(_t),At=s(bt),Tt=l(bt),Ot=s(Mt),Nt=l(Mt),Lt=s(wt),Ct=l(wt),Rt=s(kt),It=l(kt),Dt={a:ut,A:st,b:lt,B:ct,c:null,d:k,e:k,H:E,I:S,j:A,L:T,m:O,M:N,p:ft,S:L,U:C,w:R,W:I,x:null,X:null,y:D,Y:U,Z:P,"%":Q},Ut={a:ht,A:dt,b:pt,B:gt,c:null,d:z,e:z,H:j,I:q,j:$,L:F,m:Y,M:H,p:mt,S:B,U:V,w:X,W:W,x:null,X:null,y:G,Y:Z,Z:J,"%":Q},Pt={a:K,A:et,b:nt,B:rt,c:it,d:v,e:v,H:x,I:x,j:y,L:M,m:m,M:_,p:u,S:b,U:f,w:c,W:h,x:at,X:ot,y:p,Y:d,Z:g,"%":w};return Dt.x=e(yt,Dt),Dt.X=e(xt,Dt),Dt.c=e(vt,Dt),Ut.x=e(yt,Ut),Ut.X=e(xt,Ut),Ut.c=e(vt,Ut),{format:function(t){var r=e(t+="",Dt);return r.parse=a(t,n),r.toString=function(){return t},r},utcFormat:function(t){var n=e(t+="",Ut);return n.parse=a(t,r),n.toString=function(){return t},n}}}function o(t,e,n){var r=0>t?"-":"",i=(r?-t:t)+"",a=i.length;return r+(n>a?new Array(n-a+1).join(e)+i:i)}function u(t){return t.replace(rt,"\\$&")}function s(t){return new RegExp("^(?:"+t.map(u).join("|")+")","i")}function l(t){for(var e={},n=-1,r=t.length;++n68?1900:2e3),n+r[0].length):-1}function g(t,e,n){var r=/^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function m(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function v(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function y(t,e,n){var r=et.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function x(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function _(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function b(t,e,n){var r=et.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function M(t,e,n){var r=et.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function w(t,e,n){var r=nt.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function k(t,e){return o(t.getDate(),e,2)}function E(t,e){return o(t.getHours(),e,2)}function S(t,e){return o(t.getHours()%12||12,e,2)}function A(t,n){return o(1+e.day.count(e.year(t),t),n,3)}function T(t,e){return o(t.getMilliseconds(),e,3)}function O(t,e){return o(t.getMonth()+1,e,2)}function N(t,e){return o(t.getMinutes(),e,2)}function L(t,e){return o(t.getSeconds(),e,2)}function C(t,n){return o(e.sunday.count(e.year(t),t),n,2)}function R(t){return t.getDay()}function I(t,n){return o(e.monday.count(e.year(t),t),n,2)}function D(t,e){return o(t.getFullYear()%100,e,2)}function U(t,e){return o(t.getFullYear()%1e4,e,4)}function P(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+o(e/60|0,"0",2)+o(e%60,"0",2)}function z(t,e){return o(t.getUTCDate(),e,2)}function j(t,e){return o(t.getUTCHours(),e,2)}function q(t,e){return o(t.getUTCHours()%12||12,e,2)}function $(t,n){return o(1+e.utcDay.count(e.utcYear(t),t),n,3)}function F(t,e){return o(t.getUTCMilliseconds(),e,3)}function Y(t,e){return o(t.getUTCMonth()+1,e,2)}function H(t,e){return o(t.getUTCMinutes(),e,2)}function B(t,e){return o(t.getUTCSeconds(),e,2)}function V(t,n){return o(e.utcSunday.count(e.utcYear(t),t),n,2)}function X(t){return t.getUTCDay()}function W(t,n){return o(e.utcMonday.count(e.utcYear(t),t),n,2)}function G(t,e){return o(t.getUTCFullYear()%100,e,2)}function Z(t,e){return o(t.getUTCFullYear()%1e4,e,4)}function J(){return"+0000"}function Q(){return"%"}function K(t){return t.toISOString()}var tt={"-":"",_:" ",0:"0"},et=/^\s*\d+/,nt=/^%/,rt=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,it=a({dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",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"]}),at=a({dateTime:"%A, %e de %B de %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],shortDays:["dg.","dl.","dt.","dc.","dj.","dv.","ds."],months:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],shortMonths:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."]}),ot=a({dateTime:"%A, der %e. %B %Y, %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"]}),ut=a({dateTime:"%A, der %e. %B %Y, %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"]}),st=a({dateTime:"%a %b %e %X %Y",date:"%Y-%m-%d",time:"%H:%M:%S",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"]}),lt=a({dateTime:"%a %e %b %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",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"]}),ct=a({dateTime:"%A, %e de %B de %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],shortDays:["dom","lun","mar","mié","jue","vie","sáb"],months:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],shortMonths:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"]}),ft=a({dateTime:"%A, %-d. %Bta %Y klo %X",date:"%-d.%-m.%Y",time:"%H:%M:%S",periods:["a.m.","p.m."],days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],shortDays:["Su","Ma","Ti","Ke","To","Pe","La"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],shortMonths:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"]}),ht=a({dateTime:"%a %e %b %Y %X",date:"%Y-%m-%d",time:"%H:%M:%S",periods:["",""],days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],shortDays:["dim","lun","mar","mer","jeu","ven","sam"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],shortMonths:["jan","fév","mar","avr","mai","jui","jul","aoû","sep","oct","nov","déc"]}),dt=a({dateTime:"%A, le %e %B %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],shortDays:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],shortMonths:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."]}),pt=a({dateTime:"%A, %e ב%B %Y %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],shortDays:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],shortMonths:["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"]}),gt=a({dateTime:"%Y. %B %-e., %A %X",date:"%Y. %m. %d.",time:"%H:%M:%S",periods:["de.","du."],days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],shortDays:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],shortMonths:["jan.","feb.","már.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."]}),mt=a({dateTime:"%A %e %B %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],shortDays:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],shortMonths:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"]}),vt=a({dateTime:"%Y %b %e %a %X",date:"%Y/%m/%d",time:"%H:%M:%S",periods:["AM","PM"],days:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],shortDays:["日","月","火","水","木","金","土"],months:["睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走"],shortMonths:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]}),yt=a({dateTime:"%Y/%m/%d %a %X",date:"%Y/%m/%d",time:"%H:%M:%S",periods:["오전","오후"],days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],shortDays:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],shortMonths:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}),xt=a({dateTime:"%A, %e %B %Y г. %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["недела","понеделник","вторник","среда","четврток","петок","сабота"],shortDays:["нед","пон","вто","сре","чет","пет","саб"],months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],shortMonths:["јан","фев","мар","апр","мај","јун","јул","авг","сеп","окт","ное","дек"]}),_t=a({dateTime:"%a %e %B %Y %T",date:"%d-%m-%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],shortDays:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],shortMonths:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"]}),bt=a({dateTime:"%A, %e %B %Y, %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],shortDays:["Niedz.","Pon.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],shortMonths:["Stycz.","Luty","Marz.","Kwie.","Maj","Czerw.","Lipc.","Sierp.","Wrz.","Paźdz.","Listop.","Grudz."]}),Mt=a({dateTime:"%A, %e de %B de %Y. %X",date:"%d/%m/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],shortDays:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],shortMonths:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"]}),wt=a({dateTime:"%A, %e %B %Y г. %X",date:"%d.%m.%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],shortDays:["вс","пн","вт","ср","чт","пт","сб"],months:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],shortMonths:["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек"]}),kt=a({dateTime:"%A den %d %B %Y %X",date:"%Y-%m-%d",time:"%H:%M:%S",periods:["fm","em"],days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],shortDays:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"]}),Et=a({dateTime:"%a %b %e %X %Y",date:"%Y/%-m/%-d",time:"%H:%M:%S",periods:["上午","下午"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortDays:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],shortMonths:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]}),St="%Y-%m-%dT%H:%M:%S.%LZ";K.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},K.toString=function(){return St};var At=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?K:it.utcFormat(St),Tt=it.format,Ot=it.utcFormat,Nt="0.2.1";t.version=Nt,t.format=Tt,t.utcFormat=Ot,t.locale=a,t.localeCaEs=at,t.localeDeCh=ot,t.localeDeDe=ut,t.localeEnCa=st,t.localeEnGb=lt,t.localeEnUs=it,t.localeEsEs=ct,t.localeFiFi=ft,t.localeFrCa=ht,t.localeFrFr=dt,t.localeHeIl=pt,t.localeHuHu=gt,t.localeItIt=mt,t.localeJaJp=vt,t.localeKoKr=yt,t.localeMkMk=xt,t.localeNlNl=_t,t.localePlPl=bt,t.localePtBr=Mt,t.localeRuRu=wt,t.localeSvSe=kt,t.localeZhCn=Et,t.isoFormat=At})},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function n(t){return t=e(Math.abs(t)),t?t[1]:NaN}function r(t,e){return function(n,r){for(var i=n.length,a=[],o=0,u=t[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),a.push(n.substring(i-=u,i+u)),!((s+=u+1)>r));)u=t[o=(o+1)%t.length];return a.reverse().join(e)}}function i(t,n){var r=e(t,n);if(!r)return t+"";var i=r[0],a=r[1],o=a-(p=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1,u=i.length;return o===u?i:o>u?i+new Array(o-u+1).join("0"):o>0?i.slice(0,o)+"."+i.slice(o):"0."+new Array(1-o).join("0")+e(t,Math.max(0,n+o-1))[0]}function a(t,n){var r=e(t,n);if(!r)return t+"";var i=r[0],a=r[1];return 0>a?"0."+new Array(-a).join("0")+i:i.length>a+1?i.slice(0,a+1)+"."+i.slice(a+1):i+new Array(a-i.length+2).join("0")}function o(t,e){t=t.toPrecision(e);t:for(var n,r=t.length,i=1,a=-1;r>i;++i)switch(t[i]){case".":a=n=i;break;case"0":0===a&&(a=i),n=i;break;case"e":break t;default:a>0&&(a=0)}return a>0?t.slice(0,a)+t.slice(n+1):t}function u(t){return new s(t)}function s(t){if(!(e=m.exec(t)))throw new Error("invalid format: "+t);var e,n=e[1]||" ",r=e[2]||">",i=e[3]||"-",a=e[4]||"",o=!!e[5],u=e[6]&&+e[6],s=!!e[7],l=e[8]&&+e[8].slice(1),c=e[9]||"";"n"===c?(s=!0,c="g"):g[c]||(c=""),(o||"0"===n&&"="===r)&&(o=!0,n="0",r="="),this.fill=n,this.align=r,this.sign=i,this.symbol=a,this.zero=o,this.width=u,this.comma=s,this.precision=l,this.type=c}function l(t){return t}function c(t){function e(t){t=u(t);var e=t.fill,n=t.align,r=t.sign,i=t.symbol,l=t.zero,c=t.width,f=t.comma,h=t.precision,d=t.type,m="$"===i?o[0]:"#"===i&&/[boxX]/.test(d)?"0"+d.toLowerCase():"",y="$"===i?o[1]:/[%p]/.test(d)?"%":"",x=g[d],_=!d||/[defgprs%]/.test(d);return h=null==h?d?6:12:/[gprs]/.test(d)?Math.max(1,Math.min(21,h)):Math.max(0,Math.min(20,h)),function(t){var i=m,o=y;if("c"===d)o=x(t)+o,t="";else{t=+t;var u=(0>t||0>1/t)&&(t*=-1,!0);if(t=x(t,h),u){var g,b=-1,M=t.length;for(u=!1;++b48&&58>g||"x"===d&&g>96&&103>g||"X"===d&&g>64&&71>g){u=!0;break}}if(i=(u?"("===r?r:"-":"-"===r||"("===r?"":r)+i,o=o+("s"===d?v[8+p/3]:"")+(u&&"("===r?")":""),_)for(var g,b=-1,M=t.length;++bg||g>57){o=(46===g?s+t.slice(b+1):t.slice(b))+o,t=t.slice(0,b);break}}f&&!l&&(t=a(t,1/0));var w=i.length+t.length+o.length,k=c>w?new Array(c-w+1).join(e):"";switch(f&&l&&(t=a(k+t,k.length?c-o.length:1/0),k=""),n){case"<":return i+t+o+k;case"=":return i+k+t+o;case"^":return k.slice(0,w=k.length>>1)+i+t+o+k.slice(w)}return k+i+t+o}}function i(t,r){var i=e((t=u(t),t.type="f",t)),a=3*Math.max(-8,Math.min(8,Math.floor(n(r)/3))),o=Math.pow(10,-a),s=v[8+a/3];return function(t){return i(o*t)+s}}var a=t.grouping&&t.thousands?r(t.grouping,t.thousands):l,o=t.currency,s=t.decimal;return{format:e,formatPrefix:i}}function f(t){return Math.max(0,-n(Math.abs(t)))}function h(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(n(e)/3)))-n(Math.abs(t)))}function d(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,n(e)-n(t))+1}var p,g={"":o,"%":function(t,e){return(100*t).toFixed(e)},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,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return a(100*t,e)},r:a,s:i,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},m=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;s.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 v=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],y=c({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),x=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),_=c({decimal:",",thousands:" ",grouping:[3],currency:[""," Kč"]}),b=c({decimal:",",thousands:"'",grouping:[3],currency:[""," CHF"]}),M=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),w=c({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),k=c({decimal:".",thousands:",",grouping:[3],currency:["£",""]}),E=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),S=c({decimal:",",thousands:" ",grouping:[3],currency:[""," €"]}),A=c({decimal:",",thousands:" ",grouping:[3],currency:["","$"]}),T=c({decimal:",",thousands:".",grouping:[3],currency:[""," €"]}),O=c({decimal:".",thousands:",",grouping:[3],currency:["₪",""]}),N=c({decimal:",",thousands:" ",grouping:[3],currency:[""," Ft"]}),L=c({decimal:",",thousands:".",grouping:[3],currency:["€",""]}),C=c({decimal:".",thousands:",",grouping:[3],currency:["","円"]}),R=c({decimal:".",thousands:",",grouping:[3],currency:["₩",""]}),I=c({decimal:",",thousands:".",grouping:[3],currency:[""," ден."]}),D=c({decimal:",",thousands:".",grouping:[3],currency:["€ ",""]}),U=c({decimal:",",thousands:".",grouping:[3],currency:["","zł"]}),P=c({decimal:",",thousands:".",grouping:[3],currency:["R$",""]}),z=c({decimal:",",thousands:" ",grouping:[3],currency:[""," руб."]}),j=c({decimal:",",thousands:" ",grouping:[3],currency:["","SEK"]}),q=c({decimal:".",thousands:",",grouping:[3],currency:["¥",""]}),$=y.format,F=y.formatPrefix,Y="0.4.2";t.version=Y,t.format=$,t.formatPrefix=F,t.locale=c,t.localeCaEs=x,t.localeCsCz=_,t.localeDeCh=b,t.localeDeDe=M,t.localeEnCa=w,t.localeEnGb=k,t.localeEnUs=y,t.localeEsEs=E,t.localeFiFi=S,t.localeFrCa=A,t.localeFrFr=T,t.localeHeIl=O,t.localeHuHu=N,t.localeItIt=L,t.localeJaJp=C,t.localeKoKr=R,t.localeMkMk=I,t.localeNlNl=D,t.localePlPl=U,t.localePtBr=P, t.localeRuRu=z,t.localeSvSe=j,t.localeZhCn=q,t.formatSpecifier=u,t.precisionFixed=f,t.precisionPrefix=h,t.precisionRound=d})},function(t,e,n){function r(){this._cells={},this._aggr=[],this._stream=!1}function i(t){if(a.isArray(t))return t;if(null==t)return[];var e,n,r=[];for(e in t)n=a.array(t[e]),r.push({name:e,ops:n});return r}var a=n(13),o=n(37),u=n(40),s=r.Flags={ADD_CELL:1,MOD_CELL:2},l=r.prototype;l.stream=function(t){return null==t?this._stream:(this._stream=!!t,this._aggr=[],this)},l.key=function(t){return null==t?this._key:(this._key=a.$(t),this)},l.groupby=function(t){return this._dims=a.array(t).map(function(t,e){if(t=a.isString(t)?{name:t,get:a.$(t)}:a.isFunction(t)?{name:a.name(t)||t.name||"_"+e,get:t}:t.name&&a.isFunction(t.get)?t:null,null==t)throw"Invalid groupby argument: "+t;return t}),this.clear()},l.summarize=function(t){t=i(t),this._count=!0;var e,n,r,u,s,l,c,f=this._aggr=[];for(r=0;re;++e)i+="|"+n[e].get(t);return i},l._cell=function(t){var e=this._dims.length?this._cellkey(t):"";return this._cells[e]||(this._cells[e]=this._newcell(t,e))},l._newcell=function(t,e){var n,r={num:0,tuple:this._newtuple(t,e),flag:s.ADD_CELL,aggs:{}},i=this._aggr;for(n=0;ne;++e)i[r[e].name]=r[e].get(t);return this._ingest(i)},l._ingest=a.identity,l._add=function(t){var e,n=this._cell(t),r=this._aggr;if(n.num+=1,!this._count)for(n.collect&&n.data.add(t),e=0;e0){for(t.collect&&t.data.values(),e=0;e 1 ? this.dev / (this.valid-1) : 0",req:["mean"],idx:1}),variancep:r({name:"variancep",set:"this.valid > 1 ? this.dev / this.valid : 0",req:["variance"],idx:2}),stdev:r({name:"stdev",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : 0",req:["variance"],idx:2}),stdevp:r({name:"stdevp",set:"this.valid > 1 ? Math.sqrt(this.dev / this.valid) : 0",req:["variance"],idx:2}),median:r({name:"median",set:"cell.data.q2(this.get)",req:["values"],idx:3}),q1:r({name:"q1",set:"cell.data.q1(this.get)",req:["values"],idx:3}),q3:r({name:"q3",set:"cell.data.q3(this.get)",req:["values"],idx:3}),distinct:r({name:"distinct",set:"this.distinct(cell.data.values(), this.get)",req:["values"],idx:3}),argmin:r({name:"argmin",add:"if (v < this.min) this.argmin = t;",rem:"if (v <= this.min) this.argmin = null;",set:"this.argmin = this.argmin || cell.data.argmin(this.get)",req:["min"],str:["values"],idx:3}),argmax:r({name:"argmax",add:"if (v > this.max) this.argmax = t;",rem:"if (v >= this.max) this.argmax = null;",set:"this.argmax = this.argmax || cell.data.argmax(this.get)",req:["max"],str:["values"],idx:3}),min:r({name:"min",init:"this.min = +Infinity;",add:"if (v < this.min) this.min = v;",rem:"if (v <= this.min) this.min = NaN;",set:"this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)",str:["values"],idx:4}),max:r({name:"max",init:"this.max = -Infinity;",add:"if (v > this.max) this.max = v;",rem:"if (v >= this.max) this.max = NaN;",set:"this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)",str:["values"],idx:4}),modeskew:r({name:"modeskew",set:"this.dev===0 ? 0 : (this.mean - cell.data.q2(this.get)) / Math.sqrt(this.dev/(this.valid-1))",req:["mean","stdev","median"],idx:5})};u.create=a,t.exports=u},function(t,e,n){function r(t,e,n){var r=t&&t.nullh||0,i=s.random.normal(0,1),a=l.mean(e,n),o=l.stdev(e,n)/Math.sqrt(l.count.valid(e,n));if(0===o)return a-r===0?1:0;var u=(a-r)/o;return 2*i.cdf(-Math.abs(u))}function i(t,e,n,r){var i,a=r?e.map(o.$(n)):e,u=r?e.map(o.$(r)):n,s=l.count(a),c=l.count(u),f=Array();if(s!==c)throw Error("Array lengths must match.");for(i=0;s>i;++i)o.isValid(a[i])&&o.isValid(u[i])&&f.push(a[i]-u[i]);return l.z.test(f,t&&t.nullh||0)}function a(t,e,n,r){var i=r?e.map(o.$(n)):e,a=r?e.map(o.$(r)):n,u=l.count.valid(i),c=l.count.valid(a),f=s.random.normal(0,1),h=l.mean(i)-l.mean(a)-(t&&t.nullh||0),d=Math.sqrt(l.variance(i)/u+l.variance(a)/c);if(0===d)return 0===h?1:0;var p=h/d;return 2*f.cdf(-Math.abs(p))}var o=n(13),u=n(24),s=n(39),l=t.exports;l.unique=function(t,e,n){e=o.$(e),n=n||[];var r,i,a,u={};for(i=0,a=t.length;a>i;++i)r=e?e(t[i]):t[i],r in u||(u[r]=1,n.push(r));return n},l.count=function(t){return t&&t.length||0},l.count.valid=function(t,e){e=o.$(e);var n,r,i,a=0;for(r=0,i=t.length;i>r;++r)n=e?e(t[r]):t[r],o.isValid(n)&&(a+=1);return a},l.count.missing=function(t,e){e=o.$(e);var n,r,i,a=0;for(r=0,i=t.length;i>r;++r)n=e?e(t[r]):t[r],null==n&&(a+=1);return a},l.count.distinct=function(t,e){e=o.$(e);var n,r,i,a={},u=0;for(r=0,i=t.length;i>r;++r)n=e?e(t[r]):t[r],n in a||(a[n]=1,u+=1);return u},l.count.map=function(t,e){e=o.$(e);var n,r,i,a={};for(r=0,i=t.length;i>r;++r)n=e?e(t[r]):t[r],a[n]=n in a?a[n]+1:1;return a},l.median=function(t,e){return e&&(t=t.map(o.$(e))),t=t.filter(o.isValid).sort(o.cmp),l.quantile(t,.5)},l.quartile=function(t,e){e&&(t=t.map(o.$(e))),t=t.filter(o.isValid).sort(o.cmp);var n=l.quantile;return[n(t,.25),n(t,.5),n(t,.75)]},l.quantile=function(t,e,n){void 0===n&&(n=e,e=o.identity),e=o.$(e);var r=(t.length-1)*n+1,i=Math.floor(r),a=+e(t[i-1]),u=r-i;return u?a+u*(e(t[i])-a):a},l.sum=function(t,e){e=o.$(e);for(var n,r=0,i=0,a=t.length;a>i;++i)n=e?e(t[i]):t[i],o.isValid(n)&&(r+=n);return r},l.mean=function(t,e){e=o.$(e);var n,r,i,a,u,s=0;for(r=0,a=0,i=t.length;i>r;++r)u=e?e(t[r]):t[r],o.isValid(u)&&(n=u-s,s+=n/++a);return s},l.mean.geometric=function(t,e){e=o.$(e);var n,r,i,a,u=1;for(a=0,n=0,r=t.length;r>a;++a)if(i=e?e(t[a]):t[a],o.isValid(i)){if(0>=i)throw Error("Geometric mean only defined for positive values.");u*=i,++n}return u=n>0?Math.pow(u,1/n):0},l.mean.harmonic=function(t,e){e=o.$(e);var n,r,i,a,u=0;for(a=0,n=0,r=t.length;r>a;++a)i=e?e(t[a]):t[a],o.isValid(i)&&(u+=1/i,++n);return n/u},l.variance=function(t,e){if(e=o.$(e),!o.isArray(t)||t.length<2)return 0;var n,r,i,a,u=0,s=0;for(r=0,i=0;ra;++a)if(i=e?e(t[a]):t[a],o.isValid(i)){n=r=i;break}for(;u>a;++a)i=e?e(t[a]):t[a],o.isValid(i)&&(n>i&&(n=i),i>r&&(r=i));return[n,r]},l.extent.index=function(t,e){e=o.$(e);var n,r,i,a,u=-1,s=-1,l=t.length;for(a=0;l>a;++a)if(i=e?e(t[a]):t[a],o.isValid(i)){n=r=i,u=s=a;break}for(;l>a;++a)i=e?e(t[a]):t[a],o.isValid(i)&&(n>i&&(n=i,u=a),i>r&&(r=i,s=a));return[u,s]},l.dot=function(t,e,n){var r,i,a=0;if(n)for(e=o.$(e),n=o.$(n),r=0;ra;++a)i=u?e(s[a])-n(l[a]):s[a]-l[a],d+=f?i*i:Math.pow(Math.abs(i),c);return f?Math.sqrt(d):Math.pow(d,1/c)},l.cohensd=function(t,e,n){var r=n?t.map(o.$(e)):t,i=n?t.map(o.$(n)):e,a=l.mean(r),u=l.mean(i),s=l.count.valid(r),c=l.count.valid(i);if(0>=s+c-2)return 0;var f=l.variance(r),h=l.variance(i),d=Math.sqrt(((s-1)*f+(c-1)*h)/(s+c-2));return 0===d?0:(a-u)/d},l.covariance=function(t,e,n){var r,i,a,u,s,c=n?t.map(o.$(e)):t,f=n?t.map(o.$(n)):e,h=c.length,d=l.mean(c),p=l.mean(f),g=0,m=0;if(h!==f.length)throw Error("Input lengths must match.");for(r=0;h>r;++r)if(i=c[r],u=o.isValid(i),a=f[r],s=o.isValid(a),u&&s)g+=(i-d)*(a-p),++m;else if(u||s)throw Error("Valid values must align.");return g/(m-1)},l.rank=function(t,e){e=o.$(e)||o.identity;var n,r,i,a=t.map(function(t,n){return{idx:n,val:e(t)}}).sort(o.comparator("val")),u=t.length,s=Array(u),l=-1,c={};for(n=0;u>n;++n){if(r=a[n].val,0>l&&c===r)l=n-1;else if(l>-1&&c!==r){for(i=1+(n-1+l)/2;n>l;++l)s[a[l].idx]=i;l=-1}s[a[n].idx]=n+1,c=r}if(l>-1)for(i=1+(u-1+l)/2;u>l;++l)s[a[l].idx]=i;return s},l.cor=function(t,e,n){var r=n;n=r?t.map(o.$(n)):e,e=r?t.map(o.$(e)):t;var i=l.dot(e,n),a=l.mean(e),u=l.mean(n),s=l.stdev(e),c=l.stdev(n),f=t.length;return(i-f*a*u)/((f-1)*s*c)},l.cor.rank=function(t,e,n){var r,i,a,o=n?l.rank(t,e):l.rank(t),u=n?l.rank(t,n):l.rank(e),s=t.length;for(r=0,i=0;s>r;++r)a=o[r]-u[r],i+=a*a;return 1-6*i/(s*(s*s-1))},l.cor.dist=function(t,e,n){var r,i,a,u,s=n?t.map(o.$(e)):t,c=n?t.map(o.$(n)):e,f=l.dist.mat(s),h=l.dist.mat(c),d=f.length;for(r=0,i=0,a=0,u=0;d>r;++r)i+=f[r]*f[r],a+=h[r]*h[r],u+=f[r]*h[r];return Math.sqrt(u/Math.sqrt(i*a))},l.linearRegression=function(t,e,n){var r,i,a=n?t.map(o.$(e)):t,u=n?t.map(o.$(n)):e,s=a.length,c=l.covariance(a,u),f=l.stdev(a),h=l.stdev(u),d=c/(f*f),p=l.mean(u)-d*l.mean(a),g={slope:d,intercept:p,R:c/(f*h),rss:0};for(i=0;s>i;++i)o.isValid(a[i])&&o.isValid(u[i])&&(r=d*a[i]+p-u[i],g.rss+=r*r);return g},l.bootstrap={},l.bootstrap.ci=function(t,e,n,r,i){var a,u,c,f,h,d,p;for(o.isFunction(e)||o.isString(e)?(a=t.map(o.$(e)),u=n,c=r,f=i):(a=t,u=e,c=n,f=r),u=u?+u:1e3,c=c||.05,h=s.random.bootstrap(a,f),p=0,d=Array(u);u>p;++p)d[p]=l.mean(h.samples(a.length));return d.sort(o.numcmp),[l.quantile(d,c/2),l.quantile(d,1-c/2)]},l.z={},l.z.ci=function(t,e,n){var r=t,i=e;(o.isFunction(e)||o.isString(e))&&(r=t.map(o.$(e)),i=n),i=i||.05;var a=.05===i?1.96:s.random.normal(0,1).icdf(1-i/2),u=l.mean(r),c=l.stdev(r)/Math.sqrt(l.count.valid(r));return[u-a*c,u+a*c]},l.z.test=function(t,e,n,u){return o.isFunction(n)||o.isString(n)?(u&&u.paired?i:a)(u,t,e,n):o.isArray(e)?(n&&n.paired?i:a)(n,t,e):o.isFunction(e)||o.isString(e)?r(n,t,e):r(e,t)},l.dist.mat=function(t){var e,n,r,i=t.length,a=i*i,o=Array(a),u=s.zeros(i),l=0;for(n=0;i>n;++n)for(o[n*i+n]=0,r=n+1;i>r;++r)o[n*i+r]=e=Math.abs(t[n]-t[r]),o[r*i+n]=e,u[n]+=e,u[r]+=e;for(n=0;i>n;++n)l+=u[n],u[n]/=i;for(l/=a,n=0;i>n;++n)for(r=n;i>r;++r)o[n*i+r]+=l-u[n]-u[r],o[r*i+n]=o[n*i+r];return o},l.entropy=function(t,e){e=o.$(e);var n,r,i=0,a=0,u=t.length;for(n=0;u>n;++n)i+=e?e(t[n]):t[n];if(0===i)return 0;for(n=0;u>n;++n)r=(e?e(t[n]):t[n])/i,r&&(a+=r*Math.log(r));return-a/Math.LN2},l.mutual=function(t,e,n,r){var i,a,u,s=r?t.map(o.$(e)):t,l=r?t.map(o.$(n)):e,c=r?t.map(o.$(r)):n,f={},h={},d=c.length,p=0,g=0,m=0;for(u=0;d>u;++u)f[s[u]]=0,h[l[u]]=0;for(u=0;d>u;++u)f[s[u]]+=c[u],h[l[u]]+=c[u],p+=c[u];for(a=1/(p*Math.LN2),u=0;d>u;++u)0!==c[u]&&(i=p*c[u]/(f[s[u]]*h[l[u]]),g+=c[u]*a*Math.log(i),m+=c[u]*a*Math.log(c[u]/p));return[g,1+g/m]},l.mutual.info=function(t,e,n,r){return l.mutual(t,e,n,r)[0]},l.mutual.dist=function(t,e,n,r){return l.mutual(t,e,n,r)[1]},l.profile=function(t,e){var n,r,i,a,s,c=0,f=0,h=0,d=0,p=null,g=null,m=0,v=[],y={};for(i=0;is)&&(p=s),(null===g||s>g)&&(g=s),n=s-c,c+=n/++f,m+=n*(s-c),v.push(s));return m/=f-1,r=Math.sqrt(m),v.sort(o.cmp),{type:u(t,e),unique:y,count:t.length,valid:f,missing:h,distinct:d,min:p,max:g,mean:c,stdev:r,median:a=l.quantile(v,.5),q1:l.quantile(v,.25),q3:l.quantile(v,.75),modeskew:0===r?0:(c-a)/r}},l.summary=function(t,e){e=e||o.keys(t[0]);var n=e.map(function(e){var n=l.profile(t,o.$(e));return n.field=e,n});return n.__summary__=!0,n}},function(t,e,n){var r=n(13),i=t.exports;i.repeat=function(t,e){var n,r=Array(e);for(n=0;e>n;++n)r[n]=t;return r},i.zeros=function(t){return i.repeat(0,t)},i.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n==1/0)throw new Error("Infinite range");var r,i=[],a=-1;if(0>n)for(;(r=t+n*++a)>e;)i.push(r);else for(;(r=t+n*++a)=t&&e>=r?1/n:0},r.cdf=function(r){return t>r?0:r>e?1:(r-t)/n},r.icdf=function(e){return e>=0&&1>=e?t+e*n:NaN},r},i.random.integer=function(t,e){void 0===e&&(e=t,t=0);var n=e-t,r=function(){return t+Math.floor(n*Math.random())};return r.samples=function(t){return i.zeros(t).map(r)},r.pdf=function(r){return r===Math.floor(r)&&r>=t&&e>r?1/n:0},r.cdf=function(r){var i=Math.floor(r);return t>i?0:i>=e?1:(i-t+1)/n},r.icdf=function(e){return e>=0&&1>=e?t-1+Math.floor(e*n):NaN},r},i.random.normal=function(t,e){t=t||0,e=e||1;var n,r=function(){var r,i,a=0,o=0;if(void 0!==n)return a=n,n=void 0,a;do a=2*Math.random()-1,o=2*Math.random()-1,r=a*a+o*o;while(0===r||r>1);return i=Math.sqrt(-2*Math.log(r)/r),n=t+o*i*e,t+a*i*e};return r.samples=function(t){return i.zeros(t).map(r)},r.pdf=function(n){var r=Math.exp(Math.pow(n-t,2)/(-2*Math.pow(e,2)));return 1/(e*Math.sqrt(2*Math.PI))*r},r.cdf=function(n){var r,i=(n-t)/e,a=Math.abs(i);if(a>37)r=0;else{var o,u=Math.exp(-a*a/2);7.07106781186547>a?(o=.0352624965998911*a+.700383064443688,o=o*a+6.37396220353165,o=o*a+33.912866078383,o=o*a+112.079291497871,o=o*a+221.213596169931,o=o*a+220.206867912376,r=u*o,o=.0883883476483184*a+1.75566716318264,o=o*a+16.064177579207,o=o*a+86.7807322029461,o=o*a+296.564248779674,o=o*a+637.333633378831,o=o*a+793.826512519948,o=o*a+440.413735824752,r/=o):(o=a+.65,o=a+4/o,o=a+3/o,o=a+2/o,o=a+1/o,r=u/o/2.506628274631)}return i>0?1-r:r},r.icdf=function(n){if(0>=n||n>=1)return NaN;var r=2*n-1,i=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),a=2/(Math.PI*i)+Math.log(1-Math.pow(r,2))/2,o=Math.log(1-r*r)/i,u=(r>0?1:-1)*Math.sqrt(Math.sqrt(a*a-o)-a);return t+e*Math.SQRT2*u},r},i.random.bootstrap=function(t,e){var n=t.filter(r.isValid),a=n.length,o=e?i.random.normal(0,e):null,u=function(){return n[~~(Math.random()*a)]+(o?o():0)};return u.samples=function(t){return i.zeros(t).map(u)},u}},function(t,e,n){function r(t){this._add=[],this._rem=[],this._key=t||null,this._last=null}var i=n(13),a=n(38),o="__dl_rem__",u=r.prototype;u.add=function(t){this._add.push(t)},u.rem=function(t){this._rem.push(t)},u.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,e,n,r,u=this._add,s=this._rem,l=this._key,c=Array(u.length-s.length);if(i.isObject(s[0]))if(l)for(r=i.toMap(s,l),t=0,e=0,n=u.length;n>t;++t)r.hasOwnProperty(l(u[t]))||(c[e++]=u[t]);else{for(t=0,n=s.length;n>t;++t)s[t][o]=1;for(t=0,e=0,n=u.length;n>t;++t)u[t][o]||(c[e++]=u[t]);for(t=0,n=s.length;n>t;++t)delete s[t][o]}else for(r=a.count.map(s),t=0,e=0,n=u.length;n>t;++t)r[u[t]]>0?r[u[t]]-=1:c[e++]=u[t];return this._rem=[],this._add=c},u.extent=function(t){if(this._get!==t||!this._ext){var e=this.values(),n=a.extent.index(e,t);this._ext=[e[n[0]],e[n[1]]],this._get=t}return this._ext},u.argmin=function(t){return this.extent(t)[0]},u.argmax=function(t){return this.extent(t)[1]},u.min=function(t){var e=this.extent(t)[0];return null!=e?t(e):+(1/0)},u.max=function(t){var e=this.extent(t)[1];return null!=e?t(e):-(1/0)},u.quartile=function(t){return this._get===t&&this._q||(this._q=a.quartile(this.values(),t),this._get=t),this._q},u.q1=function(t){return this.quartile(t)[0]},u.q2=function(t){return this.quartile(t)[1]},u.q3=function(t){return this.quartile(t)[2]},t.exports=r},function(t,e,n){var r=n(13),i=n(36);t.exports=function(){var t=[].reduce.call(arguments,function(t,e){return t.concat(r.array(e))},[]);return(new i).groupby(t).summarize({"*":"values"})}},function(t,e,n){function r(t){if(!t)throw Error("Missing binning options.");var e,n,r,u,s,l,c,f=t.maxbins||15,h=t.base||10,d=Math.log(h),p=t.div||[5,2],g=t.min,m=t.max,v=m-g;if(t.step)e=t.step;else if(t.steps)e=t.steps[Math.min(t.steps.length-1,i(t.steps,v/f,0,t.steps.length))];else{for(n=Math.ceil(Math.log(f)/d),r=t.minstep||0,e=Math.max(r,Math.pow(h,Math.round(Math.log(v)/d)-n));Math.ceil(v/e)>f;)e*=h;for(l=0;l=r&&f>=v/s&&(e=s)}return s=Math.log(e),u=s>=0?0:~~(-s/d)+1,c=Math.pow(h,-u-1),g=Math.min(g,Math.floor(g/e+c)*e),m=Math.ceil(m/e)*e,{start:g,stop:m,step:e,unit:{precision:u},value:a,index:o}}function i(t,e,n,r){for(;r>n;){var i=n+r>>>1;l.cmp(t[i],e)<0?n=i+1:r=i}return n}function a(t){return this.step*Math.floor(t/this.step+f)}function o(t){return Math.floor((t-this.start)/this.step+f)}function u(t){return this.unit.date(a.call(this,t))}function s(t){return o.call(this,this.unit.unit(t))}var l=n(13),c=n(43),f=1e-15;r.date=function(t){if(!t)throw Error("Missing date binning options.");var e=t.utc?c.utc:c,n=t.min,i=t.max,a=t.maxbins||20,o=t.minbins||4,l=+i-+n,f=t.unit?e[t.unit]:e.find(l,o,a),h=r({min:null!=f.min?f.min:f.unit(n),max:null!=f.max?f.max:f.unit(i),maxbins:a,minstep:f.minstep,steps:f.step});return h.unit=f,h.index=s,t.raw||(h.value=u),h},t.exports=r},function(t,e,n){function r(t){return l.setTime(+t),l}function i(t,e,n,r,i,a){var o={type:t,date:e,unit:n};return r?o.step=r:o.minstep=1,null!=i&&(o.min=i),null!=a&&(o.max=a),o}function a(t,e,n,r,a,o){return i(t,function(t){return e.offset(n,t)},function(t){return e.count(n,t)},r,a,o)}function o(t,e,n,r){var i,a,o,u=p[0];for(i=1,a=p.length;a>i;++i)if(u=p[i],e>u[0]){if(o=e/u[0],o>r)return t[p[i-1][1]];if(o>=n)return t[u[1]]}return t[p[a-1][1]]}function u(t){var e,n,r={};for(e=0,n=t.length;n>e;++e)r[t[e].type]=t[e];return r.find=function(e,n,r){return o(t,e,n,r)},r}var s=n(33),l=new Date,c=new Date(0,0,1).setFullYear(0),f=new Date(Date.UTC(0,0,1)).setUTCFullYear(0),h=[a("second",s.second,c),a("minute",s.minute,c),a("hour",s.hour,c),a("day",s.day,c,[1,7]),a("month",s.month,c,[1,3,6]),a("year",s.year,c),i("seconds",function(t){return new Date(1970,0,1,0,0,t)},function(t){return r(t).getSeconds()},null,0,59),i("minutes",function(t){return new Date(1970,0,1,0,t)},function(t){return r(t).getMinutes()},null,0,59),i("hours",function(t){return new Date(1970,0,1,t)},function(t){return r(t).getHours()},null,0,23),i("weekdays",function(t){return new Date(1970,0,4+t)},function(t){return r(t).getDay()},[1],0,6),i("dates",function(t){return new Date(1970,0,t)},function(t){return r(t).getDate()},[1],1,31),i("months",function(t){return new Date(1970,t%12,1)},function(t){return r(t).getMonth()},[1],0,11)],d=[a("second",s.utcSecond,f),a("minute",s.utcMinute,f),a("hour",s.utcHour,f),a("day",s.utcDay,f,[1,7]),a("month",s.utcMonth,f,[1,3,6]),a("year",s.utcYear,f),i("seconds",function(t){return new Date(Date.UTC(1970,0,1,0,0,t))},function(t){return r(t).getUTCSeconds()},null,0,59),i("minutes",function(t){return new Date(Date.UTC(1970,0,1,0,t))},function(t){return r(t).getUTCMinutes()},null,0,59),i("hours",function(t){return new Date(Date.UTC(1970,0,1,t))},function(t){return r(t).getUTCHours()},null,0,23),i("weekdays",function(t){return new Date(Date.UTC(1970,0,4+t))},function(t){return r(t).getUTCDay()},[1],0,6),i("dates",function(t){return new Date(Date.UTC(1970,0,t))},function(t){return r(t).getUTCDate()},[1],1,31),i("months",function(t){return new Date(Date.UTC(1970,t%12,1))},function(t){return r(t).getUTCMonth()},[1],0,11)],p=[[31536e6,5],[7776e6,4],[2592e6,4],[12096e5,3],[6048e5,3],[1728e5,3],[864e5,3],[432e5,2],[216e5,2],[108e5,2],[36e5,2],[18e5,1],[9e5,1],[3e5,1],[6e4,1],[3e4,0],[15e3,0],[5e3,0],[1e3,0]];t.exports=u(h),t.exports.utc=u(d)},function(t,e,n){function r(t,e,n){n=o(t,e,n);var r=a(n);return r?h.$func("bin",r.unit.unit?function(t){return r.value(r.unit.unit(t))}:function(t){return r.value(t)})(n.accessor):n.accessor||h.identity}function i(t,e,n){n=o(t,e,n);var r=a(n);return r?u(t,n.accessor,r):s(t,n.accessor,n&&n.sort)}function a(t){var e=t.type,n=null;return(null==e||p[e])&&("integer"===e&&null==t.minstep&&(t.minstep=1),n="date"===e?l.date(t):l(t)),n}function o(){var t=arguments,e=0,n=h.isArray(t[e])?t[e++]:null,r=h.isFunction(t[e])||h.isString(t[e])?h.$(t[e++]):null,i=h.extend({},t[e]);if(n&&(i.type=i.type||f(n,r),p[i.type])){var a=d.extent(n,r);i=h.extend({min:a[0],max:a[1]},i)}return r&&(i.accessor=r),i}function u(t,e,n){for(var r,i,a=c.range(n.start,n.stop+n.step/2,n.step).map(function(t){return{value:n.value(t),count:0}}),o=0;oi||i>=a.length||!isFinite(i))continue;a[i].count+=1}return a.bins=n,a}function s(t,e,n){var r=d.unique(t,e),i=d.count.map(t,e);return r.map(function(t){return{value:t,count:i[t]}}).sort(h.comparator(n?"-count":"+value"))}var l=n(42),c=n(39),f=n(24),h=n(13),d=n(38),p={integer:1,number:1,date:1};t.exports={$bin:r,histogram:i}},function(t,e,n){function r(t){var e=i(t,"d");return e="var __t; return "+e+";",new Function("d",e).bind(f)}function i(t,e,n){e=e||"obj";var r=0,i="'",u=h;return t.replace(u,function(u,s,l){return i+=t.slice(r,l).replace(m,o),r=l+u.length,s&&(i+="'\n+((__t=("+a(s,e,n)+"))==null?'':__t)+\n'"),u}),i+"'"}function a(t,e,n){function i(t){return t=t||"",f?(f=!1,h="String("+h+")"+t):h+=t,h}function a(){return"(typeof "+h+'==="number"?new Date('+h+"):"+h+")"}function o(t){var e=_[0];if(!("'"===e[0]&&"'"===e[e.length-1]||'"'===e[0]&&'"'===e[e.length-1]))throw Error("Format pattern must be quoted: "+e);e=e.slice(1,-1),v=u(e,t),f=!1;var n="number"===t?h:a();h="this.formats["+v+"]("+n+")"}var s=t.match(d),c=s.shift().trim(),f=!0;n&&(n[c]=1);for(var h=r.property(e,c),g=0;g0&&(x=x.slice(0,m),_=s[g].slice(m+1).match(p).map(function(t){return t.trim()})),x=x.trim()){case"length":i(".length");break;case"lower":i(".toLowerCase()");break;case"upper":i(".toUpperCase()");break;case"lower-locale":i(".toLocaleLowerCase()");break;case"upper-locale":i(".toLocaleUpperCase()");break;case"trim":i(".trim()");break;case"left":v=l.number(_[0]),i(".slice(0,"+v+")");break;case"right":v=l.number(_[0]),i(".slice(-"+v+")");break;case"mid":v=l.number(_[0]),y=v+l.number(_[1]),i(".slice(+"+v+","+y+")");break;case"slice":v=l.number(_[0]),i(".slice("+v+(_.length>1?","+l.number(_[1]):"")+")");break;case"truncate":v=l.number(_[0]),y=_[1],y="left"!==y&&"middle"!==y&&"center"!==y?"right":y,h="this.truncate("+i()+","+v+",'"+y+"')";break;case"pad":v=l.number(_[0]),y=_[1],y="left"!==y&&"middle"!==y&&"center"!==y?"right":y,h="this.pad("+i()+","+v+",'"+y+"')";break;case"number":o("number");break;case"time":o("time");break;case"time-utc":o("utc");break;case"month":h="this.month("+h+")";break;case"month-abbrev":h="this.month("+h+",true)";break;case"day":h="this.day("+h+")";break;case"day-abbrev":h="this.day("+h+",true)";break;default:throw Error("Unrecognized template filter: "+x)}}return h}function o(t){return"\\"+g[t]}function u(t,e){var n=e+":"+t;if(null==f.format_map[n]){var r=c[e](t),i=f.formats.length;return f.formats.push(r),f.format_map[n]=i,i}return f.format_map[n]}function s(t,e){return f.formats[u(t,e)]}var l=n(13),c=n(32),f={formats:[],format_map:{},truncate:l.truncate,pad:l.pad,day:c.day,month:c.month};r.source=i,r.context=f,r.format=s,t.exports=r,r.clearFormatCache=function(){f.formats=[],f.format_map={}},r.property=function(t,e){var n=l.field(e).map(l.str).join("][");return t+"["+n+"]"};var h=/\{\{(.+?)\}\}|$/g,d=/(?:"[^"]*"|\'[^\']*\'|[^\|"]+|[^\|\']+)+/g,p=/(?:"[^"]*"|\'[^\']*\'|[^,"]+|[^,\']+)+/g,g={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},m=/\\|'|\r|\n|\u2028|\u2029/g},function(t,e,n){var r=n(13),i=n(43),a=i.utc,o=t.exports;o.$year=r.$func("year",i.year.unit),o.$month=r.$func("month",i.months.unit),o.$date=r.$func("date",i.dates.unit),o.$day=r.$func("day",i.weekdays.unit),o.$hour=r.$func("hour",i.hours.unit),o.$minute=r.$func("minute",i.minutes.unit),o.$second=r.$func("second",i.seconds.unit),o.$utcYear=r.$func("utcYear",a.year.unit),o.$utcMonth=r.$func("utcMonth",a.months.unit),o.$utcDate=r.$func("utcDate",a.dates.unit),o.$utcDay=r.$func("utcDay",a.weekdays.unit),o.$utcHour=r.$func("utcHour",a.hours.unit),o.$utcMinute=r.$func("utcMinute",a.minutes.unit),o.$utcSecond=r.$func("utcSecond",a.seconds.unit)},function(t,e,n){var r=n(13),i=n(18),a=n(23);t.exports=r.keys(a.formats).reduce(function(t,e){return t[e]=function(t,n,o){r.isString(t)&&(t={url:t}),2===arguments.length&&r.isFunction(n)&&(o=n,n=void 0),n=r.extend({parse:"auto"},n),n.type=e;var u=i(t,o?function(t,e){if(t)return void o(t,null);try{e=a(e,n),o(null,e)}catch(r){o(r,null)}}:void 0);return o?void 0:a(u,n)},t},{})},function(t,e,n){function r(t,e){e=u.extend({separator:" ",minwidth:8,maxwidth:15},e);var n=e.fields||u.keys(t[0]),r=s.all(t);if(e.start||e.limit){var i=e.start||0,a=e.limit?i+e.limit:t.length;t=t.slice(i,a)}var o=n.map(function(n){var i=f[r[n]]||"",a=c("{{"+n+i+"}}"),o=l.max(t,function(t){return a(t).length});return o=Math.max(Math.min(n.length,e.minwidth),o),e.maxwidth>0?Math.min(o,e.maxwidth):o}),d=n.map(function(t,e){return u.truncate(u.pad(t,o[e],"center"),o[e])}).join(e.separator),p=c(n.map(function(t,e){return"{{"+t+(f[r[t]]||"")+("|pad:"+o[e]+","+(h[r[t]]||"right"))+("|truncate:"+o[e])+"}}"}).join(e.separator));return d+"\n"+t.map(p).join("\n")}function i(t){t=t?t.__summary__?t:l.summary(t):this;var e,n,r=[];for(e=0,n=t.length;n>e;++e)r.push("-- "+t[e].field+" --"),"string"===t[e].type||t[e].distinct<10?r.push(o(t[e])):r.push(a(t[e])),r.push("");return r.join("\n")}function a(t){return["valid: "+t.valid,"missing: "+t.missing,"distinct: "+t.distinct,"min: "+t.min,"max: "+t.max,"median: "+t.median,"mean: "+t.mean,"stdev: "+t.stdev,"modeskew: "+t.modeskew].join("\n")}function o(t){var e=["valid: "+t.valid,"missing: "+t.missing,"distinct: "+t.distinct,"top values: "],n=t.unique,r=u.keys(n).sort(function(t,e){return n[e]-n[t]}).slice(0,6).map(function(t){return" '"+t+"' ("+n[t]+")"});return e.concat(r).join("\n")}var u=n(13),s=n(24),l=n(38),c=n(45);t.exports={table:r,summary:i};var f={date:'|time:"%m/%d/%Y %H:%M:%S"',number:'|number:".4f"',integer:'|number:"d"'},h={number:"left",integer:"left"}},function(t,e,n){function r(){}var i=n(12),a=n(8),o=n(50),u=n(5),s=n(11),l=n(7),c=n(9),f=n(51),h=n(6),d=r.prototype;d.init=function(){this._stamp=0,this._rank=0,this._data={},this._signals={},this._requestedIndexes={},this.doNotPropagate={}},d.rank=function(){return++this._rank},d.values=function(t,e,n){var r,a,o=t===h.SIGNALS?this._signals:this._data,u=void 0!==e?e:i.keys(o);if(Array.isArray(u)){for(r=n||{},a=0;a1)for(var n=1,r=t.length;r>n;++n)e=e[t[n]];return e},d.requestIndex=function(t,e){var n=this._requestedIndexes,r=n[t]||(n[t]={});return r[e]=!0,this},d.buildIndexes=function(){var t,e,n,r,a,o,u,s,l=this._requestedIndexes,c=i.keys(l);for(t=0,e=c.length;e>t;++t){if(o=this.data(a=c[t]),!o)throw Error("Data source "+i.str(a)+" does not exist.");for(u=i.keys(l[a]),n=0,r=u.length;r>n;++n)null!==(s=u[n])&&(o.getIndex(s),l[a][s]=null)}return this},d.propagate=function(t,e,n,r){var i,a,s,l,c,h,d,p,g={},m=new o(function(t,e){return t._qrank-e._qrank});if(t.stamp)throw Error("Pulse already has a non-zero stamp.");for(t.stamp=n||++this._stamp,g[e._id]=t,m.push(e.qrank(!0));m.size()>0;)if(e=m.peek(),p=e instanceof f,t=g[e._id],e.rank()!==e.qrank())m.replace(e.qrank(!0));else if(m.pop(),g[e._id]=null,i=e._listeners,(!p||p&&!r)&&(t=this.evaluate(t,e)),t!==this.doNotPropagate)for(!t.reflow&&e.reflows()&&(t=u.create(t,!0)), -h=0,d=i.length;d>h;++h)if(a=i[h],void 0!==(s=g[a._id])){if(null===s)throw Error("Already propagated to node.");if(s===t)continue;if(l=t.add.length||t.mod.length||t.rem.length,c=s.add.length||s.mod.length||s.rem.length,l&&c)throw Error("Multiple changeset pulses to same node");g[a._id]=l?t:s,g[a._id].reflow=t.reflow||s.reflow}else m.push(a.qrank(!0)),g[a._id]=t;return this.done(t)},d.done=function(t){a.debug(t,["bookkeeping"]);for(var e in t.data)this.data(e).synchronize();return this},d.preprocess=function(t){for(var e,n,r,i,a=this,o=0,u=0;uo;++o){for(n=t[o],n.collector()&&(e=n),r=n.dependency(h.DATA),s=0,l=r.length;l>s;++s){if(!(c=this.data(f=r[s])))throw new Error("Unknown data source "+i.str(f));c.addListener(e)}for(a=n.dependency(h.SIGNALS),s=0,l=a.length;l>s;++s){if(!(c=this.signal(f=a[s])))throw new Error("Unknown signal "+i.str(f));c.addListener(e)}o>0&&t[o-1].addListener(n)}return t},d.disconnect=function(t){var e,n,r,i,a,o,u,s;for(a=0,o=t.length;o>a;++a){for(n=t[a],n.collector()&&(e=n),r=n.dependency(h.DATA),u=0,s=r.length;s>u;++u)this.data(r[u]).removeListener(e);for(i=n.dependency(h.SIGNALS),u=0,s=i.length;s>u;++u)this.signal(i[u]).removeListener(e);n.disconnect()}return t},d.synchronize=function(t){var e,n,r,i,a,o,u,s,l={};for(r=0,i=t.length;i>r;++r)if(e=t[r],e.collector())for(a=0,n=e.data(),o=n.length;o>a;++a)s=(u=n[a])._id,l[s]||(c.prev_update(u),l[s]=1);return this},d.reevaluate=function(t,e){var n=t.reflow&&e.last()>=t.stamp,r=e.router()||t.add.length||t.rem.length;return r||!n||e.reevaluate(t)},d.evaluate=function(t,e){return this.reevaluate(t,e)?(t=e.evaluate(t),e.last(t.stamp),t):t},t.exports=r},function(t,e){function n(t){this.cmp=t,this.nodes=[]}function r(t,e,n,r){var i,a,o;for(i=t[n];n>e&&(o=n-1>>1,a=t[o],r(i,a)<0);)t[n]=a,n=o;return t[n]=i}function i(t,e,n){for(var i,a=e,o=t.length,u=t[e],s=2*e+1;o>s;)i=s+1,o>i&&n(t[s],t[i])>=0&&(s=i),t[e]=t[s],e=s,s=2*e+1;return t[e]=u,r(t,a,e,n)}var a=n.prototype;a.size=function(){return this.nodes.length},a.clear=function(){return this.nodes=[],this},a.peek=function(){return this.nodes[0]},a.push=function(t){var e=this.nodes;return e.push(t),r(e,0,e.length-1,this.cmp)},a.pop=function(){var t,e=this.nodes,n=e.pop();return e.length?(t=e[0],e[0]=n,i(e,0,this.cmp)):t=n,t},a.replace=function(t){var e=this.nodes,n=e[0];return e[0]=t,i(e,0,this.cmp),n},a.pushpop=function(t){var e=this.nodes,n=e[0];return e.length&&this.cmp(n,t)<0&&(e[0]=t,t=n,i(e,0,this.cmp)),t},t.exports=n},function(t,e,n){function r(t,e,n){return o.init.call(this,t),this._name=e,this._value=n,this._verbose=!1,this._handlers=[],this}var i=n(5),a=n(10),o=a.prototype,u=r.prototype=Object.create(o);u.constructor=r,u.name=function(){return this._name},u.value=function(t){return arguments.length?(this._value=t,this):this._value},u.values=u.value,u.verbose=function(t){return arguments.length?(this._verbose=!!t,this):this._verbose},u.evaluate=function(t){return t.signals[this._name]?t:this._graph.doNotPropagate},u.fire=function(t){t||(t=i.create(null,!0)),t.signals[this._name]=1,this._graph.propagate(t,this)},u.on=function(t){var e=this,n=new a(this._graph);return n.evaluate=function(n){return t(e.name(),e.value()),n},this._handlers.push({handler:t,node:n}),this.addListener(n)},u.off=function(t){var e,n,r=this._handlers;for(e=r.length;--e>=0;)t&&r[e].handler!==t||(n=r.splice(e,1)[0],this.removeListener(n.node));return this},t.exports=r},function(t,e,n){t.exports={axes:n(53),background:n(100),data:n(101),events:n(135),expr:n(136),legends:n(142),mark:n(55),marks:n(144),modify:n(134),padding:n(145),predicates:n(146),properties:n(56),signals:n(147),spec:n(148),streams:n(158),transforms:n(102)}},function(t,e,n){function r(t,e,n,r){var a=t.config();(e||[]).forEach(function(e,u){n[u]=n[u]||o(t),i(a,e,u,n[u],r)})}function i(t,e,n,r,i){void 0!==e.scale&&r.scale(i.scale(e.scale)),r.orient(e.orient||u[e.type]),r.offset(e.offset||0),r.layer(e.layer||"front"),r.grid(e.grid||!1),r.title(e.title||null),r.titleOffset(null!=e.titleOffset?e.titleOffset:t.axis.titleOffset),r.tickValues(e.values||null),r.tickFormat(e.format||null),r.tickFormatType(e.formatType||null),r.tickSubdivide(e.subdivide||0),r.tickPadding(e.tickPadding||t.axis.padding);var o=[];if(void 0!==e.tickSize)for(var s=0;3>s;++s)o.push(e.tickSize);else{var l=t.axis.tickSize;o=[l,l,l]}null!=e.tickSizeMajor&&(o[0]=e.tickSizeMajor),null!=e.tickSizeMinor&&(o[1]=e.tickSizeMinor),null!=e.tickSizeEnd&&(o[2]=e.tickSizeEnd),o.length&&r.tickSize.apply(r,o),r.tickCount(e.ticks||t.axis.ticks);var c=e.properties;c&&c.ticks?(r.majorTickProperties(c.majorTicks?a.extend({},c.ticks,c.majorTicks):c.ticks),r.minorTickProperties(c.minorTicks?a.extend({},c.ticks,c.minorTicks):c.ticks)):(r.majorTickProperties(c&&c.majorTicks||{}),r.minorTickProperties(c&&c.minorTicks||{})),r.tickLabelProperties(c&&c.labels||{}),r.titleProperties(c&&c.title||{}),r.gridLineProperties(c&&c.grid||{}),r.domainProperties(c&&c.axis||{})}var a=n(12),o=n(54),u={x:"bottom",y:"left",top:"top",bottom:"bottom",left:"left",right:"right"};t.exports=r,r.schema={defs:{axis:{type:"object",properties:{type:{"enum":["x","y"]},scale:{type:"string"},orient:{"enum":["top","bottom","left","right"]},title:{type:"string"},titleOffset:{type:"number"},format:{type:"string"},formatType:{"enum":["time","utc","string","number"]},ticks:{type:"number"},values:{type:"array",items:{type:["string","number"]}},subdivide:{type:"number"},tickPadding:{type:"number"},tickSize:{type:"number"},tickSizeMajor:{type:"number"},tickSizeMinor:{type:"number"},tickSizeEnd:{type:"number"},offset:{oneOf:[{type:"number"},{type:"object",properties:{scale:{type:"string"},value:{type:["string","number"]}},required:["scale","value"],additionalProperties:!1}]},layer:{"enum":["front","back"],"default":"front"},grid:{type:"boolean"},properties:{type:"object",properties:{ticks:{$ref:"#/defs/propset"},majorTicks:{$ref:"#/defs/propset"},minorTicks:{$ref:"#/defs/propset"},labels:{$ref:"#/defs/propset"},title:{$ref:"#/defs/propset"},grid:{$ref:"#/defs/propset"},axis:{$ref:"#/defs/propset"}},additionalProperties:!1}},additionalProperties:!1,required:["type","scale"]}}}},function(t,e,n){function r(t){function e(){O.type=null}function n(t){return{data:t}}function r(t){var e=P||(k.ticks?k.ticks($):k.domain()),r=i(k,e,q).map(n);return e=e.map(function(e){return e=n(e),e.label=t(e.data),e}),[e,r]}function a(t){var e=t.orient,n=t.marks[5].properties.update,r=n.encode,i=E.titleOffsetAutoMin,a=E.titleOffsetAutoMax,o=E.titleOffsetAutoMargin;n.encode=function(t,n,u,s,l,c){var f=r.call(r,t,n,u,s,l,c),h="bottom"===e||"top"===e?"y":"x";if(null!=V[h])return f;_.clear().union(n.items[3].bounds).union(n.items[4].bounds);var d=u?{}:t,p="left"===e||"right"===e?"width":"height",g="top"===e||"left"===e?-1:1,m=~~(_[p]()+t.fontSize/2+o);return v.set(d,h,g*Math.min(Math.max(i,m),a)),u&&u.interpolate(t,d),!0}}function w(e){var n,r,i;e.type===b?(n={scale:e.scaleName,offset:.5+e.rangeBand()/2},r=n):(n={scale:e.scaleName,offset:.5},r={scale:e.scaleName+":prev",offset:.5}),i=o(e),m.extend(W.gridLines,h(E)),m.extend(W.majorTicks,h(E)),m.extend(W.minorTicks,h(E)),m.extend(W.tickLabels,d(E)),m.extend(W.domain,g(E)),m.extend(W.title,p(E)),W.gridLines.properties.enter.stroke={value:E.gridColor},W.gridLines.properties.enter.strokeOpacity={value:E.gridOpacity},s(S,W.gridLines,r,n,1/0,A),s(S,W.majorTicks,r,n,R),s(S,W.minorTicks,r,n,D),u(S,W.tickLabels,r,n,R,U),c(S,W.domain,i,I),l(S,W.title,i,+T||-1),m.extend(W.gridLines.properties.update,F),m.extend(W.majorTicks.properties.update,H),m.extend(W.minorTicks.properties.update,B),m.extend(W.tickLabels.properties.update,Y),m.extend(W.domain.properties.update,X),m.extend(W.title.properties.update,V);var a=[W.gridLines,W.majorTicks,W.minorTicks,W.tickLabels,W.domain,W.title];m.extend(O,{type:"group",interactive:!1,properties:{enter:{encode:f,scales:[e.scaleName],signals:[],data:[]},update:{encode:f,scales:[e.scaleName],signals:[],data:[]}}}),O.marks=a.map(function(e){return y(t,e)})}var k,E=t.config().axis,S=E.orient,A=0,T=E.titleOffset,O={},N="front",L=!1,C=null,R=E.tickSize,D=E.tickSize,I=E.tickSize,U=E.padding,P=null,z=null,j=null,q=0,$=E.ticks,F={},Y={},H={},B={},V={},X={},W={gridLines:{},majorTicks:{},minorTicks:{},tickLabels:{},domain:{},title:{}},G={};return G.def=function(){O.type||w(k);var t=x.getTickFormat(k,$,j,z),e=r(t),i=C?[C].map(n):[];return O.marks[0].from=function(){return L?e[0]:[]},O.marks[1].from=function(){return e[0]},O.marks[2].from=function(){return e[1]},O.marks[3].from=O.marks[1].from,O.marks[4].from=function(){return[1]},O.marks[5].from=function(){return i},O.offset=A,O.orient=S,O.layer=N,"auto"===T&&a(O),O},G.scale=function(t){return arguments.length?(k!==t&&(k=t,e()),G):k},G.orient=function(t){return arguments.length?(S!==t&&(S=t in M?t+"":E.orient,e()),G):S},G.title=function(t){return arguments.length?(C!==t&&(C=t,e()),G):C},G.tickCount=function(t){return arguments.length?($=t,G):$},G.tickValues=function(t){return arguments.length?(P=t,G):P},G.tickFormat=function(t){return arguments.length?(z!==t&&(z=t,e()),G):z},G.tickFormatType=function(t){return arguments.length?(j!==t&&(j=t,e()),G):j},G.tickSize=function(t,n){if(!arguments.length)return R;var r=arguments.length-1,i=+t,a=r>1?+n:R,o=r>0?+arguments[r]:R;return R===i&&D===a&&I===o||e(),R=i,D=a,I=o,G},G.tickSubdivide=function(t){return arguments.length?(q=+t,G):q},G.offset=function(t){return arguments.length?(A=m.isObject(t)?t:+t,G):A},G.tickPadding=function(t){return arguments.length?(U!==+t&&(U=+t,e()),G):U},G.titleOffset=function(t){return arguments.length?(T!==t&&(T=t,e()),G):T},G.layer=function(t){return arguments.length?(N!==t&&(N=t,e()),G):N},G.grid=function(t){return arguments.length?(L!==t&&(L=t,e()),G):L},G.gridLineProperties=function(t){return arguments.length?(F!==t&&(F=t),G):F},G.majorTickProperties=function(t){return arguments.length?(H!==t&&(H=t),G):H},G.minorTickProperties=function(t){return arguments.length?(B!==t&&(B=t),G):B},G.tickLabelProperties=function(t){return arguments.length?(Y!==t&&(Y=t),G):Y},G.titleProperties=function(t){return arguments.length?(V!==t&&(V=t),G):V},G.domainProperties=function(t){return arguments.length?(X!==t&&(X=t),G):X},G.reset=function(){return e(),G},G}function i(t,e,n){var r=[];if(n&&e.length>1){for(var i,o,u=a(t.domain()),s=-1,l=e.length,c=(e[1]-e[0])/++n;++s0;)(o=+e[s]-i*c)>=u[0]&&r.push(o);for(--s,i=0;++ie?[e,n]:[n,e]}function o(t){return t.rangeExtent?t.rangeExtent():a(t.range())}function u(t,e,n,r,i,a){i=Math.max(i,0)+a,"left"!==t&&"top"!==t||(i*=-1),"top"===t||"bottom"===t?(m.extend(e.properties.enter,{x:n,y:{value:i}}),m.extend(e.properties.update,{x:r,y:{value:i},align:{value:"center"},baseline:{value:k[t]}})):(m.extend(e.properties.enter,{x:{value:i},y:n}),m.extend(e.properties.update,{x:{value:i},y:r,align:{value:w[t]},baseline:{value:"middle"}}))}function s(t,e,n,r,i,a){var o="left"===t||"top"===t?-1:1;i=i===1/0?"top"===t||"bottom"===t?{field:{group:"height",level:2},mult:-o,offset:a*-o}:{field:{group:"width",level:2},mult:-o,offset:a*-o}:{value:o*i,offset:a},"top"===t||"bottom"===t?(m.extend(e.properties.enter,{x:n,y:{value:0},y2:i}),m.extend(e.properties.update,{x:r,y:{value:0},y2:i}),m.extend(e.properties.exit,{x:r})):(m.extend(e.properties.enter,{x:{value:0},x2:i,y:n}),m.extend(e.properties.update,{x:{value:0},x2:i,y:r}),m.extend(e.properties.exit,{y:r}))}function l(t,e,n,r){var i=e.properties.update,a=~~((n[0]+n[1])/2),o="top"===t||"left"===t?-1:1;"bottom"===t||"top"===t?(i.x={value:a},i.angle={value:0},r>=0&&(i.y={value:o*r})):(i.y={value:a},i.angle={value:"left"===t?-90:90},r>=0&&(i.x={value:o*r}))}function c(t,e,n,r){var i;"top"!==t&&"left"!==t||(r=-1*r),i="bottom"===t||"top"===t?"M"+n[0]+","+r+"V0H"+n[1]+"V"+r:"M"+r+","+n[0]+"H0V"+n[1]+"H"+r,e.properties.update.path={value:i}}function f(t,e,n){var r=n?{}:t,i=t.mark.def.offset,a=t.mark.def.orient,o=e.width,u=e.height;if(m.isArray(i)){var s=i[0],l=i[1];switch(a){case"left":v.set(r,"x",-s),v.set(r,"y",l);break;case"right":v.set(r,"x",o+s),v.set(r,"y",l);break;case"bottom":v.set(r,"x",s),v.set(r,"y",u+l);break;case"top":v.set(r,"x",s),v.set(r,"y",-l);break;default:v.set(r,"x",s),v.set(r,"y",l)}}else switch(m.isObject(i)&&(i=-e.scale(i.scale)(i.value)),a){case"left":v.set(r,"x",-i),v.set(r,"y",0);break;case"right":v.set(r,"x",o+i),v.set(r,"y",0);break;case"bottom":v.set(r,"x",0),v.set(r,"y",u+i);break;case"top":v.set(r,"x",0),v.set(r,"y",-i);break;default:v.set(r,"x",0),v.set(r,"y",0)}return n&&n.interpolate(t,r),!0}function h(t){return{type:"rule",interactive:!1,key:"data",properties:{enter:{stroke:{value:t.tickColor},strokeWidth:{value:t.tickWidth},opacity:{value:1e-6}},exit:{opacity:{value:1e-6}},update:{opacity:{value:1}}}}}function d(t){return{type:"text",interactive:!0,key:"data",properties:{enter:{fill:{value:t.tickLabelColor},font:{value:t.tickLabelFont},fontSize:{value:t.tickLabelFontSize},opacity:{value:1e-6},text:{field:"label"}},exit:{opacity:{value:1e-6}},update:{opacity:{value:1}}}}}function p(t){return{type:"text",interactive:!0,properties:{enter:{font:{value:t.titleFont},fontSize:{value:t.titleFontSize},fontWeight:{value:t.titleFontWeight},fill:{value:t.titleColor},align:{value:"center"},baseline:{value:"middle"},text:{field:"data"}},update:{}}}}function g(t){return{type:"path",interactive:!1,properties:{enter:{x:{value:.5},y:{value:.5},stroke:{value:t.axisColor},strokeWidth:{value:t.axisWidth}},update:{}}}}var m=n(12),v=n(4).Tuple,y=n(55),x=n(58),_=new(n(60).Bounds),b="ordinal",M={top:1,right:1,bottom:1,left:1},w={bottom:"center",top:"center",left:"right",right:"left"},k={bottom:"top",top:"bottom",left:"middle",right:"middle"};t.exports=r},function(t,e,n){function r(t,e){var n=e.properties,o=e.marks;return i.keys(n).forEach(function(r){n[r]=a(t,e.type,n[r])}),e.delay&&(e.delay=a(t,e.type,{delay:e.delay})),o&&(e.marks=o.map(function(e){return r(t,e)})),e}var i=n(12),a=n(56);t.exports=r,r.schema={defs:{mark:{type:"object",properties:{name:{type:"string"},key:{type:"string"},type:{"enum":["rect","symbol","path","arc","area","line","rule","image","text","group"]},from:{type:"object",properties:{data:{type:"string"},mark:{type:"string"},transform:{$ref:"#/defs/transform"}},additionalProperties:!1},delay:{$ref:"#/refs/numberValue"},ease:{"enum":["linear","quad","cubic","sin","exp","circle","bounce"].reduce(function(t,e){return["in","out","in-out","out-in"].forEach(function(n){t.push(e+"-"+n)}),t},[])},interactive:{type:"boolean"},properties:{type:"object",properties:{enter:{$ref:"#/defs/propset"},update:{$ref:"#/defs/propset"},exit:{$ref:"#/defs/propset"},hover:{$ref:"#/defs/propset"}},additionalProperties:!1,anyOf:[{required:["enter"]},{required:["update"]}]}},required:["type"]}}}},function(t,e,n){function r(t,e,n){function r(t){if(null!=f[t]){var e,n,r=d.array(f[t]);for(e=0,n=r.length;n>e;++e)M[t][r[e]]=1}}function i(t){var e=(t.parent?"parent_":"group_")+t.level;M._nRefs[e]=t}var s,l,c,f,v=t.config(),y="",x=d.keys(n),_=[],b={},M={signals:{},scales:{},data:{},fields:{},nested:[],_nRefs:{},reflow:!1};for(y+="var o = trans ? {} : item, d=0, exprs=this.exprs, set=this.tpl.set, tmpl=signals||{}, t;\ntmpl.datum = item.datum;\ntmpl.group = group;\ntmpl.parent = group.datum;\n",s=0,l=x.length;l>s;++s)f=n[c=x[s]],y+=s>0?"\n ":" ",f.rule?(f=o(t,c,f.rule,_),y+="\n "+f.code):d.isArray(f)?(f=o(t,c,f,_),y+="\n "+f.code):(f=u(v,c,f),y+="d += set(o, "+d.str(c)+", "+f.val+");"),b[c]=!0,m.forEach(r),M.reflow=M.reflow||f.reflow,f.nested.length&&f.nested.forEach(i);d.keys(M._nRefs).forEach(function(t){M.nested.push(M._nRefs[t])}),M.nested.sort(function(t,e){return t=t.level,e=e.level,e>t?-1:t>e?1:t>=e?0:NaN}),b.x2&&(b.x?(y+="\n if (o.x > o.x2) { \n t = o.x;\n d += set(o, 'x', o.x2);\n d += set(o, 'x2', t); \n };",y+="\n d += set(o, 'width', (o.x2 - o.x));"):y+=b.width?"\n d += set(o, 'x', (o.x2 - o.width));":"\n d += set(o, 'x', o.x2);"),b.xc&&(y+=b.width?"\n d += set(o, 'x', (o.xc - o.width/2));":"\n d += set(o, 'x', o.xc);"),b.y2&&(b.y?(y+="\n if (o.y > o.y2) { \n t = o.y;\n d += set(o, 'y', o.y2);\n d += set(o, 'y2', t);\n };",y+="\n d += set(o, 'height', (o.y2 - o.y));"):y+=b.height?"\n d += set(o, 'y', (o.y2 - o.height));":"\n d += set(o, 'y', o.y2);"),b.yc&&(y+=b.height?"\n d += set(o, 'y', (o.yc - o.height/2));":"\n d += set(o, 'y', o.yc);"),a(e,b)&&(y+="\n d += (item.touch(), 1);"),y+="\n if (trans) trans.interpolate(item, o);",y+="\n return d > 0;";try{var w=Function("item","group","trans","db","signals","predicates",y);return w.tpl=g,w.exprs=_,w.util=d,w.d3=h,d.extend(w,d.template.context),{encode:w,signals:d.keys(M.signals),scales:d.keys(M.scales),data:d.keys(M.data),fields:d.keys(M.fields),nested:M.nested,reflow:M.reflow}}catch(k){p.error(k),p.log(y)}}function i(t,e){return d.isObject(t)||(t={reflow:!1,nested:[]},m.forEach(function(e){t[e]=[]})),d.isObject(e)&&(t.reflow=t.reflow||e.reflow,t.nested.push.apply(t.nested,e.nested),m.forEach(function(n){t[n].push.apply(t[n],e[n])})),t}function a(t,e){return e.path||("area"===t||"line"===t)&&(e.x||e.x2||e.width||e.y||e.y2||e.height||e.tension||e.interpolate)}function o(t,e,n,r){var a=t.config(),o=i(),s=[],l="";return(n||[]).forEach(function(c,f){var h=u(a,e,c);if(i(o,h),c.test){var p=t.expr(c.test);o.signals.push.apply(o.signals,p.globals),o.data.push.apply(o.data,p.dataSources),l+="if (exprs["+r.length+"](item.datum, null)) {\n d += set(o, "+d.str(e)+", "+h.val+");",l+=n[f+1]?"\n } else ":" }",r.push(p.fn)}else{var g=c.predicate,m=g&&(g.name||g),v=t.predicate(m),y="predicates["+d.str(m)+"]",x=[],_=e+"_arg"+f;d.isObject(g)&&d.keys(g).forEach(function(t){if("name"!==t){var e=u(a,f,g[t],!0);x.push(d.str(t)+": "+e.val),i(o,e)}}),m?(o.signals.push.apply(o.signals,v.signals),o.data.push.apply(o.data,v.data),s.push(_+" = {\n "+x.join(",\n ")+"\n }"),l+="if ("+y+".call("+y+","+_+", db, signals, predicates)) {\n d += set(o, "+d.str(e)+", "+h.val+");",l+=n[f+1]?"\n } else ":" }"):l+="{\n d += set(o, "+d.str(e)+", "+h.val+");\n }\n"}}),s.length&&(l="var "+s.join(",\n ")+";\n "+l),o.code=l,o}function u(t,e,n,r){if(null==n)return null;if("fill"===e||"stroke"===e){if(n.c)return s(t,"hcl",n.h,n.c,n.l);if(n.h||n.s)return s(t,"hsl",n.h,n.s,n.l);if(n.l||n.a)return s(t,"lab",n.l,n.a,n.b);if(n.r||n.g||n.b)return s(t,"rgb",n.r,n.g,n.b)}var a=null,o=null,u=i(),f=null,h=null,p=null,g={};return void 0!==n.template&&(a=d.template.source(n.template,"tmpl",g),d.keys(g).forEach(function(t){var e=d.field(t),n=e.shift();"parent"===n||"group"===n?u.nested.push({parent:"parent"===n,group:"group"===n,level:1}):"datum"===n?u.fields.push(e[0]):u.signals.push(n)})),void 0!==n.value&&(a=d.str(n.value)),void 0!==n.signal&&(f=d.field(n.signal),a="signals["+f.map(d.str).join("][")+"]",u.signals.push(f.shift())),void 0!==n.field&&(n.field=d.isString(n.field)?{datum:n.field}:n.field,h=l(n.field),a=h.val,i(u,h)),void 0!==n.scale&&(p=c(n.scale),o=p.val,i(u,p),u.scales.push(n.scale.name||n.scale),null!==a||n.band||n.mult||n.offset||!r?a=o+(n.band?".rangeBand()":"("+(null!==a?a:"item.datum.data")+")"):r&&(a=o)),a="("+(n.mult?d.number(n.mult)+" * ":"")+a+")"+(n.offset?" + "+d.number(n.offset):""),u.val=a,u}function s(t,e,n,r,a){var o=n?u(t,"",n):t.color[e][0],s=r?u(t,"",r):t.color[e][1],l=a?u(t,"",a):t.color[e][2],c=i();[o,s,l].forEach(function(t){d.isArray||i(c,t)});var f="(this.d3."+e+"("+[o.val,s.val,l.val].join(",")+') + "")';return c.val=f,c}function l(t){if(d.isString(t))return{val:d.field(t).map(d.str).join("][")};var e=t.level||1,n=(t.group||t.parent)&&e,r=n?Array(e).join("group.mark."):"",a=l(t.datum||t.group||t.parent||t.signal),o=a.val,u=i(null,a);return t.datum?(o="item.datum["+o+"]",u.fields.push(t.datum)):t.group?(o=r+"group["+o+"]",u.nested.push({level:e,group:!0})):t.parent?(o=r+"group.datum["+o+"]",u.nested.push({level:e,parent:!0})):t.signal&&(o="signals["+o+"]",u.signals.push(d.field(t.signal)[0]),u.reflow=!0),u.val=o,u}function c(t){var e=null,n=null,r=i();return e=d.isString(t)?d.str(t):t.name?d.isString(t.name)?d.str(t.name):(n=l(t.name)).val:(n=l(t)).val,e="(item.mark._scaleRefs["+e+"] = 1, group.scale("+e+"))",t.invert&&(e+=".invert"),n&&n.nested.forEach(function(t){t.scale=!0}),n?(n.val=e,n):(r.val=e,r)}function f(t){t=d.isArray(t)?{"enum":t}:{type:t};var e="number"===t.type&&t.type||"string",n={type:"object",allOf:[{$ref:"#/refs/"+e+"Modifiers"},{oneOf:[{$ref:"#/refs/signal",required:["signal"]},{properties:{value:t},required:["value"]},{properties:{field:{$ref:"#/refs/field"}},required:["field"]},{properties:{band:{type:"boolean"}},required:["band"]}]}]};return"string"===t.type&&n.allOf[1].oneOf.push({properties:{template:{type:"string"}},required:["template"]}),{oneOf:[{type:"object",properties:{rule:{type:"array",items:{allOf:[{$ref:"#/defs/rule"},n]}}},additionalProperties:!1,required:["rule"]},{type:"array",items:{allOf:[{$ref:"#/defs/rule"},n]}},n]}}var h=n(57),d=n(12),p=n(8),g=n(4).Tuple,m=["signals","scales","data","fields"];t.exports=r,r.schema={refs:{field:{title:"FieldRef",oneOf:[{type:"string"},{oneOf:[{$ref:"#/refs/signal"},{type:"object",properties:{datum:{$ref:"#/refs/field"}},required:["datum"],additionalProperties:!1},{type:"object",properties:{group:{$ref:"#/refs/field"},level:{type:"number"}},required:["group"],additionalProperties:!1},{type:"object",properties:{parent:{$ref:"#/refs/field"},level:{type:"number"}},required:["parent"],additionalProperties:!1}]}]},scale:{title:"ScaleRef",oneOf:[{$ref:"#/refs/field"},{type:"object",properties:{name:{$ref:"#/refs/field"},invert:{type:"boolean","default":!1}},required:["name"]}]},stringModifiers:{properties:{scale:{$ref:"#/refs/scale"}}},numberModifiers:{properties:{mult:{type:"number"},offset:{type:"number"},scale:{$ref:"#/refs/scale"}}},value:f({},"value"),numberValue:f("number","numberValue"),stringValue:f("string","stringValue"),booleanValue:f("boolean","booleanValue"),arrayValue:f("array","arrayValue"),colorValue:{title:"ColorRef",oneOf:[{$ref:"#/refs/stringValue"},{type:"object",properties:{r:{$ref:"#/refs/numberValue"},g:{$ref:"#/refs/numberValue"},b:{$ref:"#/refs/numberValue"}},required:["r","g","b"]},{type:"object",properties:{h:{$ref:"#/refs/numberValue"},s:{$ref:"#/refs/numberValue"},l:{$ref:"#/refs/numberValue"}},required:["h","s","l"]},{type:"object",properties:{l:{$ref:"#/refs/numberValue"},a:{$ref:"#/refs/numberValue"},b:{$ref:"#/refs/numberValue"}},required:["l","a","b"]},{type:"object",properties:{h:{$ref:"#/refs/numberValue"},c:{$ref:"#/refs/numberValue"},l:{$ref:"#/refs/numberValue"}},required:["h","c","l"]}]}},defs:{rule:{anyOf:[{type:"object",properties:{predicate:{oneOf:[{type:"string"},{type:"object",properties:{name:{type:"string"}},required:["name"]}]}}},{type:"object",properties:{test:{type:"string"}}}]},propset:{title:"Mark property set",type:"object",properties:{x:{$ref:"#/refs/numberValue"},x2:{$ref:"#/refs/numberValue"},xc:{$ref:"#/refs/numberValue"},width:{$ref:"#/refs/numberValue"},y:{$ref:"#/refs/numberValue"},y2:{$ref:"#/refs/numberValue"},yc:{$ref:"#/refs/numberValue"},height:{$ref:"#/refs/numberValue"},opacity:{$ref:"#/refs/numberValue"},fill:{$ref:"#/refs/colorValue"},fillOpacity:{$ref:"#/refs/numberValue"},stroke:{$ref:"#/refs/colorValue"},strokeWidth:{$ref:"#/refs/numberValue"},strokeOpacity:{$ref:"#/refs/numberValue"},strokeDash:{$ref:"#/refs/arrayValue"},strokeDashOffset:{$ref:"#/refs/numberValue"},cursor:{$ref:"#/refs/stringValue"},clip:{$ref:"#/refs/booleanValue"},size:{$ref:"#/refs/numberValue"},shape:f(["circle","square","cross","diamond","triangle-up","triangle-down"]),path:{$ref:"#/refs/stringValue"},innerRadius:{$ref:"#/refs/numberValue"},outerRadius:{$ref:"#/refs/numberValue"},startAngle:{$ref:"#/refs/numberValue"},endAngle:{$ref:"#/refs/numberValue"},interpolate:f(["linear","step-before","step-after","basis","basis-open","cardinal","cardinal-open","monotone"]),tension:{$ref:"#/refs/numberValue"},orient:f(["horizontal","vertical"]),url:{$ref:"#/refs/stringValue"},align:f(["left","right","center"]),baseline:f(["top","middle","bottom","alphabetic"]),text:{$ref:"#/refs/stringValue"},dx:{$ref:"#/refs/numberValue"},dy:{$ref:"#/refs/numberValue"},radius:{$ref:"#/refs/numberValue"},theta:{$ref:"#/refs/numberValue"},angle:{$ref:"#/refs/numberValue"},font:{$ref:"#/refs/stringValue"},fontSize:{$ref:"#/refs/numberValue"},fontWeight:{$ref:"#/refs/stringValue"},fontStyle:{$ref:"#/refs/stringValue"}},additionalProperties:!1}}}},function(t,e,n){var r,i;!function(){function a(t){return t&&(t.ownerDocument||t.document||t).documentElement}function o(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function u(t,e){return e>t?-1:t>e?1:t>=e?0:NaN}function s(t){return null===t?NaN:+t}function l(t){return!isNaN(t)}function c(t){return{left:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}}function f(t){return t.length}function h(t){for(var e=1;t*e%1;)e*=10;return e}function d(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function p(){this._=Object.create(null)}function g(t){return(t+="")===So||t[0]===Ao?Ao+t:t}function m(t){return(t+="")[0]===Ao?t.slice(1):t}function v(t){return g(t)in this._}function y(t){return(t=g(t))in this._&&delete this._[t]}function x(){var t=[];for(var e in this._)t.push(m(e));return t}function _(){var t=0;for(var e in this._)++t;return t}function b(){for(var t in this._)return!1;return!0}function M(){this._=Object.create(null)}function w(t){return t}function k(t,e,n){return function(){var r=n.apply(e,arguments);return r===e?t:r}}function E(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,r=To.length;r>n;++n){var i=To[n]+e;if(i in t)return i}}function S(){}function A(){}function T(t){function e(){for(var e,r=n,i=-1,a=r.length;++in;n++)for(var i,a=t[n],o=0,u=a.length;u>o;o++)(i=a[o])&&e(i,o,n);return t}function G(t){return No(t,Po),t}function Z(t){var e,n;return function(r,i,a){var o,u=t[a].update,s=u.length;for(a!=n&&(n=a,e=0),i>=e&&(e=i+1);!(o=u[e])&&++e0&&(t=t.slice(0,u));var l=zo.get(t);return l&&(t=l,s=K),u?e?i:r:e?S:a}function Q(t,e){return function(n){var r=ho.event;ho.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{ho.event=r}}}function K(t,e){var n=Q(t,e);return function(t){var e=this,r=t.relatedTarget;r&&(r===e||8&r.compareDocumentPosition(e))||n.call(e,t)}}function tt(t){var e=".dragsuppress-"+ ++qo,n="click"+e,r=ho.select(o(t)).on("touchmove"+e,O).on("dragstart"+e,O).on("selectstart"+e,O);if(null==jo&&(jo="onselectstart"in t?!1:E(t.style,"userSelect")),jo){var i=a(t).style,u=i[jo];i[jo]="none"}return function(t){if(r.on(e,null),jo&&(i[jo]=u),t){var a=function(){r.on(n,null)};r.on(n,function(){O(),a()},!0),setTimeout(a,0)}}}function et(t,e){e.changedTouches&&(e=e.changedTouches[0]);var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();if(0>$o){var i=o(t);if(i.scrollX||i.scrollY){n=ho.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=n[0][0].getScreenCTM();$o=!(a.f||a.e),n.remove()}}return $o?(r.x=e.pageX,r.y=e.pageY):(r.x=e.clientX,r.y=e.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var u=t.getBoundingClientRect();return[e.clientX-u.left-t.clientLeft,e.clientY-u.top-t.clientTop]}function nt(){return ho.event.changedTouches[0].identifier}function rt(t){return t>0?1:0>t?-1:0}function it(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function at(t){return t>1?0:-1>t?Ho:Math.acos(t)}function ot(t){return t>1?Xo:-1>t?-Xo:Math.asin(t)}function ut(t){return((t=Math.exp(t))-1/t)/2}function st(t){return((t=Math.exp(t))+1/t)/2}function lt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ct(t){return(t=Math.sin(t/2))*t}function ft(){}function ht(t,e,n){return this instanceof ht?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof ht?new ht(t.h,t.s,t.l):St(""+t,At,ht):new ht(t,e,n)}function dt(t,e,n){function r(t){return t>360?t-=360:0>t&&(t+=360),60>t?a+(o-a)*t/60:180>t?o:240>t?a+(o-a)*(240-t)/60:a; -}function i(t){return Math.round(255*r(t))}var a,o;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:0>e?0:e>1?1:e,n=0>n?0:n>1?1:n,o=.5>=n?n*(1+e):n+e-n*e,a=2*n-o,new Mt(i(t+120),i(t),i(t-120))}function pt(t,e,n){return this instanceof pt?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof pt?new pt(t.h,t.c,t.l):t instanceof mt?yt(t.l,t.a,t.b):yt((t=Tt((t=ho.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new pt(t,e,n)}function gt(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new mt(n,Math.cos(t*=Wo)*e,Math.sin(t)*e)}function mt(t,e,n){return this instanceof mt?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof mt?new mt(t.l,t.a,t.b):t instanceof pt?gt(t.h,t.c,t.l):Tt((t=Mt(t)).r,t.g,t.b):new mt(t,e,n)}function vt(t,e,n){var r=(t+16)/116,i=r+e/500,a=r-n/200;return i=xt(i)*au,r=xt(r)*ou,a=xt(a)*uu,new Mt(bt(3.2404542*i-1.5371385*r-.4985314*a),bt(-.969266*i+1.8760108*r+.041556*a),bt(.0556434*i-.2040259*r+1.0572252*a))}function yt(t,e,n){return t>0?new pt(Math.atan2(n,e)*Go,Math.sqrt(e*e+n*n),t):new pt(NaN,NaN,t)}function xt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function _t(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function bt(t){return Math.round(255*(.00304>=t?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function Mt(t,e,n){return this instanceof Mt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof Mt?new Mt(t.r,t.g,t.b):St(""+t,Mt,dt):new Mt(t,e,n)}function wt(t){return new Mt(t>>16,t>>8&255,255&t)}function kt(t){return wt(t)+""}function Et(t){return 16>t?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function St(t,e,n){var r,i,a,o=0,u=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return n(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(Nt(i[0]),Nt(i[1]),Nt(i[2]))}return(a=cu.get(t))?e(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o=o>>4|o,u=240&a,u=u>>4|u,s=15&a,s=s<<4|s):7===t.length&&(o=(16711680&a)>>16,u=(65280&a)>>8,s=255&a)),e(o,u,s))}function At(t,e,n){var r,i,a=Math.min(t/=255,e/=255,n/=255),o=Math.max(t,e,n),u=o-a,s=(o+a)/2;return u?(i=.5>s?u/(o+a):u/(2-o-a),r=t==o?(e-n)/u+(n>e?6:0):e==o?(n-t)/u+2:(t-e)/u+4,r*=60):(r=NaN,i=s>0&&1>s?0:r),new ht(r,i,s)}function Tt(t,e,n){t=Ot(t),e=Ot(e),n=Ot(n);var r=_t((.4124564*t+.3575761*e+.1804375*n)/au),i=_t((.2126729*t+.7151522*e+.072175*n)/ou),a=_t((.0193339*t+.119192*e+.9503041*n)/uu);return mt(116*i-16,500*(r-i),200*(i-a))}function Ot(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Nt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function Lt(t){return"function"==typeof t?t:function(){return t}}function Ct(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=null),Rt(e,n,t,r)}}function Rt(t,e,n,r){function i(){var t,e=s.status;if(!e&&It(s)||e>=200&&300>e||304===e){try{t=n.call(a,s)}catch(r){return void o.error.call(a,r)}o.load.call(a,t)}else o.error.call(a,s)}var a={},o=ho.dispatch("beforesend","progress","load","error"),u={},s=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(t)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=i:s.onreadystatechange=function(){s.readyState>3&&i()},s.onprogress=function(t){var e=ho.event;ho.event=t;try{o.progress.call(a,s)}finally{ho.event=e}},a.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?u[t]:(null==e?delete u[t]:u[t]=e+"",a)},a.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",a):e},a.responseType=function(t){return arguments.length?(l=t,a):l},a.response=function(t){return n=t,a},["get","post"].forEach(function(t){a[t]=function(){return a.send.apply(a,[t].concat(go(arguments)))}}),a.send=function(n,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),s.open(n,t,!0),null==e||"accept"in u||(u.accept=e+",*/*"),s.setRequestHeader)for(var c in u)s.setRequestHeader(c,u[c]);return null!=e&&s.overrideMimeType&&s.overrideMimeType(e),null!=l&&(s.responseType=l),null!=i&&a.on("error",i).on("load",function(t){i(null,t)}),o.beforesend.call(a,s),s.send(null==r?null:r),a},a.abort=function(){return s.abort(),a},ho.rebind(a,o,"on"),null==r?a:a.get(Dt(r))}function Dt(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function It(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Ut(t,e,n){var r=arguments.length;2>r&&(e=0),3>r&&(n=Date.now());var i=n+e,a={c:t,t:i,n:null};return hu?hu.n=a:fu=a,hu=a,du||(pu=clearTimeout(pu),du=1,gu(Pt)),a}function Pt(){var t=zt(),e=jt()-t;e>24?(isFinite(e)&&(clearTimeout(pu),pu=setTimeout(Pt,e)),du=0):(du=1,gu(Pt))}function zt(){for(var t=Date.now(),e=fu;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function jt(){for(var t,e=fu,n=1/0;e;)e.c?(e.t8?function(t){return t/n}:function(t){return t*n},symbol:t}}function Ft(t){var e=t.decimal,n=t.thousands,r=t.grouping,i=t.currency,a=r&&n?function(t,e){for(var i=t.length,a=[],o=0,u=r[0],s=0;i>0&&u>0&&(s+u+1>e&&(u=Math.max(1,e-s)),a.push(t.substring(i-=u,i+u)),!((s+=u+1)>e));)u=r[o=(o+1)%r.length];return a.reverse().join(n)}:w;return function(t){var n=vu.exec(t),r=n[1]||" ",o=n[2]||">",u=n[3]||"-",s=n[4]||"",l=n[5],c=+n[6],f=n[7],h=n[8],d=n[9],p=1,g="",m="",v=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),d){case"n":f=!0,d="g";break;case"%":p=100,m="%",d="f";break;case"p":p=100,m="%",d="r";break;case"b":case"o":case"x":case"X":"#"===s&&(g="0"+d.toLowerCase());case"c":y=!1;case"d":v=!0,h=0;break;case"s":p=-1,d="r"}"$"===s&&(g=i[0],m=i[1]),"r"!=d||h||(d="g"),null!=h&&("g"==d?h=Math.max(1,Math.min(21,h)):"e"!=d&&"f"!=d||(h=Math.max(0,Math.min(20,h)))),d=yu.get(d)||Yt;var x=l&&f;return function(t){var n=m;if(v&&t%1)return"";var i=0>t||0===t&&0>1/t?(t=-t,"-"):"-"===u?"":u;if(0>p){var s=ho.formatPrefix(t,h);t=s.scale(t),n=s.symbol+m}else t*=p;t=d(t,h);var _,b,M=t.lastIndexOf(".");if(0>M){var w=y?t.lastIndexOf("e"):-1;0>w?(_=t,b=""):(_=t.substring(0,w),b=t.substring(w))}else _=t.substring(0,M),b=e+t.substring(M+1);!l&&f&&(_=a(_,1/0));var k=g.length+_.length+b.length+(x?0:i.length),E=c>k?new Array(k=c-k+1).join(r):"";return x&&(_=a(E+_,E.length?c-b.length:1/0)),i+=g,t=_+b,("<"===o?i+t+E:">"===o?E+i+t:"^"===o?E.substring(0,k>>=1)+i+t+E.substring(k):i+(x?t:E+t))+n}}}function Yt(t){return t+""}function Ht(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Bt(t,e,n){function r(e){var n=t(e),r=a(n,1);return r-e>e-n?n:r}function i(n){return e(n=t(new _u(n-1)),1),n}function a(t,n){return e(t=new _u(+t),n),t}function o(t,r,a){var o=i(t),u=[];if(a>1)for(;r>o;)n(o)%a||u.push(new Date(+o)),e(o,1);else for(;r>o;)u.push(new Date(+o)),e(o,1);return u}function u(t,e,n){try{_u=Ht;var r=new Ht;return r._=t,o(r,e,n)}finally{_u=Date}}t.floor=t,t.round=r,t.ceil=i,t.offset=a,t.range=o;var s=t.utc=Vt(t);return s.floor=s,s.round=Vt(r),s.ceil=Vt(i),s.offset=Vt(a),s.range=u,t}function Vt(t){return function(e,n){try{_u=Ht;var r=new Ht;return r._=e,t(r,n)._}finally{_u=Date}}}function Xt(t){function e(t){function e(e){for(var n,i,a,o=[],u=-1,s=0;++uu;){if(r>=l)return-1;if(i=e.charCodeAt(u++),37===i){if(o=e.charAt(u++),a=O[o in Mu?e.charAt(u++):o],!a||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function r(t,e,n){M.lastIndex=0;var r=M.exec(e.slice(n));return r?(t.w=w.get(r[0].toLowerCase()),n+r[0].length):-1}function i(t,e,n){_.lastIndex=0;var r=_.exec(e.slice(n));return r?(t.w=b.get(r[0].toLowerCase()),n+r[0].length):-1}function a(t,e,n){S.lastIndex=0;var r=S.exec(e.slice(n));return r?(t.m=A.get(r[0].toLowerCase()),n+r[0].length):-1}function o(t,e,n){k.lastIndex=0;var r=k.exec(e.slice(n));return r?(t.m=E.get(r[0].toLowerCase()),n+r[0].length):-1}function u(t,e,r){return n(t,T.c.toString(),e,r)}function s(t,e,r){return n(t,T.x.toString(),e,r)}function l(t,e,r){return n(t,T.X.toString(),e,r)}function c(t,e,n){var r=x.get(e.slice(n,n+=2).toLowerCase());return null==r?-1:(t.p=r,n)}var f=t.dateTime,h=t.date,d=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{_u=Ht;var e=new _u;return e._=t,r(e)}finally{_u=Date}}var r=e(t);return n.parse=function(t){try{_u=Ht;var e=r.parse(t);return e&&e._}finally{_u=Date}},n.toString=r.toString,n},e.multi=e.utc.multi=de;var x=ho.map(),_=Gt(g),b=Zt(g),M=Gt(m),w=Zt(m),k=Gt(v),E=Zt(v),S=Gt(y),A=Zt(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var T={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(f),d:function(t,e){return Wt(t.getDate(),e,2)},e:function(t,e){return Wt(t.getDate(),e,2)},H:function(t,e){return Wt(t.getHours(),e,2)},I:function(t,e){return Wt(t.getHours()%12||12,e,2)},j:function(t,e){return Wt(1+xu.dayOfYear(t),e,3)},L:function(t,e){return Wt(t.getMilliseconds(),e,3)},m:function(t,e){return Wt(t.getMonth()+1,e,2)},M:function(t,e){return Wt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Wt(t.getSeconds(),e,2)},U:function(t,e){return Wt(xu.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Wt(xu.mondayOfYear(t),e,2)},x:e(h),X:e(d),y:function(t,e){return Wt(t.getFullYear()%100,e,2)},Y:function(t,e){return Wt(t.getFullYear()%1e4,e,4)},Z:fe,"%":function(){return"%"}},O={a:r,A:i,b:a,B:o,c:u,d:ae,e:ae,H:ue,I:ue,j:oe,L:ce,m:ie,M:se,p:c,S:le,U:Qt,w:Jt,W:Kt,x:s,X:l,y:ee,Y:te,Z:ne,"%":he};return e}function Wt(t,e,n){var r=0>t?"-":"",i=(r?-t:t)+"",a=i.length;return r+(n>a?new Array(n-a+1).join(e)+i:i)}function Gt(t){return new RegExp("^(?:"+t.map(ho.requote).join("|")+")","i")}function Zt(t){for(var e=new p,n=-1,r=t.length;++n68?1900:2e3)}function ie(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ae(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function oe(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.j=+r[0],n+r[0].length):-1}function ue(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function se(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function le(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function ce(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function fe(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",r=Eo(e)/60|0,i=Eo(e)%60;return n+Wt(r,"0",2)+Wt(i,"0",2)}function he(t,e,n){ku.lastIndex=0;var r=ku.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function de(t){for(var e=t.length,n=-1;++n=0?1:-1,u=o*n,s=Math.cos(e),l=Math.sin(e),c=a*l,f=i*s+c*Math.cos(u),h=c*o*Math.sin(u);Nu.add(Math.atan2(h,f)),r=t,i=s,a=l}var e,n,r,i,a;Lu.point=function(o,u){Lu.point=t,r=(e=o)*Wo,i=Math.cos(u=(n=u)*Wo/2+Ho/4),a=Math.sin(u)},Lu.lineEnd=function(){t(e,n)}}function _e(t){var e=t[0],n=t[1],r=Math.cos(n);return[r*Math.cos(e),r*Math.sin(e),Math.sin(n)]}function be(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Me(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function we(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ke(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Ee(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Se(t){return[Math.atan2(t[1],t[0]),ot(t[2])]}function Ae(t,e){return Eo(t[0]-e[0])u;++u)i.point((n=t[u])[0],n[1]);return void i.lineEnd()}var s=new Pe(n,t,null,!0),l=new Pe(n,null,s,!1);s.o=l,a.push(s),o.push(l),s=new Pe(r,t,null,!1),l=new Pe(r,null,s,!0),s.o=l,a.push(s),o.push(l)}}),o.sort(e),Ue(a),Ue(o),a.length){for(var u=0,s=n,l=o.length;l>u;++u)o[u].e=s=!s;for(var c,f,h=a[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;c=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(var u=0,l=c.length;l>u;++u)i.point((f=c[u])[0],f[1]);else r(d.x,d.n.x,1,i);d=d.n}else{if(p){c=d.p.z;for(var u=c.length-1;u>=0;--u)i.point((f=c[u])[0],f[1])}else r(d.x,d.p.x,-1,i);d=d.p}d=d.o,c=d.z,p=!p}while(!d.v);i.lineEnd()}}}function Ue(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r0){for(b||(a.polygonStart(),b=!0),a.lineStart();++o1&&2&e&&n.push(n.pop().concat(n.shift())),d.push(n.filter(je))}var d,p,g,m=e(a),v=i.invert(r[0],r[1]),y={point:o,lineStart:s,lineEnd:l,polygonStart:function(){y.point=c,y.lineStart=f,y.lineEnd=h,d=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=s,y.lineEnd=l,d=ho.merge(d);var t=Be(v,p);d.length?(b||(a.polygonStart(),b=!0),Ie(d,$e,t,n,a)):t&&(b||(a.polygonStart(),b=!0),a.lineStart(),n(null,null,1,a),a.lineEnd()),b&&(a.polygonEnd(),b=!1),d=p=null},sphere:function(){a.polygonStart(),a.lineStart(),n(null,null,1,a),a.lineEnd(),a.polygonEnd()}},x=qe(),_=e(x),b=!1;return y}}function je(t){return t.length>1}function qe(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:S,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function $e(t,e){return((t=t.x)[0]<0?t[1]-Xo-Fo:Xo-t[1])-((e=e.x)[0]<0?e[1]-Xo-Fo:Xo-e[1])}function Fe(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var u=a>0?Ho:-Ho,s=Eo(a-n);Eo(s-Ho)0?Xo:-Xo),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(a,r),e=0):i!==u&&s>=Ho&&(Eo(n-i)Fo?Math.atan((Math.sin(e)*(a=Math.cos(r))*Math.sin(n)-Math.sin(r)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+r)/2}function He(t,e,n,r){var i;if(null==t)i=n*Xo,r.point(-Ho,i),r.point(0,i),r.point(Ho,i),r.point(Ho,0),r.point(Ho,-i),r.point(0,-i),r.point(-Ho,-i),r.point(-Ho,0),r.point(-Ho,i);else if(Eo(t[0]-e[0])>Fo){var a=t[0]u;++u){var l=e[u],c=l.length;if(c)for(var f=l[0],h=f[0],d=f[1]/2+Ho/4,p=Math.sin(d),g=Math.cos(d),m=1;;){m===c&&(m=0),t=l[m];var v=t[0],y=t[1]/2+Ho/4,x=Math.sin(y),_=Math.cos(y),b=v-h,M=b>=0?1:-1,w=M*b,k=w>Ho,E=p*x;if(Nu.add(Math.atan2(E*M*Math.sin(w),g*_+E*Math.cos(w))),a+=k?b+M*Bo:b,k^h>=n^v>=n){var S=Me(_e(f),_e(t));Ee(S);var A=Me(i,S);Ee(A);var T=(k^b>=0?-1:1)*ot(A[2]);(r>T||r===T&&(S[0]||S[1]))&&(o+=k^b>=0?1:-1)}if(!m++)break;h=v,p=x,g=_,f=t}}return(-Fo>a||Fo>a&&-Fo>Nu)^1&o}function Ve(t){function e(t,e){return Math.cos(t)*Math.cos(e)>a}function n(t){var n,a,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var d,p=[f,h],g=e(f,h),m=o?g?0:i(f,h):g?i(f+(0>f?Ho:-Ho),h):0;if(!n&&(l=s=g)&&t.lineStart(),g!==s&&(d=r(n,p),(Ae(n,d)||Ae(p,d))&&(p[0]+=Fo,p[1]+=Fo,g=e(p[0],p[1]))),g!==s)c=0,g?(t.lineStart(),d=r(p,n),t.point(d[0],d[1])):(d=r(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(u&&n&&o^g){var v;m&a||!(v=r(p,n,!0))||(c=0,o?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&Ae(n,p)||t.point(p[0],p[1]),n=p,s=g,a=m},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}}function r(t,e,n){var r=_e(t),i=_e(e),o=[1,0,0],u=Me(r,i),s=be(u,u),l=u[0],c=s-l*l;if(!c)return!n&&t;var f=a*s/c,h=-a*l/c,d=Me(o,u),p=ke(o,f),g=ke(u,h);we(p,g);var m=d,v=be(p,m),y=be(m,m),x=v*v-y*(be(p,p)-1);if(!(0>x)){var _=Math.sqrt(x),b=ke(m,(-v-_)/y);if(we(b,p),b=Se(b),!n)return b;var M,w=t[0],k=e[0],E=t[1],S=e[1];w>k&&(M=w,w=k,k=M);var A=k-w,T=Eo(A-Ho)A;if(!T&&E>S&&(M=E,E=S,S=M),O?T?E+S>0^b[1]<(Eo(b[0]-w)Ho^(w<=b[0]&&b[0]<=k)){var N=ke(m,(-v+_)/y);return we(N,p),[b,Se(N)]}}}function i(e,n){var r=o?t:Ho-t,i=0;return-r>e?i|=1:e>r&&(i|=2),-r>n?i|=4:n>r&&(i|=8),i}var a=Math.cos(t),o=a>0,u=Eo(a)>Fo,s=_n(t,6*Wo);return ze(e,n,s,o?[0,-t]:[-Ho,t-Ho])}function Xe(t,e,n,r){return function(i){var a,o=i.a,u=i.b,s=o.x,l=o.y,c=u.x,f=u.y,h=0,d=1,p=c-s,g=f-l;if(a=t-s,p||!(a>0)){if(a/=p,0>p){if(h>a)return;d>a&&(d=a)}else if(p>0){if(a>d)return;a>h&&(h=a)}if(a=n-s,p||!(0>a)){if(a/=p,0>p){if(a>d)return;a>h&&(h=a)}else if(p>0){if(h>a)return;d>a&&(d=a)}if(a=e-l,g||!(a>0)){if(a/=g,0>g){if(h>a)return;d>a&&(d=a)}else if(g>0){if(a>d)return;a>h&&(h=a)}if(a=r-l,g||!(0>a)){if(a/=g,0>g){if(a>d)return;a>h&&(h=a)}else if(g>0){if(h>a)return;d>a&&(d=a)}return h>0&&(i.a={x:s+h*p,y:l+h*g}),1>d&&(i.b={x:s+d*p,y:l+d*g}),i}}}}}}function We(t,e,n,r){function i(r,i){return Eo(r[0]-t)0?0:3:Eo(r[0]-n)0?2:1:Eo(r[1]-e)0?1:0:i>0?3:2}function a(t,e){return o(t.x,e.x)}function o(t,e){var n=i(t,1),r=i(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(u){function s(t){for(var e=0,n=m.length,r=t[1],i=0;n>i;++i)for(var a,o=1,u=m[i],s=u.length,l=u[0];s>o;++o)a=u[o],l[1]<=r?a[1]>r&&it(l,a,t)>0&&++e:a[1]<=r&&it(l,a,t)<0&&--e,l=a;return 0!==e}function l(a,u,s,l){var c=0,f=0;if(null==a||(c=i(a,s))!==(f=i(u,s))||o(a,u)<0^s>0){do l.point(0===c||3===c?t:n,c>1?r:e);while((c=(c+s+4)%4)!==f)}else l.point(u[0],u[1])}function c(i,a){return i>=t&&n>=i&&a>=e&&r>=a}function f(t,e){c(t,e)&&u.point(t,e)}function h(){O.point=p,m&&m.push(v=[]),k=!0,w=!1,b=M=NaN}function d(){g&&(p(y,x),_&&w&&A.rejoin(),g.push(A.buffer())),O.point=f,w&&u.lineEnd()}function p(t,e){t=Math.max(-Bu,Math.min(Bu,t)),e=Math.max(-Bu,Math.min(Bu,e));var n=c(t,e);if(m&&v.push([t,e]),k)y=t,x=e,_=n,k=!1,n&&(u.lineStart(),u.point(t,e));else if(n&&w)u.point(t,e);else{var r={a:{x:b,y:M},b:{x:t,y:e}};T(r)?(w||(u.lineStart(),u.point(r.a.x,r.a.y)),u.point(r.b.x,r.b.y),n||u.lineEnd(),E=!1):n&&(u.lineStart(),u.point(t,e),E=!1)}b=t,M=e,w=n}var g,m,v,y,x,_,b,M,w,k,E,S=u,A=qe(),T=Xe(t,e,n,r),O={point:f,lineStart:h,lineEnd:d,polygonStart:function(){u=A,g=[],m=[],E=!0},polygonEnd:function(){u=S,g=ho.merge(g);var e=s([t,r]),n=E&&e,i=g.length;(n||i)&&(u.polygonStart(),n&&(u.lineStart(),l(null,null,1,u),u.lineEnd()),i&&Ie(g,a,e,l,u),u.polygonEnd()),g=m=v=null}};return O}}function Ge(t){var e=0,n=Ho/3,r=hn(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*Ho/180,n=t[1]*Ho/180):[e/Ho*180,n/Ho*180]},i}function Ze(t,e){function n(t,e){var n=Math.sqrt(a-2*i*Math.sin(e))/i;return[n*Math.sin(t*=i),o-n*Math.cos(t)]}var r=Math.sin(t),i=(r+Math.sin(e))/2,a=1+r*(2*i-r),o=Math.sqrt(a)/i;return n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/i,ot((a-(t*t+n*n)*i*i)/(2*i))]},n}function Je(){function t(t,e){Xu+=i*t-r*e,r=t,i=e}var e,n,r,i;Qu.point=function(a,o){Qu.point=t,e=r=a,n=i=o},Qu.lineEnd=function(){t(e,n)}}function Qe(t,e){Wu>t&&(Wu=t),t>Zu&&(Zu=t),Gu>e&&(Gu=e),e>Ju&&(Ju=e)}function Ke(){function t(t,e){o.push("M",t,",",e,a)}function e(t,e){o.push("M",t,",",e),u.point=n}function n(t,e){o.push("L",t,",",e)}function r(){u.point=t}function i(){o.push("Z")}var a=tn(4.5),o=[],u={point:t,lineStart:function(){u.point=e},lineEnd:r,polygonStart:function(){u.lineEnd=i},polygonEnd:function(){u.lineEnd=r,u.point=t},pointRadius:function(t){return a=tn(t),u},result:function(){if(o.length){var t=o.join("");return o=[],t}}};return u}function tn(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function en(t,e){Du+=t,Iu+=e,++Uu}function nn(){function t(t,r){var i=t-e,a=r-n,o=Math.sqrt(i*i+a*a);Pu+=o*(e+t)/2,zu+=o*(n+r)/2,ju+=o,en(e=t,n=r)}var e,n;ts.point=function(r,i){ts.point=t,en(e=r,n=i)}}function rn(){ts.point=en}function an(){function t(t,e){var n=t-r,a=e-i,o=Math.sqrt(n*n+a*a);Pu+=o*(r+t)/2,zu+=o*(i+e)/2,ju+=o,o=i*t-r*e,qu+=o*(r+t),$u+=o*(i+e),Fu+=3*o,en(r=t,i=e)}var e,n,r,i;ts.point=function(a,o){ts.point=t,en(e=r=a,n=i=o)},ts.lineEnd=function(){t(e,n)}}function on(t){function e(e,n){t.moveTo(e+o,n),t.arc(e,n,o,0,Bo)}function n(e,n){t.moveTo(e,n),u.point=r}function r(e,n){t.lineTo(e,n)}function i(){u.point=e}function a(){t.closePath()}var o=4.5,u={point:e,lineStart:function(){u.point=n},lineEnd:i,polygonStart:function(){u.lineEnd=a},polygonEnd:function(){u.lineEnd=i,u.point=e},pointRadius:function(t){return o=t,u},result:S};return u}function un(t){function e(t){return(u?r:n)(t)}function n(e){return cn(e,function(n,r){n=t(n,r),e.point(n[0],n[1])})}function r(e){function n(n,r){n=t(n,r),e.point(n[0],n[1])}function r(){x=NaN,k.point=a,e.lineStart()}function a(n,r){var a=_e([n,r]),o=t(n,r);i(x,_,y,b,M,w,x=o[0],_=o[1],y=n,b=a[0],M=a[1],w=a[2],u,e),e.point(x,_)}function o(){k.point=n,e.lineEnd()}function s(){r(),k.point=l,k.lineEnd=c}function l(t,e){a(f=t,h=e),d=x,p=_,g=b,m=M,v=w,k.point=a}function c(){i(x,_,y,b,M,w,d,p,f,g,m,v,u,e),k.lineEnd=o,o()}var f,h,d,p,g,m,v,y,x,_,b,M,w,k={point:n,lineStart:r,lineEnd:o,polygonStart:function(){e.polygonStart(),k.lineStart=s},polygonEnd:function(){e.polygonEnd(),k.lineStart=r}};return k}function i(e,n,r,u,s,l,c,f,h,d,p,g,m,v){var y=c-e,x=f-n,_=y*y+x*x;if(_>4*a&&m--){var b=u+d,M=s+p,w=l+g,k=Math.sqrt(b*b+M*M+w*w),E=Math.asin(w/=k),S=Eo(Eo(w)-1)a||Eo((y*N+x*L)/_-.5)>.3||o>u*d+s*p+l*g)&&(i(e,n,r,u,s,l,T,O,S,b/=k,M/=k,w,m,v),v.point(T,O),i(T,O,S,b,M,w,c,f,h,d,p,g,m,v))}}var a=.5,o=Math.cos(30*Wo),u=16;return e.precision=function(t){return arguments.length?(u=(a=t*t)>0&&16,e):Math.sqrt(a)},e}function sn(t){var e=un(function(e,n){return t([e*Go,n*Go])});return function(t){return dn(e(t))}}function ln(t){this.stream=t}function cn(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function fn(t){return hn(function(){return t})()}function hn(t){function e(t){return t=u(t[0]*Wo,t[1]*Wo),[t[0]*h+s,l-t[1]*h]}function n(t){return t=u.invert((t[0]-s)/h,(l-t[1])/h),t&&[t[0]*Go,t[1]*Go]}function r(){u=Re(o=mn(v,y,x),a);var t=a(g,m);return s=d-t[0]*h,l=p+t[1]*h,i()}function i(){return c&&(c.valid=!1,c=null),e}var a,o,u,s,l,c,f=un(function(t,e){return t=a(t,e),[t[0]*h+s,l-t[1]*h]}),h=150,d=480,p=250,g=0,m=0,v=0,y=0,x=0,_=Hu,b=w,M=null,k=null;return e.stream=function(t){return c&&(c.valid=!1),c=dn(_(o,f(b(t)))),c.valid=!0,c},e.clipAngle=function(t){return arguments.length?(_=null==t?(M=t,Hu):Ve((M=+t)*Wo),i()):M},e.clipExtent=function(t){return arguments.length?(k=t,b=t?We(t[0][0],t[0][1],t[1][0],t[1][1]):w,i()):k},e.scale=function(t){return arguments.length?(h=+t,r()):h},e.translate=function(t){return arguments.length?(d=+t[0],p=+t[1],r()):[d,p]},e.center=function(t){return arguments.length?(g=t[0]%360*Wo,m=t[1]%360*Wo,r()):[g*Go,m*Go]},e.rotate=function(t){return arguments.length?(v=t[0]%360*Wo,y=t[1]%360*Wo,x=t.length>2?t[2]%360*Wo:0,r()):[v*Go,y*Go,x*Go]},ho.rebind(e,f,"precision"),function(){return a=t.apply(this,arguments),e.invert=a.invert&&n,r()}}function dn(t){return cn(t,function(e,n){t.point(e*Wo,n*Wo)})}function pn(t,e){return[t,e]}function gn(t,e){return[t>Ho?t-Bo:-Ho>t?t+Bo:t,e]}function mn(t,e,n){return t?e||n?Re(yn(t),xn(e,n)):yn(t):e||n?xn(e,n):gn}function vn(t){return function(e,n){return e+=t,[e>Ho?e-Bo:-Ho>e?e+Bo:e,n]}}function yn(t){var e=vn(t);return e.invert=vn(-t),e}function xn(t,e){function n(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*r+u*i;return[Math.atan2(s*a-c*o,u*r-l*i),ot(c*a+s*o)]}var r=Math.cos(t),i=Math.sin(t),a=Math.cos(e),o=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*a-s*o;return[Math.atan2(s*a+l*o,u*r+c*i),ot(c*r-u*i)]},n}function _n(t,e){var n=Math.cos(t),r=Math.sin(t);return function(i,a,o,u){var s=o*e;null!=i?(i=bn(n,i),a=bn(n,a),(o>0?a>i:i>a)&&(i+=o*Bo)):(i=t+o*Bo,a=t-.5*s);for(var l,c=i;o>0?c>a:a>c;c-=s)u.point((l=Se([n,-r*Math.cos(c),-r*Math.sin(c)]))[0],l[1])}}function bn(t,e){var n=_e(e);n[0]-=t,Ee(n);var r=at(-n[1]);return((-n[2]<0?-r:r)+2*Math.PI-Fo)%(2*Math.PI)}function Mn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[t,e]})}}function wn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[e,t]})}}function kn(t){return t.source}function En(t){return t.target}function Sn(t,e,n,r){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(r),u=Math.sin(r),s=i*Math.cos(t),l=i*Math.sin(t),c=o*Math.cos(n),f=o*Math.sin(n),h=2*Math.asin(Math.sqrt(ct(r-e)+i*o*ct(n-t))),d=1/Math.sin(h),p=h?function(t){var e=Math.sin(t*=h)*d,n=Math.sin(h-t)*d,r=n*s+e*c,i=n*l+e*f,o=n*a+e*u;return[Math.atan2(i,r)*Go,Math.atan2(o,Math.sqrt(r*r+i*i))*Go]}:function(){return[t*Go,e*Go]};return p.distance=h,p}function An(){function t(t,i){var a=Math.sin(i*=Wo),o=Math.cos(i),u=Eo((t*=Wo)-e),s=Math.cos(u);es+=Math.atan2(Math.sqrt((u=o*Math.sin(u))*u+(u=r*a-n*o*s)*u),n*a+r*o*s),e=t,n=a,r=o}var e,n,r;ns.point=function(i,a){e=i*Wo,n=Math.sin(a*=Wo),r=Math.cos(a),ns.point=t},ns.lineEnd=function(){ns.point=ns.lineEnd=S}}function Tn(t,e){function n(e,n){var r=Math.cos(e),i=Math.cos(n),a=t(r*i);return[a*i*Math.sin(e),a*Math.sin(n)]}return n.invert=function(t,n){var r=Math.sqrt(t*t+n*n),i=e(r),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,r*o),Math.asin(r&&n*a/r)]},n}function On(t,e){function n(t,e){o>0?-Xo+Fo>e&&(e=-Xo+Fo):e>Xo-Fo&&(e=Xo-Fo);var n=o/Math.pow(i(e),a);return[n*Math.sin(a*t),o-n*Math.cos(a*t)]}var r=Math.cos(t),i=function(t){return Math.tan(Ho/4+t/2)},a=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log(i(e)/i(t)),o=r*Math.pow(i(t),a)/a;return a?(n.invert=function(t,e){var n=o-e,r=rt(a)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/a,2*Math.atan(Math.pow(o/r,1/a))-Xo]},n):Ln}function Nn(t,e){function n(t,e){var n=a-e;return[n*Math.sin(i*t),a-n*Math.cos(i*t)]}var r=Math.cos(t),i=t===e?Math.sin(t):(r-Math.cos(e))/(e-t),a=r/i+t;return Eo(i)i;i++){for(;r>1&&it(t[n[r-2]],t[n[r-1]],t[i])<=0;)--r;n[r++]=i}return n.slice(0,r)}function Pn(t,e){return t[0]-e[0]||t[1]-e[1]}function zn(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function jn(t,e,n,r){var i=t[0],a=n[0],o=e[0]-i,u=r[0]-a,s=t[1],l=n[1],c=e[1]-s,f=r[1]-l,h=(u*(s-l)-f*(i-a))/(f*o-u*c);return[i+h*o,s+h*c]}function qn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function $n(){sr(this),this.edge=this.site=this.circle=null}function Fn(t){var e=ps.pop()||new $n;return e.site=t,e}function Yn(t){Kn(t),fs.remove(t),ps.push(t),sr(t)}function Hn(t){var e=t.circle,n=e.x,r=e.cy,i={x:n,y:r},a=t.P,o=t.N,u=[t];Yn(t);for(var s=a;s.circle&&Eo(n-s.circle.x)c;++c)l=u[c],s=u[c-1],ar(l.edge,s.site,l.site,i);s=u[0],l=u[f-1],l.edge=rr(s.site,l.site,null,i),Qn(s),Qn(l)}function Bn(t){for(var e,n,r,i,a=t.x,o=t.y,u=fs._;u;)if(r=Vn(u,o)-a,r>Fo)u=u.L;else{ -if(i=a-Xn(u,o),!(i>Fo)){r>-Fo?(e=u.P,n=u):i>-Fo?(e=u,n=u.N):e=n=u;break}if(!u.R){e=u;break}u=u.R}var s=Fn(t);if(fs.insert(e,s),e||n){if(e===n)return Kn(e),n=Fn(e.site),fs.insert(s,n),s.edge=n.edge=rr(e.site,s.site),Qn(e),void Qn(n);if(!n)return void(s.edge=rr(e.site,s.site));Kn(e),Kn(n);var l=e.site,c=l.x,f=l.y,h=t.x-c,d=t.y-f,p=n.site,g=p.x-c,m=p.y-f,v=2*(h*m-d*g),y=h*h+d*d,x=g*g+m*m,_={x:(m*y-d*x)/v+c,y:(h*x-g*y)/v+f};ar(n.edge,l,p,_),s.edge=rr(l,t,null,_),n.edge=rr(t,p,null,_),Qn(e),Qn(n)}}function Vn(t,e){var n=t.site,r=n.x,i=n.y,a=i-e;if(!a)return r;var o=t.P;if(!o)return-(1/0);n=o.site;var u=n.x,s=n.y,l=s-e;if(!l)return u;var c=u-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+i-a/2)))/f+r:(r+u)/2}function Xn(t,e){var n=t.N;if(n)return Vn(n,e);var r=t.site;return r.y===e?r.x:1/0}function Wn(t){this.site=t,this.edges=[]}function Gn(t){for(var e,n,r,i,a,o,u,s,l,c,f=t[0][0],h=t[1][0],d=t[0][1],p=t[1][1],g=cs,m=g.length;m--;)if(a=g[m],a&&a.prepare())for(u=a.edges,s=u.length,o=0;s>o;)c=u[o].end(),r=c.x,i=c.y,l=u[++o%s].start(),e=l.x,n=l.y,(Eo(r-e)>Fo||Eo(i-n)>Fo)&&(u.splice(o,0,new or(ir(a.site,c,Eo(r-f)Fo?{x:f,y:Eo(e-f)Fo?{x:Eo(n-p)Fo?{x:h,y:Eo(e-h)Fo?{x:Eo(n-d)=-Yo)){var d=s*s+l*l,p=c*c+f*f,g=(f*d-l*p)/h,m=(s*p-c*d)/h,f=m+u,v=gs.pop()||new Jn;v.arc=t,v.site=i,v.x=g+o,v.y=f+Math.sqrt(g*g+m*m),v.cy=f,t.circle=v;for(var y=null,x=ds._;x;)if(v.ym||m>=u)return;if(h>p){if(a){if(a.y>=l)return}else a={x:m,y:s};n={x:m,y:l}}else{if(a){if(a.yr||r>1)if(h>p){if(a){if(a.y>=l)return}else a={x:(s-i)/r,y:s};n={x:(l-i)/r,y:l}}else{if(a){if(a.yd){if(a){if(a.x>=u)return}else a={x:o,y:r*o+i};n={x:u,y:r*u+i}}else{if(a){if(a.xa||f>o||r>h||i>d)){if(p=t.point){var p,g=e-t.x,m=n-t.y,v=g*g+m*m;if(s>v){var y=Math.sqrt(s=v);r=e-y,i=n-y,a=e+y,o=n+y,u=p}}for(var x=t.nodes,_=.5*(c+h),b=.5*(f+d),M=e>=_,w=n>=b,k=w<<1|M,E=k+4;E>k;++k)if(t=x[3&k])switch(3&k){case 0:l(t,c,f,_,b);break;case 1:l(t,_,f,h,b);break;case 2:l(t,c,b,_,d);break;case 3:l(t,_,b,h,d)}}}(t,r,i,a,o),u}function _r(t,e){t=ho.rgb(t),e=ho.rgb(e);var n=t.r,r=t.g,i=t.b,a=e.r-n,o=e.g-r,u=e.b-i;return function(t){return"#"+Et(Math.round(n+a*t))+Et(Math.round(r+o*t))+Et(Math.round(i+u*t))}}function br(t,e){var n,r={},i={};for(n in t)n in e?r[n]=kr(t[n],e[n]):i[n]=t[n];for(n in e)n in t||(i[n]=e[n]);return function(t){for(n in r)i[n]=r[n](t);return i}}function Mr(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function wr(t,e){var n,r,i,a=vs.lastIndex=ys.lastIndex=0,o=-1,u=[],s=[];for(t+="",e+="";(n=vs.exec(t))&&(r=ys.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),u[o]?u[o]+=i:u[++o]=i),(n=n[0])===(r=r[0])?u[o]?u[o]+=r:u[++o]=r:(u[++o]=null,s.push({i:o,x:Mr(n,r)})),a=ys.lastIndex;return ar;++r)u[(n=s[r]).i]=n.x(t);return u.join("")})}function kr(t,e){for(var n,r=ho.interpolators.length;--r>=0&&!(n=ho.interpolators[r](t,e)););return n}function Er(t,e){var n,r=[],i=[],a=t.length,o=e.length,u=Math.min(t.length,e.length);for(n=0;u>n;++n)r.push(kr(t[n],e[n]));for(;a>n;++n)i[n]=t[n];for(;o>n;++n)i[n]=e[n];return function(t){for(n=0;u>n;++n)i[n]=r[n](t);return i}}function Sr(t){return function(e){return 0>=e?0:e>=1?1:t(e)}}function Ar(t){return function(e){return 1-t(1-e)}}function Tr(t){return function(e){return.5*(.5>e?t(2*e):2-t(2-2*e))}}function Or(t){return t*t}function Nr(t){return t*t*t}function Lr(t){if(0>=t)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(.5>t?n:3*(t-e)+n-.75)}function Cr(t){return function(e){return Math.pow(e,t)}}function Rr(t){return 1-Math.cos(t*Xo)}function Dr(t){return Math.pow(2,10*(t-1))}function Ir(t){return 1-Math.sqrt(1-t*t)}function Ur(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Bo*Math.asin(1/t):(t=1,n=e/4),function(r){return 1+t*Math.pow(2,-10*r)*Math.sin((r-n)*Bo/e)}}function Pr(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function zr(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function jr(t,e){t=ho.hcl(t),e=ho.hcl(e);var n=t.h,r=t.c,i=t.l,a=e.h-n,o=e.c-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.c:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return gt(n+a*t,r+o*t,i+u*t)+""}}function qr(t,e){t=ho.hsl(t),e=ho.hsl(e);var n=t.h,r=t.s,i=t.l,a=e.h-n,o=e.s-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.s:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return dt(n+a*t,r+o*t,i+u*t)+""}}function $r(t,e){t=ho.lab(t),e=ho.lab(e);var n=t.l,r=t.a,i=t.b,a=e.l-n,o=e.a-r,u=e.b-i;return function(t){return vt(n+a*t,r+o*t,i+u*t)+""}}function Fr(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Yr(t){var e=[t.a,t.b],n=[t.c,t.d],r=Br(e),i=Hr(e,n),a=Br(Vr(n,e,-i))||0;e[0]*n[1]180?e+=360:e-t>180&&(t+=360),r.push({i:n.push(Xr(n)+"rotate(",null,")")-2,x:Mr(t,e)})):e&&n.push(Xr(n)+"rotate("+e+")")}function Zr(t,e,n,r){t!==e?r.push({i:n.push(Xr(n)+"skewX(",null,")")-2,x:Mr(t,e)}):e&&n.push(Xr(n)+"skewX("+e+")")}function Jr(t,e,n,r){if(t[0]!==e[0]||t[1]!==e[1]){var i=n.push(Xr(n)+"scale(",null,",",null,")");r.push({i:i-4,x:Mr(t[0],e[0])},{i:i-2,x:Mr(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(Xr(n)+"scale("+e+")")}function Qr(t,e){var n=[],r=[];return t=ho.transform(t),e=ho.transform(e),Wr(t.translate,e.translate,n,r),Gr(t.rotate,e.rotate,n,r),Zr(t.skew,e.skew,n,r),Jr(t.scale,e.scale,n,r),t=e=null,function(t){for(var e,i=-1,a=r.length;++i=0;)n.push(i[r])}function fi(t,e){for(var n=[t],r=[];null!=(t=n.pop());)if(r.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++on;++n)(e=t[n][1])>i&&(r=n,i=e);return r}function Mi(t){return t.reduce(wi,0)}function wi(t,e){return t+e[1]}function ki(t,e){return Ei(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Ei(t,e){for(var n=-1,r=+t[0],i=(t[1]-r)/e,a=[];++n<=e;)a[n]=i*n+r;return a}function Si(t){return[ho.min(t),ho.max(t)]}function Ai(t,e){return t.value-e.value}function Ti(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Oi(t,e){t._pack_next=e,e._pack_prev=t}function Ni(t,e){var n=e.x-t.x,r=e.y-t.y,i=t.r+e.r;return.999*i*i>n*n+r*r}function Li(t){function e(t){c=Math.min(t.x-t.r,c),f=Math.max(t.x+t.r,f),h=Math.min(t.y-t.r,h),d=Math.max(t.y+t.r,d)}if((n=t.children)&&(l=n.length)){var n,r,i,a,o,u,s,l,c=1/0,f=-(1/0),h=1/0,d=-(1/0);if(n.forEach(Ci),r=n[0],r.x=-r.r,r.y=0,e(r),l>1&&(i=n[1],i.x=i.r,i.y=0,e(i),l>2))for(a=n[2],Ii(r,i,a),e(a),Ti(r,a),r._pack_prev=a,Ti(a,i),i=r._pack_next,o=3;l>o;o++){Ii(r,i,a=n[o]);var p=0,g=1,m=1;for(u=i._pack_next;u!==i;u=u._pack_next,g++)if(Ni(u,a)){p=1;break}if(1==p)for(s=r._pack_prev;s!==u._pack_prev&&!Ni(s,a);s=s._pack_prev,m++);p?(m>g||g==m&&i.ro;o++)a=n[o],a.x-=v,a.y-=y,x=Math.max(x,a.r+Math.sqrt(a.x*a.x+a.y*a.y));t.r=x,n.forEach(Ri)}}function Ci(t){t._pack_next=t._pack_prev=t}function Ri(t){delete t._pack_next,delete t._pack_prev}function Di(t,e,n,r){var i=t.children;if(t.x=e+=r*t.x,t.y=n+=r*t.y,t.r*=r,i)for(var a=-1,o=i.length;++a=0;)e=i[a],e.z+=n,e.m+=n,n+=e.s+(r+=e.c)}function $i(t,e,n){return t.a.parent===e.parent?t.a:n}function Fi(t){return 1+ho.max(t,function(t){return t.y})}function Yi(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Hi(t){var e=t.children;return e&&e.length?Hi(e[0]):t}function Bi(t){var e,n=t.children;return n&&(e=n.length)?Bi(n[e-1]):t}function Vi(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function Xi(t,e){var n=t.x+e[3],r=t.y+e[0],i=t.dx-e[1]-e[3],a=t.dy-e[0]-e[2];return 0>i&&(n+=i/2,i=0),0>a&&(r+=a/2,a=0),{x:n,y:r,dx:i,dy:a}}function Wi(t){var e=t[0],n=t[t.length-1];return n>e?[e,n]:[n,e]}function Gi(t){return t.rangeExtent?t.rangeExtent():Wi(t.range())}function Zi(t,e,n,r){var i=n(t[0],t[1]),a=r(e[0],e[1]);return function(t){return a(i(t))}}function Ji(t,e){var n,r=0,i=t.length-1,a=t[r],o=t[i];return a>o&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t}function Qi(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:Os}function Ki(t,e,n,r){var i=[],a=[],o=0,u=Math.min(t.length,e.length)-1;for(t[u]2?Ki:Zi,s=r?ti:Kr;return o=i(t,e,s,n),u=i(e,t,s,kr),a}function a(t){return o(t)}var o,u;return a.invert=function(t){return u(t)},a.domain=function(e){return arguments.length?(t=e.map(Number),i()):t},a.range=function(t){return arguments.length?(e=t,i()):e},a.rangeRound=function(t){return a.range(t).interpolate(Fr)},a.clamp=function(t){return arguments.length?(r=t,i()):r},a.interpolate=function(t){return arguments.length?(n=t,i()):n},a.ticks=function(e){return ia(t,e)},a.tickFormat=function(e,n){return aa(t,e,n)},a.nice=function(e){return na(t,e),i()},a.copy=function(){return ta(t,e,n,r)},i()}function ea(t,e){return ho.rebind(t,e,"range","rangeRound","interpolate","clamp")}function na(t,e){return Ji(t,Qi(ra(t,e)[2])),Ji(t,Qi(ra(t,e)[2])),t}function ra(t,e){null==e&&(e=10);var n=Wi(t),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/e)/Math.LN10)),a=e/r*i;return.15>=a?i*=10:.35>=a?i*=5:.75>=a&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+.5*i,n[2]=i,n}function ia(t,e){return ho.range.apply(ho,ra(t,e))}function aa(t,e,n){var r=ra(t,e);if(n){var i=vu.exec(n);if(i.shift(),"s"===i[8]){var a=ho.formatPrefix(Math.max(Eo(r[0]),Eo(r[1])));return i[7]||(i[7]="."+oa(a.scale(r[2]))),i[8]="f",n=ho.format(i.join("")),function(t){return n(a.scale(t))+a.symbol}}i[7]||(i[7]="."+ua(i[8],r)),n=i.join("")}else n=",."+oa(r[2])+"f";return ho.format(n)}function oa(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function ua(t,e){var n=oa(e[2]);return t in Ns?Math.abs(n-oa(Math.max(Eo(e[0]),Eo(e[1]))))+ +("e"!==t):n-2*("%"===t)}function sa(t,e,n,r){function i(t){return(n?Math.log(0>t?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((r=e.map(Number)).map(i)),o):r},o.base=function(n){return arguments.length?(e=+n,t.domain(r.map(i)),o):e},o.nice=function(){var e=Ji(r.map(i),n?Math:Cs);return t.domain(e),r=e.map(a),o},o.ticks=function(){var t=Wi(r),o=[],u=t[0],s=t[1],l=Math.floor(i(u)),c=Math.ceil(i(s)),f=e%1?2:e;if(isFinite(c-l)){if(n){for(;c>l;l++)for(var h=1;f>h;h++)o.push(a(l)*h);o.push(a(l))}else for(o.push(a(l));l++0;h--)o.push(a(l)*h);for(l=0;o[l]s;c--);o=o.slice(l,c)}return o},o.tickFormat=function(t,n){if(!arguments.length)return Ls;arguments.length<2?n=Ls:"function"!=typeof n&&(n=ho.format(n));var r=Math.max(1,e*t/o.ticks().length);return function(t){var o=t/a(Math.round(i(t)));return e-.5>o*e&&(o*=e),r>=o?n(t):""}},o.copy=function(){return sa(t.copy(),e,n,r)},ea(o,t)}function la(t,e,n){function r(e){return t(i(e))}var i=ca(e),a=ca(1/e);return r.invert=function(e){return a(t.invert(e))},r.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(i)),r):n},r.ticks=function(t){return ia(n,t)},r.tickFormat=function(t,e){return aa(n,t,e)},r.nice=function(t){return r.domain(na(n,t))},r.exponent=function(o){return arguments.length?(i=ca(e=o),a=ca(1/e),t.domain(n.map(i)),r):e},r.copy=function(){return la(t.copy(),e,n)},ea(r,t)}function ca(t){return function(e){return 0>e?-Math.pow(-e,t):Math.pow(e,t)}}function fa(t,e){function n(n){return a[((i.get(n)||("range"===e.t?i.set(n,t.push(n)):NaN))-1)%a.length]}function r(e,n){return ho.range(t.length).map(function(t){return e+n*t})}var i,a,o;return n.domain=function(r){if(!arguments.length)return t;t=[],i=new p;for(var a,o=-1,u=r.length;++on?[NaN,NaN]:[n>0?i[n-1]:t[0],ne?NaN:e/a+t,[e,e+1/a]},r.copy=function(){return da(t,e,n)},i()}function pa(t,e){function n(n){return n>=n?e[ho.bisect(t,n)]:void 0}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return pa(t,e)},n}function ga(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return ia(t,e)},e.tickFormat=function(e,n){return aa(t,e,n)},e.copy=function(){return ga(t)},e}function ma(){return 0}function va(t){return t.innerRadius}function ya(t){return t.outerRadius}function xa(t){return t.startAngle}function _a(t){return t.endAngle}function ba(t){return t&&t.padAngle}function Ma(t,e,n,r){return(t-n)*e-(e-r)*t>0?0:1}function wa(t,e,n,r,i){var a=t[0]-e[0],o=t[1]-e[1],u=(i?r:-r)/Math.sqrt(a*a+o*o),s=u*o,l=-u*a,c=t[0]+s,f=t[1]+l,h=e[0]+s,d=e[1]+l,p=(c+h)/2,g=(f+d)/2,m=h-c,v=d-f,y=m*m+v*v,x=n-r,_=c*d-h*f,b=(0>v?-1:1)*Math.sqrt(Math.max(0,x*x*y-_*_)),M=(_*v-m*b)/y,w=(-_*m-v*b)/y,k=(_*v+m*b)/y,E=(-_*m+v*b)/y,S=M-p,A=w-g,T=k-p,O=E-g;return S*S+A*A>T*T+O*O&&(M=k,w=E),[[M-s,w-l],[M*n/x,w*n/x]]}function ka(t){function e(e){function o(){l.push("M",a(t(c),u))}for(var s,l=[],c=[],f=-1,h=e.length,d=Lt(n),p=Lt(r);++f1?t.join("L"):t+"Z"}function Sa(t){return t.join("L")+"Z"}function Aa(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1&&i.push("H",r[0]),i.join("")}function Ta(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1){u=e[1],a=t[s],s++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-u[0])+","+(a[1]-u[1])+","+a[0]+","+a[1];for(var l=2;l9&&(i=3*e/Math.sqrt(i),o[u]=i*n,o[u+1]=i*r));for(u=-1;++u<=s;)i=(t[Math.min(s,u+1)][0]-t[Math.max(0,u-1)][0])/(6*(1+o[u]*o[u])),a.push([i||0,o[u]*i||0]);return a}function Ha(t){return t.length<3?Ea(t):t[0]+Ra(t,Ya(t))}function Ba(t){for(var e,n,r,i=-1,a=t.length;++i=e?o(t-e):void(l.c=o)}function o(n){var i=d.active,a=d[i];a&&(a.timer.c=null,a.timer.t=NaN,--d.count,delete d[i],a.event&&a.event.interrupt.call(t,t.__data__,a.index));for(var o in d)if(r>+o){var p=d[o];p.timer.c=null,p.timer.t=NaN,--d.count,delete d[o]}l.c=u,Ut(function(){return l.c&&u(n||1)&&(l.c=null,l.t=NaN),1},0,s),d.active=r,g.event&&g.event.start.call(t,t.__data__,e),h=[],g.tween.forEach(function(n,r){(r=r.call(t,t.__data__,e))&&h.push(r)}),f=g.ease,c=g.duration}function u(i){for(var a=i/c,o=f(a),u=h.length;u>0;)h[--u].call(t,o);return a>=1?(g.event&&g.event.end.call(t,t.__data__,e),--d.count?delete d[r]:delete t[n],1):void 0}var s,l,c,f,h,d=t[n]||(t[n]={active:0,count:0}),g=d[r];g||(s=i.time,l=Ut(a,0,s),g=d[r]={tween:new p,time:s,timer:l,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++d.count)}function ao(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate("+(isFinite(r)?r:n(t))+",0)"})}function oo(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate(0,"+(isFinite(r)?r:n(t))+")"})}function uo(t){return t.toISOString()}function so(t,e,n){function r(e){return t(e)}function i(t,n){var r=t[1]-t[0],i=r/n,a=ho.bisect(rl,i);return a==rl.length?[e.year,ra(t.map(function(t){return t/31536e6}),n)[2]]:a?e[i/rl[a-1]1?{floor:function(e){for(;n(e=t.floor(e));)e=lo(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=lo(+e+1);return e}}:t))},r.ticks=function(t,e){var n=Wi(r.domain()),a=null==t?i(n,10):"number"==typeof t?i(n,t):!t.range&&[{range:t},e];return a&&(t=a[0],e=a[1]),t.range(n[0],lo(+n[1]+1),1>e?1:e)},r.tickFormat=function(){return n},r.copy=function(){return so(t.copy(),e,n)},ea(r,t)}function lo(t){return new Date(t)}function co(t){return JSON.parse(t.responseText)}function fo(t){var e=mo.createRange();return e.selectNode(mo.body),e.createContextualFragment(t.responseText)}var ho={version:"3.5.17"},po=[].slice,go=function(t){return po.call(t)},mo=this.document;if(mo)try{go(mo.documentElement.childNodes)[0].nodeType}catch(vo){go=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),mo)try{mo.createElement("DIV").style.setProperty("opacity",0,"")}catch(yo){var xo=this.Element.prototype,_o=xo.setAttribute,bo=xo.setAttributeNS,Mo=this.CSSStyleDeclaration.prototype,wo=Mo.setProperty;xo.setAttribute=function(t,e){_o.call(this,t,e+"")},xo.setAttributeNS=function(t,e,n){bo.call(this,t,e,n+"")},Mo.setProperty=function(t,e,n){wo.call(this,t,e+"",n)}}ho.ascending=u,ho.descending=function(t,e){return t>e?-1:e>t?1:e>=t?0:NaN},ho.min=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++ir&&(n=r)}else{for(;++i=r){n=r;break}for(;++ir&&(n=r)}return n},ho.max=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++in&&(n=r)}else{for(;++i=r){n=r;break}for(;++in&&(n=r)}return n},ho.extent=function(t,e){var n,r,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}else{for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}return[n,i]},ho.sum=function(t,e){var n,r=0,i=t.length,a=-1;if(1===arguments.length)for(;++a1?o/(c-1):void 0},ho.deviation=function(){var t=ho.variance.apply(this,arguments);return t?Math.sqrt(t):t};var ko=c(u);ho.bisectLeft=ko.left,ho.bisect=ho.bisectRight=ko.right,ho.bisector=function(t){return c(1===t.length?function(e,n){return u(t(e),n)}:t)},ho.shuffle=function(t,e,n){(a=arguments.length)<3&&(n=t.length,2>a&&(e=0));for(var r,i,a=n-e;a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t},ho.permute=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]]; -return r},ho.pairs=function(t){for(var e,n=0,r=t.length-1,i=t[0],a=new Array(0>r?0:r);r>n;)a[n]=[e=i,i=t[++n]];return a},ho.transpose=function(t){if(!(i=t.length))return[];for(var e=-1,n=ho.min(t,f),r=new Array(n);++e=0;)for(r=t[i],e=r.length;--e>=0;)n[--o]=r[e];return n};var Eo=Math.abs;ho.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var r,i=[],a=h(Eo(n)),o=-1;if(t*=a,e*=a,n*=a,0>n)for(;(r=t+n*++o)>e;)i.push(r/a);else for(;(r=t+n*++o)=a.length)return r?r.call(i,o):n?o.sort(n):o;for(var s,l,c,f,h=-1,d=o.length,g=a[u++],m=new p;++h=a.length)return t;var r=[],i=o[n++];return t.forEach(function(t,i){r.push({key:t,values:e(i,n)})}),i?r.sort(function(t,e){return i(t.key,e.key)}):r}var n,r,i={},a=[],o=[];return i.map=function(e,n){return t(n,e,0)},i.entries=function(n){return e(t(ho.map,n,0),0)},i.key=function(t){return a.push(t),i},i.sortKeys=function(t){return o[a.length-1]=t,i},i.sortValues=function(t){return n=t,i},i.rollup=function(t){return r=t,i},i},ho.set=function(t){var e=new M;if(t)for(var n=0,r=t.length;r>n;++n)e.add(t[n]);return e},d(M,{has:v,add:function(t){return this._[g(t+="")]=!0,t},remove:y,values:x,size:_,empty:b,forEach:function(t){for(var e in this._)t.call(this,m(e))}}),ho.behavior={},ho.rebind=function(t,e){for(var n,r=1,i=arguments.length;++r=0&&(r=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(r):this[t].on(r,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(r,null);return this}},ho.event=null,ho.requote=function(t){return t.replace(Oo,"\\$&")};var Oo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,No={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Lo=function(t,e){return e.querySelector(t)},Co=function(t,e){return e.querySelectorAll(t)},Ro=function(t,e){var n=t.matches||t[E(t,"matchesSelector")];return(Ro=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Lo=function(t,e){return Sizzle(t,e)[0]||null},Co=Sizzle,Ro=Sizzle.matchesSelector),ho.selection=function(){return ho.select(mo.documentElement)};var Do=ho.selection.prototype=[];Do.select=function(t){var e,n,r,i,a=[];t=R(t);for(var o=-1,u=this.length;++o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Uo.hasOwnProperty(n)?{space:Uo[n],local:t}:t}},Do.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=ho.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(I(e,t[e]));return this}return this.each(I(t,e))},Do.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),r=(t=z(t)).length,i=-1;if(e=n.classList){for(;++ir){if("string"!=typeof t){2>r&&(e="");for(n in t)this.each($(n,t[n],e));return this}if(2>r){var i=this.node();return o(i).getComputedStyle(i,null).getPropertyValue(t)}n=""}return this.each($(t,e,n))},Do.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(F(e,t[e]));return this}return this.each(F(t,e))},Do.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Do.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Do.append=function(t){return t=Y(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Do.insert=function(t,e){return t=Y(t),e=R(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Do.remove=function(){return this.each(H)},Do.data=function(t,e){function n(t,n){var r,i,a,o=t.length,c=n.length,f=Math.min(o,c),h=new Array(c),d=new Array(c),g=new Array(o);if(e){var m,v=new p,y=new Array(o);for(r=-1;++rr;++r)d[r]=B(n[r]);for(;o>r;++r)g[r]=t[r]}d.update=h,d.parentNode=h.parentNode=g.parentNode=t.parentNode,u.push(d),s.push(h),l.push(g)}var r,i,a=-1,o=this.length;if(!arguments.length){for(t=new Array(o=(r=this[0]).length);++aa;a++){i.push(e=[]),e.parentNode=(n=this[a]).parentNode;for(var u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return C(i)},Do.order=function(){for(var t=-1,e=this.length;++t=0;)(n=r[i])&&(a&&a!==n.nextSibling&&a.parentNode.insertBefore(n,a),a=n);return this},Do.sort=function(t){t=X.apply(this,arguments);for(var e=-1,n=this.length;++et;t++)for(var n=this[t],r=0,i=n.length;i>r;r++){var a=n[r];if(a)return a}return null},Do.size=function(){var t=0;return W(this,function(){++t}),t};var Po=[];ho.selection.enter=G,ho.selection.enter.prototype=Po,Po.append=Do.append,Po.empty=Do.empty,Po.node=Do.node,Po.call=Do.call,Po.size=Do.size,Po.select=function(t){for(var e,n,r,i,a,o=[],u=-1,s=this.length;++ur){if("string"!=typeof t){2>r&&(e=!1);for(n in t)this.each(J(n,t[n],e));return this}if(2>r)return(r=this.node()["__on"+t])&&r._;n=!1}return this.each(J(t,e,n))};var zo=ho.map({mouseenter:"mouseover",mouseleave:"mouseout"});mo&&zo.forEach(function(t){"on"+t in mo&&zo.remove(t)});var jo,qo=0;ho.mouse=function(t){return et(t,N())};var $o=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ho.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=N().changedTouches),e)for(var r,i=0,a=e.length;a>i;++i)if((r=e[i]).identifier===n)return et(t,r)},ho.behavior.drag=function(){function t(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(t,e,i,a,o){return function(){function u(){var t,n,r=e(h,g);r&&(t=r[0]-x[0],n=r[1]-x[1],p|=t|n,x=r,d({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:t,dy:n}))}function s(){e(h,g)&&(v.on(a+m,null).on(o+m,null),y(p),d({type:"dragend"}))}var l,c=this,f=ho.event.target.correspondingElement||ho.event.target,h=c.parentNode,d=n.of(c,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=ho.select(i(f)).on(a+m,u).on(o+m,s),y=tt(f),x=e(h,g);r?(l=r.apply(c,arguments),l=[l.x-x[0],l.y-x[1]]):l=[0,0],d({type:"dragstart"})}}var n=L(t,"drag","dragstart","dragend"),r=null,i=e(S,ho.mouse,o,"mousemove","mouseup"),a=e(nt,ho.touch,w,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},ho.rebind(t,n,"on")},ho.touches=function(t,e){return arguments.length<2&&(e=N().touches),e?go(e).map(function(e){var n=et(t,e);return n.identifier=e.identifier,n}):[]};var Fo=1e-6,Yo=Fo*Fo,Ho=Math.PI,Bo=2*Ho,Vo=Bo-Fo,Xo=Ho/2,Wo=Ho/180,Go=180/Ho,Zo=Math.SQRT2,Jo=2,Qo=4;ho.interpolateZoom=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],u=e[0],s=e[1],l=e[2],c=u-i,f=s-a,h=c*c+f*f;if(Yo>h)r=Math.log(l/o)/Zo,n=function(t){return[i+t*c,a+t*f,o*Math.exp(Zo*t*r)]};else{var d=Math.sqrt(h),p=(l*l-o*o+Qo*h)/(2*o*Jo*d),g=(l*l-o*o-Qo*h)/(2*l*Jo*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Zo,n=function(t){var e=t*r,n=st(m),u=o/(Jo*d)*(n*lt(Zo*e+m)-ut(m));return[i+u*c,a+u*f,o*n/st(Zo*e+m)]}}return n.duration=1e3*r,n},ho.behavior.zoom=function(){function t(t){t.on(N,f).on(tu+".zoom",d).on("dblclick.zoom",p).on(D,h)}function e(t){return[(t[0]-k.x)/k.k,(t[1]-k.y)/k.k]}function n(t){return[t[0]*k.k+k.x,t[1]*k.k+k.y]}function r(t){k.k=Math.max(S[0],Math.min(S[1],t))}function i(t,e){e=n(e),k.x+=t[0]-e[0],k.y+=t[1]-e[1]}function a(e,n,a,o){e.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),i(m=n,a),e=ho.select(e),A>0&&(e=e.transition().duration(A)),e.call(t.event)}function u(){b&&b.domain(_.range().map(function(t){return(t-k.x)/k.k}).map(_.invert)),w&&w.domain(M.range().map(function(t){return(t-k.y)/k.k}).map(M.invert))}function s(t){T++||t({type:"zoomstart"})}function l(t){u(),t({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function c(t){--T||(t({type:"zoomend"}),m=null)}function f(){function t(){u=1,i(ho.mouse(r),h),l(a)}function n(){f.on(C,null).on(R,null),d(u),c(a)}var r=this,a=I.of(r,arguments),u=0,f=ho.select(o(r)).on(C,t).on(R,n),h=e(ho.mouse(r)),d=tt(r);Xs.call(r),s(a)}function h(){function t(){var t=ho.touches(p);return d=k.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=e(t))}),t}function n(){var e=ho.event.target;ho.select(e).on(_,o).on(b,u),M.push(e);for(var n=ho.event.changedTouches,r=0,i=n.length;i>r;++r)m[n[r].identifier]=null;var s=t(),l=Date.now();if(1===s.length){if(500>l-x){var c=s[0];a(p,c,m[c.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),O()}x=l}else if(s.length>1){var c=s[0],f=s[1],h=c[0]-f[0],d=c[1]-f[1];v=h*h+d*d}}function o(){var t,e,n,a,o=ho.touches(p);Xs.call(p);for(var u=0,s=o.length;s>u;++u,a=null)if(n=o[u],a=m[n.identifier]){if(e)break;t=n,e=a}if(a){var c=(c=n[0]-t[0])*c+(c=n[1]-t[1])*c,f=v&&Math.sqrt(c/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+a[0])/2,(e[1]+a[1])/2],r(f*d)}x=null,i(t,e),l(g)}function u(){if(ho.event.touches.length){for(var e=ho.event.changedTouches,n=0,r=e.length;r>n;++n)delete m[e[n].identifier];for(var i in m)return void t()}ho.selectAll(M).on(y,null),w.on(N,f).on(D,h),E(),c(g)}var d,p=this,g=I.of(p,arguments),m={},v=0,y=".zoom-"+ho.event.changedTouches[0].identifier,_="touchmove"+y,b="touchend"+y,M=[],w=ho.select(p),E=tt(p);n(),s(g),w.on(N,null).on(D,n)}function d(){var t=I.of(this,arguments);y?clearTimeout(y):(Xs.call(this),g=e(m=v||ho.mouse(this)),s(t)),y=setTimeout(function(){y=null,c(t)},50),O(),r(Math.pow(2,.002*Ko())*k.k),i(m,g),l(t)}function p(){var t=ho.mouse(this),n=Math.log(k.k)/Math.LN2;a(this,t,e(t),ho.event.shiftKey?Math.ceil(n)-1:Math.floor(n)+1)}var g,m,v,y,x,_,b,M,w,k={x:0,y:0,k:1},E=[960,500],S=eu,A=250,T=0,N="mousedown.zoom",C="mousemove.zoom",R="mouseup.zoom",D="touchstart.zoom",I=L(t,"zoomstart","zoom","zoomend");return tu||(tu="onwheel"in mo?(Ko=function(){return-ho.event.deltaY*(ho.event.deltaMode?120:1)},"wheel"):"onmousewheel"in mo?(Ko=function(){return ho.event.wheelDelta},"mousewheel"):(Ko=function(){return-ho.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=I.of(this,arguments),e=k;Bs?ho.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},s(t)}).tween("zoom:zoom",function(){var n=E[0],r=E[1],i=m?m[0]:n/2,a=m?m[1]:r/2,o=ho.interpolateZoom([(i-k.x)/k.k,(a-k.y)/k.k,n/k.k],[(i-e.x)/e.k,(a-e.y)/e.k,n/e.k]);return function(e){var r=o(e),u=n/r[2];this.__chart__=k={x:i-r[0]*u,y:a-r[1]*u,k:u},l(t)}}).each("interrupt.zoom",function(){c(t)}).each("end.zoom",function(){c(t)}):(this.__chart__=k,s(t),l(t),c(t))})},t.translate=function(e){return arguments.length?(k={x:+e[0],y:+e[1],k:k.k},u(),t):[k.x,k.y]},t.scale=function(e){return arguments.length?(k={x:k.x,y:k.y,k:null},r(+e),u(),t):k.k},t.scaleExtent=function(e){return arguments.length?(S=null==e?eu:[+e[0],+e[1]],t):S},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(E=e&&[+e[0],+e[1]],t):E},t.duration=function(e){return arguments.length?(A=+e,t):A},t.x=function(e){return arguments.length?(b=e,_=e.copy(),k={x:0,y:0,k:1},t):b},t.y=function(e){return arguments.length?(w=e,M=e.copy(),k={x:0,y:0,k:1},t):w},ho.rebind(t,I,"on")};var Ko,tu,eu=[0,1/0];ho.color=ft,ft.prototype.toString=function(){return this.rgb()+""},ho.hsl=ht;var nu=ht.prototype=new ft;nu.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,this.l/t)},nu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,t*this.l)},nu.rgb=function(){return dt(this.h,this.s,this.l)},ho.hcl=pt;var ru=pt.prototype=new ft;ru.brighter=function(t){return new pt(this.h,this.c,Math.min(100,this.l+iu*(arguments.length?t:1)))},ru.darker=function(t){return new pt(this.h,this.c,Math.max(0,this.l-iu*(arguments.length?t:1)))},ru.rgb=function(){return gt(this.h,this.c,this.l).rgb()},ho.lab=mt;var iu=18,au=.95047,ou=1,uu=1.08883,su=mt.prototype=new ft;su.brighter=function(t){return new mt(Math.min(100,this.l+iu*(arguments.length?t:1)),this.a,this.b)},su.darker=function(t){return new mt(Math.max(0,this.l-iu*(arguments.length?t:1)),this.a,this.b)},su.rgb=function(){return vt(this.l,this.a,this.b)},ho.rgb=Mt;var lu=Mt.prototype=new ft;lu.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,r=this.b,i=30;return e||n||r?(e&&i>e&&(e=i),n&&i>n&&(n=i),r&&i>r&&(r=i),new Mt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,r/t))):new Mt(i,i,i)},lu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Mt(t*this.r,t*this.g,t*this.b)},lu.hsl=function(){return At(this.r,this.g,this.b)},lu.toString=function(){return"#"+Et(this.r)+Et(this.g)+Et(this.b)};var cu=ho.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});cu.forEach(function(t,e){cu.set(t,wt(e))}),ho.functor=Lt,ho.xhr=Ct(w),ho.dsv=function(t,e){function n(t,n,a){arguments.length<3&&(a=n,n=null);var o=Rt(t,e,null==n?r:i(n),a);return o.row=function(t){return arguments.length?o.response(null==(n=t)?r:i(t)):n},o}function r(t){return n.parse(t.responseText)}function i(t){return function(e){return n.parse(e.responseText,t)}}function a(e){return e.map(o).join(t)}function o(t){return u.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var u=new RegExp('["'+t+"\n]"),s=t.charCodeAt(0);return n.parse=function(t,e){var r;return n.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");r=e?function(t,n){return e(i(t),n)}:i})},n.parseRows=function(t,e){function n(){if(c>=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var n=e;n++c;){var r=t.charCodeAt(c++),u=1;if(10===r)i=!0;else if(13===r)i=!0,10===t.charCodeAt(c)&&(++c,++u);else if(r!==s)continue;return t.slice(e,c-u)}return t.slice(e)}for(var r,i,a={},o={},u=[],l=t.length,c=0,f=0;(r=n())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=n();e&&null==(h=e(h,f++))||u.push(h)}return u},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var r=new M,i=[];return e.forEach(function(t){for(var e in t)r.has(e)||i.push(r.add(e))}),[i.map(o).join(t)].concat(e.map(function(e){return i.map(function(t){return o(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(a).join("\n")},n},ho.csv=ho.dsv(",","text/csv"),ho.tsv=ho.dsv(" ","text/tab-separated-values");var fu,hu,du,pu,gu=this[E(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};ho.timer=function(){Ut.apply(this,arguments)},ho.timer.flush=function(){zt(),jt()},ho.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var mu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map($t);ho.formatPrefix=function(t,e){var n=0;return(t=+t)&&(0>t&&(t*=-1),e&&(t=ho.round(t,qt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),mu[8+n/3]};var vu=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,yu=ho.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=ho.round(t,qt(t,e))).toFixed(Math.max(0,Math.min(20,qt(t*(1+1e-15),e))))}}),xu=ho.time={},_u=Date;Ht.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(){bu.setUTCDate.apply(this._,arguments)},setDay:function(){bu.setUTCDay.apply(this._,arguments)},setFullYear:function(){bu.setUTCFullYear.apply(this._,arguments)},setHours:function(){bu.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){bu.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){bu.setUTCMinutes.apply(this._,arguments)},setMonth:function(){bu.setUTCMonth.apply(this._,arguments)},setSeconds:function(){bu.setUTCSeconds.apply(this._,arguments)},setTime:function(){bu.setTime.apply(this._,arguments)}};var bu=Date.prototype;xu.year=Bt(function(t){return t=xu.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),xu.years=xu.year.range,xu.years.utc=xu.year.utc.range,xu.day=Bt(function(t){var e=new _u(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),xu.days=xu.day.range,xu.days.utc=xu.day.utc.range,xu.dayOfYear=function(t){var e=xu.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=xu[t]=Bt(function(t){return(t=xu.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});xu[t+"s"]=n.range,xu[t+"s"].utc=n.utc.range,xu[t+"OfYear"]=function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)}}),xu.week=xu.sunday,xu.weeks=xu.sunday.range,xu.weeks.utc=xu.sunday.utc.range,xu.weekOfYear=xu.sundayOfYear;var Mu={"-":"",_:" ",0:"0"},wu=/^\s*\d+/,ku=/^%/;ho.locale=function(t){return{numberFormat:Ft(t),timeFormat:Xt(t)}};var Eu=ho.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",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"]});ho.format=Eu.numberFormat,ho.geo={},pe.prototype={s:0,t:0,add:function(t){ge(t,this.t,Su),ge(Su.s,this.s,this),this.s?this.t+=Su.t:this.s=Su.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Su=new pe;ho.geo.stream=function(t,e){t&&Au.hasOwnProperty(t.type)?Au[t.type](t,e):me(t,e)};var Au={Feature:function(t,e){me(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++rt?4*Ho+t:t,Lu.lineStart=Lu.lineEnd=Lu.point=S}};ho.geo.bounds=function(){function t(t,e){x.push(_=[c=t,h=t]),f>e&&(f=e),e>d&&(d=e)}function e(e,n){var r=_e([e*Wo,n*Wo]);if(v){var i=Me(v,r),a=[i[1],-i[0],0],o=Me(a,i);Ee(o),o=Se(o);var s=e-p,l=s>0?1:-1,g=o[0]*Go*l,m=Eo(s)>180;if(m^(g>l*p&&l*e>g)){var y=o[1]*Go;y>d&&(d=y)}else if(g=(g+360)%360-180,m^(g>l*p&&l*e>g)){var y=-o[1]*Go;f>y&&(f=y)}else f>n&&(f=n),n>d&&(d=n);m?p>e?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e):h>=c?(c>e&&(c=e),e>h&&(h=e)):e>p?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e)}else t(e,n);v=r,p=e}function n(){b.point=e}function r(){_[0]=c,_[1]=h,b.point=t,v=null}function i(t,n){if(v){var r=t-p;y+=Eo(r)>180?r+(r>0?360:-360):r}else g=t,m=n;Lu.point(t,n),e(t,n)}function a(){Lu.lineStart()}function o(){i(g,m),Lu.lineEnd(),Eo(y)>Fo&&(c=-(h=180)),_[0]=c,_[1]=h,v=null}function u(t,e){return(e-=t)<0?e+360:e}function s(t,e){return t[0]-e[0]}function l(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tNu?(c=-(h=180),f=-(d=90)):y>Fo?d=90:-Fo>y&&(f=-90),_[0]=c,_[1]=h}};return function(t){d=h=-(c=f=1/0),x=[],ho.geo.stream(t,b);var e=x.length;if(e){x.sort(s);for(var n,r=1,i=x[0],a=[i];e>r;++r)n=x[r],l(n[0],i)||l(n[1],i)?(u(i[0],n[1])>u(i[0],i[1])&&(i[1]=n[1]),u(n[0],i[1])>u(i[0],i[1])&&(i[0]=n[0])):a.push(i=n);for(var o,n,p=-(1/0),e=a.length-1,r=0,i=a[e];e>=r;i=n,++r)n=a[r],(o=u(i[1],n[0]))>p&&(p=o,c=n[0],h=i[1])}return x=_=null,c===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[c,f],[h,d]]}}(),ho.geo.centroid=function(t){Cu=Ru=Du=Iu=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,Yu);var e=qu,n=$u,r=Fu,i=e*e+n*n+r*r;return Yo>i&&(e=Pu,n=zu,r=ju,Fo>Ru&&(e=Du,n=Iu,r=Uu),i=e*e+n*n+r*r,Yo>i)?[NaN,NaN]:[Math.atan2(n,e)*Go,ot(r/Math.sqrt(i))*Go]};var Cu,Ru,Du,Iu,Uu,Pu,zu,ju,qu,$u,Fu,Yu={sphere:S,point:Te,lineStart:Ne,lineEnd:Le,polygonStart:function(){Yu.lineStart=Ce},polygonEnd:function(){Yu.lineStart=Ne}},Hu=ze(De,Fe,He,[-Ho,-Ho/2]),Bu=1e9;ho.geo.clipExtent=function(){var t,e,n,r,i,a,o={stream:function(t){return i&&(i.valid=!1),i=a(t),i.valid=!0,i},extent:function(u){return arguments.length?(a=We(t=+u[0][0],e=+u[0][1],n=+u[1][0],r=+u[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[n,r]]}};return o.extent([[0,0],[960,500]])},(ho.geo.conicEqualArea=function(){return Ge(Ze)}).raw=Ze,ho.geo.albers=function(){return ho.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ho.geo.albersUsa=function(){function t(t){var a=t[0],o=t[1];return e=null,n(a,o),e||(r(a,o),e)||i(a,o),e}var e,n,r,i,a=ho.geo.albers(),o=ho.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=ho.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?u:a).invert(t)},t.stream=function(t){var e=a.stream(t),n=o.stream(t),r=u.stream(t);return{point:function(t,i){e.point(t,i),n.point(t,i),r.point(t,i)},sphere:function(){e.sphere(),n.sphere(),r.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),r.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),r.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),r.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),r.polygonEnd()}}},t.precision=function(e){return arguments.length?(a.precision(e),o.precision(e),u.precision(e),t):a.precision()},t.scale=function(e){return arguments.length?(a.scale(e),o.scale(.35*e),u.scale(e),t.translate(a.translate())):a.scale()},t.translate=function(e){if(!arguments.length)return a.translate();var l=a.scale(),c=+e[0],f=+e[1];return n=a.translate(e).clipExtent([[c-.455*l,f-.238*l],[c+.455*l,f+.238*l]]).stream(s).point,r=o.translate([c-.307*l,f+.201*l]).clipExtent([[c-.425*l+Fo,f+.12*l+Fo],[c-.214*l-Fo,f+.234*l-Fo]]).stream(s).point,i=u.translate([c-.205*l,f+.212*l]).clipExtent([[c-.214*l+Fo,f+.166*l+Fo],[c-.115*l-Fo,f+.234*l-Fo]]).stream(s).point,t},t.scale(1070)};var Vu,Xu,Wu,Gu,Zu,Ju,Qu={point:S,lineStart:S,lineEnd:S,polygonStart:function(){Xu=0,Qu.lineStart=Je},polygonEnd:function(){Qu.lineStart=Qu.lineEnd=Qu.point=S,Vu+=Eo(Xu/2)}},Ku={point:Qe,lineStart:S,lineEnd:S,polygonStart:S,polygonEnd:S},ts={point:en,lineStart:nn,lineEnd:rn,polygonStart:function(){ts.lineStart=an},polygonEnd:function(){ts.point=en,ts.lineStart=nn,ts.lineEnd=rn}};ho.geo.path=function(){function t(t){return t&&("function"==typeof u&&a.pointRadius(+u.apply(this,arguments)),o&&o.valid||(o=i(a)),ho.geo.stream(t,o)),a.result()}function e(){return o=null,t}var n,r,i,a,o,u=4.5;return t.area=function(t){return Vu=0,ho.geo.stream(t,i(Qu)),Vu},t.centroid=function(t){return Du=Iu=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,i(ts)),Fu?[qu/Fu,$u/Fu]:ju?[Pu/ju,zu/ju]:Uu?[Du/Uu,Iu/Uu]:[NaN,NaN]},t.bounds=function(t){return Zu=Ju=-(Wu=Gu=1/0),ho.geo.stream(t,i(Ku)),[[Wu,Gu],[Zu,Ju]]},t.projection=function(t){return arguments.length?(i=(n=t)?t.stream||sn(t):w,e()):n},t.context=function(t){return arguments.length?(a=null==(r=t)?new Ke:new on(t),"function"!=typeof u&&a.pointRadius(u),e()):r},t.pointRadius=function(e){return arguments.length?(u="function"==typeof e?e:(a.pointRadius(+e),+e),t):u},t.projection(ho.geo.albersUsa()).context(null)},ho.geo.transform=function(t){ -return{stream:function(e){var n=new ln(e);for(var r in t)n[r]=t[r];return n}}},ln.prototype={point:function(t,e){this.stream.point(t,e)},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()}},ho.geo.projection=fn,ho.geo.projectionMutator=hn,(ho.geo.equirectangular=function(){return fn(pn)}).raw=pn.invert=pn,ho.geo.rotation=function(t){function e(e){return e=t(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e}return t=mn(t[0]%360*Wo,t[1]*Wo,t.length>2?t[2]*Wo:0),e.invert=function(e){return e=t.invert(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e},e},gn.invert=pn,ho.geo.circle=function(){function t(){var t="function"==typeof r?r.apply(this,arguments):r,e=mn(-t[0]*Wo,-t[1]*Wo,0).invert,i=[];return n(null,null,1,{point:function(t,n){i.push(t=e(t,n)),t[0]*=Go,t[1]*=Go}}),{type:"Polygon",coordinates:[i]}}var e,n,r=[0,0],i=6;return t.origin=function(e){return arguments.length?(r=e,t):r},t.angle=function(r){return arguments.length?(n=_n((e=+r)*Wo,i*Wo),t):e},t.precision=function(r){return arguments.length?(n=_n(e*Wo,(i=+r)*Wo),t):i},t.angle(90)},ho.geo.distance=function(t,e){var n,r=(e[0]-t[0])*Wo,i=t[1]*Wo,a=e[1]*Wo,o=Math.sin(r),u=Math.cos(r),s=Math.sin(i),l=Math.cos(i),c=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((n=f*o)*n+(n=l*c-s*f*u)*n),s*c+l*f*u)},ho.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return ho.range(Math.ceil(a/m)*m,i,m).map(h).concat(ho.range(Math.ceil(l/v)*v,s,v).map(d)).concat(ho.range(Math.ceil(r/p)*p,n,p).filter(function(t){return Eo(t%m)>Fo}).map(c)).concat(ho.range(Math.ceil(u/g)*g,o,g).filter(function(t){return Eo(t%v)>Fo}).map(f))}var n,r,i,a,o,u,s,l,c,f,h,d,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(a).concat(d(s).slice(1),h(i).reverse().slice(1),d(l).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(a=+e[0][0],i=+e[1][0],l=+e[0][1],s=+e[1][1],a>i&&(e=a,a=i,i=e),l>s&&(e=l,l=s,s=e),t.precision(y)):[[a,l],[i,s]]},t.minorExtent=function(e){return arguments.length?(r=+e[0][0],n=+e[1][0],u=+e[0][1],o=+e[1][1],r>n&&(e=r,r=n,n=e),u>o&&(e=u,u=o,o=e),t.precision(y)):[[r,u],[n,o]]},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,c=Mn(u,o,90),f=wn(r,n,y),h=Mn(l,s,90),d=wn(a,i,y),t):y},t.majorExtent([[-180,-90+Fo],[180,90-Fo]]).minorExtent([[-180,-80-Fo],[180,80+Fo]])},ho.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||r.apply(this,arguments),n||i.apply(this,arguments)]}}var e,n,r=kn,i=En;return t.distance=function(){return ho.geo.distance(e||r.apply(this,arguments),n||i.apply(this,arguments))},t.source=function(n){return arguments.length?(r=n,e="function"==typeof n?null:n,t):r},t.target=function(e){return arguments.length?(i=e,n="function"==typeof e?null:e,t):i},t.precision=function(){return arguments.length?t:0},t},ho.geo.interpolate=function(t,e){return Sn(t[0]*Wo,t[1]*Wo,e[0]*Wo,e[1]*Wo)},ho.geo.length=function(t){return es=0,ho.geo.stream(t,ns),es};var es,ns={sphere:S,point:S,lineStart:An,lineEnd:S,polygonStart:S,polygonEnd:S},rs=Tn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(ho.geo.azimuthalEqualArea=function(){return fn(rs)}).raw=rs;var is=Tn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},w);(ho.geo.azimuthalEquidistant=function(){return fn(is)}).raw=is,(ho.geo.conicConformal=function(){return Ge(On)}).raw=On,(ho.geo.conicEquidistant=function(){return Ge(Nn)}).raw=Nn;var as=Tn(function(t){return 1/t},Math.atan);(ho.geo.gnomonic=function(){return fn(as)}).raw=as,Ln.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Xo]},(ho.geo.mercator=function(){return Cn(Ln)}).raw=Ln;var os=Tn(function(){return 1},Math.asin);(ho.geo.orthographic=function(){return fn(os)}).raw=os;var us=Tn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(ho.geo.stereographic=function(){return fn(us)}).raw=us,Rn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Xo]},(ho.geo.transverseMercator=function(){var t=Cn(Rn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Rn,ho.geom={},ho.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,i=Lt(n),a=Lt(r),o=t.length,u=[],s=[];for(e=0;o>e;e++)u.push([+i.call(this,t[e],e),+a.call(this,t[e],e),e]);for(u.sort(Pn),e=0;o>e;e++)s.push([u[e][0],-u[e][1]]);var l=Un(u),c=Un(s),f=c[0]===l[0],h=c[c.length-1]===l[l.length-1],d=[];for(e=l.length-1;e>=0;--e)d.push(t[u[l[e]][2]]);for(e=+f;e=r&&l.x<=a&&l.y>=i&&l.y<=o?[[r,o],[a,o],[a,i],[r,i]]:[];c.point=t[u]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(a(t,e)/Fo)*Fo,y:Math.round(o(t,e)/Fo)*Fo,i:e}})}var r=Dn,i=In,a=r,o=i,u=ms;return t?e(t):(e.links=function(t){return hr(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return hr(n(t)).cells.forEach(function(n,r){for(var i,a,o=n.site,u=n.edges.sort(Zn),s=-1,l=u.length,c=u[l-1].edge,f=c.l===o?c.r:c.l;++s=l,h=r>=c,d=h<<1|f;t.leaf=!1,t=t.nodes[d]||(t.nodes[d]=vr()),f?i=l:u=l,h?o=c:s=c,a(t,e,n,r,i,o,u,s)}var c,f,h,d,p,g,m,v,y,x=Lt(u),_=Lt(s);if(null!=e)g=e,m=n,v=r,y=i;else if(v=y=-(g=m=1/0),f=[],h=[],p=t.length,o)for(d=0;p>d;++d)c=t[d],c.xv&&(v=c.x),c.y>y&&(y=c.y),f.push(c.x),h.push(c.y);else for(d=0;p>d;++d){var b=+x(c=t[d],d),M=+_(c,d);g>b&&(g=b),m>M&&(m=M),b>v&&(v=b),M>y&&(y=M),f.push(b),h.push(M)}var w=v-g,k=y-m;w>k?y=m+w:v=g+k;var E=vr();if(E.add=function(t){a(E,t,+x(t,++d),+_(t,d),g,m,v,y)},E.visit=function(t){yr(t,E,g,m,v,y)},E.find=function(t){return xr(E,t[0],t[1],g,m,v,y)},d=-1,null==e){for(;++d=0?t.slice(0,e):t,r=e>=0?t.slice(e+1):"in";return n=_s.get(n)||xs,r=bs.get(r)||w,Sr(r(n.apply(null,po.call(arguments,1))))},ho.interpolateHcl=jr,ho.interpolateHsl=qr,ho.interpolateLab=$r,ho.interpolateRound=Fr,ho.transform=function(t){var e=mo.createElementNS(ho.ns.prefix.svg,"g");return(ho.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Yr(n?n.matrix:Ms)})(t)},Yr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Ms={a:1,b:0,c:0,d:1,e:0,f:0};ho.interpolateTransform=Qr,ho.layout={},ho.layout.bundle=function(){return function(t){for(var e=[],n=-1,r=t.length;++nu*u/v){if(g>s){var l=e.charge/s;t.px-=a*l,t.py-=o*l}return!0}if(e.point&&s&&g>s){var l=e.pointCharge/s;t.px-=a*l,t.py-=o*l}}return!e.charge}}function e(t){t.px=ho.event.x,t.py=ho.event.y,s.resume()}var n,r,i,a,o,u,s={},l=ho.dispatch("start","tick","end"),c=[1,1],f=.9,h=ws,d=ks,p=-30,g=Es,m=.1,v=.64,y=[],x=[];return s.tick=function(){if((i*=.99)<.005)return n=null,l.end({type:"end",alpha:i=0}),!0;var e,r,s,h,d,g,v,_,b,M=y.length,w=x.length;for(r=0;w>r;++r)s=x[r],h=s.source,d=s.target,_=d.x-h.x,b=d.y-h.y,(g=_*_+b*b)&&(g=i*o[r]*((g=Math.sqrt(g))-a[r])/g,_*=g,b*=g,d.x-=_*(v=h.weight+d.weight?h.weight/(h.weight+d.weight):.5),d.y-=b*v,h.x+=_*(v=1-v),h.y+=b*v);if((v=i*m)&&(_=c[0]/2,b=c[1]/2,r=-1,v))for(;++r0?i=t:(n.c=null,n.t=NaN,n=null,l.end({type:"end",alpha:i=0})):t>0&&(l.start({type:"start",alpha:i=t}),n=Ut(s.tick)),s):i},s.start=function(){function t(t,r){if(!n){for(n=new Array(i),s=0;i>s;++s)n[s]=[];for(s=0;l>s;++s){var a=x[s];n[a.source.index].push(a.target),n[a.target.index].push(a.source)}}for(var o,u=n[e],s=-1,c=u.length;++se;++e)(r=y[e]).index=e,r.weight=0;for(e=0;l>e;++e)r=x[e],"number"==typeof r.source&&(r.source=y[r.source]),"number"==typeof r.target&&(r.target=y[r.target]),++r.source.weight,++r.target.weight;for(e=0;i>e;++e)r=y[e],isNaN(r.x)&&(r.x=t("x",f)),isNaN(r.y)&&(r.y=t("y",g)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(a=[],"function"==typeof h)for(e=0;l>e;++e)a[e]=+h.call(this,x[e],e);else for(e=0;l>e;++e)a[e]=h;if(o=[],"function"==typeof d)for(e=0;l>e;++e)o[e]=+d.call(this,x[e],e);else for(e=0;l>e;++e)o[e]=d;if(u=[],"function"==typeof p)for(e=0;i>e;++e)u[e]=+p.call(this,y[e],e);else for(e=0;i>e;++e)u[e]=p;return s.resume()},s.resume=function(){return s.alpha(.1)},s.stop=function(){return s.alpha(0)},s.drag=function(){return r||(r=ho.behavior.drag().origin(w).on("dragstart.force",ii).on("drag.force",e).on("dragend.force",ai)),arguments.length?void this.on("mouseover.force",oi).on("mouseout.force",ui).call(r):r},ho.rebind(s,l,"on")};var ws=20,ks=1,Es=1/0;ho.layout.hierarchy=function(){function t(i){var a,o=[i],u=[];for(i.depth=0;null!=(a=o.pop());)if(u.push(a),(l=n.call(t,a,a.depth))&&(s=l.length)){for(var s,l,c;--s>=0;)o.push(c=l[s]),c.parent=a,c.depth=a.depth+1;r&&(a.value=0),a.children=l}else r&&(a.value=+r.call(t,a,a.depth)||0),delete a.children;return fi(i,function(t){var n,i;e&&(n=t.children)&&n.sort(e),r&&(i=t.parent)&&(i.value+=t.value)}),u}var e=pi,n=hi,r=di;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(r=e,t):r},t.revalue=function(e){return r&&(ci(e,function(t){t.children&&(t.value=0)}),fi(e,function(e){var n;e.children||(e.value=+r.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},ho.layout.partition=function(){function t(e,n,r,i){var a=e.children;if(e.x=n,e.y=e.depth*i,e.dx=r,e.dy=i,a&&(o=a.length)){var o,u,s,l=-1;for(r=e.value?r/e.value:0;++lf?-1:1),p=ho.sum(l),g=p?(f-s*d)/p:0,m=ho.range(s),v=[];return null!=n&&m.sort(n===Ss?function(t,e){return l[e]-l[t]}:function(t,e){return n(o[t],o[e])}),m.forEach(function(t){v[t]={data:o[t],value:u=l[t],startAngle:c,endAngle:c+=u*g+d,padAngle:h}}),v}var e=Number,n=Ss,r=0,i=Bo,a=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(r=e,t):r},t.endAngle=function(e){return arguments.length?(i=e,t):i},t.padAngle=function(e){return arguments.length?(a=e,t):a},t};var Ss={};ho.layout.stack=function(){function t(u,s){if(!(h=u.length))return u;var l=u.map(function(n,r){return e.call(t,n,r)}),c=l.map(function(e){return e.map(function(e,n){return[a.call(t,e,n),o.call(t,e,n)]})}),f=n.call(t,c,s);l=ho.permute(l,f),c=ho.permute(c,f);var h,d,p,g,m=r.call(t,c,s),v=l[0].length;for(p=0;v>p;++p)for(i.call(t,l[0][p],g=m[p],c[0][p][1]),d=1;h>d;++d)i.call(t,l[d][p],g+=c[d-1][p][1],c[d][p][1]);return u}var e=w,n=xi,r=_i,i=yi,a=mi,o=vi;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:As.get(e)||xi,t):n},t.offset=function(e){return arguments.length?(r="function"==typeof e?e:Ts.get(e)||_i,t):r},t.x=function(e){return arguments.length?(a=e,t):a},t.y=function(e){return arguments.length?(o=e,t):o},t.out=function(e){return arguments.length?(i=e,t):i},t};var As=ho.map({"inside-out":function(t){var e,n,r=t.length,i=t.map(bi),a=t.map(Mi),o=ho.range(r).sort(function(t,e){return i[t]-i[e]}),u=0,s=0,l=[],c=[];for(e=0;r>e;++e)n=o[e],s>u?(u+=a[n],l.push(n)):(s+=a[n],c.push(n));return c.reverse().concat(l)},reverse:function(t){return ho.range(t.length).reverse()},"default":xi}),Ts=ho.map({silhouette:function(t){var e,n,r,i=t.length,a=t[0].length,o=[],u=0,s=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];r>u&&(u=r),o.push(r)}for(n=0;a>n;++n)s[n]=(u-o[n])/2;return s},wiggle:function(t){var e,n,r,i,a,o,u,s,l,c=t.length,f=t[0],h=f.length,d=[];for(d[0]=s=l=0,n=1;h>n;++n){for(e=0,i=0;c>e;++e)i+=t[e][n][1];for(e=0,a=0,u=f[n][0]-f[n-1][0];c>e;++e){for(r=0,o=(t[e][n][1]-t[e][n-1][1])/(2*u);e>r;++r)o+=(t[r][n][1]-t[r][n-1][1])/u;a+=o*t[e][n][1]}d[n]=s-=i?a/i*u:0,l>s&&(l=s)}for(n=0;h>n;++n)d[n]-=l;return d},expand:function(t){var e,n,r,i=t.length,a=t[0].length,o=1/i,u=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];if(r)for(e=0;i>e;e++)t[e][n][1]/=r;else for(e=0;i>e;e++)t[e][n][1]=o}for(n=0;a>n;++n)u[n]=0;return u},zero:_i});ho.layout.histogram=function(){function t(t,a){for(var o,u,s=[],l=t.map(n,this),c=r.call(this,l,a),f=i.call(this,c,l,a),a=-1,h=l.length,d=f.length-1,p=e?1:1/h;++a0)for(a=-1;++a=c[0]&&u<=c[1]&&(o=s[ho.bisect(f,u,1,d)-1],o.y+=p,o.push(t[a]));return s}var e=!0,n=Number,r=Si,i=ki;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(r=Lt(e),t):r},t.bins=function(e){return arguments.length?(i="number"==typeof e?function(t){return Ei(t,e)}:Lt(e),t):i},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},ho.layout.pack=function(){function t(t,a){var o=n.call(this,t,a),u=o[0],s=i[0],l=i[1],c=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(u.x=u.y=0,fi(u,function(t){t.r=+c(t.value)}),fi(u,Li),r){var f=r*(e?1:Math.max(2*u.r/s,2*u.r/l))/2;fi(u,function(t){t.r+=f}),fi(u,Li),fi(u,function(t){t.r-=f})}return Di(u,s/2,l/2,e?1:1/Math.max(2*u.r/s,2*u.r/l)),o}var e,n=ho.layout.hierarchy().sort(Ai),r=0,i=[1,1];return t.size=function(e){return arguments.length?(i=e,t):i},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(r=+e,t):r},li(t,n)},ho.layout.tree=function(){function t(t,i){var c=o.call(this,t,i),f=c[0],h=e(f);if(fi(h,n),h.parent.m=-h.z,ci(h,r),l)ci(f,a);else{var d=f,p=f,g=f;ci(f,function(t){t.xp.x&&(p=t),t.depth>g.depth&&(g=t)});var m=u(d,p)/2-d.x,v=s[0]/(p.x+u(p,d)/2+m),y=s[1]/(g.depth||1);ci(f,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return c}function e(t){for(var e,n={A:null,children:[t]},r=[n];null!=(e=r.pop());)for(var i,a=e.children,o=0,u=a.length;u>o;++o)r.push((a[o]=i={_:a[o],parent:e,children:(i=a[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(e.length){qi(t);var a=(e[0].z+e[e.length-1].z)/2;r?(t.z=r.z+u(t._,r._),t.m=t.z-a):t.z=a}else r&&(t.z=r.z+u(t._,r._));t.parent.A=i(t,r,t.parent.A||n[0])}function r(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function i(t,e,n){if(e){for(var r,i=t,a=t,o=e,s=i.parent.children[0],l=i.m,c=a.m,f=o.m,h=s.m;o=zi(o),i=Pi(i),o&&i;)s=Pi(s),a=zi(a),a.a=t,r=o.z+f-i.z-l+u(o._,i._),r>0&&(ji($i(o,t,n),t,r),l+=r,c+=r),f+=o.m,l+=i.m,h+=s.m,c+=a.m;o&&!zi(a)&&(a.t=o,a.m+=f-c),i&&!Pi(s)&&(s.t=i,s.m+=l-h,n=t)}return n}function a(t){t.x*=s[0],t.y=t.depth*s[1]}var o=ho.layout.hierarchy().sort(null).value(null),u=Ui,s=[1,1],l=null;return t.separation=function(e){return arguments.length?(u=e,t):u},t.size=function(e){return arguments.length?(l=null==(s=e)?a:null,t):l?null:s},t.nodeSize=function(e){return arguments.length?(l=null==(s=e)?null:a,t):l?s:null},li(t,o)},ho.layout.cluster=function(){function t(t,a){var o,u=e.call(this,t,a),s=u[0],l=0;fi(s,function(t){var e=t.children;e&&e.length?(t.x=Yi(e),t.y=Fi(e)):(t.x=o?l+=n(t,o):0,t.y=0,o=t)});var c=Hi(s),f=Bi(s),h=c.x-n(c,f)/2,d=f.x+n(f,c)/2;return fi(s,i?function(t){t.x=(t.x-s.x)*r[0],t.y=(s.y-t.y)*r[1]}:function(t){t.x=(t.x-h)/(d-h)*r[0],t.y=(1-(s.y?t.y/s.y:1))*r[1]}),u}var e=ho.layout.hierarchy().sort(null).value(null),n=Ui,r=[1,1],i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(i=null==(r=e),t):i?null:r},t.nodeSize=function(e){return arguments.length?(i=null!=(r=e),t):i?r:null},li(t,e)},ho.layout.treemap=function(){function t(t,e){for(var n,r,i=-1,a=t.length;++ie?0:e),n.area=isNaN(r)||0>=r?0:r}function e(n){var a=n.children;if(a&&a.length){var o,u,s,l=f(n),c=[],h=a.slice(),p=1/0,g="slice"===d?l.dx:"dice"===d?l.dy:"slice-dice"===d?1&n.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(t(h,l.dx*l.dy/n.value),c.area=0;(s=h.length)>0;)c.push(o=h[s-1]),c.area+=o.area,"squarify"!==d||(u=r(c,g))<=p?(h.pop(),p=u):(c.area-=c.pop().area,i(c,g,l,!1),g=Math.min(l.dx,l.dy),c.length=c.area=0,p=1/0);c.length&&(i(c,g,l,!0),c.length=c.area=0),a.forEach(e)}}function n(e){var r=e.children;if(r&&r.length){var a,o=f(e),u=r.slice(),s=[];for(t(u,o.dx*o.dy/e.value),s.area=0;a=u.pop();)s.push(a),s.area+=a.area,null!=a.z&&(i(s,a.z?o.dx:o.dy,o,!u.length),s.length=s.area=0);r.forEach(n)}}function r(t,e){for(var n,r=t.area,i=0,a=1/0,o=-1,u=t.length;++on&&(a=n),n>i&&(i=n));return r*=r,e*=e,r?Math.max(e*i*p/r,r/(e*a*p)):1/0}function i(t,e,n,r){var i,a=-1,o=t.length,u=n.x,l=n.y,c=e?s(t.area/e):0;if(e==n.dx){for((r||c>n.dy)&&(c=n.dy);++an.dx)&&(c=n.dx);++an&&(e=1),1>n&&(t=0),function(){var n,r,i;do n=2*Math.random()-1,r=2*Math.random()-1,i=n*n+r*r;while(!i||i>1);return t+e*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=ho.random.normal.apply(ho,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=ho.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;t>n;n++)e+=Math.random();return e}}},ho.scale={};var Os={floor:w,ceil:w};ho.scale.linear=function(){return ta([0,1],[0,1],kr,!1)};var Ns={s:1,g:1,p:1,r:1,e:1};ho.scale.log=function(){return sa(ho.scale.linear().domain([0,1]),10,!0,[1,10])};var Ls=ho.format(".0e"),Cs={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};ho.scale.pow=function(){return la(ho.scale.linear(),1,[0,1])},ho.scale.sqrt=function(){return ho.scale.pow().exponent(.5)},ho.scale.ordinal=function(){return fa([],{t:"range",a:[[]]})},ho.scale.category10=function(){return ho.scale.ordinal().range(Rs)},ho.scale.category20=function(){return ho.scale.ordinal().range(Ds)},ho.scale.category20b=function(){return ho.scale.ordinal().range(Is)},ho.scale.category20c=function(){return ho.scale.ordinal().range(Us)};var Rs=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(kt),Ds=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(kt),Is=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(kt),Us=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(kt);ho.scale.quantile=function(){return ha([],[])},ho.scale.quantize=function(){return da(0,1,[0,1])},ho.scale.threshold=function(){return pa([.5],[0,1])},ho.scale.identity=function(){return ga([0,1])},ho.svg={},ho.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),c=o.apply(this,arguments)-Xo,f=u.apply(this,arguments)-Xo,h=Math.abs(f-c),d=c>f?0:1;if(t>l&&(p=l,l=t,t=p),h>=Vo)return e(l,d)+(t?e(t,1-d):"")+"Z";var p,g,m,v,y,x,_,b,M,w,k,E,S=0,A=0,T=[];if((v=(+s.apply(this,arguments)||0)/2)&&(m=a===Ps?Math.sqrt(t*t+l*l):+a.apply(this,arguments),d||(A*=-1),l&&(A=ot(m/l*Math.sin(v))),t&&(S=ot(m/t*Math.sin(v)))),l){y=l*Math.cos(c+A),x=l*Math.sin(c+A),_=l*Math.cos(f-A),b=l*Math.sin(f-A);var O=Math.abs(f-c-2*A)<=Ho?0:1;if(A&&Ma(y,x,_,b)===d^O){var N=(c+f)/2;y=l*Math.cos(N),x=l*Math.sin(N),_=b=null}}else y=x=0;if(t){M=t*Math.cos(f-S),w=t*Math.sin(f-S),k=t*Math.cos(c+S),E=t*Math.sin(c+S);var L=Math.abs(c-f+2*S)<=Ho?0:1;if(S&&Ma(M,w,k,E)===1-d^L){var C=(c+f)/2;M=t*Math.cos(C),w=t*Math.sin(C),k=E=null}}else M=w=0;if(h>Fo&&(p=Math.min(Math.abs(l-t)/2,+i.apply(this,arguments)))>.001){g=l>t^d?0:1;var R=p,D=p;if(Ho>h){var I=null==k?[M,w]:null==_?[y,x]:jn([y,x],[k,E],[_,b],[M,w]),U=y-I[0],P=x-I[1],z=_-I[0],j=b-I[1],q=1/Math.sin(Math.acos((U*z+P*j)/(Math.sqrt(U*U+P*P)*Math.sqrt(z*z+j*j)))/2),$=Math.sqrt(I[0]*I[0]+I[1]*I[1]);D=Math.min(p,(t-$)/(q-1)),R=Math.min(p,(l-$)/(q+1))}if(null!=_){var F=wa(null==k?[M,w]:[k,E],[y,x],l,R,d),Y=wa([_,b],[M,w],l,R,d);p===R?T.push("M",F[0],"A",R,",",R," 0 0,",g," ",F[1],"A",l,",",l," 0 ",1-d^Ma(F[1][0],F[1][1],Y[1][0],Y[1][1]),",",d," ",Y[1],"A",R,",",R," 0 0,",g," ",Y[0]):T.push("M",F[0],"A",R,",",R," 0 1,",g," ",Y[0])}else T.push("M",y,",",x);if(null!=k){var H=wa([y,x],[k,E],t,-D,d),B=wa([M,w],null==_?[y,x]:[_,b],t,-D,d);p===D?T.push("L",B[0],"A",D,",",D," 0 0,",g," ",B[1],"A",t,",",t," 0 ",d^Ma(B[1][0],B[1][1],H[1][0],H[1][1]),",",1-d," ",H[1],"A",D,",",D," 0 0,",g," ",H[0]):T.push("L",B[0],"A",D,",",D," 0 0,",g," ",H[0])}else T.push("L",M,",",w)}else T.push("M",y,",",x),null!=_&&T.push("A",l,",",l," 0 ",O,",",d," ",_,",",b),T.push("L",M,",",w),null!=k&&T.push("A",t,",",t," 0 ",L,",",1-d," ",k,",",E);return T.push("Z"),T.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=va,r=ya,i=ma,a=Ps,o=xa,u=_a,s=ba;return t.innerRadius=function(e){return arguments.length?(n=Lt(e),t):n},t.outerRadius=function(e){return arguments.length?(r=Lt(e),t):r},t.cornerRadius=function(e){return arguments.length?(i=Lt(e),t):i},t.padRadius=function(e){return arguments.length?(a=e==Ps?Ps:Lt(e),t):a},t.startAngle=function(e){return arguments.length?(o=Lt(e),t):o},t.endAngle=function(e){return arguments.length?(u=Lt(e),t):u},t.padAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.centroid=function(){var t=(+n.apply(this,arguments)+ +r.apply(this,arguments))/2,e=(+o.apply(this,arguments)+ +u.apply(this,arguments))/2-Xo;return[Math.cos(e)*t,Math.sin(e)*t]},t};var Ps="auto";ho.svg.line=function(){return ka(w)};var zs=ho.map({linear:Ea,"linear-closed":Sa,step:Aa,"step-before":Ta,"step-after":Oa,basis:Ia,"basis-open":Ua,"basis-closed":Pa,bundle:za,cardinal:Ca,"cardinal-open":Na,"cardinal-closed":La,monotone:Ha});zs.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var js=[0,2/3,1/3,0],qs=[0,1/3,2/3,0],$s=[0,1/6,2/3,1/6];ho.svg.line.radial=function(){var t=ka(Ba);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Ta.reverse=Oa,Oa.reverse=Ta,ho.svg.area=function(){return Va(w)},ho.svg.area.radial=function(){var t=Va(Ba);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},ho.svg.chord=function(){function t(t,u){var s=e(this,a,t,u),l=e(this,o,t,u);return"M"+s.p0+r(s.r,s.p1,s.a1-s.a0)+(n(s,l)?i(s.r,s.p1,s.r,s.p0):i(s.r,s.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+i(l.r,l.p1,s.r,s.p0))+"Z"; -}function e(t,e,n,r){var i=e.call(t,n,r),a=u.call(t,i,r),o=s.call(t,i,r)-Xo,c=l.call(t,i,r)-Xo;return{r:a,a0:o,a1:c,p0:[a*Math.cos(o),a*Math.sin(o)],p1:[a*Math.cos(c),a*Math.sin(c)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function r(t,e,n){return"A"+t+","+t+" 0 "+ +(n>Ho)+",1 "+e}function i(t,e,n,r){return"Q 0,0 "+r}var a=kn,o=En,u=Xa,s=xa,l=_a;return t.radius=function(e){return arguments.length?(u=Lt(e),t):u},t.source=function(e){return arguments.length?(a=Lt(e),t):a},t.target=function(e){return arguments.length?(o=Lt(e),t):o},t.startAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.endAngle=function(e){return arguments.length?(l=Lt(e),t):l},t},ho.svg.diagonal=function(){function t(t,i){var a=e.call(this,t,i),o=n.call(this,t,i),u=(a.y+o.y)/2,s=[a,{x:a.x,y:u},{x:o.x,y:u},o];return s=s.map(r),"M"+s[0]+"C"+s[1]+" "+s[2]+" "+s[3]}var e=kn,n=En,r=Wa;return t.source=function(n){return arguments.length?(e=Lt(n),t):e},t.target=function(e){return arguments.length?(n=Lt(e),t):n},t.projection=function(e){return arguments.length?(r=e,t):r},t},ho.svg.diagonal.radial=function(){var t=ho.svg.diagonal(),e=Wa,n=t.projection;return t.projection=function(t){return arguments.length?n(Ga(e=t)):e},t},ho.svg.symbol=function(){function t(t,r){return(Fs.get(e.call(this,t,r))||Qa)(n.call(this,t,r))}var e=Ja,n=Za;return t.type=function(n){return arguments.length?(e=Lt(n),t):e},t.size=function(e){return arguments.length?(n=Lt(e),t):n},t};var Fs=ho.map({circle:Qa,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*Hs)),n=e*Hs;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});ho.svg.symbolTypes=Fs.keys();var Ys=Math.sqrt(3),Hs=Math.tan(30*Wo);Do.transition=function(t){for(var e,n,r=Bs||++Gs,i=ro(t),a=[],o=Vs||{time:Date.now(),ease:Lr,delay:0,duration:250},u=-1,s=this.length;++ua;a++){i.push(e=[]);for(var n=this[a],u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return to(i,this.namespace,this.id)},Ws.tween=function(t,e){var n=this.id,r=this.namespace;return arguments.length<2?this.node()[r][n].tween.get(t):W(this,null==e?function(e){e[r][n].tween.remove(t)}:function(i){i[r][n].tween.set(t,e)})},Ws.attr=function(t,e){function n(){this.removeAttribute(u)}function r(){this.removeAttributeNS(u.space,u.local)}function i(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(u);return n!==t&&(e=o(n,t),function(t){this.setAttribute(u,e(t))})})}function a(t){return null==t?r:(t+="",function(){var e,n=this.getAttributeNS(u.space,u.local);return n!==t&&(e=o(n,t),function(t){this.setAttributeNS(u.space,u.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var o="transform"==t?Qr:kr,u=ho.ns.qualify(t);return eo(this,"attr."+t,e,u.local?a:i)},Ws.attrTween=function(t,e){function n(t,n){var r=e.call(this,t,n,this.getAttribute(i));return r&&function(t){this.setAttribute(i,r(t))}}function r(t,n){var r=e.call(this,t,n,this.getAttributeNS(i.space,i.local));return r&&function(t){this.setAttributeNS(i.space,i.local,r(t))}}var i=ho.ns.qualify(t);return this.tween("attr."+t,i.local?r:n)},Ws.style=function(t,e,n){function r(){this.style.removeProperty(t)}function i(e){return null==e?r:(e+="",function(){var r,i=o(this).getComputedStyle(this,null).getPropertyValue(t);return i!==e&&(r=kr(i,e),function(e){this.style.setProperty(t,r(e),n)})})}var a=arguments.length;if(3>a){if("string"!=typeof t){2>a&&(e="");for(n in t)this.style(n,t[n],e);return this}n=""}return eo(this,"style."+t,e,i)},Ws.styleTween=function(t,e,n){function r(r,i){var a=e.call(this,r,i,o(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),n)}}return arguments.length<3&&(n=""),this.tween("style."+t,r)},Ws.text=function(t){return eo(this,"text",t,no)},Ws.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},Ws.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=ho.ease.apply(ho,arguments)),W(this,function(r){r[n][e].ease=t}))},Ws.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:W(this,"function"==typeof t?function(r,i,a){r[n][e].delay=+t.call(r,r.__data__,i,a)}:(t=+t,function(r){r[n][e].delay=t}))},Ws.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:W(this,"function"==typeof t?function(r,i,a){r[n][e].duration=Math.max(1,t.call(r,r.__data__,i,a))}:(t=Math.max(1,t),function(r){r[n][e].duration=t}))},Ws.each=function(t,e){var n=this.id,r=this.namespace;if(arguments.length<2){var i=Vs,a=Bs;try{Bs=n,W(this,function(e,i,a){Vs=e[r][n],t.call(e,e.__data__,i,a)})}finally{Vs=i,Bs=a}}else W(this,function(i){var a=i[r][n];(a.event||(a.event=ho.dispatch("start","end","interrupt"))).on(t,e)});return this},Ws.transition=function(){for(var t,e,n,r,i=this.id,a=++Gs,o=this.namespace,u=[],s=0,l=this.length;l>s;s++){u.push(t=[]);for(var e=this[s],c=0,f=e.length;f>c;c++)(n=e[c])&&(r=n[o][i],io(n,c,o,a,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),t.push(n)}return to(u,o,a)},ho.svg.axis=function(){function t(t){t.each(function(){var t,l=ho.select(this),c=this.__chart__||n,f=this.__chart__=n.copy(),h=null==s?f.ticks?f.ticks.apply(f,u):f.domain():s,d=null==e?f.tickFormat?f.tickFormat.apply(f,u):w:e,p=l.selectAll(".tick").data(h,f),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Fo),m=ho.transition(p.exit()).style("opacity",Fo).remove(),v=ho.transition(p.order()).style("opacity",1),y=Math.max(i,0)+o,x=Gi(f),_=l.selectAll(".domain").data([0]),b=(_.enter().append("path").attr("class","domain"),ho.transition(_));g.append("line"),g.append("text");var M,k,E,S,A=g.select("line"),T=v.select("line"),O=p.select("text").text(d),N=g.select("text"),L=v.select("text"),C="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(t=ao,M="x",E="y",k="x2",S="y2",O.attr("dy",0>C?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+x[0]+","+C*a+"V0H"+x[1]+"V"+C*a)):(t=oo,M="y",E="x",k="y2",S="x2",O.attr("dy",".32em").style("text-anchor",0>C?"end":"start"),b.attr("d","M"+C*a+","+x[0]+"H0V"+x[1]+"H"+C*a)),A.attr(S,C*i),N.attr(E,C*y),T.attr(k,0).attr(S,C*i),L.attr(M,0).attr(E,C*y),f.rangeBand){var R=f,D=R.rangeBand()/2;c=f=function(t){return R(t)+D}}else c.rangeBand?c=f:m.call(t,f,c);g.call(t,c,f),v.call(t,f,f)})}var e,n=ho.scale.linear(),r=Zs,i=6,a=6,o=3,u=[10],s=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(r=e in Js?e+"":Zs,t):r},t.ticks=function(){return arguments.length?(u=go(arguments),t):u},t.tickValues=function(e){return arguments.length?(s=e,t):s},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(i=+e,a=+arguments[n-1],t):i},t.innerTickSize=function(e){return arguments.length?(i=+e,t):i},t.outerTickSize=function(e){return arguments.length?(a=+e,t):a},t.tickPadding=function(e){return arguments.length?(o=+e,t):o},t.tickSubdivide=function(){return arguments.length&&t},t};var Zs="bottom",Js={top:1,right:1,bottom:1,left:1};ho.svg.brush=function(){function t(a){a.each(function(){var a=ho.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=a.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),a.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var u=a.selectAll(".resize").data(g,w);u.exit().remove(),u.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return Qs[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),u.style("display",t.empty()?"none":null);var s,f=ho.transition(a),h=ho.transition(o);l&&(s=Gi(l),h.attr("x",s[0]).attr("width",s[1]-s[0]),n(f)),c&&(s=Gi(c),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),e(f)})}function e(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+f[+/e$/.test(t)]+","+h[+/^s/.test(t)]+")"})}function n(t){t.select(".extent").attr("x",f[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function r(t){t.select(".extent").attr("y",h[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==ho.event.keyCode&&(T||(x=null,L[0]-=f[1],L[1]-=h[1],T=2),O())}function g(){32==ho.event.keyCode&&2==T&&(L[0]+=f[1],L[1]+=h[1],T=0,O())}function m(){var t=ho.mouse(b),i=!1;_&&(t[0]+=_[0],t[1]+=_[1]),T||(ho.event.altKey?(x||(x=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(t[0]c?(i=r,r=c):i=c),g[0]!=r||g[1]!=i?(n?u=null:a=null,g[0]=r,g[1]=i,!0):void 0}function y(){m(),k.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),ho.select("body").style("cursor",null),C.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,_,b=this,M=ho.select(ho.event.target),w=s.of(b,arguments),k=ho.select(b),E=M.datum(),S=!/^(n|s)$/.test(E)&&l,A=!/^(e|w)$/.test(E)&&c,T=M.classed("extent"),N=tt(b),L=ho.mouse(b),C=ho.select(o(b)).on("keydown.brush",i).on("keyup.brush",g);if(ho.event.changedTouches?C.on("touchmove.brush",m).on("touchend.brush",y):C.on("mousemove.brush",m).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),T)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(E){var R=+/w$/.test(E),D=+/^n/.test(E);_=[f[1-R]-L[0],h[1-D]-L[1]],L[0]=f[R],L[1]=h[D]}else ho.event.altKey&&(x=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ho.select("body").style("cursor",M.style("cursor")),w({type:"brushstart"}),m()}var a,u,s=L(t,"brushstart","brush","brushend"),l=null,c=null,f=[0,0],h=[0,0],d=!0,p=!0,g=Ks[0];return t.event=function(t){t.each(function(){var t=s.of(this,arguments),e={x:f,y:h,i:a,j:u},n=this.__chart__||e;this.__chart__=e,Bs?ho.select(this).transition().each("start.brush",function(){a=n.i,u=n.j,f=n.x,h=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=Er(f,e.x),r=Er(h,e.y);return a=u=null,function(i){f=e.x=n(i),h=e.y=r(i),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,u=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(l=e,g=Ks[!l<<1|!c],t):l},t.y=function(e){return arguments.length?(c=e,g=Ks[!l<<1|!c],t):c},t.clamp=function(e){return arguments.length?(l&&c?(d=!!e[0],p=!!e[1]):l?d=!!e:c&&(p=!!e),t):l&&c?[d,p]:l?d:c?p:null},t.extent=function(e){var n,r,i,o,s;return arguments.length?(l&&(n=e[0],r=e[1],c&&(n=n[0],r=r[0]),a=[n,r],l.invert&&(n=l(n),r=l(r)),n>r&&(s=n,n=r,r=s),n==f[0]&&r==f[1]||(f=[n,r])),c&&(i=e[0],o=e[1],l&&(i=i[1],o=o[1]),u=[i,o],c.invert&&(i=c(i),o=c(o)),i>o&&(s=i,i=o,o=s),i==h[0]&&o==h[1]||(h=[i,o])),t):(l&&(a?(n=a[0],r=a[1]):(n=f[0],r=f[1],l.invert&&(n=l.invert(n),r=l.invert(r)),n>r&&(s=n,n=r,r=s))),c&&(u?(i=u[0],o=u[1]):(i=h[0],o=h[1],c.invert&&(i=c.invert(i),o=c.invert(o)),i>o&&(s=i,i=o,o=s))),l&&c?[[n,i],[r,o]]:l?[n,r]:c&&[i,o])},t.clear=function(){return t.empty()||(f=[0,0],h=[0,0],a=u=null),t},t.empty=function(){return!!l&&f[0]==f[1]||!!c&&h[0]==h[1]},ho.rebind(t,s,"on")};var Qs={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ks=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],tl=xu.format=Eu.timeFormat,el=tl.utc,nl=el("%Y-%m-%dT%H:%M:%S.%LZ");tl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?uo:nl,uo.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},uo.toString=nl.toString,xu.second=Bt(function(t){return new _u(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),xu.seconds=xu.second.range,xu.seconds.utc=xu.second.utc.range,xu.minute=Bt(function(t){return new _u(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),xu.minutes=xu.minute.range,xu.minutes.utc=xu.minute.utc.range,xu.hour=Bt(function(t){var e=t.getTimezoneOffset()/60;return new _u(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),xu.hours=xu.hour.range,xu.hours.utc=xu.hour.utc.range,xu.month=Bt(function(t){return t=xu.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),xu.months=xu.month.range,xu.months.utc=xu.month.utc.range;var rl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],il=[[xu.second,1],[xu.second,5],[xu.second,15],[xu.second,30],[xu.minute,1],[xu.minute,5],[xu.minute,15],[xu.minute,30],[xu.hour,1],[xu.hour,3],[xu.hour,6],[xu.hour,12],[xu.day,1],[xu.day,2],[xu.week,1],[xu.month,1],[xu.month,3],[xu.year,1]],al=tl.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",De]]),ol={range:function(t,e,n){return ho.range(Math.ceil(t/n)*n,+e,n).map(lo)},floor:w,ceil:w};il.year=xu.year,xu.scale=function(){return so(ho.scale.linear(),il,al)};var ul=il.map(function(t){return[t[0].utc,t[1]]}),sl=el.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",De]]);ul.year=xu.year.utc,xu.scale.utc=function(){return so(ho.scale.linear(),ul,sl)},ho.text=Ct(function(t){return t.responseText}),ho.json=function(t,e){return Rt(t,"application/json",co,e)},ho.html=function(t,e){return Rt(t,"text/html",fo,e)},ho.xml=Ct(function(t){return t.responseXML}),this.d3=ho,r=ho,i="function"==typeof r?r.call(e,n,e,t):r,!(void 0!==i&&(t.exports=i))}()},function(t,e,n){var r=n(12),i={};r.extend(i,n(59)),t.exports=r.extend(i,r)},function(t,e,n){function r(t,e,n,r){var a=n||i(t);return o(t,e,a,r)}function i(t){switch(t.type){case s:return s;case l:return l;case f:return c;default:return h}}function a(t,e,n,r){function i(t){return(e[0]<0?-Math.log(t>0?0:-t):Math.log(0>t?0:t))/Math.log(u)}function a(t){return e[0]<0?-Math.pow(u,-t):Math.pow(u,t)}if(null==n)return r;var o,u=t.base(),s=Math.min(u,t.ticks().length/n),l=e[0]>0?(o=1e-12,Math.ceil):(o=-1e-12,Math.floor);return function(t){return a(l(i(t)+o))/t>=s?r(t):""}}function o(t,e,n,r){var i,o=u.format,c="log"===t.type;switch(n){case h:return i=t.domain(),c?a(t,i,e,o.auto.number(r||null)):o.auto.linear(i,e,r||null);case s:return(r?o:o.auto).time(r);case l:return(r?o:o.auto).utc(r);default:return String}}var u=n(12),s="time",l="utc",c="string",f="ordinal",h="number";t.exports={getTickFormat:r}},function(t,e,n){t.exports={path:n(61),render:n(65),Item:n(97),bound:n(84),Bounds:n(83),canvas:n(86),Gradient:n(98),toJSON:n(99).toJSON,fromJSON:n(99).fromJSON}},function(t,e,n){t.exports={parse:n(62),render:n(63)}},function(t,e){var n={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},r=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\d)([-+])/g,/\s|,|###/];t.exports=function(t){var e,i,a,o,u,s,l,c,f,h,d,p=[];for(e=t.slice().replace(r[0],"###$1").split(r[1]).slice(1),c=0,h=e.length;h>c;++c){for(i=e[c],a=i.slice(1).trim().replace(r[2],"$1###$2").split(r[3]),s=i.charAt(0),o=[s],f=0,d=a.length;d>f;++f)(u=+a[f])===u&&o.push(u);if(l=n[s.toLowerCase()],o.length-1>l)for(f=1,d=o.length;d>f;f+=l)p.push([s].concat(o.slice(f,f+l)));else p.push(o)}return p}},function(t,e,n){function r(t,e,n,r){for(var a=i.segments(r[5],r[6],r[0],r[1],r[3],r[4],r[2],e,n),o=0;og;++g){switch(a=e[g],a[0]){case"l":f+=a[1],h+=a[2],t.lineTo(f+n,h+i);break;case"L":f=a[1],h=a[2],t.lineTo(f+n,h+i);break;case"h":f+=a[1],t.lineTo(f+n,h+i);break;case"H":f=a[1],t.lineTo(f+n,h+i);break;case"v":h+=a[1],t.lineTo(f+n,h+i);break;case"V":h=a[1],t.lineTo(f+n,h+i);break;case"m":f+=a[1],h+=a[2],t.moveTo(f+n,h+i);break;case"M":f=a[1],h=a[2],t.moveTo(f+n,h+i);break;case"c":o=f+a[5],u=h+a[6],d=f+a[3],p=h+a[4],t.bezierCurveTo(f+a[1]+n,h+a[2]+i,d+n,p+i,o+n,u+i),f=o,h=u;break;case"C":f=a[5],h=a[6],d=a[3],p=a[4],t.bezierCurveTo(a[1]+n,a[2]+i,d+n,p+i,f+n,h+i);break;case"s":o=f+a[3],u=h+a[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+i,f+a[1]+n,h+a[2]+i,o+n,u+i),d=f+a[1],p=h+a[2],f=o,h=u;break;case"S":o=a[3],u=a[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+i,a[1]+n,a[2]+i,o+n,u+i),f=o,h=u,d=a[1],p=a[2];break;case"q":o=f+a[3],u=h+a[4],d=f+a[1],p=h+a[2],t.quadraticCurveTo(d+n,p+i,o+n,u+i),f=o,h=u;break;case"Q":o=a[3],u=a[4],t.quadraticCurveTo(a[1]+n,a[2]+i,o+n,u+i),f=o,h=u,d=a[1],p=a[2];break;case"t":o=f+a[1],u=h+a[2],null===c[0].match(/[QqTt]/)?(d=f,p=h):"t"===c[0]?(d=2*f-s,p=2*h-l):"q"===c[0]&&(d=2*f-d,p=2*h-p),s=d,l=p,t.quadraticCurveTo(d+n,p+i,o+n,u+i),f=o,h=u,d=f+a[1],p=h+a[2];break;case"T":o=a[1],u=a[2],d=2*f-d,p=2*h-p,t.quadraticCurveTo(d+n,p+i,o+n,u+i),f=o,h=u;break;case"a":r(t,f+n,h+i,[a[1],a[2],a[3],a[4],a[5],a[6]+f+n,a[7]+h+i]),f+=a[6],h+=a[7];break;case"A":r(t,f+n,h+i,[a[1],a[2],a[3],a[4],a[5],a[6]+n,a[7]+i]),f=a[6],h=a[7];break;case"z":case"Z":t.closePath()}c=a}}},function(t,e){function n(t,e,n,r,a,u,s,l,c){var f=o.call(arguments);if(i[f])return i[f];var h=s*(Math.PI/180),d=Math.sin(h),p=Math.cos(h);n=Math.abs(n),r=Math.abs(r);var g=p*(l-t)*.5+d*(c-e)*.5,m=p*(c-e)*.5-d*(l-t)*.5,v=g*g/(n*n)+m*m/(r*r);v>1&&(v=Math.sqrt(v),n*=v,r*=v);var y=p/n,x=d/n,_=-d/r,b=p/r,M=y*l+x*c,w=_*l+b*c,k=y*t+x*e,E=_*t+b*e,S=(k-M)*(k-M)+(E-w)*(E-w),A=1/S-.25;0>A&&(A=0);var T=Math.sqrt(A);u==a&&(T=-T);var O=.5*(M+k)-T*(E-w),N=.5*(w+E)+T*(k-M),L=Math.atan2(w-N,M-O),C=Math.atan2(E-N,k-O),R=C-L;0>R&&1===u?R+=2*Math.PI:R>0&&0===u&&(R-=2*Math.PI);for(var D=Math.ceil(Math.abs(R/(.5*Math.PI+.001))),I=[],U=0;D>U;++U){var P=L+U*R/D,z=L+(U+1)*R/D;I[U]=[O,N,P,z,n,r,d,p]}return i[f]=I}function r(t){var e=o.call(t);if(a[e])return a[e];var n=t[0],r=t[1],i=t[2],u=t[3],s=t[4],l=t[5],c=t[6],f=t[7],h=f*s,d=-c*l,p=c*s,g=f*l,m=Math.cos(i),v=Math.sin(i),y=Math.cos(u),x=Math.sin(u),_=.5*(u-i),b=Math.sin(.5*_),M=8/3*b*b/Math.sin(_),w=n+m-M*v,k=r+v+M*m,E=n+y,S=r+x,A=E+M*x,T=S-M*y;return a[e]=[h*w+d*k,p*w+g*k,h*A+d*T,p*A+g*T,h*E+d*S,p*E+g*S]}var i={},a={},o=[].join;t.exports={segments:n,bezier:r,cache:{segments:i,bezier:a}}},function(t,e,n){t.exports={canvas:n(66),svg:n(92)}},function(t,e,n){t.exports={Handler:n(67),Renderer:n(89)}},function(t,e,n){function r(){u.call(this),this._down=null,this._touch=null,this._first=!0}function i(t,e,n){return function(r){var i=this._active,a=this.pickEvent(r);a===i?this.fire(t,r):(this.fire(n,r),this._active=a,this.fire(e,r),this.fire(t,r))}}function a(t){return function(e){this.fire(t,e),this._active=null}}var o=n(68),u=n(69),s=n(70),l=u.prototype,c=r.prototype=Object.create(l);c.constructor=r,c.initialize=function(t,e,n){var r=this._canvas=o.find(t,"canvas");if(r){var i=this;this.events.forEach(function(t){r.addEventListener(t,function(e){c[t]?c[t].call(i,e):i.fire(t,e)})})}return l.initialize.call(this,t,e,n)},c.canvas=function(){return this._canvas},c.context=function(){return this._canvas.getContext("2d")},c.events=["keydown","keypress","keyup","dragenter","dragleave","dragover","mousedown","mouseup","mousemove","mouseout","mouseover","click","dblclick","wheel","mousewheel","touchstart","touchmove","touchend"],c.DOMMouseScroll=function(t){this.fire("mousewheel",t)},c.mousemove=i("mousemove","mouseover","mouseout"),c.dragover=i("dragover","dragenter","dragleave"),c.mouseout=a("mouseout"),c.dragleave=a("dragleave"),c.mousedown=function(t){this._down=this._active,this.fire("mousedown",t)},c.click=function(t){this._down===this._active&&(this.fire("click",t),this._down=null)},c.touchstart=function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire("touchstart",t,!0)},c.touchmove=function(t){this.fire("touchmove",t,!0)},c.touchend=function(t){this.fire("touchend",t,!0),this._touch=null},c.fire=function(t,e,n){var r,i,a=n?this._touch:this._active,o=this._handlers[t];if(o)for(e.vegaType=t,r=0,i=o.length;i>r;++r)o[r].handler.call(this._obj,e,a)},c.on=function(t,e){var n=this.eventName(t),r=this._handlers;return(r[n]||(r[n]=[])).push({type:t,handler:e}),this},c.off=function(t,e){var n,r=this.eventName(t),i=this._handlers[r];if(i){for(n=i.length;--n>=0;)i[n].type===t&&(e&&i[n].handler!==e||i.splice(n,1));return this}},c.pickEvent=function(t){var e,n,r=this._canvas.getBoundingClientRect(),i=this._padding;return this.pick(this._scene,e=t.clientX-r.left,n=t.clientY-r.top,e-i.left,n-i.top)},c.pick=function(t,e,n,r,i){var a=this.context(),o=s[t.marktype];return o.pick.call(this,a,t,e,n,r,i)},t.exports=r},function(t,e){function n(t,e,n){return n?t.createElementNS(n,e):t.createElement(e)}function r(t){if(t){var e=t.parentNode;e&&(e.removeChild(t),e.childNodes&&e.childNodes.length||r(e))}}t.exports={find:function(t,e){e=e.toLowerCase();for(var n=0,r=t.childNodes.length;r>n;++n)if(t.childNodes[n].tagName.toLowerCase()===e)return t.childNodes[n]},child:function(t,e,r,i,a,o){var u,s;return u=s=t.childNodes[e],(!u||o||u.tagName.toLowerCase()!==r.toLowerCase()||a&&u.getAttribute("class")!=a)&&(u=n(t.ownerDocument,r,i),t.insertBefore(u,s),a&&u.setAttribute("class",a)),u},clear:function(t,e){for(var n=t.childNodes.length;n>e;)t.removeChild(t.childNodes[--n]);return t},remove:r,cssClass:function(t){return"mark-"+t.marktype+(t.name?" "+t.name:"")},openTag:function(t,e,n){var r,i,a="<"+t;if(e)for(r in e)i=e[r],null!=i&&(a+=" "+r+'="'+i+'"');return n&&(a+=" "+n),a+">"},closeTag:function(t){return""}}},function(t,e){function n(){this._active=null,this._handlers={}}var r=n.prototype;r.initialize=function(t,e,n){return this._el=t,this._obj=n||null,this.padding(e)},r.element=function(){return this._el},r.padding=function(t){return this._padding=t||{top:0,left:0,bottom:0,right:0},this},r.scene=function(t){return arguments.length?(this._scene=t,this):this._scene},r.on=function(){},r.off=function(){},r.handlers=function(){var t,e=this._handlers,n=[];for(t in e)n.push.apply(n,e[t]);return n},r.eventName=function(t){var e=t.indexOf(".");return 0>e?t:t.slice(0,e)},t.exports=n},function(t,e,n){t.exports={arc:n(71),area:n(73),group:n(75),image:n(76),line:n(77),path:n(78),rect:n(79),rule:n(80),symbol:n(81),text:n(82)}},function(t,e,n){function r(t,e){var n=e.x||0,r=e.y||0,i=e.innerRadius||0,o=e.outerRadius||0,u=(e.startAngle||0)-a,s=(e.endAngle||0)-a;t.beginPath(),0===i?t.moveTo(n,r):t.arc(n,r,i,u,s,0),t.arc(n,r,o,s,u,1),t.closePath()}var i=n(72),a=Math.PI/2;t.exports={draw:i.drawAll(r),pick:i.pickPath(r)}},function(t,e){function n(t,e,n,r){if(!t(e,r)){var i=null==n.opacity?1:n.opacity;0!==i&&(n.fill&&l(e,n,i)&&e.fill(),n.stroke&&c(e,n,i)&&e.stroke())}}function r(t,e,r,i){var a,o,u;for(a=0,o=r.items.length;o>a;++a)u=r.items[a],i&&!i.intersects(u.bounds)||n(t,e,u,u)}function i(t){return function(e,n,i){r(t,e,n,i)}}function a(t){return function(e,r,i){r.items.length&&(i&&!i.intersects(r.bounds)||n(t,e,r.items[0],r.items))}}function o(t){return t||(t=d),function(e,n,r,i,a,o){if(!n.items.length)return null;var u,s,l;for(null!=e.pixelratio&&1!==e.pixelratio&&(r*=e.pixelratio,i*=e.pixelratio),l=n.items.length;--l>=0;)if(u=n.items[l],s=u.bounds,(!s||s.contains(a,o))&&s&&t(e,u,r,i,a,o))return u;return null}}function u(t,e){return function(n,r,i,a){var o,u,s=Array.isArray(r)?r[0]:r,l=null==e?s.fill:e,c=s.stroke&&n.isPointInStroke;return c&&(o=s.strokeWidth,u=s.strokeCap,n.lineWidth=null!=o?o:1,n.lineCap=null!=u?u:"butt"),t(n,r)?!1:l&&n.isPointInPath(i,a)||c&&n.isPointInStroke(i,a)}}function s(t){return o(u(t))}function l(t,e,n){return n*=null==e.fillOpacity?1:e.fillOpacity,n>0?(t.globalAlpha=n,t.fillStyle=f(t,e,e.fill),!0):!1}function c(t,e,n){var r,i=null!=(i=e.strokeWidth)?i:1;return 0>=i?!1:(n*=null==e.strokeOpacity?1:e.strokeOpacity,n>0?(t.globalAlpha=n,t.strokeStyle=f(t,e,e.stroke),t.lineWidth=i,t.lineCap=null!=(r=e.strokeCap)?r:"butt",t.vgLineDash(e.strokeDash||null),t.vgLineDashOffset(e.strokeDashOffset||0),!0):!1)}function f(t,e,n){return n.id?h(t,n,e.bounds):n}function h(t,e,n){var r,i,a=n.width(),o=n.height(),u=n.x1+e.x1*a,s=n.y1+e.y1*o,l=n.x1+e.x2*a,c=n.y1+e.y2*o,f=t.createLinearGradient(u,s,l,c),h=e.stops;for(r=0,i=h.length;i>r;++r)f.addColorStop(h[r].offset,h[r].color);return f}var d=function(){return!0};t.exports={drawOne:a,drawAll:i,pick:o,pickPath:s,testPath:u,stroke:c,fill:l,color:f,gradient:h}},function(t,e,n){function r(t,e){var n=e[0],r=n.pathCache||(n.pathCache=o(s(e)));u(t,r)}function i(t,e,n,r,i,a){var o=e.items,u=e.bounds;return!o||!o.length||u&&!u.contains(i,a)?null:(null!=t.pixelratio&&1!==t.pixelratio&&(n*=t.pixelratio,r*=t.pixelratio),l(t,o,n,r)?o[0]:null)}var a=n(72),o=n(62),u=n(63),s=n(74).path.area,l=a.testPath(r);t.exports={draw:a.drawOne(r),pick:i,nested:!0}},function(t,e,n){function r(t){return t.x||0}function i(t){return t.y||0}function a(t){return(t.x||0)+(t.width||0)}function o(t){return(t.y||0)+(t.height||0)}function u(t){return null==t.size?100:t.size}function s(t){return t.shape||"circle"}var l=n(57).svg,c=l.area().x(r).y1(i).y0(o),f=l.area().y(i).x1(r).x0(a),h=l.line().x(r).y(i);t.exports={metadata:{version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},path:{arc:l.arc(),symbol:l.symbol().type(s).size(u),area:function(t){var e=t[0];return("horizontal"===e.orient?f:c).interpolate(e.interpolate||"linear").tension(e.tension||.7)(t)},line:function(t){var e=t[0];return h.interpolate(e.interpolate||"linear").tension(e.tension||.7)(t)}},textAlign:{left:"start",center:"middle",right:"end"},textBaseline:{top:"before-edge",bottom:"after-edge",middle:"central"},styles:{fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeWidth:"stroke-width",strokeOpacity:"stroke-opacity",strokeCap:"stroke-linecap",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",opacity:"opacity"},styleProperties:["fill","fillOpacity","stroke","strokeWidth","strokeOpacity","strokeCap","strokeDash","strokeDashOffset","opacity"]}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length){var r,i,u,s,l,c,f,h,d,p,g,m,v,y=e.items,x=this;for(p=0,g=y.length;g>p;++p){for(r=y[p],u=r.axisItems||o,i=r.items||o,s=r.legendItems||o,l=r.x||0,c=r.y||0,f=r.width||0,h=r.height||0,(r.stroke||r.fill)&&(d=null==r.opacity?1:r.opacity,d>0&&(r.fill&&a.fill(t,r,d)&&t.fillRect(l,c,f,h),r.stroke&&a.stroke(t,r,d)&&t.strokeRect(l,c,f,h))),t.save(),t.translate(l,c),r.clip&&(t.beginPath(),t.rect(0,0,f,h),t.clip()),n&&n.translate(-l,-c),m=0,v=u.length;v>m;++m)"back"===u[m].layer&&x.draw(t,u[m],n);for(m=0,v=i.length;v>m;++m)x.draw(t,i[m],n);for(m=0,v=u.length;v>m;++m)"back"!==u[m].layer&&x.draw(t,u[m],n);for(m=0,v=s.length;v>m;++m)x.draw(t,s[m],n);n&&n.translate(l,c),t.restore()}}}function i(t,e,n,r,i,a){if(e.bounds&&!e.bounds.contains(i,a))return null;var u,s,l,c,f,h,d,p,g,m,v,y=e.items||o;for(g=y.length;--g>=0;)if(s=y[g],v=s.bounds,!v||v.contains(i,a)){for(l=s.axisItems||o,c=s.items||o,f=s.legendItems||o,d=s.x||0,p=s.y||0,t.save(),t.translate(d,p),d=i-d,p=a-p,m=f.length;--m>=0;)if(u=f[m],u.interactive!==!1&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;for(m=l.length;--m>=0;)if(u=l[m],u.interactive!==!1&&"back"!==u.layer&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;for(m=c.length;--m>=0;)if(u=c[m],u.interactive!==!1&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;for(m=l.length;--m>=0;)if(u=l[m],u.interative!==!1&&"back"===u.layer&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;if(t.restore(),e.interactive!==!1&&(s.fill||s.stroke)&&d>=0&&d<=s.width&&p>=0&&p<=s.height)return s}return null}var a=n(72),o=[];t.exports={draw:r,pick:i}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,i=this,a=e.items,o=0,u=a.length;u>o;++o)if(r=a[o],!n||n.intersects(r.bounds)){r.image&&r.image.url===r.url||(r.image=i.loadImage(r.url),r.image.url=r.url);var s,l=r.x||0,c=r.y||0,f=r.width||r.image&&r.image.width||0,h=r.height||r.image&&r.image.height||0;l-="center"===r.align?f/2:"right"===r.align?f:0,c-="middle"===r.baseline?h/2:"bottom"===r.baseline?h:0,r.image.loaded&&(t.globalAlpha=null!=(s=r.opacity)?s:1,t.drawImage(r.image,l,c,f,h))}}var i=n(72);t.exports={draw:r,pick:i.pick()}},function(t,e,n){function r(t,e){var n=e[0],r=n.pathCache||(n.pathCache=o(s(e)));u(t,r)}function i(t,e,n,r,i,a){var o=e.items,u=e.bounds;return!o||!o.length||u&&!u.contains(i,a)?null:(null!=t.pixelratio&&1!==t.pixelratio&&(n*=t.pixelratio,r*=t.pixelratio),l(t,o,n,r)?o[0]:null)}var a=n(72),o=n(62),u=n(63),s=n(74).path.line,l=a.testPath(r,!1);t.exports={draw:a.drawOne(r),pick:i,nested:!0}},function(t,e,n){function r(t,e){if(null==e.path)return!0;var n=e.pathCache||(e.pathCache=a(e.path));o(t,n,e.x,e.y)}var i=n(72),a=n(62),o=n(63);t.exports={draw:i.drawAll(r),pick:i.pickPath(r)}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,a,o,u,s,l,c=e.items,f=0,h=c.length;h>f;++f)r=c[f],n&&!n.intersects(r.bounds)||(a=null==r.opacity?1:r.opacity,0!==a&&(o=r.x||0,u=r.y||0,s=r.width||0,l=r.height||0,r.fill&&i.fill(t,r,a)&&t.fillRect(o,u,s,l),r.stroke&&i.stroke(t,r,a)&&t.strokeRect(o,u,s,l)))}var i=n(72);t.exports={draw:r,pick:i.pick()}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,i,a,u,s,l,c=e.items,f=0,h=c.length;h>f;++f)r=c[f], -n&&!n.intersects(r.bounds)||(i=null==r.opacity?1:r.opacity,0!==i&&(a=r.x||0,u=r.y||0,s=null!=r.x2?r.x2:a,l=null!=r.y2?r.y2:u,r.stroke&&o.stroke(t,r,i)&&(t.beginPath(),t.moveTo(a,u),t.lineTo(s,l),t.stroke())))}function i(t,e){var n=e.x||0,r=e.y||0,i=null!=e.x2?e.x2:n,a=null!=e.y2?e.y2:r,o=e.strokeWidth,u=e.strokeCap;t.lineWidth=null!=o?o:1,t.lineCap=null!=u?u:"butt",t.beginPath(),t.moveTo(n,r),t.lineTo(i,a)}function a(t,e,n,r){return t.isPointInStroke?(i(t,e),t.isPointInStroke(n,r)):!1}var o=n(72);t.exports={draw:r,pick:o.pick(a)}},function(t,e,n){function r(t,e){var n,r,i,u,s=null!=e.size?e.size:100,l=e.x,c=e.y;if(t.beginPath(),null==e.shape||"circle"===e.shape)return n=Math.sqrt(s/Math.PI),t.arc(l,c,n,0,2*Math.PI,0),void t.closePath();switch(e.shape){case"cross":n=Math.sqrt(s/5)/2,r=3*n,t.moveTo(l-r,c-n),t.lineTo(l-n,c-n),t.lineTo(l-n,c-r),t.lineTo(l+n,c-r),t.lineTo(l+n,c-n),t.lineTo(l+r,c-n),t.lineTo(l+r,c+n),t.lineTo(l+n,c+n),t.lineTo(l+n,c+r),t.lineTo(l-n,c+r),t.lineTo(l-n,c+n),t.lineTo(l-r,c+n);break;case"diamond":u=Math.sqrt(s/(2*o)),i=u*o,t.moveTo(l,c-u),t.lineTo(l+i,c),t.lineTo(l,c+u),t.lineTo(l-i,c);break;case"square":r=Math.sqrt(s),n=r/2,t.rect(l-n,c-n,r,r);break;case"triangle-down":i=Math.sqrt(s/a),u=i*a/2,t.moveTo(l,c+u),t.lineTo(l+i,c-u),t.lineTo(l-i,c-u);break;case"triangle-up":i=Math.sqrt(s/a),u=i*a/2,t.moveTo(l,c-u),t.lineTo(l+i,c+u),t.lineTo(l-i,c+u)}t.closePath()}var i=n(72),a=Math.sqrt(3),o=Math.tan(30*Math.PI/180);t.exports={draw:i.drawAll(r),pick:i.pickPath(r)}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,i,a,o,l,c,f,h=e.items,d=0,p=h.length;p>d;++d)r=h[d],n&&!n.intersects(r.bounds)||(f=u.value(r.text),f&&(i=null==r.opacity?1:r.opacity,0!==i&&(t.font=u.font(r),t.textAlign=r.align||"left",a=r.x||0,o=r.y||0,(l=r.radius)&&(c=(r.theta||0)-Math.PI/2,a+=l*Math.cos(c),o+=l*Math.sin(c)),r.angle&&(t.save(),t.translate(a,o),t.rotate(r.angle*Math.PI/180),a=o=0),a+=r.dx||0,o+=(r.dy||0)+u.offset(r),r.fill&&s.fill(t,r,i)&&t.fillText(f,a,o),r.stroke&&s.stroke(t,r,i)&&t.strokeText(f,a,o),r.angle&&t.restore())))}function i(t,e,n,r,i,a){if(e.fontSize<=0)return!1;if(!e.angle)return!0;var u=o(e,l,!0),s=-e.angle*Math.PI/180,c=Math.cos(s),f=Math.sin(s),h=e.x,d=e.y,p=c*i-f*a+(h-h*c+d*f),g=f*i+c*a+(d-h*f-d*c);return u.contains(p,g)}var a=n(83),o=n(84).text,u=n(88),s=n(72),l=new a;t.exports={draw:r,pick:s.pick(i)}},function(t,e){function n(t){this.clear(),t&&this.union(t)}var r=n.prototype;r.clone=function(){return new n(this)},r.clear=function(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},r.set=function(t,e,n,r){return this.x1=t,this.y1=e,this.x2=n,this.y2=r,this},r.add=function(t,e){return tthis.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},r.expand=function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},r.round=function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},r.translate=function(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},r.rotate=function(t,e,n){var r=Math.cos(t),i=Math.sin(t),a=e-e*r+n*i,o=n-e*i-n*r,u=this.x1,s=this.x2,l=this.y1,c=this.y2;return this.clear().add(r*u-i*l+a,i*u+r*l+o).add(r*u-i*c+a,i*u+r*c+o).add(r*s-i*l+a,i*s+r*l+o).add(r*s-i*c+a,i*s+r*c+o)},r.union=function(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},r.encloses=function(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},r.alignsWith=function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},r.intersects=function(t){return t&&!(this.x2t.x2||this.y2t.y2)},r.contains=function(t,e){return!(tthis.x2||ethis.y2)},r.width=function(){return this.x2-this.x1},r.height=function(){return this.y2-this.y1},t.exports=n},function(t,e,n){function r(){return L||(L=_.instance(1,1).getContext("2d"))}function i(t,e){return t.stroke&&0!==t.opacity&&0!==t.stokeOpacity&&e.expand(null!=t.strokeWidth?t.strokeWidth:1),e}function a(t,e,n,r,a){return null==e?n.set(0,0,0,0):(E(C.bounds(n),e,r,a),i(t,n)),n}function o(t,e){var n=t.path?t.pathCache||(t.pathCache=k(t.path)):null;return a(t,n,e,t.x,t.y)}function u(t,e){if(0===t.items.length)return e;var n=t.items,r=n[0],i=r.pathCache||(r.pathCache=k(S(n)));return a(r,i,e)}function s(t,e){if(0===t.items.length)return e;var n=t.items,r=n[0],i=r.pathCache||(r.pathCache=k(A(n)));return a(r,i,e)}function l(t,e){var n,r;return i(t,e.set(n=t.x||0,r=t.y||0,n+t.width||0,r+t.height||0))}function c(t,e){var n=t.x||0,r=t.y||0,i=t.width||0,a=t.height||0;return n-="center"===t.align?i/2:"right"===t.align?i:0,r-="middle"===t.baseline?a/2:"bottom"===t.baseline?a:0,e.set(n,r,n+i,r+a)}function f(t,e){var n,r;return i(t,e.set(n=t.x||0,r=t.y||0,null!=t.x2?t.x2:n,null!=t.y2?t.y2:r))}function h(t,e){var n,r,a,o,u,s,l,c,f,h=t.x||0,d=t.y||0,p=t.innerRadius||0,g=t.outerRadius||0,m=(t.startAngle||0)-T,v=(t.endAngle||0)-T,y=1/0,x=-(1/0),_=1/0,b=-(1/0),M=[m,v],w=m-m%T;for(r=0;4>r&&v>w;++r,w+=T)M.push(w);for(r=0,a=M.length;a>r;++r)n=M[r],o=Math.cos(n),s=p*o,c=g*o,u=Math.sin(n),l=p*u,f=g*u,y=Math.min(y,s,c),x=Math.max(x,s,c),_=Math.min(_,l,f),b=Math.max(b,l,f);return i(t,e.set(h+y,d+_,h+x,d+b))}function d(t,e){var n,r,a,o,u=null!=t.size?t.size:100,s=t.x||0,l=t.y||0;switch(t.shape){case"cross":r=3*Math.sqrt(u/5)/2,e.set(s-r,l-r,s+r,l+r);break;case"diamond":o=Math.sqrt(u/(2*N)),a=o*N,e.set(s-a,l-o,s+a,l+o);break;case"square":r=Math.sqrt(u),n=r/2,e.set(s-n,l-n,s+n,l+n);break;case"triangle-down":a=Math.sqrt(u/O),o=a*O/2,e.set(s-a,l-o,s+a,l+o);break;case"triangle-up":a=Math.sqrt(u/O),o=a*O/2,e.set(s-a,l-o,s+a,l+o);break;default:n=Math.sqrt(u/Math.PI),e.set(s-n,l-n,s+n,l+n)}return i(t,e)}function p(t,e,n){var i,a,o=r(),u=M.size(t),s=t.align,l=t.radius||0,c=t.x||0,f=t.y||0,h=t.dx||0,d=(t.dy||0)+M.offset(t)-Math.round(.8*u);return l&&(a=(t.theta||0)-Math.PI/2,c+=l*Math.cos(a),f+=l*Math.sin(a)),o.font=M.font(t),i=o.measureText(M.value(t.text)).width,"center"===s?h-=i/2:"right"===s&&(h-=i),e.set(h+=c,d+=f,h+i,d+u),t.angle&&!n&&e.rotate(t.angle*Math.PI/180,c,f),e.expand(n?0:1)}function g(t,e,n){var r,a,o=t.axisItems||[],u=t.items||[],s=t.legendItems||[];if(!t.clip){for(r=0,a=o.length;a>r;++r)e.union(o[r].bounds);for(r=0,a=u.length;a>r;++r)e.union(u[r].bounds);if(n)for(r=0,a=s.length;a>r;++r)e.union(s[r].bounds)}return(t.clip||t.width||t.height)&&i(t,e.add(0,0).add(t.width||0,t.height||0)),e.translate(t.x||0,t.y||0)}function m(t,e,n){var r=t.mark.marktype;e=e||R[r],e.nest&&(t=t.mark);var i=t.bounds,a=t["bounds:prev"]||(t["bounds:prev"]=new x);return i?(a.clear().union(i),i.clear()):t.bounds=new x,e(t,t.bounds,n),i||a.clear().union(t.bounds),t.bounds}function v(t,e,n){var r,i,a,o,u=t.marktype,s=R[u],l=t.items,c=l&&l.length;if(s.nest)return a=c?l[0]:(D.mark=t,D),o=m(a,s,n),e=e&&e.union(o)||o;if(e=e||t.bounds&&t.bounds.clear()||new x,c)for(r=0,i=l.length;i>r;++r)e.union(m(l[r],s,n));return t.bounds=e}var y=n(85),x=n(83),_=n(86),b=n(74),M=n(88),w=n(61),k=w.parse,E=w.render,S=b.path.area,A=b.path.line,T=Math.PI/2,O=Math.sqrt(3),N=Math.tan(30*Math.PI/180),L=null,C=y(),R={group:g,symbol:d,image:c,rect:l,rule:f,arc:h,text:p,path:o,area:u,line:s};R.area.nest=!0,R.line.nest=!0;var D={mark:null};t.exports={mark:v,item:m,text:p,group:g}},function(t,e){t.exports=function(t){function e(){}function n(e,n){t.add(e,n)}return{bounds:function(e){return arguments.length?(t=e,this):t},beginPath:e,closePath:e,moveTo:n,lineTo:n,quadraticCurveTo:function(e,n,r,i){t.add(e,n),t.add(r,i)},bezierCurveTo:function(e,n,r,i,a,o){t.add(e,n),t.add(r,i),t.add(a,o)}}}},function(t,e,n){function r(t,e){t=t||1,e=e||1;var r;if("undefined"!=typeof document&&document.createElement)r=document.createElement("canvas"),r.width=t,r.height=e;else{var i=n(87);if(!i.prototype)return null;r=new i(t,e)}return o(r)}function i(t,e,n,r,i){var o=this._ctx=t.getContext("2d"),u=1;return t.width=e+r.left+r.right,t.height=n+r.top+r.bottom,i&&"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&(o.pixelratio=u=a(t)||1),o.setTransform(u,0,0,u,u*r.left,u*r.top),t}function a(t){var e=t.getContext("2d"),n=window&&window.devicePixelRatio||1,r=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1,i=n/r;if(n!==r){var a=t.width,o=t.height;t.width=a*i,t.height=o*i,t.style.width=a+"px",t.style.height=o+"px"}return i}function o(t){var e=t.getContext("2d");if(!e.vgLineDash){var n=function(){},r=[];return e.setLineDash?(e.vgLineDash=function(t){this.setLineDash(t||r)},e.vgLineDashOffset=function(t){this.lineDashOffset=t}):void 0!==e.webkitLineDash?(e.vgLineDash=function(t){this.webkitLineDash=t||r},e.vgLineDashOffset=function(t){this.webkitLineDashOffset=t}):void 0!==e.mozDash?(e.vgLineDash=function(t){this.mozDash=t},e.vgLineDashOffset=n):(e.vgLineDash=n,e.vgLineDashOffset=n),t}}t.exports={instance:r,resize:i,lineDash:o}},function(t,e){},function(t,e){function n(t){return null!=t.fontSize?t.fontSize:11}t.exports={size:n,value:function(t){return null!=t?String(t):""},font:function(t,e){var r=t.font;return e&&r&&(r=String(r).replace(/\"/g,"'")),""+(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t.fontVariant+" ":"")+(t.fontWeight?t.fontWeight+" ":"")+n(t)+"px "+(r||"sans-serif")},offset:function(t){var e=t.baseline,r=n(t);return Math.round("top"===e?.93*r:"middle"===e?.3*r:"bottom"===e?-.21*r:0)}}},function(t,e,n){function r(t){c.call(this),this._loader=new s(t)}function i(t,e){if(!e)return null;var n,r,i,o,s,l=new u;for(n=0,r=e.length;r>n;++n)i=e[n],o=i.mark,s=o.group,i=f[o.marktype].nested?o:i,l.union(a(i.bounds,s)),i["bounds:prev"]&&l.union(a(i["bounds:prev"],s));return l.round(),t.beginPath(),t.rect(l.x1,l.y1,l.width(),l.height()),t.clip(),l}function a(t,e){if(null==e)return t;for(var n=t.clone();null!=e;e=e.mark.group)n.translate(e.x||0,e.y||0);return n}var o=n(68),u=n(83),s=n(90),l=n(86),c=n(91),f=n(70);r.RETINA=!0;var h=c.prototype,d=r.prototype=Object.create(h);d.constructor=r,d.initialize=function(t,e,n,r){return this._canvas=l.instance(e,n),t&&(o.clear(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),h.initialize.call(this,t,e,n,r)},d.resize=function(t,e,n){return h.resize.call(this,t,e,n),l.resize(this._canvas,this._width,this._height,this._padding,r.RETINA),this},d.canvas=function(){return this._canvas},d.context=function(){return this._canvas?this._canvas.getContext("2d"):null},d.pendingImages=function(){return this._loader.pending()},d.render=function(t,e){var n,r=this.context(),a=this._padding,o=this._width+a.left+a.right,u=this._height+a.top+a.bottom;return this._scene=t,r.save(),n=i(r,e),this.clear(-a.left,-a.top,o,u),this.draw(r,t,n),r.restore(),this._scene=null,this},d.draw=function(t,e,n){var r=f[e.marktype];r.draw.call(this,t,e,n)},d.clear=function(t,e,n,r){var i=this.context();i.clearRect(t,e,n,r),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,e,n,r))},d.loadImage=function(t){var e=this,n=this._scene;return this._loader.loadImage(t,function(){e.renderAsync(n)})},d.renderAsync=function(t){var e=this;e._async_id&&clearTimeout(e._async_id),e._async_id=setTimeout(function(){e.render(t),delete e._async_id},10)},t.exports=r},function(t,e,n){function r(t){this._pending=0,this._config=t||r.Config}function i(t,e){var n=o.sanitizeUrl(this.params(t));if(!n)return e&&e(t,null),null;var r=this,i=new Image;return r._pending+=1,i.onload=function(){r._pending-=1,i.loaded=!0,e&&e(null,i)},i.src=n,i}function a(t,e){var r=this,i=new(n(87).Image);return r._pending+=1,o(this.params(t),function(t,n){return r._pending-=1,t?(e&&e(t,null),null):(i.src=n,i.loaded=!0,void(e&&e(null,i)))}),i}var o=n(18);r.Config=null;var u=r.prototype;u.pending=function(){return this._pending},u.params=function(t){var e,n={url:t};for(e in this._config)n[e]=this._config[e];return n},u.imageURL=function(t){return o.sanitizeUrl(this.params(t))},u.loadImage=function(t,e){return o.useXHR?i.call(this,t,e):a.call(this,t,e)},t.exports=r},function(t,e){function n(){this._el=null,this._bgcolor=null}var r=n.prototype;r.initialize=function(t,e,n,r){return this._el=t,this.resize(e,n,r)},r.element=function(){return this._el},r.scene=function(){return this._el&&this._el.firstChild},r.background=function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},r.resize=function(t,e,n){return this._width=t,this._height=e,this._padding=n||{top:0,left:0,bottom:0,right:0},this},r.render=function(){return this},t.exports=n},function(t,e,n){t.exports={Handler:n(93),Renderer:n(94),string:{Renderer:n(96)}}},function(t,e,n){function r(){a.call(this)}var i=n(68),a=n(69),o=a.prototype,u=r.prototype=Object.create(o);u.constructor=r,u.initialize=function(t,e,n){return this._svg=i.find(t,"svg"),o.initialize.call(this,t,e,n)},u.svg=function(){return this._svg},u.listener=function(t){var e=this;return function(n){var r=n.target,i=r.__data__;n.vegaType=n.type,i=Array.isArray(i)?i[0]:i,t.call(e._obj,n,i)}},u.on=function(t,e){var n=this.eventName(t),r=this._svg,i=this._handlers,a={type:t,handler:e,listener:this.listener(e)};return(i[n]||(i[n]=[])).push(a),r.addEventListener(n,a.listener),this},u.off=function(t,e){var n,r=this.eventName(t),i=this._svg,a=this._handlers[r];if(a){for(n=a.length;--n>=0;)(a[n].type===t&&!e||a[n].handler===e)&&(i.removeEventListener(r,a[n].listener),a.splice(n,1));return this}},t.exports=r},function(t,e,n){function r(t){f.call(this),this._loader=new c(t),this._dirtyID=0}function i(t,e,n){var r,i,a;for(t=d.child(t,n,"linearGradient",g),t.setAttribute("id",e.id),t.setAttribute("x1",e.x1),t.setAttribute("x2",e.x2),t.setAttribute("y1",e.y1),t.setAttribute("y2",e.y2),r=0,i=e.stops.length;i>r;++r)a=d.child(t,r,"stop",g),a.setAttribute("offset",e.stops[r].offset),a.setAttribute("stop-color",e.stops[r].color);d.clear(t,r)}function a(t,e,n){var r;t=d.child(t,n,"clipPath",g),t.setAttribute("id",e.id),r=d.child(t,0,"rect",g),r.setAttribute("x",0),r.setAttribute("y",0),r.setAttribute("width",e.width),r.setAttribute("height",e.height)}function o(t,e){for(;t&&t.dirty!==e;t=t.mark.group){if(t.dirty=e,!t.mark||t.mark.dirty===e)return;t.mark.dirty=e}}function u(t,e,n,r,i){var a=d.child(t,r,e.tag,g,null,i);if(a.__data__=n,a.__values__={fill:"default"},"g"===e.tag){var o=d.child(a,0,"rect",g,"background");o.__data__=n}return n._svg=a}function s(t,e,n){e!==_[t]&&(null!=e?n?x.setAttributeNS(n,t,e):x.setAttribute(t,e):n?x.removeAttributeNS(n,t):x.removeAttribute(t),_[t]=e)}function l(){return"undefined"!=typeof window?window.location.href:""}var c=n(90),f=n(91),h=n(88),d=n(68),p=n(74),g=p.metadata.xmlns,m=n(95),v=f.prototype,y=r.prototype=Object.create(v);y.constructor=r,y.initialize=function(t,e,n,r){return t&&(this._svg=d.child(t,0,"svg",g,"marks"),d.clear(t,1),this._root=d.child(this._svg,0,"g",g),d.clear(this._svg,1)),this._defs={clip_id:1,gradient:{},clipping:{}},this.background(this._bgcolor),v.initialize.call(this,t,e,n,r)},y.background=function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),v.background.apply(this,arguments)},y.resize=function(t,e,n){if(v.resize.call(this,t,e,n),this._svg){var r=this._width,i=this._height,a=this._padding;this._svg.setAttribute("width",r+a.left+a.right),this._svg.setAttribute("height",i+a.top+a.bottom),this._root.setAttribute("transform","translate("+a.left+","+a.top+")")}return this},y.svg=function(){if(!this._svg)return null;var t={"class":"marks",width:this._width+this._padding.left+this._padding.right,height:this._height+this._padding.top+this._padding.bottom};for(var e in p.metadata)t[e]=p.metadata[e];return d.openTag("svg",t)+this._svg.innerHTML+d.closeTag("svg")},y.imageURL=function(t){return this._loader.imageURL(t)},y.render=function(t,e){return this._dirtyCheck(e)&&(this._dirtyAll&&this._resetDefs(),this.draw(this._root,t,-1),d.clear(this._root,1)),this.updateDefs(),this},y.draw=function(t,e,n){this.drawMark(t,e,n,m[e.marktype])},y.updateDefs=function(){var t,e=this._svg,n=this._defs,r=n.el,o=0;for(t in n.gradient)r||(r=n.el=d.child(e,0,"defs",g)),i(r,n.gradient[t],o++);for(t in n.clipping)r||(r=n.el=d.child(e,0,"defs",g)),a(r,n.clipping[t],o++);r&&(0===o?(e.removeChild(r),n.el=null):d.clear(r,o))},y._resetDefs=function(){var t=this._defs;t.clip_id=1,t.gradient={},t.clipping={}},y.isDirty=function(t){return this._dirtyAll||t.dirty===this._dirtyID},y._dirtyCheck=function(t){if(this._dirtyAll=!0,!t)return!0;var e,n,r,i,a,u,s,l=++this._dirtyID;for(a=0,u=t.length;u>a;++a)e=t[a],n=e.mark,n.marktype!==r&&(r=n.marktype,i=m[r]),"exit"!==e.status?(e=i.nest?n.items[0]:e,e._update!==l&&(e._svg?this._update(i,e._svg,e):(this._dirtyAll=!1,o(e,l)),e._update=l)):e._svg&&(i.nest&&e.mark.items.length?(this._update(i,e._svg,e.mark.items[0]),s=e.mark.items[0],s._svg=e._svg,s._update=l):d.remove(e._svg),e._svg=null);return!this._dirtyAll},y.drawMark=function(t,e,n,r){if(this.isDirty(e)){var i,a,o,s,l,c,f=r.nest?e.items&&e.items.length?[e.items[0]]:[]:e.items||[],h=e.interactive===!1?"none":null,p="g"===r.tag,m=d.cssClass(e);for(i=d.child(t,n+1,"g",g,m),i.setAttribute("class",m),e._svg=i,!p&&h&&i.style.setProperty("pointer-events",h),a=0,o=f.length;o>a;++a)this.isDirty(l=f[a])&&(c=!(this._dirtyAll||l._svg),s=u(i,r,l,a,c),this._update(r,s,l),p&&(c&&(this._dirtyAll=!0),this._recurse(s,l),c&&(this._dirtyAll=!1)));return d.clear(i,a),i}},y._recurse=function(t,e){var n,r,i=e.items||[],a=e.legendItems||[],o=e.axisItems||[],u=0;for(n=0,r=o.length;r>n;++n)"back"===o[n].layer&&this.drawMark(t,o[n],u++,m.group);for(n=0,r=i.length;r>n;++n)this.draw(t,i[n],u++);for(n=0,r=o.length;r>n;++n)"back"!==o[n].layer&&this.drawMark(t,o[n],u++,m.group);for(n=0,r=a.length;r>n;++n)this.drawMark(t,a[n],u++,m.group);d.clear(t,1+u)};var x=null,_=null,b={group:function(t,e,n){x=e.childNodes[0],_=e.__values__,t.background(s,n,this);var r=n.mark.interactive===!1?"none":null;r!==_.events&&(x.style.setProperty("pointer-events",r),_.events=r)},text:function(t,e,n){var r=h.value(n.text);r!==_.text&&(e.textContent=r,_.text=r),r=h.font(n),r!==_.font&&(e.style.setProperty("font",r),_.font=r)}};y._update=function(t,e,n){x=e,_=e.__values__,t.attr(s,n,this);var r=b[t.type];r&&r(t,e,n),this.style(x,n)},y.style=function(t,e){if(null!=e){var n,r,i,a,o;for(n=0,r=p.styleProperties.length;r>n;++n)i=p.styleProperties[n],o=e[i],o!==_[i]&&(a=p.styles[i],null==o?"fill"===a?t.style.setProperty(a,"none"):t.style.removeProperty(a):(o.id&&(this._defs.gradient[o.id]=o,o="url("+l()+"#"+o.id+")"),t.style.setProperty(a,o+"")),_[i]=o)}},t.exports=r},function(t,e,n){function r(t){return i(t.x||0,t.y||0)}function i(t,e){return"translate("+t+","+e+")"}var a=n(88),o=n(74),u=o.textAlign,s=o.path;t.exports={arc:{tag:"path",type:"arc",attr:function(t,e){t("transform",r(e)),t("d",s.arc(e))}},area:{tag:"path",type:"area",nest:!0,attr:function(t,e){var n=e.mark.items;n.length&&t("d",s.area(n))}},group:{tag:"g",type:"group",attr:function(t,e,n){var i,a,o=null;t("transform",r(e)),e.clip&&(i=n._defs,o=e.clip_id||(e.clip_id="clip"+i.clip_id++),a=i.clipping[o]||(i.clipping[o]={id:o}),a.width=e.width||0,a.height=e.height||0),t("clip-path",o?"url(#"+o+")":null)},background:function(t,e){t("class","background"),t("width",e.width||0),t("height",e.height||0)}},image:{tag:"image",type:"image",attr:function(t,e,n){var r=e.x||0,a=e.y||0,o=e.width||0,u=e.height||0,s=n.imageURL(e.url);r-="center"===e.align?o/2:"right"===e.align?o:0,a-="middle"===e.baseline?u/2:"bottom"===e.baseline?u:0,t("href",s,"http://www.w3.org/1999/xlink","xlink:href"),t("transform",i(r,a)),t("width",o),t("height",u)}},line:{tag:"path",type:"line",nest:!0,attr:function(t,e){var n=e.mark.items;n.length&&t("d",s.line(n))}},path:{tag:"path",type:"path",attr:function(t,e){t("transform",r(e)),t("d",e.path)}},rect:{tag:"rect",type:"rect",nest:!1,attr:function(t,e){t("transform",r(e)),t("width",e.width||0),t("height",e.height||0)}},rule:{tag:"line",type:"rule",attr:function(t,e){t("transform",r(e)),t("x2",null!=e.x2?e.x2-(e.x||0):0),t("y2",null!=e.y2?e.y2-(e.y||0):0)}},symbol:{tag:"path",type:"symbol",attr:function(t,e){t("transform",r(e)),t("d",s.symbol(e))}},text:{tag:"text",type:"text",nest:!1,attr:function(t,e){var n,r=e.dx||0,o=(e.dy||0)+a.offset(e),s=e.x||0,l=e.y||0,c=e.angle||0,f=e.radius||0;f&&(n=(e.theta||0)-Math.PI/2,s+=f*Math.cos(n),l+=f*Math.sin(n)),t("text-anchor",u[e.align]||"start"),c?(n=i(s,l)+" rotate("+c+")",(r||o)&&(n+=" "+i(r,o))):n=i(s+r,l+o),t("transform",n)}}}},function(t,e,n){function r(t){u.call(this),this._loader=new s(t),this._text={head:"",root:"",foot:"",defs:"",body:""},this._defs={clip_id:1,gradient:{},clipping:{}}}function i(t,e,n,r){v[r||t]=e}function a(t,e,n,r){if(null==t)return"";var i,a,o,u,s,f="";for("bgrect"===n&&e.interactive===!1&&(f+="pointer-events: none;"),"text"===n&&(f+="font: "+c.font(t)+";"),i=0,a=l.styleProperties.length;a>i;++i)o=l.styleProperties[i],u=l.styles[o],s=t[o],null==s?"fill"===u&&(f+=(f.length?" ":"")+"fill: none;"):(s.id&&(r.gradient[s.id]=s,s="url(#"+s.id+")"),f+=(f.length?" ":"")+u+": "+s+";");return f?'style="'+f+'"':null}function o(t){return t.replace(/&/g,"&").replace(//g,">")}var u=n(91),s=n(90),l=n(74),c=n(88),f=n(68),h=f.openTag,d=f.closeTag,p=n(95),g=u.prototype,m=r.prototype=Object.create(g);m.constructor=r,m.resize=function(t,e,n){g.resize.call(this,t,e,n);var r=this._padding,i=this._text,a={"class":"marks",width:this._width+r.left+r.right,height:this._height+r.top+r.bottom};for(var o in l.metadata)a[o]=l.metadata[o];return i.head=h("svg",a),i.root=h("g",{transform:"translate("+r.left+","+r.top+")"}),i.foot=d("g")+d("svg"),this},m.svg=function(){var t=this._text;return t.head+t.defs+t.root+t.body+t.foot},m.render=function(t){return this._text.body=this.mark(t),this._text.defs=this.buildDefs(),this},m.reset=function(){return this._defs.clip_id=0,this},m.buildDefs=function(){var t,e,n,r,i=this._defs,a="";for(e in i.gradient){for(n=i.gradient[e],r=n.stops,a+=h("linearGradient",{id:e,x1:n.x1,x2:n.x2,y1:n.y1,y2:n.y2}),t=0;t0?h("defs")+a+d("defs"):""},m.imageURL=function(t){return this._loader.imageURL(t)};var v;m.attributes=function(t,e){return v={},t(i,e,this),v},m.mark=function(t){var e,n,r,i=p[t.marktype],u=i.tag,s=i.attr,l=i.nest||!1,g=l?t.items&&t.items.length?[t.items[0]]:[]:t.items||[],m=this._defs,v="";for("g"!==u&&t.interactive===!1&&(e='style="pointer-events: none;"'),v+=h("g",{"class":f.cssClass(t)},e),n=0;ne;++e)"back"===i[e].layer&&(r+=this.mark(i[e]));for(e=0,n=a.length;n>e;++e)r+=this.mark(a[e]);for(e=0,n=i.length;n>e;++e)"back"!==i[e].layer&&(r+=this.mark(i[e]));for(e=0,n=o.length;n>e;++e)r+=this.mark(o[e]);return r},t.exports=r},function(t,e){function n(t){this.mark=t}var r=n.prototype;r.hasPropertySet=function(t){var e=this.mark.def.properties;return e&&null!=e[t]},r.cousin=function(t,e){if(0===t)return this;t=t||-1;var n=this.mark,r=n.group,i=null==e?n.items.indexOf(this):e,a=r.items.indexOf(n)+t;return r.items[a].items[i]},r.sibling=function(t){if(0===t)return this;t=t||-1;var e=this.mark,n=e.items.indexOf(this)+t;return e.items[n]},r.remove=function(){var t=this,e=t.mark.items,n=e.indexOf(t);return n>=0&&(n===e.length-1?e.pop():e.splice(n,1)),t},r.touch=function(){this.pathCache&&(this.pathCache=null)},t.exports=n},function(t,e){function n(t){this.id="gradient_"+r++,this.type=t||"linear",this.stops=[],this.x1=0,this.x2=1,this.y1=0,this.y2=0}var r=0,i=n.prototype;i.stop=function(t,e){return this.stops.push({offset:t,color:e}),this},t.exports=n},function(t,e,n){function r(t,e){return JSON.stringify(t,s,e)}function i(t){var e="string"==typeof t?JSON.parse(t):t;return a(e)}function a(t){var e,n,r,i,s,l=t.marktype;for(r=0,i=u.length;i>r;++r)if(s=t[u[r]])for(e=0,n=s.length;n>e;++e)s[e][l?"mark":"group"]=t,l&&"group"!==l||a(s[e]);return l&&o.mark(t),t}var o=n(84),u=["items","axisItems","legendItems"],s=["marktype","name","interactive","clip","items","axisItems","legendItems","layer","x","y","width","height","align","baseline","fill","fillOpacity","opacity","stroke","strokeOpacity","strokeWidth","strokeCap","strokeDash","strokeDashOffset","startAngle","endAngle","innerRadius","outerRadius","interpolate","tension","orient","url","path","x2","y2","size","shape","text","angle","theta","radius","dx","dy","font","fontSize","fontWeight","fontStyle","fontVariant"];t.exports={toJSON:r,fromJSON:i}},function(t,e,n){function r(t){return null==t?null:i.rgb(t)+""}var i=n(57);t.exports=r,r.schema={defs:{background:{type:"string"}}}},function(t,e,n){function r(t,e,n){function o(t,e){a.error("PARSE DATA FAILED: "+e.name+" "+t),l=-1,n(t)}function u(e){return function(r,a){if(r)o(r,e);else if(l>0)try{t.data(e.name).values(i.read(a,e.format)),0===--l&&n()}catch(u){o(u,e)}}}var s=t.config(),l=0;return(e||[]).forEach(function(e){e.url&&(l+=1,i.load(i.extend({url:e.url},s.load),u(e)));try{r.datasource(t,e)}catch(n){o(n,e)}}),0===l&&setTimeout(n,1),e}var i=n(12),a=n(8),o=n(102),u=n(134);r.datasource=function(t,e){var n=(e.transform||[]).map(function(e){return o(t,e)}),r=(e.modify||[]).map(function(n){return u(t,n,e)}),a=t.data(e.name,r.concat(n));return e.values?a.values(i.read(e.values,e.format)):e.source&&(a.source(e.source).addListener(a),t.removeListener(a.pipeline()[0])),a},t.exports=r;var s={oneOf:[{"enum":["auto"]},{type:"object",additionalProperties:{"enum":["number","boolean","date","string"]}}]};r.schema={defs:{data:{title:"Input data set definition",type:"object",allOf:[{properties:{name:{type:"string"},transform:{$ref:"#/defs/transform"},modify:{$ref:"#/defs/modify"},format:{type:"object",oneOf:[{properties:{type:{"enum":["json"]},parse:s,property:{type:"string"}},additionalProperties:!1},{properties:{type:{"enum":["csv","tsv"]},parse:s},additionalProperties:!1},{oneOf:[{properties:{type:{"enum":["topojson"]},feature:{type:"string"}},additionalProperties:!1},{properties:{type:{"enum":["topojson"]},mesh:{type:"string"}},additionalProperties:!1}]},{properties:{type:{"enum":["treejson"]},children:{type:"string"},parse:s},additionalProperties:!1}]}},required:["name"]},{anyOf:[{required:["name","modify"]},{oneOf:[{properties:{source:{type:"string"}},required:["source"]},{properties:{values:{type:"array"}},required:["values"]},{properties:{url:{type:"string"}},required:["url"]}]}]}]}}}},function(t,e,n){function r(t,e){var n,r=a[e.type];if(!r)throw new Error('"'+e.type+'" is not a valid transformation');return n=new r(t),e.output&&n.output(e.output),i.keys(e).forEach(function(t){"type"!==t&&"output"!==t&&n.param(t,e[t])}),n}var i=n(12),a=n(103);t.exports=r;var o=i.keys(a).filter(function(t){return a[t].schema}),u=o.reduce(function(t,e){return t[e+"Transform"]=a[e].schema,t},{});r.schema={defs:i.extend(u,{transform:{type:"array",items:{oneOf:o.map(function(t){return{$ref:"#/defs/"+t+"Transform"}})}}})}},function(t,e,n){t.exports={aggregate:n(104),bin:n(108),cross:n(110),countpattern:n(111),linkpath:n(112),facet:n(113),filter:n(114),fold:n(115),force:n(116),formula:n(118),geo:n(119),geopath:n(120),hierarchy:n(121),impute:n(122),lookup:n(123),pie:n(124),rank:n(125),sort:n(126),stack:n(127),treeify:n(128),treemap:n(129),voronoi:n(130),wordcloud:n(131)}},function(t,e,n){function r(t){return f.prototype.init.call(this,t),f.addParameters(this,{groupby:{type:"array"},summarize:{type:"custom",set:function(t){function e(t){t.signal&&(l[t.signal]=1)}var n,r,i,o,u,s,l={},f=this._transform;if(!a.isArray(o=t)){o=[];for(u in t)s=a.array(t[u]),o.push({field:u,ops:s})}for(n=0,r=o.length;r>n;++n)i=o[n],i.field.signal&&(l[i.field.signal]=1),a.array(i.ops).forEach(e),a.array(i.as).forEach(e);return f._fields=o,f._aggr=null,f.dependency(c.SIGNALS,a.keys(l)),f}}}),this._aggr=null,this._input=null,this._args=null,this._fields=[],this._out=[],this._type=p.TUPLE,this._acc={groupby:a["true"],value:a["true"]},this.router(!0).produces(!0)}function i(t){var e,n,r,i,a,o,u,s=[];for(a=t._dims,e=0,n=a.length;n>e;++e)s.push(a[e].name);for(o=t._aggr,e=0,n=o.length;n>e;++e)for(u=o[e].measures.fields,r=0,i=u.length;i>r;++r)s.push(u[r]);return s}var a=n(12),o=n(4),u=n(8),s=o.ChangeSet,l=o.Tuple,c=o.Dependencies,f=n(105),h=n(107),d=r.prototype=Object.create(f.prototype);d.constructor=r;var p=r.TYPES={VALUE:1,TUPLE:2,MULTI:3};r.VALID_OPS=["values","count","valid","missing","distinct","sum","mean","average","variance","variancep","stdev","stdevp","median","q1","q3","modeskew","min","max","argmin","argmax"],d.type=function(t){return this._type=t,this},d.accessors=function(t,e){var n=this._acc;n.groupby=a.$(t)||a["true"],n.value=a.$(e)||a["true"]},d.aggr=function(){if(this._aggr)return this._aggr;var t=this._graph,e=!1,n=[],r=this.param("groupby").field,o=function(e){return e.signal?t.signalRef(e.signal):e},u=this._fields.map(function(t){var r={name:o(t.field),as:a.array(t.as),ops:a.array(o(t.ops)).map(o),get:t.get};return e=e||null!=r.get,n.push(r.name),r});r.forEach(function(t){t.get&&(e=!0),n.push(t.name||t)}),this._args=e||!u.length?null:n,u.length||(u={"*":"values"});var s=this._aggr=(new h).groupby(r).stream(!0).summarize(u);return this._out=i(s),this._type!==p.VALUE&&s.key("_id"),s},d.transform=function(t,e){u.debug(t,["aggregate"]);var n,r,i,a,o,c=s.create(t),f=this.aggr(),h=this._out,d=this._args,g=!0,m=l.prev;if(e&&(c.rem.push.apply(c.rem,f.result()),f.clear(),this._aggr=null,f=this.aggr()),this._type===p.TUPLE)n=function(t){f._add(t),l.prev_init(t)},r=function(t){f._rem(m(t))},i=function(t){f._mod(t,m(t))},a=function(t){f._markMod(t,m(t))};else{var v=this._acc.groupby,y=this._acc.value,x=this._type===p.VALUE?y:function(t){return{_id:t._id,groupby:v(t),value:y(t)}};n=function(t){f._add(x(t)),l.prev_init(t)},r=function(t){f._rem(x(m(t)))},i=function(t){f._mod(x(t),x(m(t)))},a=function(t){f._mark(x(t),x(m(t)))}}if(t.add.forEach(n),e)t.mod.forEach(n);else{if(t.rem.forEach(r),d)for(o=0,g=!1;oh;++h)if(a=i[h],void 0!==(s=g[a._id])){if(null===s)throw Error("Already propagated to node.");if(s===t)continue;if(l=t.add.length||t.mod.length||t.rem.length,c=s.add.length||s.mod.length||s.rem.length,l&&c)throw Error("Multiple changeset pulses to same node");g[a._id]=l?t:s,g[a._id].reflow=t.reflow||s.reflow}else m.push(a.qrank(!0)),g[a._id]=t;return this.done(t)},d.done=function(t){a.debug(t,["bookkeeping"]);for(var e in t.data)this.data(e).synchronize();return this},d.preprocess=function(t){for(var e,n,r,i,a=this,o=0,u=0;uo;++o){for(n=t[o],n.collector()&&(e=n),r=n.dependency(h.DATA),s=0,l=r.length;l>s;++s){if(!(c=this.data(f=r[s])))throw new Error("Unknown data source "+i.str(f));c.addListener(e)}for(a=n.dependency(h.SIGNALS),s=0,l=a.length;l>s;++s){if(!(c=this.signal(f=a[s])))throw new Error("Unknown signal "+i.str(f));c.addListener(e)}o>0&&t[o-1].addListener(n)}return t},d.disconnect=function(t){var e,n,r,i,a,o,u,s;for(a=0,o=t.length;o>a;++a){for(n=t[a],n.collector()&&(e=n),r=n.dependency(h.DATA),u=0,s=r.length;s>u;++u)this.data(r[u]).removeListener(e);for(i=n.dependency(h.SIGNALS),u=0,s=i.length;s>u;++u)this.signal(i[u]).removeListener(e);n.disconnect()}return t},d.synchronize=function(t){var e,n,r,i,a,o,u,s,l={};for(r=0,i=t.length;i>r;++r)if(e=t[r],e.collector())for(a=0,n=e.data(),o=n.length;o>a;++a)s=(u=n[a])._id,l[s]||(c.prev_update(u),l[s]=1);return this},d.reevaluate=function(t,e){var n=t.reflow&&e.last()>=t.stamp,r=e.router()||t.add.length||t.rem.length;return r||!n||e.reevaluate(t)},d.evaluate=function(t,e){return this.reevaluate(t,e)?(t=e.evaluate(t),e.last(t.stamp),t):t},t.exports=r},function(t,e){function n(t){this.cmp=t,this.nodes=[]}function r(t,e,n,r){var i,a,o;for(i=t[n];n>e&&(o=n-1>>1,a=t[o],r(i,a)<0);)t[n]=a,n=o;return t[n]=i}function i(t,e,n){for(var i,a=e,o=t.length,u=t[e],s=2*e+1;o>s;)i=s+1,o>i&&n(t[s],t[i])>=0&&(s=i),t[e]=t[s],e=s,s=2*e+1;return t[e]=u,r(t,a,e,n)}var a=n.prototype;a.size=function(){return this.nodes.length},a.clear=function(){return this.nodes=[],this},a.peek=function(){return this.nodes[0]},a.push=function(t){var e=this.nodes;return e.push(t),r(e,0,e.length-1,this.cmp)},a.pop=function(){var t,e=this.nodes,n=e.pop();return e.length?(t=e[0],e[0]=n,i(e,0,this.cmp)):t=n,t},a.replace=function(t){var e=this.nodes,n=e[0];return e[0]=t,i(e,0,this.cmp),n},a.pushpop=function(t){var e=this.nodes,n=e[0];return e.length&&this.cmp(n,t)<0&&(e[0]=t,t=n,i(e,0,this.cmp)),t},t.exports=n},function(t,e,n){function r(t,e,n){return o.init.call(this,t),this._name=e,this._value=n,this._verbose=!1,this._handlers=[],this}var i=n(5),a=n(10),o=a.prototype,u=r.prototype=Object.create(o);u.constructor=r,u.name=function(){return this._name},u.value=function(t){return arguments.length?(this._value=t,this):this._value},u.values=u.value,u.verbose=function(t){return arguments.length?(this._verbose=!!t,this):this._verbose},u.evaluate=function(t){return t.signals[this._name]?t:this._graph.doNotPropagate},u.fire=function(t){t||(t=i.create(null,!0)),t.signals[this._name]=1,this._graph.propagate(t,this)},u.on=function(t){var e=this,n=new a(this._graph);return n.evaluate=function(n){return t(e.name(),e.value()),n},this._handlers.push({handler:t,node:n}),this.addListener(n)},u.off=function(t){var e,n,r=this._handlers;for(e=r.length;--e>=0;)t&&r[e].handler!==t||(n=r.splice(e,1)[0],this.removeListener(n.node));return this},t.exports=r},function(t,e,n){t.exports={axes:n(53),background:n(100),data:n(101),events:n(135),expr:n(136),legends:n(142),mark:n(55),marks:n(144),modify:n(134),padding:n(145),predicates:n(146),properties:n(56),signals:n(147),spec:n(148),streams:n(158),transforms:n(102)}},function(t,e,n){function r(t,e,n,r){var a=t.config();(e||[]).forEach(function(e,u){n[u]=n[u]||o(t),i(a,e,u,n[u],r)})}function i(t,e,n,r,i){void 0!==e.scale&&r.scale(i.scale(e.scale)),r.orient(e.orient||u[e.type]),r.offset(e.offset||0),r.layer(e.layer||"front"),r.grid(e.grid||!1),r.title(e.title||null),r.titleOffset(null!=e.titleOffset?e.titleOffset:t.axis.titleOffset),r.tickValues(e.values||null),r.tickFormat(e.format||null),r.tickFormatType(e.formatType||null),r.tickSubdivide(e.subdivide||0),r.tickPadding(e.tickPadding||t.axis.padding);var o=[];if(void 0!==e.tickSize)for(var s=0;3>s;++s)o.push(e.tickSize);else{var l=t.axis.tickSize;o=[l,l,l]}null!=e.tickSizeMajor&&(o[0]=e.tickSizeMajor),null!=e.tickSizeMinor&&(o[1]=e.tickSizeMinor),null!=e.tickSizeEnd&&(o[2]=e.tickSizeEnd),o.length&&r.tickSize.apply(r,o),r.tickCount(e.ticks||t.axis.ticks);var c=e.properties;c&&c.ticks?(r.majorTickProperties(c.majorTicks?a.extend({},c.ticks,c.majorTicks):c.ticks),r.minorTickProperties(c.minorTicks?a.extend({},c.ticks,c.minorTicks):c.ticks)):(r.majorTickProperties(c&&c.majorTicks||{}),r.minorTickProperties(c&&c.minorTicks||{})),r.tickLabelProperties(c&&c.labels||{}),r.titleProperties(c&&c.title||{}),r.gridLineProperties(c&&c.grid||{}),r.domainProperties(c&&c.axis||{})}var a=n(12),o=n(54),u={x:"bottom",y:"left",top:"top",bottom:"bottom",left:"left",right:"right"};t.exports=r,r.schema={defs:{axis:{type:"object",properties:{type:{"enum":["x","y"]},scale:{type:"string"},orient:{"enum":["top","bottom","left","right"]},title:{type:"string"},titleOffset:{type:"number"},format:{type:"string"},formatType:{"enum":["time","utc","string","number"]},ticks:{type:"number"},values:{type:"array",items:{type:["string","number"]}},subdivide:{type:"number"},tickPadding:{type:"number"},tickSize:{type:"number"},tickSizeMajor:{type:"number"},tickSizeMinor:{type:"number"},tickSizeEnd:{type:"number"},offset:{oneOf:[{type:"number"},{type:"object",properties:{scale:{type:"string"},value:{type:["string","number"]}},required:["scale","value"],additionalProperties:!1}]},layer:{"enum":["front","back"],"default":"front"},grid:{type:"boolean"},properties:{type:"object",properties:{ticks:{$ref:"#/defs/propset"},majorTicks:{$ref:"#/defs/propset"},minorTicks:{$ref:"#/defs/propset"},labels:{$ref:"#/defs/propset"},title:{$ref:"#/defs/propset"},grid:{$ref:"#/defs/propset"},axis:{$ref:"#/defs/propset"}},additionalProperties:!1}},additionalProperties:!1,required:["type","scale"]}}}},function(t,e,n){function r(t){function e(){O.type=null}function n(t){return{data:t}}function r(t){var e=P||(k.ticks?k.ticks($):k.domain()),r=i(k,e,q).map(n);return e=e.map(function(e){return e=n(e),e.label=t(e.data),e}),[e,r]}function a(t){var e=t.orient,n=t.marks[5].properties.update,r=n.encode,i=E.titleOffsetAutoMin,a=E.titleOffsetAutoMax,o=E.titleOffsetAutoMargin;n.encode=function(t,n,u,s,l,c){var f=r.call(r,t,n,u,s,l,c),h="bottom"===e||"top"===e?"y":"x";if(null!=V[h])return f;_.clear().union(n.items[3].bounds).union(n.items[4].bounds);var d=u?{}:t,p="left"===e||"right"===e?"width":"height",g="top"===e||"left"===e?-1:1,m=~~(_[p]()+t.fontSize/2+o);return v.set(d,h,g*Math.min(Math.max(i,m),a)),u&&u.interpolate(t,d),!0}}function w(e){var n,r,i;e.type===b?(n={scale:e.scaleName,offset:.5+e.rangeBand()/2},r=n):(n={scale:e.scaleName,offset:.5},r={scale:e.scaleName+":prev",offset:.5}),i=o(e),m.extend(W.gridLines,h(E)),m.extend(W.majorTicks,h(E)),m.extend(W.minorTicks,h(E)),m.extend(W.tickLabels,d(E)),m.extend(W.domain,g(E)),m.extend(W.title,p(E)),W.gridLines.properties.enter.stroke={value:E.gridColor},W.gridLines.properties.enter.strokeOpacity={value:E.gridOpacity},s(S,W.gridLines,r,n,1/0,A),s(S,W.majorTicks,r,n,R),s(S,W.minorTicks,r,n,I),u(S,W.tickLabels,r,n,R,U),c(S,W.domain,i,D),l(S,W.title,i,+T||-1),m.extend(W.gridLines.properties.update,F),m.extend(W.majorTicks.properties.update,H),m.extend(W.minorTicks.properties.update,B),m.extend(W.tickLabels.properties.update,Y),m.extend(W.domain.properties.update,X),m.extend(W.title.properties.update,V);var a=[W.gridLines,W.majorTicks,W.minorTicks,W.tickLabels,W.domain,W.title];m.extend(O,{type:"group",interactive:!1,properties:{enter:{encode:f,scales:[e.scaleName],signals:[],data:[]},update:{encode:f,scales:[e.scaleName],signals:[],data:[]}}}),O.marks=a.map(function(e){return y(t,e)})}var k,E=t.config().axis,S=E.orient,A=0,T=E.titleOffset,O={},N="front",L=!1,C=null,R=E.tickSize,I=E.tickSize,D=E.tickSize,U=E.padding,P=null,z=null,j=null,q=0,$=E.ticks,F={},Y={},H={},B={},V={},X={},W={gridLines:{},majorTicks:{},minorTicks:{},tickLabels:{},domain:{},title:{}},G={};return G.def=function(){O.type||w(k);var t=x.getTickFormat(k,$,j,z),e=r(t),i=C?[C].map(n):[];return O.marks[0].from=function(){return L?e[0]:[]},O.marks[1].from=function(){return e[0]},O.marks[2].from=function(){return e[1]},O.marks[3].from=O.marks[1].from,O.marks[4].from=function(){return[1]},O.marks[5].from=function(){return i},O.offset=A,O.orient=S,O.layer=N,"auto"===T&&a(O),O},G.scale=function(t){return arguments.length?(k!==t&&(k=t,e()),G):k},G.orient=function(t){return arguments.length?(S!==t&&(S=t in M?t+"":E.orient,e()),G):S},G.title=function(t){return arguments.length?(C!==t&&(C=t,e()),G):C},G.tickCount=function(t){return arguments.length?($=t,G):$},G.tickValues=function(t){return arguments.length?(P=t,G):P},G.tickFormat=function(t){return arguments.length?(z!==t&&(z=t,e()),G):z},G.tickFormatType=function(t){return arguments.length?(j!==t&&(j=t,e()),G):j},G.tickSize=function(t,n){if(!arguments.length)return R;var r=arguments.length-1,i=+t,a=r>1?+n:R,o=r>0?+arguments[r]:R;return R===i&&I===a&&D===o||e(),R=i,I=a,D=o,G},G.tickSubdivide=function(t){return arguments.length?(q=+t,G):q},G.offset=function(t){return arguments.length?(A=m.isObject(t)?t:+t,G):A},G.tickPadding=function(t){return arguments.length?(U!==+t&&(U=+t,e()),G):U},G.titleOffset=function(t){return arguments.length?(T!==t&&(T=t,e()),G):T},G.layer=function(t){return arguments.length?(N!==t&&(N=t,e()),G):N},G.grid=function(t){return arguments.length?(L!==t&&(L=t,e()),G):L},G.gridLineProperties=function(t){return arguments.length?(F!==t&&(F=t),G):F},G.majorTickProperties=function(t){return arguments.length?(H!==t&&(H=t),G):H},G.minorTickProperties=function(t){return arguments.length?(B!==t&&(B=t),G):B},G.tickLabelProperties=function(t){return arguments.length?(Y!==t&&(Y=t),G):Y},G.titleProperties=function(t){return arguments.length?(V!==t&&(V=t),G):V},G.domainProperties=function(t){return arguments.length?(X!==t&&(X=t),G):X},G.reset=function(){return e(),G},G}function i(t,e,n){var r=[];if(n&&e.length>1){for(var i,o,u=a(t.domain()),s=-1,l=e.length,c=(e[1]-e[0])/++n;++s0;)(o=+e[s]-i*c)>=u[0]&&r.push(o);for(--s,i=0;++ie?[e,n]:[n,e]}function o(t){return t.rangeExtent?t.rangeExtent():a(t.range())}function u(t,e,n,r,i,a){i=Math.max(i,0)+a,"left"!==t&&"top"!==t||(i*=-1),"top"===t||"bottom"===t?(m.extend(e.properties.enter,{x:n,y:{value:i}}),m.extend(e.properties.update,{x:r,y:{value:i},align:{value:"center"},baseline:{value:k[t]}})):(m.extend(e.properties.enter,{x:{value:i},y:n}),m.extend(e.properties.update,{x:{value:i},y:r,align:{value:w[t]},baseline:{value:"middle"}}))}function s(t,e,n,r,i,a){var o="left"===t||"top"===t?-1:1;i=i===1/0?"top"===t||"bottom"===t?{field:{group:"height",level:2},mult:-o,offset:a*-o}:{field:{group:"width",level:2},mult:-o,offset:a*-o}:{value:o*i,offset:a},"top"===t||"bottom"===t?(m.extend(e.properties.enter,{x:n,y:{value:0},y2:i}),m.extend(e.properties.update,{x:r,y:{value:0},y2:i}),m.extend(e.properties.exit,{x:r})):(m.extend(e.properties.enter,{x:{value:0},x2:i,y:n}),m.extend(e.properties.update,{x:{value:0},x2:i,y:r}),m.extend(e.properties.exit,{y:r}))}function l(t,e,n,r){var i=e.properties.update,a=~~((n[0]+n[1])/2),o="top"===t||"left"===t?-1:1;"bottom"===t||"top"===t?(i.x={value:a},i.angle={value:0},r>=0&&(i.y={value:o*r})):(i.y={value:a},i.angle={value:"left"===t?-90:90},r>=0&&(i.x={value:o*r}))}function c(t,e,n,r){var i;"top"!==t&&"left"!==t||(r=-1*r),i="bottom"===t||"top"===t?"M"+n[0]+","+r+"V0H"+n[1]+"V"+r:"M"+r+","+n[0]+"H0V"+n[1]+"H"+r,e.properties.update.path={value:i}}function f(t,e,n){var r=n?{}:t,i=t.mark.def.offset,a=t.mark.def.orient,o=e.width,u=e.height;if(m.isArray(i)){var s=i[0],l=i[1];switch(a){case"left":v.set(r,"x",-s),v.set(r,"y",l);break;case"right":v.set(r,"x",o+s),v.set(r,"y",l);break;case"bottom":v.set(r,"x",s),v.set(r,"y",u+l);break;case"top":v.set(r,"x",s),v.set(r,"y",-l);break;default:v.set(r,"x",s),v.set(r,"y",l)}}else switch(m.isObject(i)&&(i=-e.scale(i.scale)(i.value)),a){case"left":v.set(r,"x",-i),v.set(r,"y",0);break;case"right":v.set(r,"x",o+i),v.set(r,"y",0);break;case"bottom":v.set(r,"x",0),v.set(r,"y",u+i);break;case"top":v.set(r,"x",0),v.set(r,"y",-i);break;default:v.set(r,"x",0),v.set(r,"y",0)}return n&&n.interpolate(t,r),!0}function h(t){return{type:"rule",interactive:!1,key:"data",properties:{enter:{stroke:{value:t.tickColor},strokeWidth:{value:t.tickWidth},opacity:{value:1e-6}},exit:{opacity:{value:1e-6}},update:{opacity:{value:1}}}}}function d(t){return{type:"text",interactive:!0,key:"data",properties:{enter:{fill:{value:t.tickLabelColor},font:{value:t.tickLabelFont},fontSize:{value:t.tickLabelFontSize},opacity:{value:1e-6},text:{field:"label"}},exit:{opacity:{value:1e-6}},update:{opacity:{value:1}}}}}function p(t){return{type:"text",interactive:!0,properties:{enter:{font:{value:t.titleFont},fontSize:{value:t.titleFontSize},fontWeight:{value:t.titleFontWeight},fill:{value:t.titleColor},align:{value:"center"},baseline:{value:"middle"},text:{field:"data"}},update:{}}}}function g(t){return{type:"path",interactive:!1,properties:{enter:{x:{value:.5},y:{value:.5},stroke:{value:t.axisColor},strokeWidth:{value:t.axisWidth}},update:{}}}}var m=n(12),v=n(4).Tuple,y=n(55),x=n(58),_=new(n(60).Bounds),b="ordinal",M={top:1,right:1,bottom:1,left:1},w={bottom:"center",top:"center",left:"right",right:"left"},k={bottom:"top",top:"bottom",left:"middle",right:"middle"};t.exports=r},function(t,e,n){function r(t,e){var n=e.properties,o=e.marks;return i.keys(n).forEach(function(r){n[r]=a(t,e.type,n[r])}),e.delay&&(e.delay=a(t,e.type,{delay:e.delay})),o&&(e.marks=o.map(function(e){return r(t,e)})),e}var i=n(12),a=n(56);t.exports=r,r.schema={defs:{mark:{type:"object",properties:{name:{type:"string"},key:{type:"string"},type:{"enum":["rect","symbol","path","arc","area","line","rule","image","text","group"]},from:{type:"object",properties:{data:{type:"string"},mark:{type:"string"},transform:{$ref:"#/defs/transform"}},additionalProperties:!1},delay:{$ref:"#/refs/numberValue"},ease:{"enum":["linear","quad","cubic","sin","exp","circle","bounce"].reduce(function(t,e){return["in","out","in-out","out-in"].forEach(function(n){t.push(e+"-"+n)}),t},[])},interactive:{type:"boolean"},properties:{type:"object",properties:{enter:{$ref:"#/defs/propset"},update:{$ref:"#/defs/propset"},exit:{$ref:"#/defs/propset"},hover:{$ref:"#/defs/propset"}},additionalProperties:!1,anyOf:[{required:["enter"]},{required:["update"]}]}},required:["type"]}}}},function(t,e,n){function r(t,e,n){function r(t){if(null!=f[t]){var e,n,r=d.array(f[t]);for(e=0,n=r.length;n>e;++e)M[t][r[e]]=1}}function i(t){var e=(t.parent?"parent_":"group_")+t.level;M._nRefs[e]=t}var s,l,c,f,v=t.config(),y="",x=d.keys(n),_=[],b={},M={signals:{},scales:{},data:{},fields:{},nested:[],_nRefs:{},reflow:!1};for(y+="var o = trans ? {} : item, d=0, exprs=this.exprs, set=this.tpl.set, tmpl=signals||{}, t;\ntmpl.datum = item.datum;\ntmpl.group = group;\ntmpl.parent = group.datum;\n",s=0,l=x.length;l>s;++s)f=n[c=x[s]],y+=s>0?"\n ":" ",f.rule?(f=o(t,c,f.rule,_),y+="\n "+f.code):d.isArray(f)?(f=o(t,c,f,_),y+="\n "+f.code):(f=u(v,c,f),y+="d += set(o, "+d.str(c)+", "+f.val+");"),b[c]=!0,m.forEach(r),M.reflow=M.reflow||f.reflow,f.nested.length&&f.nested.forEach(i);d.keys(M._nRefs).forEach(function(t){M.nested.push(M._nRefs[t])}),M.nested.sort(function(t,e){return t=t.level,e=e.level,e>t?-1:t>e?1:t>=e?0:NaN}),b.x2&&(b.x?(y+="\n if (o.x > o.x2) { \n t = o.x;\n d += set(o, 'x', o.x2);\n d += set(o, 'x2', t); \n };",y+="\n d += set(o, 'width', (o.x2 - o.x));"):y+=b.width?"\n d += set(o, 'x', (o.x2 - o.width));":"\n d += set(o, 'x', o.x2);"),b.xc&&(y+=b.width?"\n d += set(o, 'x', (o.xc - o.width/2));":"\n d += set(o, 'x', o.xc);"),b.y2&&(b.y?(y+="\n if (o.y > o.y2) { \n t = o.y;\n d += set(o, 'y', o.y2);\n d += set(o, 'y2', t);\n };",y+="\n d += set(o, 'height', (o.y2 - o.y));"):y+=b.height?"\n d += set(o, 'y', (o.y2 - o.height));":"\n d += set(o, 'y', o.y2);"),b.yc&&(y+=b.height?"\n d += set(o, 'y', (o.yc - o.height/2));":"\n d += set(o, 'y', o.yc);"),a(e,b)&&(y+="\n d += (item.touch(), 1);"),y+="\n if (trans) trans.interpolate(item, o);",y+="\n return d > 0;";try{var w=Function("item","group","trans","db","signals","predicates",y);return w.tpl=g,w.exprs=_,w.util=d,w.d3=h,d.extend(w,d.template.context),{encode:w,signals:d.keys(M.signals),scales:d.keys(M.scales),data:d.keys(M.data),fields:d.keys(M.fields),nested:M.nested,reflow:M.reflow}}catch(k){p.error(k),p.log(y)}}function i(t,e){return d.isObject(t)||(t={reflow:!1,nested:[]},m.forEach(function(e){t[e]=[]})),d.isObject(e)&&(t.reflow=t.reflow||e.reflow,t.nested.push.apply(t.nested,e.nested),m.forEach(function(n){t[n].push.apply(t[n],e[n])})),t}function a(t,e){return e.path||("area"===t||"line"===t)&&(e.x||e.x2||e.width||e.y||e.y2||e.height||e.tension||e.interpolate)}function o(t,e,n,r){var a=t.config(),o=i(),s=[],l="";return(n||[]).forEach(function(c,f){var h=u(a,e,c);if(i(o,h),c.test){var p=t.expr(c.test);o.signals.push.apply(o.signals,p.globals),o.data.push.apply(o.data,p.dataSources),l+="if (exprs["+r.length+"](item.datum, null)) {\n d += set(o, "+d.str(e)+", "+h.val+");",l+=n[f+1]?"\n } else ":" }",r.push(p.fn)}else{var g=c.predicate,m=g&&(g.name||g),v=t.predicate(m),y="predicates["+d.str(m)+"]",x=[],_=e+"_arg"+f;d.isObject(g)&&d.keys(g).forEach(function(t){if("name"!==t){var e=u(a,f,g[t],!0);x.push(d.str(t)+": "+e.val),i(o,e)}}),m?(o.signals.push.apply(o.signals,v.signals),o.data.push.apply(o.data,v.data),s.push(_+" = {\n "+x.join(",\n ")+"\n }"),l+="if ("+y+".call("+y+","+_+", db, signals, predicates)) {\n d += set(o, "+d.str(e)+", "+h.val+");",l+=n[f+1]?"\n } else ":" }"):l+="{\n d += set(o, "+d.str(e)+", "+h.val+");\n }\n"}}),s.length&&(l="var "+s.join(",\n ")+";\n "+l),o.code=l,o}function u(t,e,n,r){if(null==n)return null;if("fill"===e||"stroke"===e){if(n.c)return s(t,"hcl",n.h,n.c,n.l);if(n.h||n.s)return s(t,"hsl",n.h,n.s,n.l);if(n.l||n.a)return s(t,"lab",n.l,n.a,n.b);if(n.r||n.g||n.b)return s(t,"rgb",n.r,n.g,n.b)}var a=null,o=null,u=i(),f=null,h=null,p=null,g={};return void 0!==n.template&&(a=d.template.source(n.template,"tmpl",g),d.keys(g).forEach(function(t){var e=d.field(t),n=e.shift();"parent"===n||"group"===n?u.nested.push({parent:"parent"===n,group:"group"===n,level:1}):"datum"===n?u.fields.push(e[0]):u.signals.push(n)})),void 0!==n.value&&(a=d.str(n.value)),void 0!==n.signal&&(f=d.field(n.signal),a="signals["+f.map(d.str).join("][")+"]",u.signals.push(f.shift())),void 0!==n.field&&(n.field=d.isString(n.field)?{datum:n.field}:n.field,h=l(n.field),a=h.val,i(u,h)),void 0!==n.scale&&(p=c(n.scale),o=p.val,i(u,p),u.scales.push(n.scale.name||n.scale),null!==a||n.band||n.mult||n.offset||!r?a=o+(n.band?".rangeBand()":"("+(null!==a?a:"item.datum.data")+")"):r&&(a=o)),a="("+(n.mult?d.number(n.mult)+" * ":"")+a+")"+(n.offset?" + "+d.number(n.offset):""),u.val=a,u}function s(t,e,n,r,a){var o=n?u(t,"",n):t.color[e][0],s=r?u(t,"",r):t.color[e][1],l=a?u(t,"",a):t.color[e][2],c=i();[o,s,l].forEach(function(t){d.isArray||i(c,t)});var f="(this.d3."+e+"("+[o.val,s.val,l.val].join(",")+') + "")';return c.val=f,c}function l(t){if(d.isString(t))return{val:d.field(t).map(d.str).join("][")};var e=t.level||1,n=(t.group||t.parent)&&e,r=n?Array(e).join("group.mark."):"",a=l(t.datum||t.group||t.parent||t.signal),o=a.val,u=i(null,a);return t.datum?(o="item.datum["+o+"]",u.fields.push(t.datum)):t.group?(o=r+"group["+o+"]",u.nested.push({level:e,group:!0})):t.parent?(o=r+"group.datum["+o+"]",u.nested.push({level:e,parent:!0})):t.signal&&(o="signals["+o+"]",u.signals.push(d.field(t.signal)[0]),u.reflow=!0),u.val=o,u}function c(t){var e=null,n=null,r=i();return e=d.isString(t)?d.str(t):t.name?d.isString(t.name)?d.str(t.name):(n=l(t.name)).val:(n=l(t)).val,e="(item.mark._scaleRefs["+e+"] = 1, group.scale("+e+"))",t.invert&&(e+=".invert"),n&&n.nested.forEach(function(t){t.scale=!0}),n?(n.val=e,n):(r.val=e,r)}function f(t){t=d.isArray(t)?{"enum":t}:{type:t};var e="number"===t.type&&t.type||"string",n={type:"object",allOf:[{$ref:"#/refs/"+e+"Modifiers"},{oneOf:[{$ref:"#/refs/signal",required:["signal"]},{properties:{value:t},required:["value"]},{properties:{field:{$ref:"#/refs/field"}},required:["field"]},{properties:{band:{type:"boolean"}},required:["band"]}]}]};return"string"===t.type&&n.allOf[1].oneOf.push({properties:{template:{type:"string"}},required:["template"]}),{oneOf:[{type:"object",properties:{rule:{type:"array",items:{allOf:[{$ref:"#/defs/rule"},n]}}},additionalProperties:!1,required:["rule"]},{type:"array",items:{allOf:[{$ref:"#/defs/rule"},n]}},n]}}var h=n(57),d=n(12),p=n(8),g=n(4).Tuple,m=["signals","scales","data","fields"];t.exports=r,r.schema={refs:{field:{title:"FieldRef",oneOf:[{type:"string"},{oneOf:[{$ref:"#/refs/signal"},{type:"object",properties:{datum:{$ref:"#/refs/field"}},required:["datum"],additionalProperties:!1},{type:"object",properties:{group:{$ref:"#/refs/field"},level:{type:"number"}},required:["group"],additionalProperties:!1},{type:"object",properties:{parent:{$ref:"#/refs/field"},level:{type:"number"}},required:["parent"],additionalProperties:!1}]}]},scale:{title:"ScaleRef",oneOf:[{$ref:"#/refs/field"},{type:"object",properties:{name:{$ref:"#/refs/field"},invert:{type:"boolean","default":!1}},required:["name"]}]},stringModifiers:{properties:{scale:{$ref:"#/refs/scale"}}},numberModifiers:{properties:{mult:{type:"number"},offset:{type:"number"},scale:{$ref:"#/refs/scale"}}},value:f({},"value"),numberValue:f("number","numberValue"),stringValue:f("string","stringValue"),booleanValue:f("boolean","booleanValue"),arrayValue:f("array","arrayValue"),colorValue:{title:"ColorRef",oneOf:[{$ref:"#/refs/stringValue"},{type:"object",properties:{r:{$ref:"#/refs/numberValue"},g:{$ref:"#/refs/numberValue"},b:{$ref:"#/refs/numberValue"}},required:["r","g","b"]},{type:"object",properties:{h:{$ref:"#/refs/numberValue"},s:{$ref:"#/refs/numberValue"},l:{$ref:"#/refs/numberValue"}},required:["h","s","l"]},{type:"object",properties:{l:{$ref:"#/refs/numberValue"},a:{$ref:"#/refs/numberValue"},b:{$ref:"#/refs/numberValue"}},required:["l","a","b"]},{type:"object",properties:{h:{$ref:"#/refs/numberValue"},c:{$ref:"#/refs/numberValue"},l:{$ref:"#/refs/numberValue"}},required:["h","c","l"]}]}},defs:{rule:{anyOf:[{type:"object",properties:{predicate:{oneOf:[{type:"string"},{type:"object",properties:{name:{type:"string"}},required:["name"]}]}}},{type:"object",properties:{test:{type:"string"}}}]},propset:{title:"Mark property set",type:"object",properties:{x:{$ref:"#/refs/numberValue"},x2:{$ref:"#/refs/numberValue"},xc:{$ref:"#/refs/numberValue"},width:{$ref:"#/refs/numberValue"},y:{$ref:"#/refs/numberValue"},y2:{$ref:"#/refs/numberValue"},yc:{$ref:"#/refs/numberValue"},height:{$ref:"#/refs/numberValue"},opacity:{$ref:"#/refs/numberValue"},fill:{$ref:"#/refs/colorValue"},fillOpacity:{$ref:"#/refs/numberValue"},stroke:{$ref:"#/refs/colorValue"},strokeWidth:{$ref:"#/refs/numberValue"},strokeOpacity:{$ref:"#/refs/numberValue"},strokeDash:{$ref:"#/refs/arrayValue"},strokeDashOffset:{$ref:"#/refs/numberValue"},cursor:{$ref:"#/refs/stringValue"},clip:{$ref:"#/refs/booleanValue"},size:{$ref:"#/refs/numberValue"},shape:f(["circle","square","cross","diamond","triangle-up","triangle-down"]),path:{$ref:"#/refs/stringValue"},innerRadius:{$ref:"#/refs/numberValue"},outerRadius:{$ref:"#/refs/numberValue"},startAngle:{$ref:"#/refs/numberValue"},endAngle:{$ref:"#/refs/numberValue"},interpolate:f(["linear","step-before","step-after","basis","basis-open","cardinal","cardinal-open","monotone"]),tension:{$ref:"#/refs/numberValue"},orient:f(["horizontal","vertical"]),url:{$ref:"#/refs/stringValue"},align:f(["left","right","center"]),baseline:f(["top","middle","bottom","alphabetic"]),text:{$ref:"#/refs/stringValue"},dx:{$ref:"#/refs/numberValue"},dy:{$ref:"#/refs/numberValue"},radius:{$ref:"#/refs/numberValue"},theta:{$ref:"#/refs/numberValue"},angle:{$ref:"#/refs/numberValue"},font:{$ref:"#/refs/stringValue"},fontSize:{$ref:"#/refs/numberValue"},fontWeight:{$ref:"#/refs/stringValue"},fontStyle:{$ref:"#/refs/stringValue"}},additionalProperties:!1}}}},function(t,e,n){var r,i;!function(){function a(t){return t&&(t.ownerDocument||t.document||t).documentElement}function o(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function u(t,e){return e>t?-1:t>e?1:t>=e?0:NaN}function s(t){return null===t?NaN:+t}function l(t){return!isNaN(t)}function c(t){return{left:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=e.length);i>r;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}}function f(t){return t.length}function h(t){for(var e=1;t*e%1;)e*=10;return e}function d(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function p(){this._=Object.create(null)}function g(t){return(t+="")===So||t[0]===Ao?Ao+t:t}function m(t){return(t+="")[0]===Ao?t.slice(1):t}function v(t){return g(t)in this._}function y(t){return(t=g(t))in this._&&delete this._[t]}function x(){var t=[];for(var e in this._)t.push(m(e));return t}function _(){var t=0;for(var e in this._)++t;return t}function b(){for(var t in this._)return!1;return!0}function M(){this._=Object.create(null)}function w(t){return t}function k(t,e,n){return function(){var r=n.apply(e,arguments);return r===e?t:r}}function E(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,r=To.length;r>n;++n){var i=To[n]+e;if(i in t)return i}}function S(){}function A(){}function T(t){function e(){for(var e,r=n,i=-1,a=r.length;++in;n++)for(var i,a=t[n],o=0,u=a.length;u>o;o++)(i=a[o])&&e(i,o,n);return t}function G(t){return No(t,Po),t}function Z(t){var e,n;return function(r,i,a){var o,u=t[a].update,s=u.length;for(a!=n&&(n=a,e=0),i>=e&&(e=i+1);!(o=u[e])&&++e0&&(t=t.slice(0,u));var l=zo.get(t);return l&&(t=l,s=K),u?e?i:r:e?S:a}function Q(t,e){return function(n){var r=ho.event;ho.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{ho.event=r}}}function K(t,e){var n=Q(t,e);return function(t){var e=this,r=t.relatedTarget;r&&(r===e||8&r.compareDocumentPosition(e))||n.call(e,t)}}function tt(t){var e=".dragsuppress-"+ ++qo,n="click"+e,r=ho.select(o(t)).on("touchmove"+e,O).on("dragstart"+e,O).on("selectstart"+e,O);if(null==jo&&(jo="onselectstart"in t?!1:E(t.style,"userSelect")),jo){var i=a(t).style,u=i[jo];i[jo]="none"}return function(t){if(r.on(e,null),jo&&(i[jo]=u),t){var a=function(){r.on(n,null)};r.on(n,function(){O(),a()},!0),setTimeout(a,0)}}}function et(t,e){e.changedTouches&&(e=e.changedTouches[0]);var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();if(0>$o){var i=o(t);if(i.scrollX||i.scrollY){n=ho.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=n[0][0].getScreenCTM();$o=!(a.f||a.e),n.remove()}}return $o?(r.x=e.pageX,r.y=e.pageY):(r.x=e.clientX,r.y=e.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var u=t.getBoundingClientRect();return[e.clientX-u.left-t.clientLeft,e.clientY-u.top-t.clientTop]}function nt(){return ho.event.changedTouches[0].identifier}function rt(t){return t>0?1:0>t?-1:0}function it(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function at(t){return t>1?0:-1>t?Ho:Math.acos(t)}function ot(t){return t>1?Xo:-1>t?-Xo:Math.asin(t)}function ut(t){return((t=Math.exp(t))-1/t)/2}function st(t){return((t=Math.exp(t))+1/t)/2}function lt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ct(t){return(t=Math.sin(t/2))*t}function ft(){}function ht(t,e,n){return this instanceof ht?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof ht?new ht(t.h,t.s,t.l):St(""+t,At,ht):new ht(t,e,n)}function dt(t,e,n){function r(t){return t>360?t-=360:0>t&&(t+=360),60>t?a+(o-a)*t/60:180>t?o:240>t?a+(o-a)*(240-t)/60:a; +}function i(t){return Math.round(255*r(t))}var a,o;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:0>e?0:e>1?1:e,n=0>n?0:n>1?1:n,o=.5>=n?n*(1+e):n+e-n*e,a=2*n-o,new Mt(i(t+120),i(t),i(t-120))}function pt(t,e,n){return this instanceof pt?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof pt?new pt(t.h,t.c,t.l):t instanceof mt?yt(t.l,t.a,t.b):yt((t=Tt((t=ho.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new pt(t,e,n)}function gt(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new mt(n,Math.cos(t*=Wo)*e,Math.sin(t)*e)}function mt(t,e,n){return this instanceof mt?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof mt?new mt(t.l,t.a,t.b):t instanceof pt?gt(t.h,t.c,t.l):Tt((t=Mt(t)).r,t.g,t.b):new mt(t,e,n)}function vt(t,e,n){var r=(t+16)/116,i=r+e/500,a=r-n/200;return i=xt(i)*au,r=xt(r)*ou,a=xt(a)*uu,new Mt(bt(3.2404542*i-1.5371385*r-.4985314*a),bt(-.969266*i+1.8760108*r+.041556*a),bt(.0556434*i-.2040259*r+1.0572252*a))}function yt(t,e,n){return t>0?new pt(Math.atan2(n,e)*Go,Math.sqrt(e*e+n*n),t):new pt(NaN,NaN,t)}function xt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function _t(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function bt(t){return Math.round(255*(.00304>=t?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function Mt(t,e,n){return this instanceof Mt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof Mt?new Mt(t.r,t.g,t.b):St(""+t,Mt,dt):new Mt(t,e,n)}function wt(t){return new Mt(t>>16,t>>8&255,255&t)}function kt(t){return wt(t)+""}function Et(t){return 16>t?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function St(t,e,n){var r,i,a,o=0,u=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return n(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(Nt(i[0]),Nt(i[1]),Nt(i[2]))}return(a=cu.get(t))?e(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o=o>>4|o,u=240&a,u=u>>4|u,s=15&a,s=s<<4|s):7===t.length&&(o=(16711680&a)>>16,u=(65280&a)>>8,s=255&a)),e(o,u,s))}function At(t,e,n){var r,i,a=Math.min(t/=255,e/=255,n/=255),o=Math.max(t,e,n),u=o-a,s=(o+a)/2;return u?(i=.5>s?u/(o+a):u/(2-o-a),r=t==o?(e-n)/u+(n>e?6:0):e==o?(n-t)/u+2:(t-e)/u+4,r*=60):(r=NaN,i=s>0&&1>s?0:r),new ht(r,i,s)}function Tt(t,e,n){t=Ot(t),e=Ot(e),n=Ot(n);var r=_t((.4124564*t+.3575761*e+.1804375*n)/au),i=_t((.2126729*t+.7151522*e+.072175*n)/ou),a=_t((.0193339*t+.119192*e+.9503041*n)/uu);return mt(116*i-16,500*(r-i),200*(i-a))}function Ot(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Nt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function Lt(t){return"function"==typeof t?t:function(){return t}}function Ct(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=null),Rt(e,n,t,r)}}function Rt(t,e,n,r){function i(){var t,e=s.status;if(!e&&Dt(s)||e>=200&&300>e||304===e){try{t=n.call(a,s)}catch(r){return void o.error.call(a,r)}o.load.call(a,t)}else o.error.call(a,s)}var a={},o=ho.dispatch("beforesend","progress","load","error"),u={},s=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(t)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=i:s.onreadystatechange=function(){s.readyState>3&&i()},s.onprogress=function(t){var e=ho.event;ho.event=t;try{o.progress.call(a,s)}finally{ho.event=e}},a.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?u[t]:(null==e?delete u[t]:u[t]=e+"",a)},a.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",a):e},a.responseType=function(t){return arguments.length?(l=t,a):l},a.response=function(t){return n=t,a},["get","post"].forEach(function(t){a[t]=function(){return a.send.apply(a,[t].concat(go(arguments)))}}),a.send=function(n,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),s.open(n,t,!0),null==e||"accept"in u||(u.accept=e+",*/*"),s.setRequestHeader)for(var c in u)s.setRequestHeader(c,u[c]);return null!=e&&s.overrideMimeType&&s.overrideMimeType(e),null!=l&&(s.responseType=l),null!=i&&a.on("error",i).on("load",function(t){i(null,t)}),o.beforesend.call(a,s),s.send(null==r?null:r),a},a.abort=function(){return s.abort(),a},ho.rebind(a,o,"on"),null==r?a:a.get(It(r))}function It(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function Dt(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Ut(t,e,n){var r=arguments.length;2>r&&(e=0),3>r&&(n=Date.now());var i=n+e,a={c:t,t:i,n:null};return hu?hu.n=a:fu=a,hu=a,du||(pu=clearTimeout(pu),du=1,gu(Pt)),a}function Pt(){var t=zt(),e=jt()-t;e>24?(isFinite(e)&&(clearTimeout(pu),pu=setTimeout(Pt,e)),du=0):(du=1,gu(Pt))}function zt(){for(var t=Date.now(),e=fu;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function jt(){for(var t,e=fu,n=1/0;e;)e.c?(e.t8?function(t){return t/n}:function(t){return t*n},symbol:t}}function Ft(t){var e=t.decimal,n=t.thousands,r=t.grouping,i=t.currency,a=r&&n?function(t,e){for(var i=t.length,a=[],o=0,u=r[0],s=0;i>0&&u>0&&(s+u+1>e&&(u=Math.max(1,e-s)),a.push(t.substring(i-=u,i+u)),!((s+=u+1)>e));)u=r[o=(o+1)%r.length];return a.reverse().join(n)}:w;return function(t){var n=vu.exec(t),r=n[1]||" ",o=n[2]||">",u=n[3]||"-",s=n[4]||"",l=n[5],c=+n[6],f=n[7],h=n[8],d=n[9],p=1,g="",m="",v=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),d){case"n":f=!0,d="g";break;case"%":p=100,m="%",d="f";break;case"p":p=100,m="%",d="r";break;case"b":case"o":case"x":case"X":"#"===s&&(g="0"+d.toLowerCase());case"c":y=!1;case"d":v=!0,h=0;break;case"s":p=-1,d="r"}"$"===s&&(g=i[0],m=i[1]),"r"!=d||h||(d="g"),null!=h&&("g"==d?h=Math.max(1,Math.min(21,h)):"e"!=d&&"f"!=d||(h=Math.max(0,Math.min(20,h)))),d=yu.get(d)||Yt;var x=l&&f;return function(t){var n=m;if(v&&t%1)return"";var i=0>t||0===t&&0>1/t?(t=-t,"-"):"-"===u?"":u;if(0>p){var s=ho.formatPrefix(t,h);t=s.scale(t),n=s.symbol+m}else t*=p;t=d(t,h);var _,b,M=t.lastIndexOf(".");if(0>M){var w=y?t.lastIndexOf("e"):-1;0>w?(_=t,b=""):(_=t.substring(0,w),b=t.substring(w))}else _=t.substring(0,M),b=e+t.substring(M+1);!l&&f&&(_=a(_,1/0));var k=g.length+_.length+b.length+(x?0:i.length),E=c>k?new Array(k=c-k+1).join(r):"";return x&&(_=a(E+_,E.length?c-b.length:1/0)),i+=g,t=_+b,("<"===o?i+t+E:">"===o?E+i+t:"^"===o?E.substring(0,k>>=1)+i+t+E.substring(k):i+(x?t:E+t))+n}}}function Yt(t){return t+""}function Ht(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Bt(t,e,n){function r(e){var n=t(e),r=a(n,1);return r-e>e-n?n:r}function i(n){return e(n=t(new _u(n-1)),1),n}function a(t,n){return e(t=new _u(+t),n),t}function o(t,r,a){var o=i(t),u=[];if(a>1)for(;r>o;)n(o)%a||u.push(new Date(+o)),e(o,1);else for(;r>o;)u.push(new Date(+o)),e(o,1);return u}function u(t,e,n){try{_u=Ht;var r=new Ht;return r._=t,o(r,e,n)}finally{_u=Date}}t.floor=t,t.round=r,t.ceil=i,t.offset=a,t.range=o;var s=t.utc=Vt(t);return s.floor=s,s.round=Vt(r),s.ceil=Vt(i),s.offset=Vt(a),s.range=u,t}function Vt(t){return function(e,n){try{_u=Ht;var r=new Ht;return r._=e,t(r,n)._}finally{_u=Date}}}function Xt(t){function e(t){function e(e){for(var n,i,a,o=[],u=-1,s=0;++uu;){if(r>=l)return-1;if(i=e.charCodeAt(u++),37===i){if(o=e.charAt(u++),a=O[o in Mu?e.charAt(u++):o],!a||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function r(t,e,n){M.lastIndex=0;var r=M.exec(e.slice(n));return r?(t.w=w.get(r[0].toLowerCase()),n+r[0].length):-1}function i(t,e,n){_.lastIndex=0;var r=_.exec(e.slice(n));return r?(t.w=b.get(r[0].toLowerCase()),n+r[0].length):-1}function a(t,e,n){S.lastIndex=0;var r=S.exec(e.slice(n));return r?(t.m=A.get(r[0].toLowerCase()),n+r[0].length):-1}function o(t,e,n){k.lastIndex=0;var r=k.exec(e.slice(n));return r?(t.m=E.get(r[0].toLowerCase()),n+r[0].length):-1}function u(t,e,r){return n(t,T.c.toString(),e,r)}function s(t,e,r){return n(t,T.x.toString(),e,r)}function l(t,e,r){return n(t,T.X.toString(),e,r)}function c(t,e,n){var r=x.get(e.slice(n,n+=2).toLowerCase());return null==r?-1:(t.p=r,n)}var f=t.dateTime,h=t.date,d=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{_u=Ht;var e=new _u;return e._=t,r(e)}finally{_u=Date}}var r=e(t);return n.parse=function(t){try{_u=Ht;var e=r.parse(t);return e&&e._}finally{_u=Date}},n.toString=r.toString,n},e.multi=e.utc.multi=de;var x=ho.map(),_=Gt(g),b=Zt(g),M=Gt(m),w=Zt(m),k=Gt(v),E=Zt(v),S=Gt(y),A=Zt(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var T={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(f),d:function(t,e){return Wt(t.getDate(),e,2)},e:function(t,e){return Wt(t.getDate(),e,2)},H:function(t,e){return Wt(t.getHours(),e,2)},I:function(t,e){return Wt(t.getHours()%12||12,e,2)},j:function(t,e){return Wt(1+xu.dayOfYear(t),e,3)},L:function(t,e){return Wt(t.getMilliseconds(),e,3)},m:function(t,e){return Wt(t.getMonth()+1,e,2)},M:function(t,e){return Wt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Wt(t.getSeconds(),e,2)},U:function(t,e){return Wt(xu.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Wt(xu.mondayOfYear(t),e,2)},x:e(h),X:e(d),y:function(t,e){return Wt(t.getFullYear()%100,e,2)},Y:function(t,e){return Wt(t.getFullYear()%1e4,e,4)},Z:fe,"%":function(){return"%"}},O={a:r,A:i,b:a,B:o,c:u,d:ae,e:ae,H:ue,I:ue,j:oe,L:ce,m:ie,M:se,p:c,S:le,U:Qt,w:Jt,W:Kt,x:s,X:l,y:ee,Y:te,Z:ne,"%":he};return e}function Wt(t,e,n){var r=0>t?"-":"",i=(r?-t:t)+"",a=i.length;return r+(n>a?new Array(n-a+1).join(e)+i:i)}function Gt(t){return new RegExp("^(?:"+t.map(ho.requote).join("|")+")","i")}function Zt(t){for(var e=new p,n=-1,r=t.length;++n68?1900:2e3)}function ie(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ae(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function oe(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.j=+r[0],n+r[0].length):-1}function ue(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function se(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function le(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function ce(t,e,n){wu.lastIndex=0;var r=wu.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function fe(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",r=Eo(e)/60|0,i=Eo(e)%60;return n+Wt(r,"0",2)+Wt(i,"0",2)}function he(t,e,n){ku.lastIndex=0;var r=ku.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function de(t){for(var e=t.length,n=-1;++n=0?1:-1,u=o*n,s=Math.cos(e),l=Math.sin(e),c=a*l,f=i*s+c*Math.cos(u),h=c*o*Math.sin(u);Nu.add(Math.atan2(h,f)),r=t,i=s,a=l}var e,n,r,i,a;Lu.point=function(o,u){Lu.point=t,r=(e=o)*Wo,i=Math.cos(u=(n=u)*Wo/2+Ho/4),a=Math.sin(u)},Lu.lineEnd=function(){t(e,n)}}function _e(t){var e=t[0],n=t[1],r=Math.cos(n);return[r*Math.cos(e),r*Math.sin(e),Math.sin(n)]}function be(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Me(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function we(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ke(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Ee(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Se(t){return[Math.atan2(t[1],t[0]),ot(t[2])]}function Ae(t,e){return Eo(t[0]-e[0])u;++u)i.point((n=t[u])[0],n[1]);return void i.lineEnd()}var s=new Pe(n,t,null,!0),l=new Pe(n,null,s,!1);s.o=l,a.push(s),o.push(l),s=new Pe(r,t,null,!1),l=new Pe(r,null,s,!0),s.o=l,a.push(s),o.push(l)}}),o.sort(e),Ue(a),Ue(o),a.length){for(var u=0,s=n,l=o.length;l>u;++u)o[u].e=s=!s;for(var c,f,h=a[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;c=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(var u=0,l=c.length;l>u;++u)i.point((f=c[u])[0],f[1]);else r(d.x,d.n.x,1,i);d=d.n}else{if(p){c=d.p.z;for(var u=c.length-1;u>=0;--u)i.point((f=c[u])[0],f[1])}else r(d.x,d.p.x,-1,i);d=d.p}d=d.o,c=d.z,p=!p}while(!d.v);i.lineEnd()}}}function Ue(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r0){for(b||(a.polygonStart(),b=!0),a.lineStart();++o1&&2&e&&n.push(n.pop().concat(n.shift())),d.push(n.filter(je))}var d,p,g,m=e(a),v=i.invert(r[0],r[1]),y={point:o,lineStart:s,lineEnd:l,polygonStart:function(){y.point=c,y.lineStart=f,y.lineEnd=h,d=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=s,y.lineEnd=l,d=ho.merge(d);var t=Be(v,p);d.length?(b||(a.polygonStart(),b=!0),De(d,$e,t,n,a)):t&&(b||(a.polygonStart(),b=!0),a.lineStart(),n(null,null,1,a),a.lineEnd()),b&&(a.polygonEnd(),b=!1),d=p=null},sphere:function(){a.polygonStart(),a.lineStart(),n(null,null,1,a),a.lineEnd(),a.polygonEnd()}},x=qe(),_=e(x),b=!1;return y}}function je(t){return t.length>1}function qe(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:S,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function $e(t,e){return((t=t.x)[0]<0?t[1]-Xo-Fo:Xo-t[1])-((e=e.x)[0]<0?e[1]-Xo-Fo:Xo-e[1])}function Fe(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var u=a>0?Ho:-Ho,s=Eo(a-n);Eo(s-Ho)0?Xo:-Xo),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(a,r),e=0):i!==u&&s>=Ho&&(Eo(n-i)Fo?Math.atan((Math.sin(e)*(a=Math.cos(r))*Math.sin(n)-Math.sin(r)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+r)/2}function He(t,e,n,r){var i;if(null==t)i=n*Xo,r.point(-Ho,i),r.point(0,i),r.point(Ho,i),r.point(Ho,0),r.point(Ho,-i),r.point(0,-i),r.point(-Ho,-i),r.point(-Ho,0),r.point(-Ho,i);else if(Eo(t[0]-e[0])>Fo){var a=t[0]u;++u){var l=e[u],c=l.length;if(c)for(var f=l[0],h=f[0],d=f[1]/2+Ho/4,p=Math.sin(d),g=Math.cos(d),m=1;;){m===c&&(m=0),t=l[m];var v=t[0],y=t[1]/2+Ho/4,x=Math.sin(y),_=Math.cos(y),b=v-h,M=b>=0?1:-1,w=M*b,k=w>Ho,E=p*x;if(Nu.add(Math.atan2(E*M*Math.sin(w),g*_+E*Math.cos(w))),a+=k?b+M*Bo:b,k^h>=n^v>=n){var S=Me(_e(f),_e(t));Ee(S);var A=Me(i,S);Ee(A);var T=(k^b>=0?-1:1)*ot(A[2]);(r>T||r===T&&(S[0]||S[1]))&&(o+=k^b>=0?1:-1)}if(!m++)break;h=v,p=x,g=_,f=t}}return(-Fo>a||Fo>a&&-Fo>Nu)^1&o}function Ve(t){function e(t,e){return Math.cos(t)*Math.cos(e)>a}function n(t){var n,a,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var d,p=[f,h],g=e(f,h),m=o?g?0:i(f,h):g?i(f+(0>f?Ho:-Ho),h):0;if(!n&&(l=s=g)&&t.lineStart(),g!==s&&(d=r(n,p),(Ae(n,d)||Ae(p,d))&&(p[0]+=Fo,p[1]+=Fo,g=e(p[0],p[1]))),g!==s)c=0,g?(t.lineStart(),d=r(p,n),t.point(d[0],d[1])):(d=r(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(u&&n&&o^g){var v;m&a||!(v=r(p,n,!0))||(c=0,o?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&Ae(n,p)||t.point(p[0],p[1]),n=p,s=g,a=m},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}}function r(t,e,n){var r=_e(t),i=_e(e),o=[1,0,0],u=Me(r,i),s=be(u,u),l=u[0],c=s-l*l;if(!c)return!n&&t;var f=a*s/c,h=-a*l/c,d=Me(o,u),p=ke(o,f),g=ke(u,h);we(p,g);var m=d,v=be(p,m),y=be(m,m),x=v*v-y*(be(p,p)-1);if(!(0>x)){var _=Math.sqrt(x),b=ke(m,(-v-_)/y);if(we(b,p),b=Se(b),!n)return b;var M,w=t[0],k=e[0],E=t[1],S=e[1];w>k&&(M=w,w=k,k=M);var A=k-w,T=Eo(A-Ho)A;if(!T&&E>S&&(M=E,E=S,S=M),O?T?E+S>0^b[1]<(Eo(b[0]-w)Ho^(w<=b[0]&&b[0]<=k)){var N=ke(m,(-v+_)/y);return we(N,p),[b,Se(N)]}}}function i(e,n){var r=o?t:Ho-t,i=0;return-r>e?i|=1:e>r&&(i|=2),-r>n?i|=4:n>r&&(i|=8),i}var a=Math.cos(t),o=a>0,u=Eo(a)>Fo,s=_n(t,6*Wo);return ze(e,n,s,o?[0,-t]:[-Ho,t-Ho])}function Xe(t,e,n,r){return function(i){var a,o=i.a,u=i.b,s=o.x,l=o.y,c=u.x,f=u.y,h=0,d=1,p=c-s,g=f-l;if(a=t-s,p||!(a>0)){if(a/=p,0>p){if(h>a)return;d>a&&(d=a)}else if(p>0){if(a>d)return;a>h&&(h=a)}if(a=n-s,p||!(0>a)){if(a/=p,0>p){if(a>d)return;a>h&&(h=a)}else if(p>0){if(h>a)return;d>a&&(d=a)}if(a=e-l,g||!(a>0)){if(a/=g,0>g){if(h>a)return;d>a&&(d=a)}else if(g>0){if(a>d)return;a>h&&(h=a)}if(a=r-l,g||!(0>a)){if(a/=g,0>g){if(a>d)return;a>h&&(h=a)}else if(g>0){if(h>a)return;d>a&&(d=a)}return h>0&&(i.a={x:s+h*p,y:l+h*g}),1>d&&(i.b={x:s+d*p,y:l+d*g}),i}}}}}}function We(t,e,n,r){function i(r,i){return Eo(r[0]-t)0?0:3:Eo(r[0]-n)0?2:1:Eo(r[1]-e)0?1:0:i>0?3:2}function a(t,e){return o(t.x,e.x)}function o(t,e){var n=i(t,1),r=i(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(u){function s(t){for(var e=0,n=m.length,r=t[1],i=0;n>i;++i)for(var a,o=1,u=m[i],s=u.length,l=u[0];s>o;++o)a=u[o],l[1]<=r?a[1]>r&&it(l,a,t)>0&&++e:a[1]<=r&&it(l,a,t)<0&&--e,l=a;return 0!==e}function l(a,u,s,l){var c=0,f=0;if(null==a||(c=i(a,s))!==(f=i(u,s))||o(a,u)<0^s>0){do l.point(0===c||3===c?t:n,c>1?r:e);while((c=(c+s+4)%4)!==f)}else l.point(u[0],u[1])}function c(i,a){return i>=t&&n>=i&&a>=e&&r>=a}function f(t,e){c(t,e)&&u.point(t,e)}function h(){O.point=p,m&&m.push(v=[]),k=!0,w=!1,b=M=NaN}function d(){g&&(p(y,x),_&&w&&A.rejoin(),g.push(A.buffer())),O.point=f,w&&u.lineEnd()}function p(t,e){t=Math.max(-Bu,Math.min(Bu,t)),e=Math.max(-Bu,Math.min(Bu,e));var n=c(t,e);if(m&&v.push([t,e]),k)y=t,x=e,_=n,k=!1,n&&(u.lineStart(),u.point(t,e));else if(n&&w)u.point(t,e);else{var r={a:{x:b,y:M},b:{x:t,y:e}};T(r)?(w||(u.lineStart(),u.point(r.a.x,r.a.y)),u.point(r.b.x,r.b.y),n||u.lineEnd(),E=!1):n&&(u.lineStart(),u.point(t,e),E=!1)}b=t,M=e,w=n}var g,m,v,y,x,_,b,M,w,k,E,S=u,A=qe(),T=Xe(t,e,n,r),O={point:f,lineStart:h,lineEnd:d,polygonStart:function(){u=A,g=[],m=[],E=!0},polygonEnd:function(){u=S,g=ho.merge(g);var e=s([t,r]),n=E&&e,i=g.length;(n||i)&&(u.polygonStart(),n&&(u.lineStart(),l(null,null,1,u),u.lineEnd()),i&&De(g,a,e,l,u),u.polygonEnd()),g=m=v=null}};return O}}function Ge(t){var e=0,n=Ho/3,r=hn(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*Ho/180,n=t[1]*Ho/180):[e/Ho*180,n/Ho*180]},i}function Ze(t,e){function n(t,e){var n=Math.sqrt(a-2*i*Math.sin(e))/i;return[n*Math.sin(t*=i),o-n*Math.cos(t)]}var r=Math.sin(t),i=(r+Math.sin(e))/2,a=1+r*(2*i-r),o=Math.sqrt(a)/i;return n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/i,ot((a-(t*t+n*n)*i*i)/(2*i))]},n}function Je(){function t(t,e){Xu+=i*t-r*e,r=t,i=e}var e,n,r,i;Qu.point=function(a,o){Qu.point=t,e=r=a,n=i=o},Qu.lineEnd=function(){t(e,n)}}function Qe(t,e){Wu>t&&(Wu=t),t>Zu&&(Zu=t),Gu>e&&(Gu=e),e>Ju&&(Ju=e)}function Ke(){function t(t,e){o.push("M",t,",",e,a)}function e(t,e){o.push("M",t,",",e),u.point=n}function n(t,e){o.push("L",t,",",e)}function r(){u.point=t}function i(){o.push("Z")}var a=tn(4.5),o=[],u={point:t,lineStart:function(){u.point=e},lineEnd:r,polygonStart:function(){u.lineEnd=i},polygonEnd:function(){u.lineEnd=r,u.point=t},pointRadius:function(t){return a=tn(t),u},result:function(){if(o.length){var t=o.join("");return o=[],t}}};return u}function tn(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function en(t,e){Iu+=t,Du+=e,++Uu}function nn(){function t(t,r){var i=t-e,a=r-n,o=Math.sqrt(i*i+a*a);Pu+=o*(e+t)/2,zu+=o*(n+r)/2,ju+=o,en(e=t,n=r)}var e,n;ts.point=function(r,i){ts.point=t,en(e=r,n=i)}}function rn(){ts.point=en}function an(){function t(t,e){var n=t-r,a=e-i,o=Math.sqrt(n*n+a*a);Pu+=o*(r+t)/2,zu+=o*(i+e)/2,ju+=o,o=i*t-r*e,qu+=o*(r+t),$u+=o*(i+e),Fu+=3*o,en(r=t,i=e)}var e,n,r,i;ts.point=function(a,o){ts.point=t,en(e=r=a,n=i=o)},ts.lineEnd=function(){t(e,n)}}function on(t){function e(e,n){t.moveTo(e+o,n),t.arc(e,n,o,0,Bo)}function n(e,n){t.moveTo(e,n),u.point=r}function r(e,n){t.lineTo(e,n)}function i(){u.point=e}function a(){t.closePath()}var o=4.5,u={point:e,lineStart:function(){u.point=n},lineEnd:i,polygonStart:function(){u.lineEnd=a},polygonEnd:function(){u.lineEnd=i,u.point=e},pointRadius:function(t){return o=t,u},result:S};return u}function un(t){function e(t){return(u?r:n)(t)}function n(e){return cn(e,function(n,r){n=t(n,r),e.point(n[0],n[1])})}function r(e){function n(n,r){n=t(n,r),e.point(n[0],n[1])}function r(){x=NaN,k.point=a,e.lineStart()}function a(n,r){var a=_e([n,r]),o=t(n,r);i(x,_,y,b,M,w,x=o[0],_=o[1],y=n,b=a[0],M=a[1],w=a[2],u,e),e.point(x,_)}function o(){k.point=n,e.lineEnd()}function s(){r(),k.point=l,k.lineEnd=c}function l(t,e){a(f=t,h=e),d=x,p=_,g=b,m=M,v=w,k.point=a}function c(){i(x,_,y,b,M,w,d,p,f,g,m,v,u,e),k.lineEnd=o,o()}var f,h,d,p,g,m,v,y,x,_,b,M,w,k={point:n,lineStart:r,lineEnd:o,polygonStart:function(){e.polygonStart(),k.lineStart=s},polygonEnd:function(){e.polygonEnd(),k.lineStart=r}};return k}function i(e,n,r,u,s,l,c,f,h,d,p,g,m,v){var y=c-e,x=f-n,_=y*y+x*x;if(_>4*a&&m--){var b=u+d,M=s+p,w=l+g,k=Math.sqrt(b*b+M*M+w*w),E=Math.asin(w/=k),S=Eo(Eo(w)-1)a||Eo((y*N+x*L)/_-.5)>.3||o>u*d+s*p+l*g)&&(i(e,n,r,u,s,l,T,O,S,b/=k,M/=k,w,m,v),v.point(T,O),i(T,O,S,b,M,w,c,f,h,d,p,g,m,v))}}var a=.5,o=Math.cos(30*Wo),u=16;return e.precision=function(t){return arguments.length?(u=(a=t*t)>0&&16,e):Math.sqrt(a)},e}function sn(t){var e=un(function(e,n){return t([e*Go,n*Go])});return function(t){return dn(e(t))}}function ln(t){this.stream=t}function cn(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function fn(t){return hn(function(){return t})()}function hn(t){function e(t){return t=u(t[0]*Wo,t[1]*Wo),[t[0]*h+s,l-t[1]*h]}function n(t){return t=u.invert((t[0]-s)/h,(l-t[1])/h),t&&[t[0]*Go,t[1]*Go]}function r(){u=Re(o=mn(v,y,x),a);var t=a(g,m);return s=d-t[0]*h,l=p+t[1]*h,i()}function i(){return c&&(c.valid=!1,c=null),e}var a,o,u,s,l,c,f=un(function(t,e){return t=a(t,e),[t[0]*h+s,l-t[1]*h]}),h=150,d=480,p=250,g=0,m=0,v=0,y=0,x=0,_=Hu,b=w,M=null,k=null;return e.stream=function(t){return c&&(c.valid=!1),c=dn(_(o,f(b(t)))),c.valid=!0,c},e.clipAngle=function(t){return arguments.length?(_=null==t?(M=t,Hu):Ve((M=+t)*Wo),i()):M},e.clipExtent=function(t){return arguments.length?(k=t,b=t?We(t[0][0],t[0][1],t[1][0],t[1][1]):w,i()):k},e.scale=function(t){return arguments.length?(h=+t,r()):h},e.translate=function(t){return arguments.length?(d=+t[0],p=+t[1],r()):[d,p]},e.center=function(t){return arguments.length?(g=t[0]%360*Wo,m=t[1]%360*Wo,r()):[g*Go,m*Go]},e.rotate=function(t){return arguments.length?(v=t[0]%360*Wo,y=t[1]%360*Wo,x=t.length>2?t[2]%360*Wo:0,r()):[v*Go,y*Go,x*Go]},ho.rebind(e,f,"precision"),function(){return a=t.apply(this,arguments),e.invert=a.invert&&n,r()}}function dn(t){return cn(t,function(e,n){t.point(e*Wo,n*Wo)})}function pn(t,e){return[t,e]}function gn(t,e){return[t>Ho?t-Bo:-Ho>t?t+Bo:t,e]}function mn(t,e,n){return t?e||n?Re(yn(t),xn(e,n)):yn(t):e||n?xn(e,n):gn}function vn(t){return function(e,n){return e+=t,[e>Ho?e-Bo:-Ho>e?e+Bo:e,n]}}function yn(t){var e=vn(t);return e.invert=vn(-t),e}function xn(t,e){function n(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*r+u*i;return[Math.atan2(s*a-c*o,u*r-l*i),ot(c*a+s*o)]}var r=Math.cos(t),i=Math.sin(t),a=Math.cos(e),o=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),u=Math.cos(t)*n,s=Math.sin(t)*n,l=Math.sin(e),c=l*a-s*o;return[Math.atan2(s*a+l*o,u*r+c*i),ot(c*r-u*i)]},n}function _n(t,e){var n=Math.cos(t),r=Math.sin(t);return function(i,a,o,u){var s=o*e;null!=i?(i=bn(n,i),a=bn(n,a),(o>0?a>i:i>a)&&(i+=o*Bo)):(i=t+o*Bo,a=t-.5*s);for(var l,c=i;o>0?c>a:a>c;c-=s)u.point((l=Se([n,-r*Math.cos(c),-r*Math.sin(c)]))[0],l[1])}}function bn(t,e){var n=_e(e);n[0]-=t,Ee(n);var r=at(-n[1]);return((-n[2]<0?-r:r)+2*Math.PI-Fo)%(2*Math.PI)}function Mn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[t,e]})}}function wn(t,e,n){var r=ho.range(t,e-Fo,n).concat(e);return function(t){return r.map(function(e){return[e,t]})}}function kn(t){return t.source}function En(t){return t.target}function Sn(t,e,n,r){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(r),u=Math.sin(r),s=i*Math.cos(t),l=i*Math.sin(t),c=o*Math.cos(n),f=o*Math.sin(n),h=2*Math.asin(Math.sqrt(ct(r-e)+i*o*ct(n-t))),d=1/Math.sin(h),p=h?function(t){var e=Math.sin(t*=h)*d,n=Math.sin(h-t)*d,r=n*s+e*c,i=n*l+e*f,o=n*a+e*u;return[Math.atan2(i,r)*Go,Math.atan2(o,Math.sqrt(r*r+i*i))*Go]}:function(){return[t*Go,e*Go]};return p.distance=h,p}function An(){function t(t,i){var a=Math.sin(i*=Wo),o=Math.cos(i),u=Eo((t*=Wo)-e),s=Math.cos(u);es+=Math.atan2(Math.sqrt((u=o*Math.sin(u))*u+(u=r*a-n*o*s)*u),n*a+r*o*s),e=t,n=a,r=o}var e,n,r;ns.point=function(i,a){e=i*Wo,n=Math.sin(a*=Wo),r=Math.cos(a),ns.point=t},ns.lineEnd=function(){ns.point=ns.lineEnd=S}}function Tn(t,e){function n(e,n){var r=Math.cos(e),i=Math.cos(n),a=t(r*i);return[a*i*Math.sin(e),a*Math.sin(n)]}return n.invert=function(t,n){var r=Math.sqrt(t*t+n*n),i=e(r),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,r*o),Math.asin(r&&n*a/r)]},n}function On(t,e){function n(t,e){o>0?-Xo+Fo>e&&(e=-Xo+Fo):e>Xo-Fo&&(e=Xo-Fo);var n=o/Math.pow(i(e),a);return[n*Math.sin(a*t),o-n*Math.cos(a*t)]}var r=Math.cos(t),i=function(t){return Math.tan(Ho/4+t/2)},a=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log(i(e)/i(t)),o=r*Math.pow(i(t),a)/a;return a?(n.invert=function(t,e){var n=o-e,r=rt(a)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/a,2*Math.atan(Math.pow(o/r,1/a))-Xo]},n):Ln}function Nn(t,e){function n(t,e){var n=a-e;return[n*Math.sin(i*t),a-n*Math.cos(i*t)]}var r=Math.cos(t),i=t===e?Math.sin(t):(r-Math.cos(e))/(e-t),a=r/i+t;return Eo(i)i;i++){for(;r>1&&it(t[n[r-2]],t[n[r-1]],t[i])<=0;)--r;n[r++]=i}return n.slice(0,r)}function Pn(t,e){return t[0]-e[0]||t[1]-e[1]}function zn(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function jn(t,e,n,r){var i=t[0],a=n[0],o=e[0]-i,u=r[0]-a,s=t[1],l=n[1],c=e[1]-s,f=r[1]-l,h=(u*(s-l)-f*(i-a))/(f*o-u*c);return[i+h*o,s+h*c]}function qn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function $n(){sr(this),this.edge=this.site=this.circle=null}function Fn(t){var e=ps.pop()||new $n;return e.site=t,e}function Yn(t){Kn(t),fs.remove(t),ps.push(t),sr(t)}function Hn(t){var e=t.circle,n=e.x,r=e.cy,i={x:n,y:r},a=t.P,o=t.N,u=[t];Yn(t);for(var s=a;s.circle&&Eo(n-s.circle.x)c;++c)l=u[c],s=u[c-1],ar(l.edge,s.site,l.site,i);s=u[0],l=u[f-1],l.edge=rr(s.site,l.site,null,i),Qn(s),Qn(l)}function Bn(t){for(var e,n,r,i,a=t.x,o=t.y,u=fs._;u;)if(r=Vn(u,o)-a,r>Fo)u=u.L;else{ +if(i=a-Xn(u,o),!(i>Fo)){r>-Fo?(e=u.P,n=u):i>-Fo?(e=u,n=u.N):e=n=u;break}if(!u.R){e=u;break}u=u.R}var s=Fn(t);if(fs.insert(e,s),e||n){if(e===n)return Kn(e),n=Fn(e.site),fs.insert(s,n),s.edge=n.edge=rr(e.site,s.site),Qn(e),void Qn(n);if(!n)return void(s.edge=rr(e.site,s.site));Kn(e),Kn(n);var l=e.site,c=l.x,f=l.y,h=t.x-c,d=t.y-f,p=n.site,g=p.x-c,m=p.y-f,v=2*(h*m-d*g),y=h*h+d*d,x=g*g+m*m,_={x:(m*y-d*x)/v+c,y:(h*x-g*y)/v+f};ar(n.edge,l,p,_),s.edge=rr(l,t,null,_),n.edge=rr(t,p,null,_),Qn(e),Qn(n)}}function Vn(t,e){var n=t.site,r=n.x,i=n.y,a=i-e;if(!a)return r;var o=t.P;if(!o)return-(1/0);n=o.site;var u=n.x,s=n.y,l=s-e;if(!l)return u;var c=u-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+i-a/2)))/f+r:(r+u)/2}function Xn(t,e){var n=t.N;if(n)return Vn(n,e);var r=t.site;return r.y===e?r.x:1/0}function Wn(t){this.site=t,this.edges=[]}function Gn(t){for(var e,n,r,i,a,o,u,s,l,c,f=t[0][0],h=t[1][0],d=t[0][1],p=t[1][1],g=cs,m=g.length;m--;)if(a=g[m],a&&a.prepare())for(u=a.edges,s=u.length,o=0;s>o;)c=u[o].end(),r=c.x,i=c.y,l=u[++o%s].start(),e=l.x,n=l.y,(Eo(r-e)>Fo||Eo(i-n)>Fo)&&(u.splice(o,0,new or(ir(a.site,c,Eo(r-f)Fo?{x:f,y:Eo(e-f)Fo?{x:Eo(n-p)Fo?{x:h,y:Eo(e-h)Fo?{x:Eo(n-d)=-Yo)){var d=s*s+l*l,p=c*c+f*f,g=(f*d-l*p)/h,m=(s*p-c*d)/h,f=m+u,v=gs.pop()||new Jn;v.arc=t,v.site=i,v.x=g+o,v.y=f+Math.sqrt(g*g+m*m),v.cy=f,t.circle=v;for(var y=null,x=ds._;x;)if(v.ym||m>=u)return;if(h>p){if(a){if(a.y>=l)return}else a={x:m,y:s};n={x:m,y:l}}else{if(a){if(a.yr||r>1)if(h>p){if(a){if(a.y>=l)return}else a={x:(s-i)/r,y:s};n={x:(l-i)/r,y:l}}else{if(a){if(a.yd){if(a){if(a.x>=u)return}else a={x:o,y:r*o+i};n={x:u,y:r*u+i}}else{if(a){if(a.xa||f>o||r>h||i>d)){if(p=t.point){var p,g=e-t.x,m=n-t.y,v=g*g+m*m;if(s>v){var y=Math.sqrt(s=v);r=e-y,i=n-y,a=e+y,o=n+y,u=p}}for(var x=t.nodes,_=.5*(c+h),b=.5*(f+d),M=e>=_,w=n>=b,k=w<<1|M,E=k+4;E>k;++k)if(t=x[3&k])switch(3&k){case 0:l(t,c,f,_,b);break;case 1:l(t,_,f,h,b);break;case 2:l(t,c,b,_,d);break;case 3:l(t,_,b,h,d)}}}(t,r,i,a,o),u}function _r(t,e){t=ho.rgb(t),e=ho.rgb(e);var n=t.r,r=t.g,i=t.b,a=e.r-n,o=e.g-r,u=e.b-i;return function(t){return"#"+Et(Math.round(n+a*t))+Et(Math.round(r+o*t))+Et(Math.round(i+u*t))}}function br(t,e){var n,r={},i={};for(n in t)n in e?r[n]=kr(t[n],e[n]):i[n]=t[n];for(n in e)n in t||(i[n]=e[n]);return function(t){for(n in r)i[n]=r[n](t);return i}}function Mr(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function wr(t,e){var n,r,i,a=vs.lastIndex=ys.lastIndex=0,o=-1,u=[],s=[];for(t+="",e+="";(n=vs.exec(t))&&(r=ys.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),u[o]?u[o]+=i:u[++o]=i),(n=n[0])===(r=r[0])?u[o]?u[o]+=r:u[++o]=r:(u[++o]=null,s.push({i:o,x:Mr(n,r)})),a=ys.lastIndex;return ar;++r)u[(n=s[r]).i]=n.x(t);return u.join("")})}function kr(t,e){for(var n,r=ho.interpolators.length;--r>=0&&!(n=ho.interpolators[r](t,e)););return n}function Er(t,e){var n,r=[],i=[],a=t.length,o=e.length,u=Math.min(t.length,e.length);for(n=0;u>n;++n)r.push(kr(t[n],e[n]));for(;a>n;++n)i[n]=t[n];for(;o>n;++n)i[n]=e[n];return function(t){for(n=0;u>n;++n)i[n]=r[n](t);return i}}function Sr(t){return function(e){return 0>=e?0:e>=1?1:t(e)}}function Ar(t){return function(e){return 1-t(1-e)}}function Tr(t){return function(e){return.5*(.5>e?t(2*e):2-t(2-2*e))}}function Or(t){return t*t}function Nr(t){return t*t*t}function Lr(t){if(0>=t)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(.5>t?n:3*(t-e)+n-.75)}function Cr(t){return function(e){return Math.pow(e,t)}}function Rr(t){return 1-Math.cos(t*Xo)}function Ir(t){return Math.pow(2,10*(t-1))}function Dr(t){return 1-Math.sqrt(1-t*t)}function Ur(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Bo*Math.asin(1/t):(t=1,n=e/4),function(r){return 1+t*Math.pow(2,-10*r)*Math.sin((r-n)*Bo/e)}}function Pr(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function zr(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function jr(t,e){t=ho.hcl(t),e=ho.hcl(e);var n=t.h,r=t.c,i=t.l,a=e.h-n,o=e.c-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.c:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return gt(n+a*t,r+o*t,i+u*t)+""}}function qr(t,e){t=ho.hsl(t),e=ho.hsl(e);var n=t.h,r=t.s,i=t.l,a=e.h-n,o=e.s-r,u=e.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?e.s:r),isNaN(a)?(a=0,n=isNaN(n)?e.h:n):a>180?a-=360:-180>a&&(a+=360),function(t){return dt(n+a*t,r+o*t,i+u*t)+""}}function $r(t,e){t=ho.lab(t),e=ho.lab(e);var n=t.l,r=t.a,i=t.b,a=e.l-n,o=e.a-r,u=e.b-i;return function(t){return vt(n+a*t,r+o*t,i+u*t)+""}}function Fr(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Yr(t){var e=[t.a,t.b],n=[t.c,t.d],r=Br(e),i=Hr(e,n),a=Br(Vr(n,e,-i))||0;e[0]*n[1]180?e+=360:e-t>180&&(t+=360),r.push({i:n.push(Xr(n)+"rotate(",null,")")-2,x:Mr(t,e)})):e&&n.push(Xr(n)+"rotate("+e+")")}function Zr(t,e,n,r){t!==e?r.push({i:n.push(Xr(n)+"skewX(",null,")")-2,x:Mr(t,e)}):e&&n.push(Xr(n)+"skewX("+e+")")}function Jr(t,e,n,r){if(t[0]!==e[0]||t[1]!==e[1]){var i=n.push(Xr(n)+"scale(",null,",",null,")");r.push({i:i-4,x:Mr(t[0],e[0])},{i:i-2,x:Mr(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(Xr(n)+"scale("+e+")")}function Qr(t,e){var n=[],r=[];return t=ho.transform(t),e=ho.transform(e),Wr(t.translate,e.translate,n,r),Gr(t.rotate,e.rotate,n,r),Zr(t.skew,e.skew,n,r),Jr(t.scale,e.scale,n,r),t=e=null,function(t){for(var e,i=-1,a=r.length;++i=0;)n.push(i[r])}function fi(t,e){for(var n=[t],r=[];null!=(t=n.pop());)if(r.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++on;++n)(e=t[n][1])>i&&(r=n,i=e);return r}function Mi(t){return t.reduce(wi,0)}function wi(t,e){return t+e[1]}function ki(t,e){return Ei(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Ei(t,e){for(var n=-1,r=+t[0],i=(t[1]-r)/e,a=[];++n<=e;)a[n]=i*n+r;return a}function Si(t){return[ho.min(t),ho.max(t)]}function Ai(t,e){return t.value-e.value}function Ti(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Oi(t,e){t._pack_next=e,e._pack_prev=t}function Ni(t,e){var n=e.x-t.x,r=e.y-t.y,i=t.r+e.r;return.999*i*i>n*n+r*r}function Li(t){function e(t){c=Math.min(t.x-t.r,c),f=Math.max(t.x+t.r,f),h=Math.min(t.y-t.r,h),d=Math.max(t.y+t.r,d)}if((n=t.children)&&(l=n.length)){var n,r,i,a,o,u,s,l,c=1/0,f=-(1/0),h=1/0,d=-(1/0);if(n.forEach(Ci),r=n[0],r.x=-r.r,r.y=0,e(r),l>1&&(i=n[1],i.x=i.r,i.y=0,e(i),l>2))for(a=n[2],Di(r,i,a),e(a),Ti(r,a),r._pack_prev=a,Ti(a,i),i=r._pack_next,o=3;l>o;o++){Di(r,i,a=n[o]);var p=0,g=1,m=1;for(u=i._pack_next;u!==i;u=u._pack_next,g++)if(Ni(u,a)){p=1;break}if(1==p)for(s=r._pack_prev;s!==u._pack_prev&&!Ni(s,a);s=s._pack_prev,m++);p?(m>g||g==m&&i.ro;o++)a=n[o],a.x-=v,a.y-=y,x=Math.max(x,a.r+Math.sqrt(a.x*a.x+a.y*a.y));t.r=x,n.forEach(Ri)}}function Ci(t){t._pack_next=t._pack_prev=t}function Ri(t){delete t._pack_next,delete t._pack_prev}function Ii(t,e,n,r){var i=t.children;if(t.x=e+=r*t.x,t.y=n+=r*t.y,t.r*=r,i)for(var a=-1,o=i.length;++a=0;)e=i[a],e.z+=n,e.m+=n,n+=e.s+(r+=e.c)}function $i(t,e,n){return t.a.parent===e.parent?t.a:n}function Fi(t){return 1+ho.max(t,function(t){return t.y})}function Yi(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Hi(t){var e=t.children;return e&&e.length?Hi(e[0]):t}function Bi(t){var e,n=t.children;return n&&(e=n.length)?Bi(n[e-1]):t}function Vi(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function Xi(t,e){var n=t.x+e[3],r=t.y+e[0],i=t.dx-e[1]-e[3],a=t.dy-e[0]-e[2];return 0>i&&(n+=i/2,i=0),0>a&&(r+=a/2,a=0),{x:n,y:r,dx:i,dy:a}}function Wi(t){var e=t[0],n=t[t.length-1];return n>e?[e,n]:[n,e]}function Gi(t){return t.rangeExtent?t.rangeExtent():Wi(t.range())}function Zi(t,e,n,r){var i=n(t[0],t[1]),a=r(e[0],e[1]);return function(t){return a(i(t))}}function Ji(t,e){var n,r=0,i=t.length-1,a=t[r],o=t[i];return a>o&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t}function Qi(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:Os}function Ki(t,e,n,r){var i=[],a=[],o=0,u=Math.min(t.length,e.length)-1;for(t[u]2?Ki:Zi,s=r?ti:Kr;return o=i(t,e,s,n),u=i(e,t,s,kr),a}function a(t){return o(t)}var o,u;return a.invert=function(t){return u(t)},a.domain=function(e){return arguments.length?(t=e.map(Number),i()):t},a.range=function(t){return arguments.length?(e=t,i()):e},a.rangeRound=function(t){return a.range(t).interpolate(Fr)},a.clamp=function(t){return arguments.length?(r=t,i()):r},a.interpolate=function(t){return arguments.length?(n=t,i()):n},a.ticks=function(e){return ia(t,e)},a.tickFormat=function(e,n){return aa(t,e,n)},a.nice=function(e){return na(t,e),i()},a.copy=function(){return ta(t,e,n,r)},i()}function ea(t,e){return ho.rebind(t,e,"range","rangeRound","interpolate","clamp")}function na(t,e){return Ji(t,Qi(ra(t,e)[2])),Ji(t,Qi(ra(t,e)[2])),t}function ra(t,e){null==e&&(e=10);var n=Wi(t),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/e)/Math.LN10)),a=e/r*i;return.15>=a?i*=10:.35>=a?i*=5:.75>=a&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+.5*i,n[2]=i,n}function ia(t,e){return ho.range.apply(ho,ra(t,e))}function aa(t,e,n){var r=ra(t,e);if(n){var i=vu.exec(n);if(i.shift(),"s"===i[8]){var a=ho.formatPrefix(Math.max(Eo(r[0]),Eo(r[1])));return i[7]||(i[7]="."+oa(a.scale(r[2]))),i[8]="f",n=ho.format(i.join("")),function(t){return n(a.scale(t))+a.symbol}}i[7]||(i[7]="."+ua(i[8],r)),n=i.join("")}else n=",."+oa(r[2])+"f";return ho.format(n)}function oa(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function ua(t,e){var n=oa(e[2]);return t in Ns?Math.abs(n-oa(Math.max(Eo(e[0]),Eo(e[1]))))+ +("e"!==t):n-2*("%"===t)}function sa(t,e,n,r){function i(t){return(n?Math.log(0>t?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((r=e.map(Number)).map(i)),o):r},o.base=function(n){return arguments.length?(e=+n,t.domain(r.map(i)),o):e},o.nice=function(){var e=Ji(r.map(i),n?Math:Cs);return t.domain(e),r=e.map(a),o},o.ticks=function(){var t=Wi(r),o=[],u=t[0],s=t[1],l=Math.floor(i(u)),c=Math.ceil(i(s)),f=e%1?2:e;if(isFinite(c-l)){if(n){for(;c>l;l++)for(var h=1;f>h;h++)o.push(a(l)*h);o.push(a(l))}else for(o.push(a(l));l++0;h--)o.push(a(l)*h);for(l=0;o[l]s;c--);o=o.slice(l,c)}return o},o.tickFormat=function(t,n){if(!arguments.length)return Ls;arguments.length<2?n=Ls:"function"!=typeof n&&(n=ho.format(n));var r=Math.max(1,e*t/o.ticks().length);return function(t){var o=t/a(Math.round(i(t)));return e-.5>o*e&&(o*=e),r>=o?n(t):""}},o.copy=function(){return sa(t.copy(),e,n,r)},ea(o,t)}function la(t,e,n){function r(e){return t(i(e))}var i=ca(e),a=ca(1/e);return r.invert=function(e){return a(t.invert(e))},r.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(i)),r):n},r.ticks=function(t){return ia(n,t)},r.tickFormat=function(t,e){return aa(n,t,e)},r.nice=function(t){return r.domain(na(n,t))},r.exponent=function(o){return arguments.length?(i=ca(e=o),a=ca(1/e),t.domain(n.map(i)),r):e},r.copy=function(){return la(t.copy(),e,n)},ea(r,t)}function ca(t){return function(e){return 0>e?-Math.pow(-e,t):Math.pow(e,t)}}function fa(t,e){function n(n){return a[((i.get(n)||("range"===e.t?i.set(n,t.push(n)):NaN))-1)%a.length]}function r(e,n){return ho.range(t.length).map(function(t){return e+n*t})}var i,a,o;return n.domain=function(r){if(!arguments.length)return t;t=[],i=new p;for(var a,o=-1,u=r.length;++on?[NaN,NaN]:[n>0?i[n-1]:t[0],ne?NaN:e/a+t,[e,e+1/a]},r.copy=function(){return da(t,e,n)},i()}function pa(t,e){function n(n){return n>=n?e[ho.bisect(t,n)]:void 0}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return pa(t,e)},n}function ga(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return ia(t,e)},e.tickFormat=function(e,n){return aa(t,e,n)},e.copy=function(){return ga(t)},e}function ma(){return 0}function va(t){return t.innerRadius}function ya(t){return t.outerRadius}function xa(t){return t.startAngle}function _a(t){return t.endAngle}function ba(t){return t&&t.padAngle}function Ma(t,e,n,r){return(t-n)*e-(e-r)*t>0?0:1}function wa(t,e,n,r,i){var a=t[0]-e[0],o=t[1]-e[1],u=(i?r:-r)/Math.sqrt(a*a+o*o),s=u*o,l=-u*a,c=t[0]+s,f=t[1]+l,h=e[0]+s,d=e[1]+l,p=(c+h)/2,g=(f+d)/2,m=h-c,v=d-f,y=m*m+v*v,x=n-r,_=c*d-h*f,b=(0>v?-1:1)*Math.sqrt(Math.max(0,x*x*y-_*_)),M=(_*v-m*b)/y,w=(-_*m-v*b)/y,k=(_*v+m*b)/y,E=(-_*m+v*b)/y,S=M-p,A=w-g,T=k-p,O=E-g;return S*S+A*A>T*T+O*O&&(M=k,w=E),[[M-s,w-l],[M*n/x,w*n/x]]}function ka(t){function e(e){function o(){l.push("M",a(t(c),u))}for(var s,l=[],c=[],f=-1,h=e.length,d=Lt(n),p=Lt(r);++f1?t.join("L"):t+"Z"}function Sa(t){return t.join("L")+"Z"}function Aa(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1&&i.push("H",r[0]),i.join("")}function Ta(t){for(var e=0,n=t.length,r=t[0],i=[r[0],",",r[1]];++e1){u=e[1],a=t[s],s++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-u[0])+","+(a[1]-u[1])+","+a[0]+","+a[1];for(var l=2;l9&&(i=3*e/Math.sqrt(i),o[u]=i*n,o[u+1]=i*r));for(u=-1;++u<=s;)i=(t[Math.min(s,u+1)][0]-t[Math.max(0,u-1)][0])/(6*(1+o[u]*o[u])),a.push([i||0,o[u]*i||0]);return a}function Ha(t){return t.length<3?Ea(t):t[0]+Ra(t,Ya(t))}function Ba(t){for(var e,n,r,i=-1,a=t.length;++i=e?o(t-e):void(l.c=o)}function o(n){var i=d.active,a=d[i];a&&(a.timer.c=null,a.timer.t=NaN,--d.count,delete d[i],a.event&&a.event.interrupt.call(t,t.__data__,a.index));for(var o in d)if(r>+o){var p=d[o];p.timer.c=null,p.timer.t=NaN,--d.count,delete d[o]}l.c=u,Ut(function(){return l.c&&u(n||1)&&(l.c=null,l.t=NaN),1},0,s),d.active=r,g.event&&g.event.start.call(t,t.__data__,e),h=[],g.tween.forEach(function(n,r){(r=r.call(t,t.__data__,e))&&h.push(r)}),f=g.ease,c=g.duration}function u(i){for(var a=i/c,o=f(a),u=h.length;u>0;)h[--u].call(t,o);return a>=1?(g.event&&g.event.end.call(t,t.__data__,e),--d.count?delete d[r]:delete t[n],1):void 0}var s,l,c,f,h,d=t[n]||(t[n]={active:0,count:0}),g=d[r];g||(s=i.time,l=Ut(a,0,s),g=d[r]={tween:new p,time:s,timer:l,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++d.count)}function ao(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate("+(isFinite(r)?r:n(t))+",0)"})}function oo(t,e,n){t.attr("transform",function(t){var r=e(t);return"translate(0,"+(isFinite(r)?r:n(t))+")"})}function uo(t){return t.toISOString()}function so(t,e,n){function r(e){return t(e)}function i(t,n){var r=t[1]-t[0],i=r/n,a=ho.bisect(rl,i);return a==rl.length?[e.year,ra(t.map(function(t){return t/31536e6}),n)[2]]:a?e[i/rl[a-1]1?{floor:function(e){for(;n(e=t.floor(e));)e=lo(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=lo(+e+1);return e}}:t))},r.ticks=function(t,e){var n=Wi(r.domain()),a=null==t?i(n,10):"number"==typeof t?i(n,t):!t.range&&[{range:t},e];return a&&(t=a[0],e=a[1]),t.range(n[0],lo(+n[1]+1),1>e?1:e)},r.tickFormat=function(){return n},r.copy=function(){return so(t.copy(),e,n)},ea(r,t)}function lo(t){return new Date(t)}function co(t){return JSON.parse(t.responseText)}function fo(t){var e=mo.createRange();return e.selectNode(mo.body),e.createContextualFragment(t.responseText)}var ho={version:"3.5.17"},po=[].slice,go=function(t){return po.call(t)},mo=this.document;if(mo)try{go(mo.documentElement.childNodes)[0].nodeType}catch(vo){go=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),mo)try{mo.createElement("DIV").style.setProperty("opacity",0,"")}catch(yo){var xo=this.Element.prototype,_o=xo.setAttribute,bo=xo.setAttributeNS,Mo=this.CSSStyleDeclaration.prototype,wo=Mo.setProperty;xo.setAttribute=function(t,e){_o.call(this,t,e+"")},xo.setAttributeNS=function(t,e,n){bo.call(this,t,e,n+"")},Mo.setProperty=function(t,e,n){wo.call(this,t,e+"",n)}}ho.ascending=u,ho.descending=function(t,e){return t>e?-1:e>t?1:e>=t?0:NaN},ho.min=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++ir&&(n=r)}else{for(;++i=r){n=r;break}for(;++ir&&(n=r)}return n},ho.max=function(t,e){var n,r,i=-1,a=t.length;if(1===arguments.length){for(;++i=r){n=r;break}for(;++in&&(n=r)}else{for(;++i=r){n=r;break}for(;++in&&(n=r)}return n},ho.extent=function(t,e){var n,r,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}else{for(;++a=r){n=i=r;break}for(;++ar&&(n=r),r>i&&(i=r))}return[n,i]},ho.sum=function(t,e){var n,r=0,i=t.length,a=-1;if(1===arguments.length)for(;++a1?o/(c-1):void 0},ho.deviation=function(){var t=ho.variance.apply(this,arguments);return t?Math.sqrt(t):t};var ko=c(u);ho.bisectLeft=ko.left,ho.bisect=ho.bisectRight=ko.right,ho.bisector=function(t){return c(1===t.length?function(e,n){return u(t(e),n)}:t)},ho.shuffle=function(t,e,n){(a=arguments.length)<3&&(n=t.length,2>a&&(e=0));for(var r,i,a=n-e;a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t},ho.permute=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]]; +return r},ho.pairs=function(t){for(var e,n=0,r=t.length-1,i=t[0],a=new Array(0>r?0:r);r>n;)a[n]=[e=i,i=t[++n]];return a},ho.transpose=function(t){if(!(i=t.length))return[];for(var e=-1,n=ho.min(t,f),r=new Array(n);++e=0;)for(r=t[i],e=r.length;--e>=0;)n[--o]=r[e];return n};var Eo=Math.abs;ho.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var r,i=[],a=h(Eo(n)),o=-1;if(t*=a,e*=a,n*=a,0>n)for(;(r=t+n*++o)>e;)i.push(r/a);else for(;(r=t+n*++o)=a.length)return r?r.call(i,o):n?o.sort(n):o;for(var s,l,c,f,h=-1,d=o.length,g=a[u++],m=new p;++h=a.length)return t;var r=[],i=o[n++];return t.forEach(function(t,i){r.push({key:t,values:e(i,n)})}),i?r.sort(function(t,e){return i(t.key,e.key)}):r}var n,r,i={},a=[],o=[];return i.map=function(e,n){return t(n,e,0)},i.entries=function(n){return e(t(ho.map,n,0),0)},i.key=function(t){return a.push(t),i},i.sortKeys=function(t){return o[a.length-1]=t,i},i.sortValues=function(t){return n=t,i},i.rollup=function(t){return r=t,i},i},ho.set=function(t){var e=new M;if(t)for(var n=0,r=t.length;r>n;++n)e.add(t[n]);return e},d(M,{has:v,add:function(t){return this._[g(t+="")]=!0,t},remove:y,values:x,size:_,empty:b,forEach:function(t){for(var e in this._)t.call(this,m(e))}}),ho.behavior={},ho.rebind=function(t,e){for(var n,r=1,i=arguments.length;++r=0&&(r=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(r):this[t].on(r,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(r,null);return this}},ho.event=null,ho.requote=function(t){return t.replace(Oo,"\\$&")};var Oo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,No={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Lo=function(t,e){return e.querySelector(t)},Co=function(t,e){return e.querySelectorAll(t)},Ro=function(t,e){var n=t.matches||t[E(t,"matchesSelector")];return(Ro=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Lo=function(t,e){return Sizzle(t,e)[0]||null},Co=Sizzle,Ro=Sizzle.matchesSelector),ho.selection=function(){return ho.select(mo.documentElement)};var Io=ho.selection.prototype=[];Io.select=function(t){var e,n,r,i,a=[];t=R(t);for(var o=-1,u=this.length;++o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Uo.hasOwnProperty(n)?{space:Uo[n],local:t}:t}},Io.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=ho.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(D(e,t[e]));return this}return this.each(D(t,e))},Io.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),r=(t=z(t)).length,i=-1;if(e=n.classList){for(;++ir){if("string"!=typeof t){2>r&&(e="");for(n in t)this.each($(n,t[n],e));return this}if(2>r){var i=this.node();return o(i).getComputedStyle(i,null).getPropertyValue(t)}n=""}return this.each($(t,e,n))},Io.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(F(e,t[e]));return this}return this.each(F(t,e))},Io.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Io.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Io.append=function(t){return t=Y(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Io.insert=function(t,e){return t=Y(t),e=R(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Io.remove=function(){return this.each(H)},Io.data=function(t,e){function n(t,n){var r,i,a,o=t.length,c=n.length,f=Math.min(o,c),h=new Array(c),d=new Array(c),g=new Array(o);if(e){var m,v=new p,y=new Array(o);for(r=-1;++rr;++r)d[r]=B(n[r]);for(;o>r;++r)g[r]=t[r]}d.update=h,d.parentNode=h.parentNode=g.parentNode=t.parentNode,u.push(d),s.push(h),l.push(g)}var r,i,a=-1,o=this.length;if(!arguments.length){for(t=new Array(o=(r=this[0]).length);++aa;a++){i.push(e=[]),e.parentNode=(n=this[a]).parentNode;for(var u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return C(i)},Io.order=function(){for(var t=-1,e=this.length;++t=0;)(n=r[i])&&(a&&a!==n.nextSibling&&a.parentNode.insertBefore(n,a),a=n);return this},Io.sort=function(t){t=X.apply(this,arguments);for(var e=-1,n=this.length;++et;t++)for(var n=this[t],r=0,i=n.length;i>r;r++){var a=n[r];if(a)return a}return null},Io.size=function(){var t=0;return W(this,function(){++t}),t};var Po=[];ho.selection.enter=G,ho.selection.enter.prototype=Po,Po.append=Io.append,Po.empty=Io.empty,Po.node=Io.node,Po.call=Io.call,Po.size=Io.size,Po.select=function(t){for(var e,n,r,i,a,o=[],u=-1,s=this.length;++ur){if("string"!=typeof t){2>r&&(e=!1);for(n in t)this.each(J(n,t[n],e));return this}if(2>r)return(r=this.node()["__on"+t])&&r._;n=!1}return this.each(J(t,e,n))};var zo=ho.map({mouseenter:"mouseover",mouseleave:"mouseout"});mo&&zo.forEach(function(t){"on"+t in mo&&zo.remove(t)});var jo,qo=0;ho.mouse=function(t){return et(t,N())};var $o=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ho.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=N().changedTouches),e)for(var r,i=0,a=e.length;a>i;++i)if((r=e[i]).identifier===n)return et(t,r)},ho.behavior.drag=function(){function t(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(t,e,i,a,o){return function(){function u(){var t,n,r=e(h,g);r&&(t=r[0]-x[0],n=r[1]-x[1],p|=t|n,x=r,d({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:t,dy:n}))}function s(){e(h,g)&&(v.on(a+m,null).on(o+m,null),y(p),d({type:"dragend"}))}var l,c=this,f=ho.event.target.correspondingElement||ho.event.target,h=c.parentNode,d=n.of(c,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=ho.select(i(f)).on(a+m,u).on(o+m,s),y=tt(f),x=e(h,g);r?(l=r.apply(c,arguments),l=[l.x-x[0],l.y-x[1]]):l=[0,0],d({type:"dragstart"})}}var n=L(t,"drag","dragstart","dragend"),r=null,i=e(S,ho.mouse,o,"mousemove","mouseup"),a=e(nt,ho.touch,w,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},ho.rebind(t,n,"on")},ho.touches=function(t,e){return arguments.length<2&&(e=N().touches),e?go(e).map(function(e){var n=et(t,e);return n.identifier=e.identifier,n}):[]};var Fo=1e-6,Yo=Fo*Fo,Ho=Math.PI,Bo=2*Ho,Vo=Bo-Fo,Xo=Ho/2,Wo=Ho/180,Go=180/Ho,Zo=Math.SQRT2,Jo=2,Qo=4;ho.interpolateZoom=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],u=e[0],s=e[1],l=e[2],c=u-i,f=s-a,h=c*c+f*f;if(Yo>h)r=Math.log(l/o)/Zo,n=function(t){return[i+t*c,a+t*f,o*Math.exp(Zo*t*r)]};else{var d=Math.sqrt(h),p=(l*l-o*o+Qo*h)/(2*o*Jo*d),g=(l*l-o*o-Qo*h)/(2*l*Jo*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Zo,n=function(t){var e=t*r,n=st(m),u=o/(Jo*d)*(n*lt(Zo*e+m)-ut(m));return[i+u*c,a+u*f,o*n/st(Zo*e+m)]}}return n.duration=1e3*r,n},ho.behavior.zoom=function(){function t(t){t.on(N,f).on(tu+".zoom",d).on("dblclick.zoom",p).on(I,h)}function e(t){return[(t[0]-k.x)/k.k,(t[1]-k.y)/k.k]}function n(t){return[t[0]*k.k+k.x,t[1]*k.k+k.y]}function r(t){k.k=Math.max(S[0],Math.min(S[1],t))}function i(t,e){e=n(e),k.x+=t[0]-e[0],k.y+=t[1]-e[1]}function a(e,n,a,o){e.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),i(m=n,a),e=ho.select(e),A>0&&(e=e.transition().duration(A)),e.call(t.event)}function u(){b&&b.domain(_.range().map(function(t){return(t-k.x)/k.k}).map(_.invert)),w&&w.domain(M.range().map(function(t){return(t-k.y)/k.k}).map(M.invert))}function s(t){T++||t({type:"zoomstart"})}function l(t){u(),t({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function c(t){--T||(t({type:"zoomend"}),m=null)}function f(){function t(){u=1,i(ho.mouse(r),h),l(a)}function n(){f.on(C,null).on(R,null),d(u),c(a)}var r=this,a=D.of(r,arguments),u=0,f=ho.select(o(r)).on(C,t).on(R,n),h=e(ho.mouse(r)),d=tt(r);Xs.call(r),s(a)}function h(){function t(){var t=ho.touches(p);return d=k.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=e(t))}),t}function n(){var e=ho.event.target;ho.select(e).on(_,o).on(b,u),M.push(e);for(var n=ho.event.changedTouches,r=0,i=n.length;i>r;++r)m[n[r].identifier]=null;var s=t(),l=Date.now();if(1===s.length){if(500>l-x){var c=s[0];a(p,c,m[c.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),O()}x=l}else if(s.length>1){var c=s[0],f=s[1],h=c[0]-f[0],d=c[1]-f[1];v=h*h+d*d}}function o(){var t,e,n,a,o=ho.touches(p);Xs.call(p);for(var u=0,s=o.length;s>u;++u,a=null)if(n=o[u],a=m[n.identifier]){if(e)break;t=n,e=a}if(a){var c=(c=n[0]-t[0])*c+(c=n[1]-t[1])*c,f=v&&Math.sqrt(c/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+a[0])/2,(e[1]+a[1])/2],r(f*d)}x=null,i(t,e),l(g)}function u(){if(ho.event.touches.length){for(var e=ho.event.changedTouches,n=0,r=e.length;r>n;++n)delete m[e[n].identifier];for(var i in m)return void t()}ho.selectAll(M).on(y,null),w.on(N,f).on(I,h),E(),c(g)}var d,p=this,g=D.of(p,arguments),m={},v=0,y=".zoom-"+ho.event.changedTouches[0].identifier,_="touchmove"+y,b="touchend"+y,M=[],w=ho.select(p),E=tt(p);n(),s(g),w.on(N,null).on(I,n)}function d(){var t=D.of(this,arguments);y?clearTimeout(y):(Xs.call(this),g=e(m=v||ho.mouse(this)),s(t)),y=setTimeout(function(){y=null,c(t)},50),O(),r(Math.pow(2,.002*Ko())*k.k),i(m,g),l(t)}function p(){var t=ho.mouse(this),n=Math.log(k.k)/Math.LN2;a(this,t,e(t),ho.event.shiftKey?Math.ceil(n)-1:Math.floor(n)+1)}var g,m,v,y,x,_,b,M,w,k={x:0,y:0,k:1},E=[960,500],S=eu,A=250,T=0,N="mousedown.zoom",C="mousemove.zoom",R="mouseup.zoom",I="touchstart.zoom",D=L(t,"zoomstart","zoom","zoomend");return tu||(tu="onwheel"in mo?(Ko=function(){return-ho.event.deltaY*(ho.event.deltaMode?120:1)},"wheel"):"onmousewheel"in mo?(Ko=function(){return ho.event.wheelDelta},"mousewheel"):(Ko=function(){return-ho.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=D.of(this,arguments),e=k;Bs?ho.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},s(t)}).tween("zoom:zoom",function(){var n=E[0],r=E[1],i=m?m[0]:n/2,a=m?m[1]:r/2,o=ho.interpolateZoom([(i-k.x)/k.k,(a-k.y)/k.k,n/k.k],[(i-e.x)/e.k,(a-e.y)/e.k,n/e.k]);return function(e){var r=o(e),u=n/r[2];this.__chart__=k={x:i-r[0]*u,y:a-r[1]*u,k:u},l(t)}}).each("interrupt.zoom",function(){c(t)}).each("end.zoom",function(){c(t)}):(this.__chart__=k,s(t),l(t),c(t))})},t.translate=function(e){return arguments.length?(k={x:+e[0],y:+e[1],k:k.k},u(),t):[k.x,k.y]},t.scale=function(e){return arguments.length?(k={x:k.x,y:k.y,k:null},r(+e),u(),t):k.k},t.scaleExtent=function(e){return arguments.length?(S=null==e?eu:[+e[0],+e[1]],t):S},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(E=e&&[+e[0],+e[1]],t):E},t.duration=function(e){return arguments.length?(A=+e,t):A},t.x=function(e){return arguments.length?(b=e,_=e.copy(),k={x:0,y:0,k:1},t):b},t.y=function(e){return arguments.length?(w=e,M=e.copy(),k={x:0,y:0,k:1},t):w},ho.rebind(t,D,"on")};var Ko,tu,eu=[0,1/0];ho.color=ft,ft.prototype.toString=function(){return this.rgb()+""},ho.hsl=ht;var nu=ht.prototype=new ft;nu.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,this.l/t)},nu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new ht(this.h,this.s,t*this.l)},nu.rgb=function(){return dt(this.h,this.s,this.l)},ho.hcl=pt;var ru=pt.prototype=new ft;ru.brighter=function(t){return new pt(this.h,this.c,Math.min(100,this.l+iu*(arguments.length?t:1)))},ru.darker=function(t){return new pt(this.h,this.c,Math.max(0,this.l-iu*(arguments.length?t:1)))},ru.rgb=function(){return gt(this.h,this.c,this.l).rgb()},ho.lab=mt;var iu=18,au=.95047,ou=1,uu=1.08883,su=mt.prototype=new ft;su.brighter=function(t){return new mt(Math.min(100,this.l+iu*(arguments.length?t:1)),this.a,this.b)},su.darker=function(t){return new mt(Math.max(0,this.l-iu*(arguments.length?t:1)),this.a,this.b)},su.rgb=function(){return vt(this.l,this.a,this.b)},ho.rgb=Mt;var lu=Mt.prototype=new ft;lu.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,r=this.b,i=30;return e||n||r?(e&&i>e&&(e=i),n&&i>n&&(n=i),r&&i>r&&(r=i),new Mt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,r/t))):new Mt(i,i,i)},lu.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Mt(t*this.r,t*this.g,t*this.b)},lu.hsl=function(){return At(this.r,this.g,this.b)},lu.toString=function(){return"#"+Et(this.r)+Et(this.g)+Et(this.b)};var cu=ho.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});cu.forEach(function(t,e){cu.set(t,wt(e))}),ho.functor=Lt,ho.xhr=Ct(w),ho.dsv=function(t,e){function n(t,n,a){arguments.length<3&&(a=n,n=null);var o=Rt(t,e,null==n?r:i(n),a);return o.row=function(t){return arguments.length?o.response(null==(n=t)?r:i(t)):n},o}function r(t){return n.parse(t.responseText)}function i(t){return function(e){return n.parse(e.responseText,t)}}function a(e){return e.map(o).join(t)}function o(t){return u.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var u=new RegExp('["'+t+"\n]"),s=t.charCodeAt(0);return n.parse=function(t,e){var r;return n.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");r=e?function(t,n){return e(i(t),n)}:i})},n.parseRows=function(t,e){function n(){if(c>=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var n=e;n++c;){var r=t.charCodeAt(c++),u=1;if(10===r)i=!0;else if(13===r)i=!0,10===t.charCodeAt(c)&&(++c,++u);else if(r!==s)continue;return t.slice(e,c-u)}return t.slice(e)}for(var r,i,a={},o={},u=[],l=t.length,c=0,f=0;(r=n())!==o;){for(var h=[];r!==a&&r!==o;)h.push(r),r=n();e&&null==(h=e(h,f++))||u.push(h)}return u},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var r=new M,i=[];return e.forEach(function(t){for(var e in t)r.has(e)||i.push(r.add(e))}),[i.map(o).join(t)].concat(e.map(function(e){return i.map(function(t){return o(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(a).join("\n")},n},ho.csv=ho.dsv(",","text/csv"),ho.tsv=ho.dsv(" ","text/tab-separated-values");var fu,hu,du,pu,gu=this[E(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};ho.timer=function(){Ut.apply(this,arguments)},ho.timer.flush=function(){zt(),jt()},ho.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var mu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map($t);ho.formatPrefix=function(t,e){var n=0;return(t=+t)&&(0>t&&(t*=-1),e&&(t=ho.round(t,qt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),mu[8+n/3]};var vu=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,yu=ho.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=ho.round(t,qt(t,e))).toFixed(Math.max(0,Math.min(20,qt(t*(1+1e-15),e))))}}),xu=ho.time={},_u=Date;Ht.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(){bu.setUTCDate.apply(this._,arguments)},setDay:function(){bu.setUTCDay.apply(this._,arguments)},setFullYear:function(){bu.setUTCFullYear.apply(this._,arguments)},setHours:function(){bu.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){bu.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){bu.setUTCMinutes.apply(this._,arguments)},setMonth:function(){bu.setUTCMonth.apply(this._,arguments)},setSeconds:function(){bu.setUTCSeconds.apply(this._,arguments)},setTime:function(){bu.setTime.apply(this._,arguments)}};var bu=Date.prototype;xu.year=Bt(function(t){return t=xu.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),xu.years=xu.year.range,xu.years.utc=xu.year.utc.range,xu.day=Bt(function(t){var e=new _u(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),xu.days=xu.day.range,xu.days.utc=xu.day.utc.range,xu.dayOfYear=function(t){var e=xu.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=xu[t]=Bt(function(t){return(t=xu.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});xu[t+"s"]=n.range,xu[t+"s"].utc=n.utc.range,xu[t+"OfYear"]=function(t){var n=xu.year(t).getDay();return Math.floor((xu.dayOfYear(t)+(n+e)%7)/7)}}),xu.week=xu.sunday,xu.weeks=xu.sunday.range,xu.weeks.utc=xu.sunday.utc.range,xu.weekOfYear=xu.sundayOfYear;var Mu={"-":"",_:" ",0:"0"},wu=/^\s*\d+/,ku=/^%/;ho.locale=function(t){return{numberFormat:Ft(t),timeFormat:Xt(t)}};var Eu=ho.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",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"]});ho.format=Eu.numberFormat,ho.geo={},pe.prototype={s:0,t:0,add:function(t){ge(t,this.t,Su),ge(Su.s,this.s,this),this.s?this.t+=Su.t:this.s=Su.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Su=new pe;ho.geo.stream=function(t,e){t&&Au.hasOwnProperty(t.type)?Au[t.type](t,e):me(t,e)};var Au={Feature:function(t,e){me(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++rt?4*Ho+t:t,Lu.lineStart=Lu.lineEnd=Lu.point=S}};ho.geo.bounds=function(){function t(t,e){x.push(_=[c=t,h=t]),f>e&&(f=e),e>d&&(d=e)}function e(e,n){var r=_e([e*Wo,n*Wo]);if(v){var i=Me(v,r),a=[i[1],-i[0],0],o=Me(a,i);Ee(o),o=Se(o);var s=e-p,l=s>0?1:-1,g=o[0]*Go*l,m=Eo(s)>180;if(m^(g>l*p&&l*e>g)){var y=o[1]*Go;y>d&&(d=y)}else if(g=(g+360)%360-180,m^(g>l*p&&l*e>g)){var y=-o[1]*Go;f>y&&(f=y)}else f>n&&(f=n),n>d&&(d=n);m?p>e?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e):h>=c?(c>e&&(c=e),e>h&&(h=e)):e>p?u(c,e)>u(c,h)&&(h=e):u(e,h)>u(c,h)&&(c=e)}else t(e,n);v=r,p=e}function n(){b.point=e}function r(){_[0]=c,_[1]=h,b.point=t,v=null}function i(t,n){if(v){var r=t-p;y+=Eo(r)>180?r+(r>0?360:-360):r}else g=t,m=n;Lu.point(t,n),e(t,n)}function a(){Lu.lineStart()}function o(){i(g,m),Lu.lineEnd(),Eo(y)>Fo&&(c=-(h=180)),_[0]=c,_[1]=h,v=null}function u(t,e){return(e-=t)<0?e+360:e}function s(t,e){return t[0]-e[0]}function l(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tNu?(c=-(h=180),f=-(d=90)):y>Fo?d=90:-Fo>y&&(f=-90),_[0]=c,_[1]=h}};return function(t){d=h=-(c=f=1/0),x=[],ho.geo.stream(t,b);var e=x.length;if(e){x.sort(s);for(var n,r=1,i=x[0],a=[i];e>r;++r)n=x[r],l(n[0],i)||l(n[1],i)?(u(i[0],n[1])>u(i[0],i[1])&&(i[1]=n[1]),u(n[0],i[1])>u(i[0],i[1])&&(i[0]=n[0])):a.push(i=n);for(var o,n,p=-(1/0),e=a.length-1,r=0,i=a[e];e>=r;i=n,++r)n=a[r],(o=u(i[1],n[0]))>p&&(p=o,c=n[0],h=i[1])}return x=_=null,c===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[c,f],[h,d]]}}(),ho.geo.centroid=function(t){Cu=Ru=Iu=Du=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,Yu);var e=qu,n=$u,r=Fu,i=e*e+n*n+r*r;return Yo>i&&(e=Pu,n=zu,r=ju,Fo>Ru&&(e=Iu,n=Du,r=Uu),i=e*e+n*n+r*r,Yo>i)?[NaN,NaN]:[Math.atan2(n,e)*Go,ot(r/Math.sqrt(i))*Go]};var Cu,Ru,Iu,Du,Uu,Pu,zu,ju,qu,$u,Fu,Yu={sphere:S,point:Te,lineStart:Ne,lineEnd:Le,polygonStart:function(){Yu.lineStart=Ce},polygonEnd:function(){Yu.lineStart=Ne}},Hu=ze(Ie,Fe,He,[-Ho,-Ho/2]),Bu=1e9;ho.geo.clipExtent=function(){var t,e,n,r,i,a,o={stream:function(t){return i&&(i.valid=!1),i=a(t),i.valid=!0,i},extent:function(u){return arguments.length?(a=We(t=+u[0][0],e=+u[0][1],n=+u[1][0],r=+u[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[n,r]]}};return o.extent([[0,0],[960,500]])},(ho.geo.conicEqualArea=function(){return Ge(Ze)}).raw=Ze,ho.geo.albers=function(){return ho.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ho.geo.albersUsa=function(){function t(t){var a=t[0],o=t[1];return e=null,n(a,o),e||(r(a,o),e)||i(a,o),e}var e,n,r,i,a=ho.geo.albers(),o=ho.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=ho.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?u:a).invert(t)},t.stream=function(t){var e=a.stream(t),n=o.stream(t),r=u.stream(t);return{point:function(t,i){e.point(t,i),n.point(t,i),r.point(t,i)},sphere:function(){e.sphere(),n.sphere(),r.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),r.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),r.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),r.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),r.polygonEnd()}}},t.precision=function(e){return arguments.length?(a.precision(e),o.precision(e),u.precision(e),t):a.precision()},t.scale=function(e){return arguments.length?(a.scale(e),o.scale(.35*e),u.scale(e),t.translate(a.translate())):a.scale()},t.translate=function(e){if(!arguments.length)return a.translate();var l=a.scale(),c=+e[0],f=+e[1];return n=a.translate(e).clipExtent([[c-.455*l,f-.238*l],[c+.455*l,f+.238*l]]).stream(s).point,r=o.translate([c-.307*l,f+.201*l]).clipExtent([[c-.425*l+Fo,f+.12*l+Fo],[c-.214*l-Fo,f+.234*l-Fo]]).stream(s).point,i=u.translate([c-.205*l,f+.212*l]).clipExtent([[c-.214*l+Fo,f+.166*l+Fo],[c-.115*l-Fo,f+.234*l-Fo]]).stream(s).point,t},t.scale(1070)};var Vu,Xu,Wu,Gu,Zu,Ju,Qu={point:S,lineStart:S,lineEnd:S,polygonStart:function(){Xu=0,Qu.lineStart=Je},polygonEnd:function(){Qu.lineStart=Qu.lineEnd=Qu.point=S,Vu+=Eo(Xu/2)}},Ku={point:Qe,lineStart:S,lineEnd:S,polygonStart:S,polygonEnd:S},ts={point:en,lineStart:nn,lineEnd:rn,polygonStart:function(){ts.lineStart=an},polygonEnd:function(){ts.point=en,ts.lineStart=nn,ts.lineEnd=rn}};ho.geo.path=function(){function t(t){return t&&("function"==typeof u&&a.pointRadius(+u.apply(this,arguments)),o&&o.valid||(o=i(a)),ho.geo.stream(t,o)),a.result()}function e(){return o=null,t}var n,r,i,a,o,u=4.5;return t.area=function(t){return Vu=0,ho.geo.stream(t,i(Qu)),Vu},t.centroid=function(t){return Iu=Du=Uu=Pu=zu=ju=qu=$u=Fu=0,ho.geo.stream(t,i(ts)),Fu?[qu/Fu,$u/Fu]:ju?[Pu/ju,zu/ju]:Uu?[Iu/Uu,Du/Uu]:[NaN,NaN]},t.bounds=function(t){return Zu=Ju=-(Wu=Gu=1/0),ho.geo.stream(t,i(Ku)),[[Wu,Gu],[Zu,Ju]]},t.projection=function(t){return arguments.length?(i=(n=t)?t.stream||sn(t):w,e()):n},t.context=function(t){return arguments.length?(a=null==(r=t)?new Ke:new on(t),"function"!=typeof u&&a.pointRadius(u),e()):r},t.pointRadius=function(e){return arguments.length?(u="function"==typeof e?e:(a.pointRadius(+e),+e),t):u},t.projection(ho.geo.albersUsa()).context(null)},ho.geo.transform=function(t){ +return{stream:function(e){var n=new ln(e);for(var r in t)n[r]=t[r];return n}}},ln.prototype={point:function(t,e){this.stream.point(t,e)},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()}},ho.geo.projection=fn,ho.geo.projectionMutator=hn,(ho.geo.equirectangular=function(){return fn(pn)}).raw=pn.invert=pn,ho.geo.rotation=function(t){function e(e){return e=t(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e}return t=mn(t[0]%360*Wo,t[1]*Wo,t.length>2?t[2]*Wo:0),e.invert=function(e){return e=t.invert(e[0]*Wo,e[1]*Wo),e[0]*=Go,e[1]*=Go,e},e},gn.invert=pn,ho.geo.circle=function(){function t(){var t="function"==typeof r?r.apply(this,arguments):r,e=mn(-t[0]*Wo,-t[1]*Wo,0).invert,i=[];return n(null,null,1,{point:function(t,n){i.push(t=e(t,n)),t[0]*=Go,t[1]*=Go}}),{type:"Polygon",coordinates:[i]}}var e,n,r=[0,0],i=6;return t.origin=function(e){return arguments.length?(r=e,t):r},t.angle=function(r){return arguments.length?(n=_n((e=+r)*Wo,i*Wo),t):e},t.precision=function(r){return arguments.length?(n=_n(e*Wo,(i=+r)*Wo),t):i},t.angle(90)},ho.geo.distance=function(t,e){var n,r=(e[0]-t[0])*Wo,i=t[1]*Wo,a=e[1]*Wo,o=Math.sin(r),u=Math.cos(r),s=Math.sin(i),l=Math.cos(i),c=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((n=f*o)*n+(n=l*c-s*f*u)*n),s*c+l*f*u)},ho.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return ho.range(Math.ceil(a/m)*m,i,m).map(h).concat(ho.range(Math.ceil(l/v)*v,s,v).map(d)).concat(ho.range(Math.ceil(r/p)*p,n,p).filter(function(t){return Eo(t%m)>Fo}).map(c)).concat(ho.range(Math.ceil(u/g)*g,o,g).filter(function(t){return Eo(t%v)>Fo}).map(f))}var n,r,i,a,o,u,s,l,c,f,h,d,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(a).concat(d(s).slice(1),h(i).reverse().slice(1),d(l).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(a=+e[0][0],i=+e[1][0],l=+e[0][1],s=+e[1][1],a>i&&(e=a,a=i,i=e),l>s&&(e=l,l=s,s=e),t.precision(y)):[[a,l],[i,s]]},t.minorExtent=function(e){return arguments.length?(r=+e[0][0],n=+e[1][0],u=+e[0][1],o=+e[1][1],r>n&&(e=r,r=n,n=e),u>o&&(e=u,u=o,o=e),t.precision(y)):[[r,u],[n,o]]},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,c=Mn(u,o,90),f=wn(r,n,y),h=Mn(l,s,90),d=wn(a,i,y),t):y},t.majorExtent([[-180,-90+Fo],[180,90-Fo]]).minorExtent([[-180,-80-Fo],[180,80+Fo]])},ho.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||r.apply(this,arguments),n||i.apply(this,arguments)]}}var e,n,r=kn,i=En;return t.distance=function(){return ho.geo.distance(e||r.apply(this,arguments),n||i.apply(this,arguments))},t.source=function(n){return arguments.length?(r=n,e="function"==typeof n?null:n,t):r},t.target=function(e){return arguments.length?(i=e,n="function"==typeof e?null:e,t):i},t.precision=function(){return arguments.length?t:0},t},ho.geo.interpolate=function(t,e){return Sn(t[0]*Wo,t[1]*Wo,e[0]*Wo,e[1]*Wo)},ho.geo.length=function(t){return es=0,ho.geo.stream(t,ns),es};var es,ns={sphere:S,point:S,lineStart:An,lineEnd:S,polygonStart:S,polygonEnd:S},rs=Tn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(ho.geo.azimuthalEqualArea=function(){return fn(rs)}).raw=rs;var is=Tn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},w);(ho.geo.azimuthalEquidistant=function(){return fn(is)}).raw=is,(ho.geo.conicConformal=function(){return Ge(On)}).raw=On,(ho.geo.conicEquidistant=function(){return Ge(Nn)}).raw=Nn;var as=Tn(function(t){return 1/t},Math.atan);(ho.geo.gnomonic=function(){return fn(as)}).raw=as,Ln.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Xo]},(ho.geo.mercator=function(){return Cn(Ln)}).raw=Ln;var os=Tn(function(){return 1},Math.asin);(ho.geo.orthographic=function(){return fn(os)}).raw=os;var us=Tn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(ho.geo.stereographic=function(){return fn(us)}).raw=us,Rn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Xo]},(ho.geo.transverseMercator=function(){var t=Cn(Rn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Rn,ho.geom={},ho.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,i=Lt(n),a=Lt(r),o=t.length,u=[],s=[];for(e=0;o>e;e++)u.push([+i.call(this,t[e],e),+a.call(this,t[e],e),e]);for(u.sort(Pn),e=0;o>e;e++)s.push([u[e][0],-u[e][1]]);var l=Un(u),c=Un(s),f=c[0]===l[0],h=c[c.length-1]===l[l.length-1],d=[];for(e=l.length-1;e>=0;--e)d.push(t[u[l[e]][2]]);for(e=+f;e=r&&l.x<=a&&l.y>=i&&l.y<=o?[[r,o],[a,o],[a,i],[r,i]]:[];c.point=t[u]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(a(t,e)/Fo)*Fo,y:Math.round(o(t,e)/Fo)*Fo,i:e}})}var r=In,i=Dn,a=r,o=i,u=ms;return t?e(t):(e.links=function(t){return hr(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return hr(n(t)).cells.forEach(function(n,r){for(var i,a,o=n.site,u=n.edges.sort(Zn),s=-1,l=u.length,c=u[l-1].edge,f=c.l===o?c.r:c.l;++s=l,h=r>=c,d=h<<1|f;t.leaf=!1,t=t.nodes[d]||(t.nodes[d]=vr()),f?i=l:u=l,h?o=c:s=c,a(t,e,n,r,i,o,u,s)}var c,f,h,d,p,g,m,v,y,x=Lt(u),_=Lt(s);if(null!=e)g=e,m=n,v=r,y=i;else if(v=y=-(g=m=1/0),f=[],h=[],p=t.length,o)for(d=0;p>d;++d)c=t[d],c.xv&&(v=c.x),c.y>y&&(y=c.y),f.push(c.x),h.push(c.y);else for(d=0;p>d;++d){var b=+x(c=t[d],d),M=+_(c,d);g>b&&(g=b),m>M&&(m=M),b>v&&(v=b),M>y&&(y=M),f.push(b),h.push(M)}var w=v-g,k=y-m;w>k?y=m+w:v=g+k;var E=vr();if(E.add=function(t){a(E,t,+x(t,++d),+_(t,d),g,m,v,y)},E.visit=function(t){yr(t,E,g,m,v,y)},E.find=function(t){return xr(E,t[0],t[1],g,m,v,y)},d=-1,null==e){for(;++d=0?t.slice(0,e):t,r=e>=0?t.slice(e+1):"in";return n=_s.get(n)||xs,r=bs.get(r)||w,Sr(r(n.apply(null,po.call(arguments,1))))},ho.interpolateHcl=jr,ho.interpolateHsl=qr,ho.interpolateLab=$r,ho.interpolateRound=Fr,ho.transform=function(t){var e=mo.createElementNS(ho.ns.prefix.svg,"g");return(ho.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Yr(n?n.matrix:Ms)})(t)},Yr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Ms={a:1,b:0,c:0,d:1,e:0,f:0};ho.interpolateTransform=Qr,ho.layout={},ho.layout.bundle=function(){return function(t){for(var e=[],n=-1,r=t.length;++nu*u/v){if(g>s){var l=e.charge/s;t.px-=a*l,t.py-=o*l}return!0}if(e.point&&s&&g>s){var l=e.pointCharge/s;t.px-=a*l,t.py-=o*l}}return!e.charge}}function e(t){t.px=ho.event.x,t.py=ho.event.y,s.resume()}var n,r,i,a,o,u,s={},l=ho.dispatch("start","tick","end"),c=[1,1],f=.9,h=ws,d=ks,p=-30,g=Es,m=.1,v=.64,y=[],x=[];return s.tick=function(){if((i*=.99)<.005)return n=null,l.end({type:"end",alpha:i=0}),!0;var e,r,s,h,d,g,v,_,b,M=y.length,w=x.length;for(r=0;w>r;++r)s=x[r],h=s.source,d=s.target,_=d.x-h.x,b=d.y-h.y,(g=_*_+b*b)&&(g=i*o[r]*((g=Math.sqrt(g))-a[r])/g,_*=g,b*=g,d.x-=_*(v=h.weight+d.weight?h.weight/(h.weight+d.weight):.5),d.y-=b*v,h.x+=_*(v=1-v),h.y+=b*v);if((v=i*m)&&(_=c[0]/2,b=c[1]/2,r=-1,v))for(;++r0?i=t:(n.c=null,n.t=NaN,n=null,l.end({type:"end",alpha:i=0})):t>0&&(l.start({type:"start",alpha:i=t}),n=Ut(s.tick)),s):i},s.start=function(){function t(t,r){if(!n){for(n=new Array(i),s=0;i>s;++s)n[s]=[];for(s=0;l>s;++s){var a=x[s];n[a.source.index].push(a.target),n[a.target.index].push(a.source)}}for(var o,u=n[e],s=-1,c=u.length;++se;++e)(r=y[e]).index=e,r.weight=0;for(e=0;l>e;++e)r=x[e],"number"==typeof r.source&&(r.source=y[r.source]),"number"==typeof r.target&&(r.target=y[r.target]),++r.source.weight,++r.target.weight;for(e=0;i>e;++e)r=y[e],isNaN(r.x)&&(r.x=t("x",f)),isNaN(r.y)&&(r.y=t("y",g)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(a=[],"function"==typeof h)for(e=0;l>e;++e)a[e]=+h.call(this,x[e],e);else for(e=0;l>e;++e)a[e]=h;if(o=[],"function"==typeof d)for(e=0;l>e;++e)o[e]=+d.call(this,x[e],e);else for(e=0;l>e;++e)o[e]=d;if(u=[],"function"==typeof p)for(e=0;i>e;++e)u[e]=+p.call(this,y[e],e);else for(e=0;i>e;++e)u[e]=p;return s.resume()},s.resume=function(){return s.alpha(.1)},s.stop=function(){return s.alpha(0)},s.drag=function(){return r||(r=ho.behavior.drag().origin(w).on("dragstart.force",ii).on("drag.force",e).on("dragend.force",ai)),arguments.length?void this.on("mouseover.force",oi).on("mouseout.force",ui).call(r):r},ho.rebind(s,l,"on")};var ws=20,ks=1,Es=1/0;ho.layout.hierarchy=function(){function t(i){var a,o=[i],u=[];for(i.depth=0;null!=(a=o.pop());)if(u.push(a),(l=n.call(t,a,a.depth))&&(s=l.length)){for(var s,l,c;--s>=0;)o.push(c=l[s]),c.parent=a,c.depth=a.depth+1;r&&(a.value=0),a.children=l}else r&&(a.value=+r.call(t,a,a.depth)||0),delete a.children;return fi(i,function(t){var n,i;e&&(n=t.children)&&n.sort(e),r&&(i=t.parent)&&(i.value+=t.value)}),u}var e=pi,n=hi,r=di;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(r=e,t):r},t.revalue=function(e){return r&&(ci(e,function(t){t.children&&(t.value=0)}),fi(e,function(e){var n;e.children||(e.value=+r.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},ho.layout.partition=function(){function t(e,n,r,i){var a=e.children;if(e.x=n,e.y=e.depth*i,e.dx=r,e.dy=i,a&&(o=a.length)){var o,u,s,l=-1;for(r=e.value?r/e.value:0;++lf?-1:1),p=ho.sum(l),g=p?(f-s*d)/p:0,m=ho.range(s),v=[];return null!=n&&m.sort(n===Ss?function(t,e){return l[e]-l[t]}:function(t,e){return n(o[t],o[e])}),m.forEach(function(t){v[t]={data:o[t],value:u=l[t],startAngle:c,endAngle:c+=u*g+d,padAngle:h}}),v}var e=Number,n=Ss,r=0,i=Bo,a=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(r=e,t):r},t.endAngle=function(e){return arguments.length?(i=e,t):i},t.padAngle=function(e){return arguments.length?(a=e,t):a},t};var Ss={};ho.layout.stack=function(){function t(u,s){if(!(h=u.length))return u;var l=u.map(function(n,r){return e.call(t,n,r)}),c=l.map(function(e){return e.map(function(e,n){return[a.call(t,e,n),o.call(t,e,n)]})}),f=n.call(t,c,s);l=ho.permute(l,f),c=ho.permute(c,f);var h,d,p,g,m=r.call(t,c,s),v=l[0].length;for(p=0;v>p;++p)for(i.call(t,l[0][p],g=m[p],c[0][p][1]),d=1;h>d;++d)i.call(t,l[d][p],g+=c[d-1][p][1],c[d][p][1]);return u}var e=w,n=xi,r=_i,i=yi,a=mi,o=vi;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:As.get(e)||xi,t):n},t.offset=function(e){return arguments.length?(r="function"==typeof e?e:Ts.get(e)||_i,t):r},t.x=function(e){return arguments.length?(a=e,t):a},t.y=function(e){return arguments.length?(o=e,t):o},t.out=function(e){return arguments.length?(i=e,t):i},t};var As=ho.map({"inside-out":function(t){var e,n,r=t.length,i=t.map(bi),a=t.map(Mi),o=ho.range(r).sort(function(t,e){return i[t]-i[e]}),u=0,s=0,l=[],c=[];for(e=0;r>e;++e)n=o[e],s>u?(u+=a[n],l.push(n)):(s+=a[n],c.push(n));return c.reverse().concat(l)},reverse:function(t){return ho.range(t.length).reverse()},"default":xi}),Ts=ho.map({silhouette:function(t){var e,n,r,i=t.length,a=t[0].length,o=[],u=0,s=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];r>u&&(u=r),o.push(r)}for(n=0;a>n;++n)s[n]=(u-o[n])/2;return s},wiggle:function(t){var e,n,r,i,a,o,u,s,l,c=t.length,f=t[0],h=f.length,d=[];for(d[0]=s=l=0,n=1;h>n;++n){for(e=0,i=0;c>e;++e)i+=t[e][n][1];for(e=0,a=0,u=f[n][0]-f[n-1][0];c>e;++e){for(r=0,o=(t[e][n][1]-t[e][n-1][1])/(2*u);e>r;++r)o+=(t[r][n][1]-t[r][n-1][1])/u;a+=o*t[e][n][1]}d[n]=s-=i?a/i*u:0,l>s&&(l=s)}for(n=0;h>n;++n)d[n]-=l;return d},expand:function(t){var e,n,r,i=t.length,a=t[0].length,o=1/i,u=[];for(n=0;a>n;++n){for(e=0,r=0;i>e;e++)r+=t[e][n][1];if(r)for(e=0;i>e;e++)t[e][n][1]/=r;else for(e=0;i>e;e++)t[e][n][1]=o}for(n=0;a>n;++n)u[n]=0;return u},zero:_i});ho.layout.histogram=function(){function t(t,a){for(var o,u,s=[],l=t.map(n,this),c=r.call(this,l,a),f=i.call(this,c,l,a),a=-1,h=l.length,d=f.length-1,p=e?1:1/h;++a0)for(a=-1;++a=c[0]&&u<=c[1]&&(o=s[ho.bisect(f,u,1,d)-1],o.y+=p,o.push(t[a]));return s}var e=!0,n=Number,r=Si,i=ki;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(r=Lt(e),t):r},t.bins=function(e){return arguments.length?(i="number"==typeof e?function(t){return Ei(t,e)}:Lt(e),t):i},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},ho.layout.pack=function(){function t(t,a){var o=n.call(this,t,a),u=o[0],s=i[0],l=i[1],c=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(u.x=u.y=0,fi(u,function(t){t.r=+c(t.value)}),fi(u,Li),r){var f=r*(e?1:Math.max(2*u.r/s,2*u.r/l))/2;fi(u,function(t){t.r+=f}),fi(u,Li),fi(u,function(t){t.r-=f})}return Ii(u,s/2,l/2,e?1:1/Math.max(2*u.r/s,2*u.r/l)),o}var e,n=ho.layout.hierarchy().sort(Ai),r=0,i=[1,1];return t.size=function(e){return arguments.length?(i=e,t):i},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(r=+e,t):r},li(t,n)},ho.layout.tree=function(){function t(t,i){var c=o.call(this,t,i),f=c[0],h=e(f);if(fi(h,n),h.parent.m=-h.z,ci(h,r),l)ci(f,a);else{var d=f,p=f,g=f;ci(f,function(t){t.xp.x&&(p=t),t.depth>g.depth&&(g=t)});var m=u(d,p)/2-d.x,v=s[0]/(p.x+u(p,d)/2+m),y=s[1]/(g.depth||1);ci(f,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return c}function e(t){for(var e,n={A:null,children:[t]},r=[n];null!=(e=r.pop());)for(var i,a=e.children,o=0,u=a.length;u>o;++o)r.push((a[o]=i={_:a[o],parent:e,children:(i=a[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(e.length){qi(t);var a=(e[0].z+e[e.length-1].z)/2;r?(t.z=r.z+u(t._,r._),t.m=t.z-a):t.z=a}else r&&(t.z=r.z+u(t._,r._));t.parent.A=i(t,r,t.parent.A||n[0])}function r(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function i(t,e,n){if(e){for(var r,i=t,a=t,o=e,s=i.parent.children[0],l=i.m,c=a.m,f=o.m,h=s.m;o=zi(o),i=Pi(i),o&&i;)s=Pi(s),a=zi(a),a.a=t,r=o.z+f-i.z-l+u(o._,i._),r>0&&(ji($i(o,t,n),t,r),l+=r,c+=r),f+=o.m,l+=i.m,h+=s.m,c+=a.m;o&&!zi(a)&&(a.t=o,a.m+=f-c),i&&!Pi(s)&&(s.t=i,s.m+=l-h,n=t)}return n}function a(t){t.x*=s[0],t.y=t.depth*s[1]}var o=ho.layout.hierarchy().sort(null).value(null),u=Ui,s=[1,1],l=null;return t.separation=function(e){return arguments.length?(u=e,t):u},t.size=function(e){return arguments.length?(l=null==(s=e)?a:null,t):l?null:s},t.nodeSize=function(e){return arguments.length?(l=null==(s=e)?null:a,t):l?s:null},li(t,o)},ho.layout.cluster=function(){function t(t,a){var o,u=e.call(this,t,a),s=u[0],l=0;fi(s,function(t){var e=t.children;e&&e.length?(t.x=Yi(e),t.y=Fi(e)):(t.x=o?l+=n(t,o):0,t.y=0,o=t)});var c=Hi(s),f=Bi(s),h=c.x-n(c,f)/2,d=f.x+n(f,c)/2;return fi(s,i?function(t){t.x=(t.x-s.x)*r[0],t.y=(s.y-t.y)*r[1]}:function(t){t.x=(t.x-h)/(d-h)*r[0],t.y=(1-(s.y?t.y/s.y:1))*r[1]}),u}var e=ho.layout.hierarchy().sort(null).value(null),n=Ui,r=[1,1],i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(i=null==(r=e),t):i?null:r},t.nodeSize=function(e){return arguments.length?(i=null!=(r=e),t):i?r:null},li(t,e)},ho.layout.treemap=function(){function t(t,e){for(var n,r,i=-1,a=t.length;++ie?0:e),n.area=isNaN(r)||0>=r?0:r}function e(n){var a=n.children;if(a&&a.length){var o,u,s,l=f(n),c=[],h=a.slice(),p=1/0,g="slice"===d?l.dx:"dice"===d?l.dy:"slice-dice"===d?1&n.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(t(h,l.dx*l.dy/n.value),c.area=0;(s=h.length)>0;)c.push(o=h[s-1]),c.area+=o.area,"squarify"!==d||(u=r(c,g))<=p?(h.pop(),p=u):(c.area-=c.pop().area,i(c,g,l,!1),g=Math.min(l.dx,l.dy),c.length=c.area=0,p=1/0);c.length&&(i(c,g,l,!0),c.length=c.area=0),a.forEach(e)}}function n(e){var r=e.children;if(r&&r.length){var a,o=f(e),u=r.slice(),s=[];for(t(u,o.dx*o.dy/e.value),s.area=0;a=u.pop();)s.push(a),s.area+=a.area,null!=a.z&&(i(s,a.z?o.dx:o.dy,o,!u.length),s.length=s.area=0);r.forEach(n)}}function r(t,e){for(var n,r=t.area,i=0,a=1/0,o=-1,u=t.length;++on&&(a=n),n>i&&(i=n));return r*=r,e*=e,r?Math.max(e*i*p/r,r/(e*a*p)):1/0}function i(t,e,n,r){var i,a=-1,o=t.length,u=n.x,l=n.y,c=e?s(t.area/e):0;if(e==n.dx){for((r||c>n.dy)&&(c=n.dy);++an.dx)&&(c=n.dx);++an&&(e=1),1>n&&(t=0),function(){var n,r,i;do n=2*Math.random()-1,r=2*Math.random()-1,i=n*n+r*r;while(!i||i>1);return t+e*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=ho.random.normal.apply(ho,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=ho.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;t>n;n++)e+=Math.random();return e}}},ho.scale={};var Os={floor:w,ceil:w};ho.scale.linear=function(){return ta([0,1],[0,1],kr,!1)};var Ns={s:1,g:1,p:1,r:1,e:1};ho.scale.log=function(){return sa(ho.scale.linear().domain([0,1]),10,!0,[1,10])};var Ls=ho.format(".0e"),Cs={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};ho.scale.pow=function(){return la(ho.scale.linear(),1,[0,1])},ho.scale.sqrt=function(){return ho.scale.pow().exponent(.5)},ho.scale.ordinal=function(){return fa([],{t:"range",a:[[]]})},ho.scale.category10=function(){return ho.scale.ordinal().range(Rs)},ho.scale.category20=function(){return ho.scale.ordinal().range(Is)},ho.scale.category20b=function(){return ho.scale.ordinal().range(Ds)},ho.scale.category20c=function(){return ho.scale.ordinal().range(Us)};var Rs=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(kt),Is=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(kt),Ds=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(kt),Us=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(kt);ho.scale.quantile=function(){return ha([],[])},ho.scale.quantize=function(){return da(0,1,[0,1])},ho.scale.threshold=function(){return pa([.5],[0,1])},ho.scale.identity=function(){return ga([0,1])},ho.svg={},ho.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),c=o.apply(this,arguments)-Xo,f=u.apply(this,arguments)-Xo,h=Math.abs(f-c),d=c>f?0:1;if(t>l&&(p=l,l=t,t=p),h>=Vo)return e(l,d)+(t?e(t,1-d):"")+"Z";var p,g,m,v,y,x,_,b,M,w,k,E,S=0,A=0,T=[];if((v=(+s.apply(this,arguments)||0)/2)&&(m=a===Ps?Math.sqrt(t*t+l*l):+a.apply(this,arguments),d||(A*=-1),l&&(A=ot(m/l*Math.sin(v))),t&&(S=ot(m/t*Math.sin(v)))),l){y=l*Math.cos(c+A),x=l*Math.sin(c+A),_=l*Math.cos(f-A),b=l*Math.sin(f-A);var O=Math.abs(f-c-2*A)<=Ho?0:1;if(A&&Ma(y,x,_,b)===d^O){var N=(c+f)/2;y=l*Math.cos(N),x=l*Math.sin(N),_=b=null}}else y=x=0;if(t){M=t*Math.cos(f-S),w=t*Math.sin(f-S),k=t*Math.cos(c+S),E=t*Math.sin(c+S);var L=Math.abs(c-f+2*S)<=Ho?0:1;if(S&&Ma(M,w,k,E)===1-d^L){var C=(c+f)/2;M=t*Math.cos(C),w=t*Math.sin(C),k=E=null}}else M=w=0;if(h>Fo&&(p=Math.min(Math.abs(l-t)/2,+i.apply(this,arguments)))>.001){g=l>t^d?0:1;var R=p,I=p;if(Ho>h){var D=null==k?[M,w]:null==_?[y,x]:jn([y,x],[k,E],[_,b],[M,w]),U=y-D[0],P=x-D[1],z=_-D[0],j=b-D[1],q=1/Math.sin(Math.acos((U*z+P*j)/(Math.sqrt(U*U+P*P)*Math.sqrt(z*z+j*j)))/2),$=Math.sqrt(D[0]*D[0]+D[1]*D[1]);I=Math.min(p,(t-$)/(q-1)),R=Math.min(p,(l-$)/(q+1))}if(null!=_){var F=wa(null==k?[M,w]:[k,E],[y,x],l,R,d),Y=wa([_,b],[M,w],l,R,d);p===R?T.push("M",F[0],"A",R,",",R," 0 0,",g," ",F[1],"A",l,",",l," 0 ",1-d^Ma(F[1][0],F[1][1],Y[1][0],Y[1][1]),",",d," ",Y[1],"A",R,",",R," 0 0,",g," ",Y[0]):T.push("M",F[0],"A",R,",",R," 0 1,",g," ",Y[0])}else T.push("M",y,",",x);if(null!=k){var H=wa([y,x],[k,E],t,-I,d),B=wa([M,w],null==_?[y,x]:[_,b],t,-I,d);p===I?T.push("L",B[0],"A",I,",",I," 0 0,",g," ",B[1],"A",t,",",t," 0 ",d^Ma(B[1][0],B[1][1],H[1][0],H[1][1]),",",1-d," ",H[1],"A",I,",",I," 0 0,",g," ",H[0]):T.push("L",B[0],"A",I,",",I," 0 0,",g," ",H[0])}else T.push("L",M,",",w)}else T.push("M",y,",",x),null!=_&&T.push("A",l,",",l," 0 ",O,",",d," ",_,",",b),T.push("L",M,",",w),null!=k&&T.push("A",t,",",t," 0 ",L,",",1-d," ",k,",",E);return T.push("Z"),T.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=va,r=ya,i=ma,a=Ps,o=xa,u=_a,s=ba;return t.innerRadius=function(e){return arguments.length?(n=Lt(e),t):n},t.outerRadius=function(e){return arguments.length?(r=Lt(e),t):r},t.cornerRadius=function(e){return arguments.length?(i=Lt(e),t):i},t.padRadius=function(e){return arguments.length?(a=e==Ps?Ps:Lt(e),t):a},t.startAngle=function(e){return arguments.length?(o=Lt(e),t):o},t.endAngle=function(e){return arguments.length?(u=Lt(e),t):u},t.padAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.centroid=function(){var t=(+n.apply(this,arguments)+ +r.apply(this,arguments))/2,e=(+o.apply(this,arguments)+ +u.apply(this,arguments))/2-Xo;return[Math.cos(e)*t,Math.sin(e)*t]},t};var Ps="auto";ho.svg.line=function(){return ka(w)};var zs=ho.map({linear:Ea,"linear-closed":Sa,step:Aa,"step-before":Ta,"step-after":Oa,basis:Da,"basis-open":Ua,"basis-closed":Pa,bundle:za,cardinal:Ca,"cardinal-open":Na,"cardinal-closed":La,monotone:Ha});zs.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var js=[0,2/3,1/3,0],qs=[0,1/3,2/3,0],$s=[0,1/6,2/3,1/6];ho.svg.line.radial=function(){var t=ka(Ba);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Ta.reverse=Oa,Oa.reverse=Ta,ho.svg.area=function(){return Va(w)},ho.svg.area.radial=function(){var t=Va(Ba);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},ho.svg.chord=function(){function t(t,u){var s=e(this,a,t,u),l=e(this,o,t,u);return"M"+s.p0+r(s.r,s.p1,s.a1-s.a0)+(n(s,l)?i(s.r,s.p1,s.r,s.p0):i(s.r,s.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+i(l.r,l.p1,s.r,s.p0))+"Z"; +}function e(t,e,n,r){var i=e.call(t,n,r),a=u.call(t,i,r),o=s.call(t,i,r)-Xo,c=l.call(t,i,r)-Xo;return{r:a,a0:o,a1:c,p0:[a*Math.cos(o),a*Math.sin(o)],p1:[a*Math.cos(c),a*Math.sin(c)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function r(t,e,n){return"A"+t+","+t+" 0 "+ +(n>Ho)+",1 "+e}function i(t,e,n,r){return"Q 0,0 "+r}var a=kn,o=En,u=Xa,s=xa,l=_a;return t.radius=function(e){return arguments.length?(u=Lt(e),t):u},t.source=function(e){return arguments.length?(a=Lt(e),t):a},t.target=function(e){return arguments.length?(o=Lt(e),t):o},t.startAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.endAngle=function(e){return arguments.length?(l=Lt(e),t):l},t},ho.svg.diagonal=function(){function t(t,i){var a=e.call(this,t,i),o=n.call(this,t,i),u=(a.y+o.y)/2,s=[a,{x:a.x,y:u},{x:o.x,y:u},o];return s=s.map(r),"M"+s[0]+"C"+s[1]+" "+s[2]+" "+s[3]}var e=kn,n=En,r=Wa;return t.source=function(n){return arguments.length?(e=Lt(n),t):e},t.target=function(e){return arguments.length?(n=Lt(e),t):n},t.projection=function(e){return arguments.length?(r=e,t):r},t},ho.svg.diagonal.radial=function(){var t=ho.svg.diagonal(),e=Wa,n=t.projection;return t.projection=function(t){return arguments.length?n(Ga(e=t)):e},t},ho.svg.symbol=function(){function t(t,r){return(Fs.get(e.call(this,t,r))||Qa)(n.call(this,t,r))}var e=Ja,n=Za;return t.type=function(n){return arguments.length?(e=Lt(n),t):e},t.size=function(e){return arguments.length?(n=Lt(e),t):n},t};var Fs=ho.map({circle:Qa,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*Hs)),n=e*Hs;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Ys),n=e*Ys/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});ho.svg.symbolTypes=Fs.keys();var Ys=Math.sqrt(3),Hs=Math.tan(30*Wo);Io.transition=function(t){for(var e,n,r=Bs||++Gs,i=ro(t),a=[],o=Vs||{time:Date.now(),ease:Lr,delay:0,duration:250},u=-1,s=this.length;++ua;a++){i.push(e=[]);for(var n=this[a],u=0,s=n.length;s>u;u++)(r=n[u])&&t.call(r,r.__data__,u,a)&&e.push(r)}return to(i,this.namespace,this.id)},Ws.tween=function(t,e){var n=this.id,r=this.namespace;return arguments.length<2?this.node()[r][n].tween.get(t):W(this,null==e?function(e){e[r][n].tween.remove(t)}:function(i){i[r][n].tween.set(t,e)})},Ws.attr=function(t,e){function n(){this.removeAttribute(u)}function r(){this.removeAttributeNS(u.space,u.local)}function i(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(u);return n!==t&&(e=o(n,t),function(t){this.setAttribute(u,e(t))})})}function a(t){return null==t?r:(t+="",function(){var e,n=this.getAttributeNS(u.space,u.local);return n!==t&&(e=o(n,t),function(t){this.setAttributeNS(u.space,u.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var o="transform"==t?Qr:kr,u=ho.ns.qualify(t);return eo(this,"attr."+t,e,u.local?a:i)},Ws.attrTween=function(t,e){function n(t,n){var r=e.call(this,t,n,this.getAttribute(i));return r&&function(t){this.setAttribute(i,r(t))}}function r(t,n){var r=e.call(this,t,n,this.getAttributeNS(i.space,i.local));return r&&function(t){this.setAttributeNS(i.space,i.local,r(t))}}var i=ho.ns.qualify(t);return this.tween("attr."+t,i.local?r:n)},Ws.style=function(t,e,n){function r(){this.style.removeProperty(t)}function i(e){return null==e?r:(e+="",function(){var r,i=o(this).getComputedStyle(this,null).getPropertyValue(t);return i!==e&&(r=kr(i,e),function(e){this.style.setProperty(t,r(e),n)})})}var a=arguments.length;if(3>a){if("string"!=typeof t){2>a&&(e="");for(n in t)this.style(n,t[n],e);return this}n=""}return eo(this,"style."+t,e,i)},Ws.styleTween=function(t,e,n){function r(r,i){var a=e.call(this,r,i,o(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),n)}}return arguments.length<3&&(n=""),this.tween("style."+t,r)},Ws.text=function(t){return eo(this,"text",t,no)},Ws.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},Ws.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=ho.ease.apply(ho,arguments)),W(this,function(r){r[n][e].ease=t}))},Ws.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:W(this,"function"==typeof t?function(r,i,a){r[n][e].delay=+t.call(r,r.__data__,i,a)}:(t=+t,function(r){r[n][e].delay=t}))},Ws.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:W(this,"function"==typeof t?function(r,i,a){r[n][e].duration=Math.max(1,t.call(r,r.__data__,i,a))}:(t=Math.max(1,t),function(r){r[n][e].duration=t}))},Ws.each=function(t,e){var n=this.id,r=this.namespace;if(arguments.length<2){var i=Vs,a=Bs;try{Bs=n,W(this,function(e,i,a){Vs=e[r][n],t.call(e,e.__data__,i,a)})}finally{Vs=i,Bs=a}}else W(this,function(i){var a=i[r][n];(a.event||(a.event=ho.dispatch("start","end","interrupt"))).on(t,e)});return this},Ws.transition=function(){for(var t,e,n,r,i=this.id,a=++Gs,o=this.namespace,u=[],s=0,l=this.length;l>s;s++){u.push(t=[]);for(var e=this[s],c=0,f=e.length;f>c;c++)(n=e[c])&&(r=n[o][i],io(n,c,o,a,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),t.push(n)}return to(u,o,a)},ho.svg.axis=function(){function t(t){t.each(function(){var t,l=ho.select(this),c=this.__chart__||n,f=this.__chart__=n.copy(),h=null==s?f.ticks?f.ticks.apply(f,u):f.domain():s,d=null==e?f.tickFormat?f.tickFormat.apply(f,u):w:e,p=l.selectAll(".tick").data(h,f),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Fo),m=ho.transition(p.exit()).style("opacity",Fo).remove(),v=ho.transition(p.order()).style("opacity",1),y=Math.max(i,0)+o,x=Gi(f),_=l.selectAll(".domain").data([0]),b=(_.enter().append("path").attr("class","domain"),ho.transition(_));g.append("line"),g.append("text");var M,k,E,S,A=g.select("line"),T=v.select("line"),O=p.select("text").text(d),N=g.select("text"),L=v.select("text"),C="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(t=ao,M="x",E="y",k="x2",S="y2",O.attr("dy",0>C?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+x[0]+","+C*a+"V0H"+x[1]+"V"+C*a)):(t=oo,M="y",E="x",k="y2",S="x2",O.attr("dy",".32em").style("text-anchor",0>C?"end":"start"),b.attr("d","M"+C*a+","+x[0]+"H0V"+x[1]+"H"+C*a)),A.attr(S,C*i),N.attr(E,C*y),T.attr(k,0).attr(S,C*i),L.attr(M,0).attr(E,C*y),f.rangeBand){var R=f,I=R.rangeBand()/2;c=f=function(t){return R(t)+I}}else c.rangeBand?c=f:m.call(t,f,c);g.call(t,c,f),v.call(t,f,f)})}var e,n=ho.scale.linear(),r=Zs,i=6,a=6,o=3,u=[10],s=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(r=e in Js?e+"":Zs,t):r},t.ticks=function(){return arguments.length?(u=go(arguments),t):u},t.tickValues=function(e){return arguments.length?(s=e,t):s},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(i=+e,a=+arguments[n-1],t):i},t.innerTickSize=function(e){return arguments.length?(i=+e,t):i},t.outerTickSize=function(e){return arguments.length?(a=+e,t):a},t.tickPadding=function(e){return arguments.length?(o=+e,t):o},t.tickSubdivide=function(){return arguments.length&&t},t};var Zs="bottom",Js={top:1,right:1,bottom:1,left:1};ho.svg.brush=function(){function t(a){a.each(function(){var a=ho.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=a.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),a.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var u=a.selectAll(".resize").data(g,w);u.exit().remove(),u.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return Qs[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),u.style("display",t.empty()?"none":null);var s,f=ho.transition(a),h=ho.transition(o);l&&(s=Gi(l),h.attr("x",s[0]).attr("width",s[1]-s[0]),n(f)),c&&(s=Gi(c),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),e(f)})}function e(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+f[+/e$/.test(t)]+","+h[+/^s/.test(t)]+")"})}function n(t){t.select(".extent").attr("x",f[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function r(t){t.select(".extent").attr("y",h[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==ho.event.keyCode&&(T||(x=null,L[0]-=f[1],L[1]-=h[1],T=2),O())}function g(){32==ho.event.keyCode&&2==T&&(L[0]+=f[1],L[1]+=h[1],T=0,O())}function m(){var t=ho.mouse(b),i=!1;_&&(t[0]+=_[0],t[1]+=_[1]),T||(ho.event.altKey?(x||(x=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(t[0]c?(i=r,r=c):i=c),g[0]!=r||g[1]!=i?(n?u=null:a=null,g[0]=r,g[1]=i,!0):void 0}function y(){m(),k.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),ho.select("body").style("cursor",null),C.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,_,b=this,M=ho.select(ho.event.target),w=s.of(b,arguments),k=ho.select(b),E=M.datum(),S=!/^(n|s)$/.test(E)&&l,A=!/^(e|w)$/.test(E)&&c,T=M.classed("extent"),N=tt(b),L=ho.mouse(b),C=ho.select(o(b)).on("keydown.brush",i).on("keyup.brush",g);if(ho.event.changedTouches?C.on("touchmove.brush",m).on("touchend.brush",y):C.on("mousemove.brush",m).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),T)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(E){var R=+/w$/.test(E),I=+/^n/.test(E);_=[f[1-R]-L[0],h[1-I]-L[1]],L[0]=f[R],L[1]=h[I]}else ho.event.altKey&&(x=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ho.select("body").style("cursor",M.style("cursor")),w({type:"brushstart"}),m()}var a,u,s=L(t,"brushstart","brush","brushend"),l=null,c=null,f=[0,0],h=[0,0],d=!0,p=!0,g=Ks[0];return t.event=function(t){t.each(function(){var t=s.of(this,arguments),e={x:f,y:h,i:a,j:u},n=this.__chart__||e;this.__chart__=e,Bs?ho.select(this).transition().each("start.brush",function(){a=n.i,u=n.j,f=n.x,h=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=Er(f,e.x),r=Er(h,e.y);return a=u=null,function(i){f=e.x=n(i),h=e.y=r(i),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,u=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(l=e,g=Ks[!l<<1|!c],t):l},t.y=function(e){return arguments.length?(c=e,g=Ks[!l<<1|!c],t):c},t.clamp=function(e){return arguments.length?(l&&c?(d=!!e[0],p=!!e[1]):l?d=!!e:c&&(p=!!e),t):l&&c?[d,p]:l?d:c?p:null},t.extent=function(e){var n,r,i,o,s;return arguments.length?(l&&(n=e[0],r=e[1],c&&(n=n[0],r=r[0]),a=[n,r],l.invert&&(n=l(n),r=l(r)),n>r&&(s=n,n=r,r=s),n==f[0]&&r==f[1]||(f=[n,r])),c&&(i=e[0],o=e[1],l&&(i=i[1],o=o[1]),u=[i,o],c.invert&&(i=c(i),o=c(o)),i>o&&(s=i,i=o,o=s),i==h[0]&&o==h[1]||(h=[i,o])),t):(l&&(a?(n=a[0],r=a[1]):(n=f[0],r=f[1],l.invert&&(n=l.invert(n),r=l.invert(r)),n>r&&(s=n,n=r,r=s))),c&&(u?(i=u[0],o=u[1]):(i=h[0],o=h[1],c.invert&&(i=c.invert(i),o=c.invert(o)),i>o&&(s=i,i=o,o=s))),l&&c?[[n,i],[r,o]]:l?[n,r]:c&&[i,o])},t.clear=function(){return t.empty()||(f=[0,0],h=[0,0],a=u=null),t},t.empty=function(){return!!l&&f[0]==f[1]||!!c&&h[0]==h[1]},ho.rebind(t,s,"on")};var Qs={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ks=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],tl=xu.format=Eu.timeFormat,el=tl.utc,nl=el("%Y-%m-%dT%H:%M:%S.%LZ");tl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?uo:nl,uo.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},uo.toString=nl.toString,xu.second=Bt(function(t){return new _u(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),xu.seconds=xu.second.range,xu.seconds.utc=xu.second.utc.range,xu.minute=Bt(function(t){return new _u(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),xu.minutes=xu.minute.range,xu.minutes.utc=xu.minute.utc.range,xu.hour=Bt(function(t){var e=t.getTimezoneOffset()/60;return new _u(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),xu.hours=xu.hour.range,xu.hours.utc=xu.hour.utc.range,xu.month=Bt(function(t){return t=xu.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),xu.months=xu.month.range,xu.months.utc=xu.month.utc.range;var rl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],il=[[xu.second,1],[xu.second,5],[xu.second,15],[xu.second,30],[xu.minute,1],[xu.minute,5],[xu.minute,15],[xu.minute,30],[xu.hour,1],[xu.hour,3],[xu.hour,6],[xu.hour,12],[xu.day,1],[xu.day,2],[xu.week,1],[xu.month,1],[xu.month,3],[xu.year,1]],al=tl.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",Ie]]),ol={range:function(t,e,n){return ho.range(Math.ceil(t/n)*n,+e,n).map(lo)},floor:w,ceil:w};il.year=xu.year,xu.scale=function(){return so(ho.scale.linear(),il,al)};var ul=il.map(function(t){return[t[0].utc,t[1]]}),sl=el.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",Ie]]);ul.year=xu.year.utc,xu.scale.utc=function(){return so(ho.scale.linear(),ul,sl)},ho.text=Ct(function(t){return t.responseText}),ho.json=function(t,e){return Rt(t,"application/json",co,e)},ho.html=function(t,e){return Rt(t,"text/html",fo,e)},ho.xml=Ct(function(t){return t.responseXML}),this.d3=ho,r=ho,i="function"==typeof r?r.call(e,n,e,t):r,!(void 0!==i&&(t.exports=i))}()},function(t,e,n){var r=n(12),i={};r.extend(i,n(59)),t.exports=r.extend(i,r)},function(t,e,n){function r(t,e,n,r){var a=n||i(t);return o(t,e,a,r)}function i(t){switch(t.type){case s:return s;case l:return l;case f:return c;default:return h}}function a(t,e,n,r){function i(t){return(e[0]<0?-Math.log(t>0?0:-t):Math.log(0>t?0:t))/Math.log(u)}function a(t){return e[0]<0?-Math.pow(u,-t):Math.pow(u,t)}if(null==n)return r;var o,u=t.base(),s=Math.min(u,t.ticks().length/n),l=e[0]>0?(o=1e-12,Math.ceil):(o=-1e-12,Math.floor);return function(t){return a(l(i(t)+o))/t>=s?r(t):""}}function o(t,e,n,r){var i,o=u.format,c="log"===t.type;switch(n){case h:return i=t.domain(),c?a(t,i,e,o.auto.number(r||null)):o.auto.linear(i,e,r||null);case s:return(r?o:o.auto).time(r);case l:return(r?o:o.auto).utc(r);default:return String}}var u=n(12),s="time",l="utc",c="string",f="ordinal",h="number";t.exports={getTickFormat:r}},function(t,e,n){t.exports={path:n(61),render:n(65),Item:n(97),bound:n(84),Bounds:n(83),canvas:n(86),Gradient:n(98),toJSON:n(99).toJSON,fromJSON:n(99).fromJSON}},function(t,e,n){t.exports={parse:n(62),render:n(63)}},function(t,e){var n={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},r=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\d)([-+])/g,/\s|,|###/];t.exports=function(t){var e,i,a,o,u,s,l,c,f,h,d,p=[];for(e=t.slice().replace(r[0],"###$1").split(r[1]).slice(1),c=0,h=e.length;h>c;++c){for(i=e[c],a=i.slice(1).trim().replace(r[2],"$1###$2").split(r[3]),s=i.charAt(0),o=[s],f=0,d=a.length;d>f;++f)(u=+a[f])===u&&o.push(u);if(l=n[s.toLowerCase()],o.length-1>l)for(f=1,d=o.length;d>f;f+=l)p.push([s].concat(o.slice(f,f+l)));else p.push(o)}return p}},function(t,e,n){function r(t,e,n,r){for(var a=i.segments(r[5],r[6],r[0],r[1],r[3],r[4],r[2],e,n),o=0;og;++g){switch(a=e[g],a[0]){case"l":f+=a[1],h+=a[2],t.lineTo(f+n,h+i);break;case"L":f=a[1],h=a[2],t.lineTo(f+n,h+i);break;case"h":f+=a[1],t.lineTo(f+n,h+i);break;case"H":f=a[1],t.lineTo(f+n,h+i);break;case"v":h+=a[1],t.lineTo(f+n,h+i);break;case"V":h=a[1],t.lineTo(f+n,h+i);break;case"m":f+=a[1],h+=a[2],t.moveTo(f+n,h+i);break;case"M":f=a[1],h=a[2],t.moveTo(f+n,h+i);break;case"c":o=f+a[5],u=h+a[6],d=f+a[3],p=h+a[4],t.bezierCurveTo(f+a[1]+n,h+a[2]+i,d+n,p+i,o+n,u+i),f=o,h=u;break;case"C":f=a[5],h=a[6],d=a[3],p=a[4],t.bezierCurveTo(a[1]+n,a[2]+i,d+n,p+i,f+n,h+i);break;case"s":o=f+a[3],u=h+a[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+i,f+a[1]+n,h+a[2]+i,o+n,u+i),d=f+a[1],p=h+a[2],f=o,h=u;break;case"S":o=a[3],u=a[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+i,a[1]+n,a[2]+i,o+n,u+i),f=o,h=u,d=a[1],p=a[2];break;case"q":o=f+a[3],u=h+a[4],d=f+a[1],p=h+a[2],t.quadraticCurveTo(d+n,p+i,o+n,u+i),f=o,h=u;break;case"Q":o=a[3],u=a[4],t.quadraticCurveTo(a[1]+n,a[2]+i,o+n,u+i),f=o,h=u,d=a[1],p=a[2];break;case"t":o=f+a[1],u=h+a[2],null===c[0].match(/[QqTt]/)?(d=f,p=h):"t"===c[0]?(d=2*f-s,p=2*h-l):"q"===c[0]&&(d=2*f-d,p=2*h-p),s=d,l=p,t.quadraticCurveTo(d+n,p+i,o+n,u+i),f=o,h=u,d=f+a[1],p=h+a[2];break;case"T":o=a[1],u=a[2],d=2*f-d,p=2*h-p,t.quadraticCurveTo(d+n,p+i,o+n,u+i),f=o,h=u;break;case"a":r(t,f+n,h+i,[a[1],a[2],a[3],a[4],a[5],a[6]+f+n,a[7]+h+i]),f+=a[6],h+=a[7];break;case"A":r(t,f+n,h+i,[a[1],a[2],a[3],a[4],a[5],a[6]+n,a[7]+i]),f=a[6],h=a[7];break;case"z":case"Z":t.closePath()}c=a}}},function(t,e){function n(t,e,n,r,a,u,s,l,c){var f=o.call(arguments);if(i[f])return i[f];var h=s*(Math.PI/180),d=Math.sin(h),p=Math.cos(h);n=Math.abs(n),r=Math.abs(r);var g=p*(l-t)*.5+d*(c-e)*.5,m=p*(c-e)*.5-d*(l-t)*.5,v=g*g/(n*n)+m*m/(r*r);v>1&&(v=Math.sqrt(v),n*=v,r*=v);var y=p/n,x=d/n,_=-d/r,b=p/r,M=y*l+x*c,w=_*l+b*c,k=y*t+x*e,E=_*t+b*e,S=(k-M)*(k-M)+(E-w)*(E-w),A=1/S-.25;0>A&&(A=0);var T=Math.sqrt(A);u==a&&(T=-T);var O=.5*(M+k)-T*(E-w),N=.5*(w+E)+T*(k-M),L=Math.atan2(w-N,M-O),C=Math.atan2(E-N,k-O),R=C-L;0>R&&1===u?R+=2*Math.PI:R>0&&0===u&&(R-=2*Math.PI);for(var I=Math.ceil(Math.abs(R/(.5*Math.PI+.001))),D=[],U=0;I>U;++U){var P=L+U*R/I,z=L+(U+1)*R/I;D[U]=[O,N,P,z,n,r,d,p]}return i[f]=D}function r(t){var e=o.call(t);if(a[e])return a[e];var n=t[0],r=t[1],i=t[2],u=t[3],s=t[4],l=t[5],c=t[6],f=t[7],h=f*s,d=-c*l,p=c*s,g=f*l,m=Math.cos(i),v=Math.sin(i),y=Math.cos(u),x=Math.sin(u),_=.5*(u-i),b=Math.sin(.5*_),M=8/3*b*b/Math.sin(_),w=n+m-M*v,k=r+v+M*m,E=n+y,S=r+x,A=E+M*x,T=S-M*y;return a[e]=[h*w+d*k,p*w+g*k,h*A+d*T,p*A+g*T,h*E+d*S,p*E+g*S]}var i={},a={},o=[].join;t.exports={segments:n,bezier:r,cache:{segments:i,bezier:a}}},function(t,e,n){t.exports={canvas:n(66),svg:n(92)}},function(t,e,n){t.exports={Handler:n(67),Renderer:n(89)}},function(t,e,n){function r(){u.call(this),this._down=null,this._touch=null,this._first=!0}function i(t,e,n){return function(r){var i=this._active,a=this.pickEvent(r);a===i?this.fire(t,r):(this.fire(n,r),this._active=a,this.fire(e,r),this.fire(t,r))}}function a(t){return function(e){this.fire(t,e),this._active=null}}var o=n(68),u=n(69),s=n(70),l=u.prototype,c=r.prototype=Object.create(l);c.constructor=r,c.initialize=function(t,e,n){var r=this._canvas=o.find(t,"canvas");if(r){var i=this;this.events.forEach(function(t){r.addEventListener(t,function(e){c[t]?c[t].call(i,e):i.fire(t,e)})})}return l.initialize.call(this,t,e,n)},c.canvas=function(){return this._canvas},c.context=function(){return this._canvas.getContext("2d")},c.events=["keydown","keypress","keyup","dragenter","dragleave","dragover","mousedown","mouseup","mousemove","mouseout","mouseover","click","dblclick","wheel","mousewheel","touchstart","touchmove","touchend"],c.DOMMouseScroll=function(t){this.fire("mousewheel",t)},c.mousemove=i("mousemove","mouseover","mouseout"),c.dragover=i("dragover","dragenter","dragleave"),c.mouseout=a("mouseout"),c.dragleave=a("dragleave"),c.mousedown=function(t){this._down=this._active,this.fire("mousedown",t)},c.click=function(t){this._down===this._active&&(this.fire("click",t),this._down=null)},c.touchstart=function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire("touchstart",t,!0)},c.touchmove=function(t){this.fire("touchmove",t,!0)},c.touchend=function(t){this.fire("touchend",t,!0),this._touch=null},c.fire=function(t,e,n){var r,i,a=n?this._touch:this._active,o=this._handlers[t];if(o)for(e.vegaType=t,r=0,i=o.length;i>r;++r)o[r].handler.call(this._obj,e,a)},c.on=function(t,e){var n=this.eventName(t),r=this._handlers;return(r[n]||(r[n]=[])).push({type:t,handler:e}),this},c.off=function(t,e){var n,r=this.eventName(t),i=this._handlers[r];if(i){for(n=i.length;--n>=0;)i[n].type===t&&(e&&i[n].handler!==e||i.splice(n,1));return this}},c.pickEvent=function(t){var e,n,r=this._canvas.getBoundingClientRect(),i=this._padding;return this.pick(this._scene,e=t.clientX-r.left,n=t.clientY-r.top,e-i.left,n-i.top)},c.pick=function(t,e,n,r,i){var a=this.context(),o=s[t.marktype];return o.pick.call(this,a,t,e,n,r,i)},t.exports=r},function(t,e){function n(t,e,n){return n?t.createElementNS(n,e):t.createElement(e)}function r(t){if(t){var e=t.parentNode;e&&(e.removeChild(t),e.childNodes&&e.childNodes.length||r(e))}}t.exports={find:function(t,e){e=e.toLowerCase();for(var n=0,r=t.childNodes.length;r>n;++n)if(t.childNodes[n].tagName.toLowerCase()===e)return t.childNodes[n]},child:function(t,e,r,i,a,o){var u,s;return u=s=t.childNodes[e],(!u||o||u.tagName.toLowerCase()!==r.toLowerCase()||a&&u.getAttribute("class")!=a)&&(u=n(t.ownerDocument,r,i),t.insertBefore(u,s),a&&u.setAttribute("class",a)),u},clear:function(t,e){for(var n=t.childNodes.length;n>e;)t.removeChild(t.childNodes[--n]);return t},remove:r,cssClass:function(t){return"mark-"+t.marktype+(t.name?" "+t.name:"")},openTag:function(t,e,n){var r,i,a="<"+t;if(e)for(r in e)i=e[r],null!=i&&(a+=" "+r+'="'+i+'"');return n&&(a+=" "+n),a+">"},closeTag:function(t){return""}}},function(t,e){function n(){this._active=null,this._handlers={}}var r=n.prototype;r.initialize=function(t,e,n){return this._el=t,this._obj=n||null,this.padding(e)},r.element=function(){return this._el},r.padding=function(t){return this._padding=t||{top:0,left:0,bottom:0,right:0},this},r.scene=function(t){return arguments.length?(this._scene=t,this):this._scene},r.on=function(){},r.off=function(){},r.handlers=function(){var t,e=this._handlers,n=[];for(t in e)n.push.apply(n,e[t]);return n},r.eventName=function(t){var e=t.indexOf(".");return 0>e?t:t.slice(0,e)},t.exports=n},function(t,e,n){t.exports={arc:n(71),area:n(73),group:n(75),image:n(76),line:n(77),path:n(78),rect:n(79),rule:n(80),symbol:n(81),text:n(82)}},function(t,e,n){function r(t,e){var n=e.x||0,r=e.y||0,i=e.innerRadius||0,o=e.outerRadius||0,u=(e.startAngle||0)-a,s=(e.endAngle||0)-a;t.beginPath(),0===i?t.moveTo(n,r):t.arc(n,r,i,u,s,0),t.arc(n,r,o,s,u,1),t.closePath()}var i=n(72),a=Math.PI/2;t.exports={draw:i.drawAll(r),pick:i.pickPath(r)}},function(t,e){function n(t,e,n,r){if(!t(e,r)){var i=null==n.opacity?1:n.opacity;0!==i&&(n.fill&&l(e,n,i)&&e.fill(),n.stroke&&c(e,n,i)&&e.stroke())}}function r(t,e,r,i){var a,o,u;for(a=0,o=r.items.length;o>a;++a)u=r.items[a],i&&!i.intersects(u.bounds)||n(t,e,u,u)}function i(t){return function(e,n,i){r(t,e,n,i)}}function a(t){return function(e,r,i){r.items.length&&(i&&!i.intersects(r.bounds)||n(t,e,r.items[0],r.items))}}function o(t){return t||(t=d),function(e,n,r,i,a,o){if(!n.items.length)return null;var u,s,l;for(null!=e.pixelratio&&1!==e.pixelratio&&(r*=e.pixelratio,i*=e.pixelratio),l=n.items.length;--l>=0;)if(u=n.items[l],s=u.bounds,(!s||s.contains(a,o))&&s&&t(e,u,r,i,a,o))return u;return null}}function u(t,e){return function(n,r,i,a){var o,u,s=Array.isArray(r)?r[0]:r,l=null==e?s.fill:e,c=s.stroke&&n.isPointInStroke;return c&&(o=s.strokeWidth,u=s.strokeCap,n.lineWidth=null!=o?o:1,n.lineCap=null!=u?u:"butt"),t(n,r)?!1:l&&n.isPointInPath(i,a)||c&&n.isPointInStroke(i,a)}}function s(t){return o(u(t))}function l(t,e,n){return n*=null==e.fillOpacity?1:e.fillOpacity,n>0?(t.globalAlpha=n,t.fillStyle=f(t,e,e.fill),!0):!1}function c(t,e,n){var r,i=null!=(i=e.strokeWidth)?i:1;return 0>=i?!1:(n*=null==e.strokeOpacity?1:e.strokeOpacity,n>0?(t.globalAlpha=n,t.strokeStyle=f(t,e,e.stroke),t.lineWidth=i,t.lineCap=null!=(r=e.strokeCap)?r:"butt",t.vgLineDash(e.strokeDash||null),t.vgLineDashOffset(e.strokeDashOffset||0),!0):!1)}function f(t,e,n){return n.id?h(t,n,e.bounds):n}function h(t,e,n){var r,i,a=n.width(),o=n.height(),u=n.x1+e.x1*a,s=n.y1+e.y1*o,l=n.x1+e.x2*a,c=n.y1+e.y2*o,f=t.createLinearGradient(u,s,l,c),h=e.stops;for(r=0,i=h.length;i>r;++r)f.addColorStop(h[r].offset,h[r].color);return f}var d=function(){return!0};t.exports={drawOne:a,drawAll:i,pick:o,pickPath:s,testPath:u,stroke:c,fill:l,color:f,gradient:h}},function(t,e,n){function r(t,e){var n=e[0],r=n.pathCache||(n.pathCache=o(s(e)));u(t,r)}function i(t,e,n,r,i,a){var o=e.items,u=e.bounds;return!o||!o.length||u&&!u.contains(i,a)?null:(null!=t.pixelratio&&1!==t.pixelratio&&(n*=t.pixelratio,r*=t.pixelratio),l(t,o,n,r)?o[0]:null)}var a=n(72),o=n(62),u=n(63),s=n(74).path.area,l=a.testPath(r);t.exports={draw:a.drawOne(r),pick:i,nested:!0}},function(t,e,n){function r(t){return t.x||0}function i(t){return t.y||0}function a(t){return(t.x||0)+(t.width||0)}function o(t){return(t.y||0)+(t.height||0)}function u(t){return null==t.size?100:t.size}function s(t){return t.shape||"circle"}var l=n(57).svg,c=l.area().x(r).y1(i).y0(o),f=l.area().y(i).x1(r).x0(a),h=l.line().x(r).y(i);t.exports={metadata:{version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},path:{arc:l.arc(),symbol:l.symbol().type(s).size(u),area:function(t){var e=t[0];return("horizontal"===e.orient?f:c).interpolate(e.interpolate||"linear").tension(e.tension||.7)(t)},line:function(t){var e=t[0];return h.interpolate(e.interpolate||"linear").tension(e.tension||.7)(t)}},textAlign:{left:"start",center:"middle",right:"end"},textBaseline:{top:"before-edge",bottom:"after-edge",middle:"central"},styles:{fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeWidth:"stroke-width",strokeOpacity:"stroke-opacity",strokeCap:"stroke-linecap",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",opacity:"opacity"},styleProperties:["fill","fillOpacity","stroke","strokeWidth","strokeOpacity","strokeCap","strokeDash","strokeDashOffset","opacity"]}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length){var r,i,u,s,l,c,f,h,d,p,g,m,v,y=e.items,x=this;for(p=0,g=y.length;g>p;++p){for(r=y[p],u=r.axisItems||o,i=r.items||o,s=r.legendItems||o,l=r.x||0,c=r.y||0,f=r.width||0,h=r.height||0,(r.stroke||r.fill)&&(d=null==r.opacity?1:r.opacity,d>0&&(r.fill&&a.fill(t,r,d)&&t.fillRect(l,c,f,h),r.stroke&&a.stroke(t,r,d)&&t.strokeRect(l,c,f,h))),t.save(),t.translate(l,c),r.clip&&(t.beginPath(),t.rect(0,0,f,h),t.clip()),n&&n.translate(-l,-c),m=0,v=u.length;v>m;++m)"back"===u[m].layer&&x.draw(t,u[m],n);for(m=0,v=i.length;v>m;++m)x.draw(t,i[m],n);for(m=0,v=u.length;v>m;++m)"back"!==u[m].layer&&x.draw(t,u[m],n);for(m=0,v=s.length;v>m;++m)x.draw(t,s[m],n);n&&n.translate(l,c),t.restore()}}}function i(t,e,n,r,i,a){if(e.bounds&&!e.bounds.contains(i,a))return null;var u,s,l,c,f,h,d,p,g,m,v,y=e.items||o;for(g=y.length;--g>=0;)if(s=y[g],v=s.bounds,!v||v.contains(i,a)){for(l=s.axisItems||o,c=s.items||o,f=s.legendItems||o,d=s.x||0,p=s.y||0,t.save(),t.translate(d,p),d=i-d,p=a-p,m=f.length;--m>=0;)if(u=f[m],u.interactive!==!1&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;for(m=l.length;--m>=0;)if(u=l[m],u.interactive!==!1&&"back"!==u.layer&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;for(m=c.length;--m>=0;)if(u=c[m],u.interactive!==!1&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;for(m=l.length;--m>=0;)if(u=l[m],u.interative!==!1&&"back"===u.layer&&(h=this.pick(u,n,r,d,p)))return t.restore(),h;if(t.restore(),e.interactive!==!1&&(s.fill||s.stroke)&&d>=0&&d<=s.width&&p>=0&&p<=s.height)return s}return null}var a=n(72),o=[];t.exports={draw:r,pick:i}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,i=this,a=e.items,o=0,u=a.length;u>o;++o)if(r=a[o],!n||n.intersects(r.bounds)){r.image&&r.image.url===r.url||(r.image=i.loadImage(r.url),r.image.url=r.url);var s,l=r.x||0,c=r.y||0,f=r.width||r.image&&r.image.width||0,h=r.height||r.image&&r.image.height||0;l-="center"===r.align?f/2:"right"===r.align?f:0,c-="middle"===r.baseline?h/2:"bottom"===r.baseline?h:0,r.image.loaded&&(t.globalAlpha=null!=(s=r.opacity)?s:1,t.drawImage(r.image,l,c,f,h))}}var i=n(72);t.exports={draw:r,pick:i.pick()}},function(t,e,n){function r(t,e){var n=e[0],r=n.pathCache||(n.pathCache=o(s(e)));u(t,r)}function i(t,e,n,r,i,a){var o=e.items,u=e.bounds;return!o||!o.length||u&&!u.contains(i,a)?null:(null!=t.pixelratio&&1!==t.pixelratio&&(n*=t.pixelratio,r*=t.pixelratio),l(t,o,n,r)?o[0]:null)}var a=n(72),o=n(62),u=n(63),s=n(74).path.line,l=a.testPath(r,!1);t.exports={draw:a.drawOne(r),pick:i,nested:!0}},function(t,e,n){function r(t,e){if(null==e.path)return!0;var n=e.pathCache||(e.pathCache=a(e.path));o(t,n,e.x,e.y)}var i=n(72),a=n(62),o=n(63);t.exports={draw:i.drawAll(r),pick:i.pickPath(r)}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,a,o,u,s,l,c=e.items,f=0,h=c.length;h>f;++f)r=c[f],n&&!n.intersects(r.bounds)||(a=null==r.opacity?1:r.opacity,0!==a&&(o=r.x||0,u=r.y||0,s=r.width||0,l=r.height||0,r.fill&&i.fill(t,r,a)&&t.fillRect(o,u,s,l),r.stroke&&i.stroke(t,r,a)&&t.strokeRect(o,u,s,l)))}var i=n(72);t.exports={draw:r,pick:i.pick()}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,i,a,u,s,l,c=e.items,f=0,h=c.length;h>f;++f)r=c[f], +n&&!n.intersects(r.bounds)||(i=null==r.opacity?1:r.opacity,0!==i&&(a=r.x||0,u=r.y||0,s=null!=r.x2?r.x2:a,l=null!=r.y2?r.y2:u,r.stroke&&o.stroke(t,r,i)&&(t.beginPath(),t.moveTo(a,u),t.lineTo(s,l),t.stroke())))}function i(t,e){var n=e.x||0,r=e.y||0,i=null!=e.x2?e.x2:n,a=null!=e.y2?e.y2:r,o=e.strokeWidth,u=e.strokeCap;t.lineWidth=null!=o?o:1,t.lineCap=null!=u?u:"butt",t.beginPath(),t.moveTo(n,r),t.lineTo(i,a)}function a(t,e,n,r){return t.isPointInStroke?(i(t,e),t.isPointInStroke(n,r)):!1}var o=n(72);t.exports={draw:r,pick:o.pick(a)}},function(t,e,n){function r(t,e){var n,r,i,u,s=null!=e.size?e.size:100,l=e.x,c=e.y;if(t.beginPath(),null==e.shape||"circle"===e.shape)return n=Math.sqrt(s/Math.PI),t.arc(l,c,n,0,2*Math.PI,0),void t.closePath();switch(e.shape){case"cross":n=Math.sqrt(s/5)/2,r=3*n,t.moveTo(l-r,c-n),t.lineTo(l-n,c-n),t.lineTo(l-n,c-r),t.lineTo(l+n,c-r),t.lineTo(l+n,c-n),t.lineTo(l+r,c-n),t.lineTo(l+r,c+n),t.lineTo(l+n,c+n),t.lineTo(l+n,c+r),t.lineTo(l-n,c+r),t.lineTo(l-n,c+n),t.lineTo(l-r,c+n);break;case"diamond":u=Math.sqrt(s/(2*o)),i=u*o,t.moveTo(l,c-u),t.lineTo(l+i,c),t.lineTo(l,c+u),t.lineTo(l-i,c);break;case"square":r=Math.sqrt(s),n=r/2,t.rect(l-n,c-n,r,r);break;case"triangle-down":i=Math.sqrt(s/a),u=i*a/2,t.moveTo(l,c+u),t.lineTo(l+i,c-u),t.lineTo(l-i,c-u);break;case"triangle-up":i=Math.sqrt(s/a),u=i*a/2,t.moveTo(l,c-u),t.lineTo(l+i,c+u),t.lineTo(l-i,c+u)}t.closePath()}var i=n(72),a=Math.sqrt(3),o=Math.tan(30*Math.PI/180);t.exports={draw:i.drawAll(r),pick:i.pickPath(r)}},function(t,e,n){function r(t,e,n){if(e.items&&e.items.length)for(var r,i,a,o,l,c,f,h=e.items,d=0,p=h.length;p>d;++d)r=h[d],n&&!n.intersects(r.bounds)||(f=u.value(r.text),f&&(i=null==r.opacity?1:r.opacity,0!==i&&(t.font=u.font(r),t.textAlign=r.align||"left",a=r.x||0,o=r.y||0,(l=r.radius)&&(c=(r.theta||0)-Math.PI/2,a+=l*Math.cos(c),o+=l*Math.sin(c)),r.angle&&(t.save(),t.translate(a,o),t.rotate(r.angle*Math.PI/180),a=o=0),a+=r.dx||0,o+=(r.dy||0)+u.offset(r),r.fill&&s.fill(t,r,i)&&t.fillText(f,a,o),r.stroke&&s.stroke(t,r,i)&&t.strokeText(f,a,o),r.angle&&t.restore())))}function i(t,e,n,r,i,a){if(e.fontSize<=0)return!1;if(!e.angle)return!0;var u=o(e,l,!0),s=-e.angle*Math.PI/180,c=Math.cos(s),f=Math.sin(s),h=e.x,d=e.y,p=c*i-f*a+(h-h*c+d*f),g=f*i+c*a+(d-h*f-d*c);return u.contains(p,g)}var a=n(83),o=n(84).text,u=n(88),s=n(72),l=new a;t.exports={draw:r,pick:s.pick(i)}},function(t,e){function n(t){this.clear(),t&&this.union(t)}var r=n.prototype;r.clone=function(){return new n(this)},r.clear=function(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},r.set=function(t,e,n,r){return this.x1=t,this.y1=e,this.x2=n,this.y2=r,this},r.add=function(t,e){return tthis.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},r.expand=function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},r.round=function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},r.translate=function(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},r.rotate=function(t,e,n){var r=Math.cos(t),i=Math.sin(t),a=e-e*r+n*i,o=n-e*i-n*r,u=this.x1,s=this.x2,l=this.y1,c=this.y2;return this.clear().add(r*u-i*l+a,i*u+r*l+o).add(r*u-i*c+a,i*u+r*c+o).add(r*s-i*l+a,i*s+r*l+o).add(r*s-i*c+a,i*s+r*c+o)},r.union=function(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},r.encloses=function(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},r.alignsWith=function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},r.intersects=function(t){return t&&!(this.x2t.x2||this.y2t.y2)},r.contains=function(t,e){return!(tthis.x2||ethis.y2)},r.width=function(){return this.x2-this.x1},r.height=function(){return this.y2-this.y1},t.exports=n},function(t,e,n){function r(){return L||(L=_.instance(1,1).getContext("2d"))}function i(t,e){return t.stroke&&0!==t.opacity&&0!==t.stokeOpacity&&e.expand(null!=t.strokeWidth?t.strokeWidth:1),e}function a(t,e,n,r,a){return null==e?n.set(0,0,0,0):(E(C.bounds(n),e,r,a),i(t,n)),n}function o(t,e){var n=t.path?t.pathCache||(t.pathCache=k(t.path)):null;return a(t,n,e,t.x,t.y)}function u(t,e){if(0===t.items.length)return e;var n=t.items,r=n[0],i=r.pathCache||(r.pathCache=k(S(n)));return a(r,i,e)}function s(t,e){if(0===t.items.length)return e;var n=t.items,r=n[0],i=r.pathCache||(r.pathCache=k(A(n)));return a(r,i,e)}function l(t,e){var n,r;return i(t,e.set(n=t.x||0,r=t.y||0,n+t.width||0,r+t.height||0))}function c(t,e){var n=t.x||0,r=t.y||0,i=t.width||0,a=t.height||0;return n-="center"===t.align?i/2:"right"===t.align?i:0,r-="middle"===t.baseline?a/2:"bottom"===t.baseline?a:0,e.set(n,r,n+i,r+a)}function f(t,e){var n,r;return i(t,e.set(n=t.x||0,r=t.y||0,null!=t.x2?t.x2:n,null!=t.y2?t.y2:r))}function h(t,e){var n,r,a,o,u,s,l,c,f,h=t.x||0,d=t.y||0,p=t.innerRadius||0,g=t.outerRadius||0,m=(t.startAngle||0)-T,v=(t.endAngle||0)-T,y=1/0,x=-(1/0),_=1/0,b=-(1/0),M=[m,v],w=m-m%T;for(r=0;4>r&&v>w;++r,w+=T)M.push(w);for(r=0,a=M.length;a>r;++r)n=M[r],o=Math.cos(n),s=p*o,c=g*o,u=Math.sin(n),l=p*u,f=g*u,y=Math.min(y,s,c),x=Math.max(x,s,c),_=Math.min(_,l,f),b=Math.max(b,l,f);return i(t,e.set(h+y,d+_,h+x,d+b))}function d(t,e){var n,r,a,o,u=null!=t.size?t.size:100,s=t.x||0,l=t.y||0;switch(t.shape){case"cross":r=3*Math.sqrt(u/5)/2,e.set(s-r,l-r,s+r,l+r);break;case"diamond":o=Math.sqrt(u/(2*N)),a=o*N,e.set(s-a,l-o,s+a,l+o);break;case"square":r=Math.sqrt(u),n=r/2,e.set(s-n,l-n,s+n,l+n);break;case"triangle-down":a=Math.sqrt(u/O),o=a*O/2,e.set(s-a,l-o,s+a,l+o);break;case"triangle-up":a=Math.sqrt(u/O),o=a*O/2,e.set(s-a,l-o,s+a,l+o);break;default:n=Math.sqrt(u/Math.PI),e.set(s-n,l-n,s+n,l+n)}return i(t,e)}function p(t,e,n){var i,a,o=r(),u=M.size(t),s=t.align,l=t.radius||0,c=t.x||0,f=t.y||0,h=t.dx||0,d=(t.dy||0)+M.offset(t)-Math.round(.8*u);return l&&(a=(t.theta||0)-Math.PI/2,c+=l*Math.cos(a),f+=l*Math.sin(a)),o.font=M.font(t),i=o.measureText(M.value(t.text)).width,"center"===s?h-=i/2:"right"===s&&(h-=i),e.set(h+=c,d+=f,h+i,d+u),t.angle&&!n&&e.rotate(t.angle*Math.PI/180,c,f),e.expand(n?0:1)}function g(t,e,n){var r,a,o=t.axisItems||[],u=t.items||[],s=t.legendItems||[];if(!t.clip){for(r=0,a=o.length;a>r;++r)e.union(o[r].bounds);for(r=0,a=u.length;a>r;++r)e.union(u[r].bounds);if(n)for(r=0,a=s.length;a>r;++r)e.union(s[r].bounds)}return(t.clip||t.width||t.height)&&i(t,e.add(0,0).add(t.width||0,t.height||0)),e.translate(t.x||0,t.y||0)}function m(t,e,n){var r=t.mark.marktype;e=e||R[r],e.nest&&(t=t.mark);var i=t.bounds,a=t["bounds:prev"]||(t["bounds:prev"]=new x);return i?(a.clear().union(i),i.clear()):t.bounds=new x,e(t,t.bounds,n),i||a.clear().union(t.bounds),t.bounds}function v(t,e,n){var r,i,a,o,u=t.marktype,s=R[u],l=t.items,c=l&&l.length;if(s.nest)return a=c?l[0]:(I.mark=t,I),o=m(a,s,n),e=e&&e.union(o)||o;if(e=e||t.bounds&&t.bounds.clear()||new x,c)for(r=0,i=l.length;i>r;++r)e.union(m(l[r],s,n));return t.bounds=e}var y=n(85),x=n(83),_=n(86),b=n(74),M=n(88),w=n(61),k=w.parse,E=w.render,S=b.path.area,A=b.path.line,T=Math.PI/2,O=Math.sqrt(3),N=Math.tan(30*Math.PI/180),L=null,C=y(),R={group:g,symbol:d,image:c,rect:l,rule:f,arc:h,text:p,path:o,area:u,line:s};R.area.nest=!0,R.line.nest=!0;var I={mark:null};t.exports={mark:v,item:m,text:p,group:g}},function(t,e){t.exports=function(t){function e(){}function n(e,n){t.add(e,n)}return{bounds:function(e){return arguments.length?(t=e,this):t},beginPath:e,closePath:e,moveTo:n,lineTo:n,quadraticCurveTo:function(e,n,r,i){t.add(e,n),t.add(r,i)},bezierCurveTo:function(e,n,r,i,a,o){t.add(e,n),t.add(r,i),t.add(a,o)}}}},function(t,e,n){function r(t,e){t=t||1,e=e||1;var r;if("undefined"!=typeof document&&document.createElement)r=document.createElement("canvas"),r.width=t,r.height=e;else{var i=n(87);if(!i.prototype)return null;r=new i(t,e)}return o(r)}function i(t,e,n,r,i){var o=this._ctx=t.getContext("2d"),u=1;return t.width=e+r.left+r.right,t.height=n+r.top+r.bottom,i&&"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&(o.pixelratio=u=a(t)||1),o.setTransform(u,0,0,u,u*r.left,u*r.top),t}function a(t){var e=t.getContext("2d"),n=window&&window.devicePixelRatio||1,r=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1,i=n/r;if(n!==r){var a=t.width,o=t.height;t.width=a*i,t.height=o*i,t.style.width=a+"px",t.style.height=o+"px"}return i}function o(t){var e=t.getContext("2d");if(!e.vgLineDash){var n=function(){},r=[];return e.setLineDash?(e.vgLineDash=function(t){this.setLineDash(t||r)},e.vgLineDashOffset=function(t){this.lineDashOffset=t}):void 0!==e.webkitLineDash?(e.vgLineDash=function(t){this.webkitLineDash=t||r},e.vgLineDashOffset=function(t){this.webkitLineDashOffset=t}):void 0!==e.mozDash?(e.vgLineDash=function(t){this.mozDash=t},e.vgLineDashOffset=n):(e.vgLineDash=n,e.vgLineDashOffset=n),t}}t.exports={instance:r,resize:i,lineDash:o}},function(t,e){},function(t,e){function n(t){return null!=t.fontSize?t.fontSize:11}t.exports={size:n,value:function(t){return null!=t?String(t):""},font:function(t,e){var r=t.font;return e&&r&&(r=String(r).replace(/\"/g,"'")),""+(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t.fontVariant+" ":"")+(t.fontWeight?t.fontWeight+" ":"")+n(t)+"px "+(r||"sans-serif")},offset:function(t){var e=t.baseline,r=n(t);return Math.round("top"===e?.93*r:"middle"===e?.3*r:"bottom"===e?-.21*r:0)}}},function(t,e,n){function r(t){c.call(this),this._loader=new s(t)}function i(t,e){if(!e)return null;var n,r,i,o,s,l=new u;for(n=0,r=e.length;r>n;++n)i=e[n],o=i.mark,s=o.group,i=f[o.marktype].nested?o:i,l.union(a(i.bounds,s)),i["bounds:prev"]&&l.union(a(i["bounds:prev"],s));return l.round(),t.beginPath(),t.rect(l.x1,l.y1,l.width(),l.height()),t.clip(),l}function a(t,e){if(null==e)return t;for(var n=t.clone();null!=e;e=e.mark.group)n.translate(e.x||0,e.y||0);return n}var o=n(68),u=n(83),s=n(90),l=n(86),c=n(91),f=n(70);r.RETINA=!0;var h=c.prototype,d=r.prototype=Object.create(h);d.constructor=r,d.initialize=function(t,e,n,r){return this._canvas=l.instance(e,n),t&&(o.clear(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),h.initialize.call(this,t,e,n,r)},d.resize=function(t,e,n){return h.resize.call(this,t,e,n),l.resize(this._canvas,this._width,this._height,this._padding,r.RETINA),this},d.canvas=function(){return this._canvas},d.context=function(){return this._canvas?this._canvas.getContext("2d"):null},d.pendingImages=function(){return this._loader.pending()},d.render=function(t,e){var n,r=this.context(),a=this._padding,o=this._width+a.left+a.right,u=this._height+a.top+a.bottom;return this._scene=t,r.save(),n=i(r,e),this.clear(-a.left,-a.top,o,u),this.draw(r,t,n),r.restore(),this._scene=null,this},d.draw=function(t,e,n){var r=f[e.marktype];r.draw.call(this,t,e,n)},d.clear=function(t,e,n,r){var i=this.context();i.clearRect(t,e,n,r),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,e,n,r))},d.loadImage=function(t){var e=this,n=this._scene;return this._loader.loadImage(t,function(){e.renderAsync(n)})},d.renderAsync=function(t){var e=this;e._async_id&&clearTimeout(e._async_id),e._async_id=setTimeout(function(){e.render(t),delete e._async_id},10)},t.exports=r},function(t,e,n){function r(t){this._pending=0,this._config=t||r.Config}function i(t,e){var n=o.sanitizeUrl(this.params(t));if(!n)return e&&e(t,null),null;var r=this,i=new Image;return r._pending+=1,i.onload=function(){r._pending-=1,i.loaded=!0,e&&e(null,i)},i.src=n,i}function a(t,e){var r=this,i=new(n(87).Image);return r._pending+=1,o(this.params(t),function(t,n){return r._pending-=1,t?(e&&e(t,null),null):(i.src=n,i.loaded=!0,void(e&&e(null,i)))}),i}var o=n(18);r.Config=null;var u=r.prototype;u.pending=function(){return this._pending},u.params=function(t){var e,n={url:t};for(e in this._config)n[e]=this._config[e];return n},u.imageURL=function(t){return o.sanitizeUrl(this.params(t))},u.loadImage=function(t,e){return o.useXHR?i.call(this,t,e):a.call(this,t,e)},t.exports=r},function(t,e){function n(){this._el=null,this._bgcolor=null}var r=n.prototype;r.initialize=function(t,e,n,r){return this._el=t,this.resize(e,n,r)},r.element=function(){return this._el},r.scene=function(){return this._el&&this._el.firstChild},r.background=function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},r.resize=function(t,e,n){return this._width=t,this._height=e,this._padding=n||{top:0,left:0,bottom:0,right:0},this},r.render=function(){return this},t.exports=n},function(t,e,n){t.exports={Handler:n(93),Renderer:n(94),string:{Renderer:n(96)}}},function(t,e,n){function r(){a.call(this)}var i=n(68),a=n(69),o=a.prototype,u=r.prototype=Object.create(o);u.constructor=r,u.initialize=function(t,e,n){return this._svg=i.find(t,"svg"),o.initialize.call(this,t,e,n)},u.svg=function(){return this._svg},u.listener=function(t){var e=this;return function(n){var r=n.target,i=r.__data__;n.vegaType=n.type,i=Array.isArray(i)?i[0]:i,t.call(e._obj,n,i)}},u.on=function(t,e){var n=this.eventName(t),r=this._svg,i=this._handlers,a={type:t,handler:e,listener:this.listener(e)};return(i[n]||(i[n]=[])).push(a),r.addEventListener(n,a.listener),this},u.off=function(t,e){var n,r=this.eventName(t),i=this._svg,a=this._handlers[r];if(a){for(n=a.length;--n>=0;)(a[n].type===t&&!e||a[n].handler===e)&&(i.removeEventListener(r,a[n].listener),a.splice(n,1));return this}},t.exports=r},function(t,e,n){function r(t){f.call(this),this._loader=new c(t),this._dirtyID=0}function i(t,e,n){var r,i,a;for(t=d.child(t,n,"linearGradient",g),t.setAttribute("id",e.id),t.setAttribute("x1",e.x1),t.setAttribute("x2",e.x2),t.setAttribute("y1",e.y1),t.setAttribute("y2",e.y2),r=0,i=e.stops.length;i>r;++r)a=d.child(t,r,"stop",g),a.setAttribute("offset",e.stops[r].offset),a.setAttribute("stop-color",e.stops[r].color);d.clear(t,r)}function a(t,e,n){var r;t=d.child(t,n,"clipPath",g),t.setAttribute("id",e.id),r=d.child(t,0,"rect",g),r.setAttribute("x",0),r.setAttribute("y",0),r.setAttribute("width",e.width),r.setAttribute("height",e.height)}function o(t,e){for(;t&&t.dirty!==e;t=t.mark.group){if(t.dirty=e,!t.mark||t.mark.dirty===e)return;t.mark.dirty=e}}function u(t,e,n,r,i){var a=d.child(t,r,e.tag,g,null,i);if(a.__data__=n,a.__values__={fill:"default"},"g"===e.tag){var o=d.child(a,0,"rect",g,"background");o.__data__=n}return n._svg=a}function s(t,e,n){e!==_[t]&&(null!=e?n?x.setAttributeNS(n,t,e):x.setAttribute(t,e):n?x.removeAttributeNS(n,t):x.removeAttribute(t),_[t]=e)}function l(){return"undefined"!=typeof window?window.location.href:""}var c=n(90),f=n(91),h=n(88),d=n(68),p=n(74),g=p.metadata.xmlns,m=n(95),v=f.prototype,y=r.prototype=Object.create(v);y.constructor=r,y.initialize=function(t,e,n,r){return t&&(this._svg=d.child(t,0,"svg",g,"marks"),d.clear(t,1),this._root=d.child(this._svg,0,"g",g),d.clear(this._svg,1)),this._defs={clip_id:1,gradient:{},clipping:{}},this.background(this._bgcolor),v.initialize.call(this,t,e,n,r)},y.background=function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),v.background.apply(this,arguments)},y.resize=function(t,e,n){if(v.resize.call(this,t,e,n),this._svg){var r=this._width,i=this._height,a=this._padding;this._svg.setAttribute("width",r+a.left+a.right),this._svg.setAttribute("height",i+a.top+a.bottom),this._root.setAttribute("transform","translate("+a.left+","+a.top+")")}return this},y.svg=function(){if(!this._svg)return null;var t={"class":"marks",width:this._width+this._padding.left+this._padding.right,height:this._height+this._padding.top+this._padding.bottom};for(var e in p.metadata)t[e]=p.metadata[e];return d.openTag("svg",t)+this._svg.innerHTML+d.closeTag("svg")},y.imageURL=function(t){return this._loader.imageURL(t)},y.render=function(t,e){return this._dirtyCheck(e)&&(this._dirtyAll&&this._resetDefs(),this.draw(this._root,t,-1),d.clear(this._root,1)),this.updateDefs(),this},y.draw=function(t,e,n){this.drawMark(t,e,n,m[e.marktype])},y.updateDefs=function(){var t,e=this._svg,n=this._defs,r=n.el,o=0;for(t in n.gradient)r||(r=n.el=d.child(e,0,"defs",g)),i(r,n.gradient[t],o++);for(t in n.clipping)r||(r=n.el=d.child(e,0,"defs",g)),a(r,n.clipping[t],o++);r&&(0===o?(e.removeChild(r),n.el=null):d.clear(r,o))},y._resetDefs=function(){var t=this._defs;t.clip_id=1,t.gradient={},t.clipping={}},y.isDirty=function(t){return this._dirtyAll||t.dirty===this._dirtyID},y._dirtyCheck=function(t){if(this._dirtyAll=!0,!t)return!0;var e,n,r,i,a,u,s,l=++this._dirtyID;for(a=0,u=t.length;u>a;++a)e=t[a],n=e.mark,n.marktype!==r&&(r=n.marktype,i=m[r]),"exit"!==e.status?(e=i.nest?n.items[0]:e,e._update!==l&&(e._svg?this._update(i,e._svg,e):(this._dirtyAll=!1,o(e,l)),e._update=l)):e._svg&&(i.nest&&e.mark.items.length?(this._update(i,e._svg,e.mark.items[0]),s=e.mark.items[0],s._svg=e._svg,s._update=l):d.remove(e._svg),e._svg=null);return!this._dirtyAll},y.drawMark=function(t,e,n,r){if(this.isDirty(e)){var i,a,o,s,l,c,f=r.nest?e.items&&e.items.length?[e.items[0]]:[]:e.items||[],h=e.interactive===!1?"none":null,p="g"===r.tag,m=d.cssClass(e);for(i=d.child(t,n+1,"g",g,m),i.setAttribute("class",m),e._svg=i,!p&&h&&i.style.setProperty("pointer-events",h),a=0,o=f.length;o>a;++a)this.isDirty(l=f[a])&&(c=!(this._dirtyAll||l._svg),s=u(i,r,l,a,c),this._update(r,s,l),p&&(c&&(this._dirtyAll=!0),this._recurse(s,l),c&&(this._dirtyAll=!1)));return d.clear(i,a),i}},y._recurse=function(t,e){var n,r,i=e.items||[],a=e.legendItems||[],o=e.axisItems||[],u=0;for(n=0,r=o.length;r>n;++n)"back"===o[n].layer&&this.drawMark(t,o[n],u++,m.group);for(n=0,r=i.length;r>n;++n)this.draw(t,i[n],u++);for(n=0,r=o.length;r>n;++n)"back"!==o[n].layer&&this.drawMark(t,o[n],u++,m.group);for(n=0,r=a.length;r>n;++n)this.drawMark(t,a[n],u++,m.group);d.clear(t,1+u)};var x=null,_=null,b={group:function(t,e,n){x=e.childNodes[0],_=e.__values__,t.background(s,n,this);var r=n.mark.interactive===!1?"none":null;r!==_.events&&(x.style.setProperty("pointer-events",r),_.events=r)},text:function(t,e,n){var r=h.value(n.text);r!==_.text&&(e.textContent=r,_.text=r),r=h.font(n),r!==_.font&&(e.style.setProperty("font",r),_.font=r)}};y._update=function(t,e,n){x=e,_=e.__values__,t.attr(s,n,this);var r=b[t.type];r&&r(t,e,n),this.style(x,n)},y.style=function(t,e){if(null!=e){var n,r,i,a,o;for(n=0,r=p.styleProperties.length;r>n;++n)i=p.styleProperties[n],o=e[i],o!==_[i]&&(a=p.styles[i],null==o?"fill"===a?t.style.setProperty(a,"none"):t.style.removeProperty(a):(o.id&&(this._defs.gradient[o.id]=o,o="url("+l()+"#"+o.id+")"),t.style.setProperty(a,o+"")),_[i]=o)}},t.exports=r},function(t,e,n){function r(t){return i(t.x||0,t.y||0)}function i(t,e){return"translate("+t+","+e+")"}var a=n(88),o=n(74),u=o.textAlign,s=o.path;t.exports={arc:{tag:"path",type:"arc",attr:function(t,e){t("transform",r(e)),t("d",s.arc(e))}},area:{tag:"path",type:"area",nest:!0,attr:function(t,e){var n=e.mark.items;n.length&&t("d",s.area(n))}},group:{tag:"g",type:"group",attr:function(t,e,n){var i,a,o=null;t("transform",r(e)),e.clip&&(i=n._defs,o=e.clip_id||(e.clip_id="clip"+i.clip_id++),a=i.clipping[o]||(i.clipping[o]={id:o}),a.width=e.width||0,a.height=e.height||0),t("clip-path",o?"url(#"+o+")":null)},background:function(t,e){t("class","background"),t("width",e.width||0),t("height",e.height||0)}},image:{tag:"image",type:"image",attr:function(t,e,n){var r=e.x||0,a=e.y||0,o=e.width||0,u=e.height||0,s=n.imageURL(e.url);r-="center"===e.align?o/2:"right"===e.align?o:0,a-="middle"===e.baseline?u/2:"bottom"===e.baseline?u:0,t("href",s,"http://www.w3.org/1999/xlink","xlink:href"),t("transform",i(r,a)),t("width",o),t("height",u)}},line:{tag:"path",type:"line",nest:!0,attr:function(t,e){var n=e.mark.items;n.length&&t("d",s.line(n))}},path:{tag:"path",type:"path",attr:function(t,e){t("transform",r(e)),t("d",e.path)}},rect:{tag:"rect",type:"rect",nest:!1,attr:function(t,e){t("transform",r(e)),t("width",e.width||0),t("height",e.height||0)}},rule:{tag:"line",type:"rule",attr:function(t,e){t("transform",r(e)),t("x2",null!=e.x2?e.x2-(e.x||0):0),t("y2",null!=e.y2?e.y2-(e.y||0):0)}},symbol:{tag:"path",type:"symbol",attr:function(t,e){t("transform",r(e)),t("d",s.symbol(e))}},text:{tag:"text",type:"text",nest:!1,attr:function(t,e){var n,r=e.dx||0,o=(e.dy||0)+a.offset(e),s=e.x||0,l=e.y||0,c=e.angle||0,f=e.radius||0;f&&(n=(e.theta||0)-Math.PI/2,s+=f*Math.cos(n),l+=f*Math.sin(n)),t("text-anchor",u[e.align]||"start"),c?(n=i(s,l)+" rotate("+c+")",(r||o)&&(n+=" "+i(r,o))):n=i(s+r,l+o),t("transform",n)}}}},function(t,e,n){function r(t){u.call(this),this._loader=new s(t),this._text={head:"",root:"",foot:"",defs:"",body:""},this._defs={clip_id:1,gradient:{},clipping:{}}}function i(t,e,n,r){v[r||t]=e}function a(t,e,n,r){if(null==t)return"";var i,a,o,u,s,f="";for("bgrect"===n&&e.interactive===!1&&(f+="pointer-events: none;"),"text"===n&&(f+="font: "+c.font(t)+";"),i=0,a=l.styleProperties.length;a>i;++i)o=l.styleProperties[i],u=l.styles[o],s=t[o],null==s?"fill"===u&&(f+=(f.length?" ":"")+"fill: none;"):(s.id&&(r.gradient[s.id]=s,s="url(#"+s.id+")"),f+=(f.length?" ":"")+u+": "+s+";");return f?'style="'+f+'"':null}function o(t){return t.replace(/&/g,"&").replace(//g,">")}var u=n(91),s=n(90),l=n(74),c=n(88),f=n(68),h=f.openTag,d=f.closeTag,p=n(95),g=u.prototype,m=r.prototype=Object.create(g);m.constructor=r,m.resize=function(t,e,n){g.resize.call(this,t,e,n);var r=this._padding,i=this._text,a={"class":"marks",width:this._width+r.left+r.right,height:this._height+r.top+r.bottom};for(var o in l.metadata)a[o]=l.metadata[o];return i.head=h("svg",a),i.root=h("g",{transform:"translate("+r.left+","+r.top+")"}),i.foot=d("g")+d("svg"),this},m.svg=function(){var t=this._text;return t.head+t.defs+t.root+t.body+t.foot},m.render=function(t){return this._text.body=this.mark(t),this._text.defs=this.buildDefs(),this},m.reset=function(){return this._defs.clip_id=0,this},m.buildDefs=function(){var t,e,n,r,i=this._defs,a="";for(e in i.gradient){for(n=i.gradient[e],r=n.stops,a+=h("linearGradient",{id:e,x1:n.x1,x2:n.x2,y1:n.y1,y2:n.y2}),t=0;t0?h("defs")+a+d("defs"):""},m.imageURL=function(t){return this._loader.imageURL(t)};var v;m.attributes=function(t,e){return v={},t(i,e,this),v},m.mark=function(t){var e,n,r,i=p[t.marktype],u=i.tag,s=i.attr,l=i.nest||!1,g=l?t.items&&t.items.length?[t.items[0]]:[]:t.items||[],m=this._defs,v="";for("g"!==u&&t.interactive===!1&&(e='style="pointer-events: none;"'),v+=h("g",{"class":f.cssClass(t)},e),n=0;ne;++e)"back"===i[e].layer&&(r+=this.mark(i[e]));for(e=0,n=a.length;n>e;++e)r+=this.mark(a[e]);for(e=0,n=i.length;n>e;++e)"back"!==i[e].layer&&(r+=this.mark(i[e]));for(e=0,n=o.length;n>e;++e)r+=this.mark(o[e]);return r},t.exports=r},function(t,e){function n(t){this.mark=t}var r=n.prototype;r.hasPropertySet=function(t){var e=this.mark.def.properties;return e&&null!=e[t]},r.cousin=function(t,e){if(0===t)return this;t=t||-1;var n=this.mark,r=n.group,i=null==e?n.items.indexOf(this):e,a=r.items.indexOf(n)+t;return r.items[a].items[i]},r.sibling=function(t){if(0===t)return this;t=t||-1;var e=this.mark,n=e.items.indexOf(this)+t;return e.items[n]},r.remove=function(){var t=this,e=t.mark.items,n=e.indexOf(t);return n>=0&&(n===e.length-1?e.pop():e.splice(n,1)),t},r.touch=function(){this.pathCache&&(this.pathCache=null)},t.exports=n},function(t,e){function n(t){this.id="gradient_"+r++,this.type=t||"linear",this.stops=[],this.x1=0,this.x2=1,this.y1=0,this.y2=0}var r=0,i=n.prototype;i.stop=function(t,e){return this.stops.push({offset:t,color:e}),this},t.exports=n},function(t,e,n){function r(t,e){return JSON.stringify(t,s,e)}function i(t){var e="string"==typeof t?JSON.parse(t):t;return a(e)}function a(t){var e,n,r,i,s,l=t.marktype;for(r=0,i=u.length;i>r;++r)if(s=t[u[r]])for(e=0,n=s.length;n>e;++e)s[e][l?"mark":"group"]=t,l&&"group"!==l||a(s[e]);return l&&o.mark(t),t}var o=n(84),u=["items","axisItems","legendItems"],s=["marktype","name","interactive","clip","items","axisItems","legendItems","layer","x","y","width","height","align","baseline","fill","fillOpacity","opacity","stroke","strokeOpacity","strokeWidth","strokeCap","strokeDash","strokeDashOffset","startAngle","endAngle","innerRadius","outerRadius","interpolate","tension","orient","url","path","x2","y2","size","shape","text","angle","theta","radius","dx","dy","font","fontSize","fontWeight","fontStyle","fontVariant"];t.exports={toJSON:r,fromJSON:i}},function(t,e,n){function r(t){return null==t?null:i.rgb(t)+""}var i=n(57);t.exports=r,r.schema={defs:{background:{type:"string"}}}},function(t,e,n){function r(t,e,n){function o(t,e){a.error("PARSE DATA FAILED: "+e.name+" "+t),l=-1,n(t)}function u(e){return function(r,a){if(r)o(r,e);else if(l>0)try{t.data(e.name).values(i.read(a,e.format)),0===--l&&n()}catch(u){o(u,e)}}}var s=t.config(),l=0;return(e||[]).forEach(function(e){e.url&&(l+=1,i.load(i.extend({url:e.url},s.load),u(e)));try{r.datasource(t,e)}catch(n){o(n,e)}}),0===l&&setTimeout(n,1),e}var i=n(12),a=n(8),o=n(102),u=n(134);r.datasource=function(t,e){var n=(e.transform||[]).map(function(e){return o(t,e)}),r=(e.modify||[]).map(function(n){return u(t,n,e)}),a=t.data(e.name,r.concat(n));return e.values?a.values(i.read(e.values,e.format)):e.source&&(a.source(e.source).addListener(a),t.removeListener(a.pipeline()[0])),a},t.exports=r;var s={oneOf:[{"enum":["auto"]},{type:"object",additionalProperties:{"enum":["number","boolean","date","string"]}}]};r.schema={defs:{data:{title:"Input data set definition",type:"object",allOf:[{properties:{name:{type:"string"},transform:{$ref:"#/defs/transform"},modify:{$ref:"#/defs/modify"},format:{type:"object",oneOf:[{properties:{type:{"enum":["json"]},parse:s,property:{type:"string"}},additionalProperties:!1},{properties:{type:{"enum":["csv","tsv"]},parse:s},additionalProperties:!1},{oneOf:[{properties:{type:{"enum":["topojson"]},feature:{type:"string"}},additionalProperties:!1},{properties:{type:{"enum":["topojson"]},mesh:{type:"string"}},additionalProperties:!1}]},{properties:{type:{"enum":["treejson"]},children:{type:"string"},parse:s},additionalProperties:!1}]}},required:["name"]},{anyOf:[{required:["name","modify"]},{oneOf:[{properties:{source:{type:"string"}},required:["source"]},{properties:{values:{type:"array"}},required:["values"]},{properties:{url:{type:"string"}},required:["url"]}]}]}]}}}},function(t,e,n){function r(t,e){var n,r=a[e.type];if(!r)throw new Error('"'+e.type+'" is not a valid transformation');return n=new r(t),e.output&&n.output(e.output),i.keys(e).forEach(function(t){"type"!==t&&"output"!==t&&n.param(t,e[t])}),n}var i=n(12),a=n(103);t.exports=r;var o=i.keys(a).filter(function(t){return a[t].schema}),u=o.reduce(function(t,e){return t[e+"Transform"]=a[e].schema,t},{});r.schema={defs:i.extend(u,{transform:{type:"array",items:{oneOf:o.map(function(t){return{$ref:"#/defs/"+t+"Transform"}})}}})}},function(t,e,n){t.exports={aggregate:n(104),bin:n(108),cross:n(110),countpattern:n(111),linkpath:n(112),facet:n(113),filter:n(114),fold:n(115),force:n(116),formula:n(118),geo:n(119),geopath:n(120),hierarchy:n(121),impute:n(122),lookup:n(123),pie:n(124),rank:n(125),sort:n(126),stack:n(127),treeify:n(128),treemap:n(129),voronoi:n(130),wordcloud:n(131)}},function(t,e,n){function r(t){return f.prototype.init.call(this,t),f.addParameters(this,{groupby:{type:"array"},summarize:{type:"custom",set:function(t){function e(t){t.signal&&(l[t.signal]=1)}var n,r,i,o,u,s,l={},f=this._transform;if(!a.isArray(o=t)){o=[];for(u in t)s=a.array(t[u]),o.push({field:u,ops:s})}for(n=0,r=o.length;r>n;++n)i=o[n],i.field.signal&&(l[i.field.signal]=1),a.array(i.ops).forEach(e),a.array(i.as).forEach(e);return f._fields=o,f._aggr=null,f.dependency(c.SIGNALS,a.keys(l)),f}}}),this._aggr=null,this._input=null,this._args=null,this._fields=[],this._out=[],this._type=p.TUPLE,this._acc={groupby:a["true"],value:a["true"]},this.router(!0).produces(!0)}function i(t){var e,n,r,i,a,o,u,s=[];for(a=t._dims,e=0,n=a.length;n>e;++e)s.push(a[e].name);for(o=t._aggr,e=0,n=o.length;n>e;++e)for(u=o[e].measures.fields,r=0,i=u.length;i>r;++r)s.push(u[r]);return s}var a=n(12),o=n(4),u=n(8),s=o.ChangeSet,l=o.Tuple,c=o.Dependencies,f=n(105),h=n(107),d=r.prototype=Object.create(f.prototype);d.constructor=r;var p=r.TYPES={VALUE:1,TUPLE:2,MULTI:3};r.VALID_OPS=["values","count","valid","missing","distinct","sum","mean","average","variance","variancep","stdev","stdevp","median","q1","q3","modeskew","min","max","argmin","argmax"],d.type=function(t){return this._type=t,this},d.accessors=function(t,e){var n=this._acc;n.groupby=a.$(t)||a["true"],n.value=a.$(e)||a["true"]},d.aggr=function(){if(this._aggr)return this._aggr;var t=this._graph,e=!1,n=[],r=this.param("groupby").field,o=function(e){return e.signal?t.signalRef(e.signal):e},u=this._fields.map(function(t){var r={name:o(t.field),as:a.array(t.as),ops:a.array(o(t.ops)).map(o),get:t.get};return e=e||null!=r.get,n.push(r.name),r});r.forEach(function(t){t.get&&(e=!0),n.push(t.name||t)}),this._args=e||!u.length?null:n,u.length||(u={"*":"values"});var s=this._aggr=(new h).groupby(r).stream(!0).summarize(u);return this._out=i(s),this._type!==p.VALUE&&s.key("_id"),s},d.transform=function(t,e){u.debug(t,["aggregate"]);var n,r,i,a,o,c=s.create(t),f=this.aggr(),h=this._out,d=this._args,g=!0,m=l.prev;if(e&&(c.rem.push.apply(c.rem,f.result()),f.clear(),this._aggr=null,f=this.aggr()),this._type===p.TUPLE)n=function(t){f._add(t),l.prev_init(t)},r=function(t){f._rem(m(t))},i=function(t){f._mod(t,m(t))},a=function(t){f._markMod(t,m(t))};else{var v=this._acc.groupby,y=this._acc.value,x=this._type===p.VALUE?y:function(t){return{_id:t._id,groupby:v(t),value:y(t)}};n=function(t){f._add(x(t)),l.prev_init(t)},r=function(t){f._rem(x(m(t)))},i=function(t){f._mod(x(t),x(m(t)))},a=function(t){f._mark(x(t),x(m(t)))}}if(t.add.forEach(n),e)t.mod.forEach(n);else{if(t.rem.forEach(r),d)for(o=0,g=!1;ot;++t)n=this._signals[t],r=n.index,o=n.value(u),f&&(this._accessors[r]=this._value[r]!=o?a.accessor(o):this._accessors[r]),this._value[r]=o;return i.call(this)},h.set=function(t){var e=this,n=e._transform._graph,r=c.test(this._type),i=s.test(this._type),u=l.test(this._type);return e._signals=[],this._value=a.array(t).map(function(t,s){var l;return a.isString(t)?r?(l=n.expr(t),e._transform.dependency(o.FIELDS,l.fields),e._transform.dependency(o.SIGNALS,l.globals),e._transform.dependency(o.DATA,l.dataSources),l.fn):(u?(e._accessors[s]=a.accessor(t),e._transform.dependency(o.FIELDS,a.field(t))):i&&(e._resolution=!0,e._transform.dependency(o.DATA,t)),t):void 0!==t.value?t.value:void 0!==t.field?(e._accessors[s]=a.accessor(t.field),e._transform.dependency(o.FIELDS,a.field(t.field)),t.field):void 0!==t.signal?(e._resolution=!0,e._transform.dependency(o.SIGNALS,t.signal),e._signals.push({index:s,value:function(e){return e.signalRef(t.signal)}}),t.signal):void 0!==t.expr?(e._resolution=!0,l=n.expr(t.expr),e._transform.dependency(o.SIGNALS,l.globals),e._signals.push({index:s,value:function(){return l.fn()}}),t.expr):t}),e._transform},t.exports=r,r.schema={type:"object",oneOf:[{properties:{field:{type:"string"}},required:["field"]},{properties:{value:{type:"string"}},required:["value"]}]}},function(t,e,n){function r(){o.call(this),this._facet=null,this._facetID=++f}function i(t){c.debug({},["disconnecting cell",this.tuple._id]);var e=this.ds.pipeline();t.removeListener(e[0]),t._graph.removeListener(e[0]),t._graph.disconnect(e)}var a=n(12),o=a.Aggregator,u=o.prototype,s=n(4),l=s.Tuple,c=n(8),f=0,h=r.prototype=Object.create(u);h.constructor=r,h.facet=function(t){return arguments.length?(this._facet=t,this):this._facet},h._ingest=function(t){return l.ingest(t,null)},h._assign=l.set,h._newcell=function(t,e){var n=u._newcell.call(this,t,e),r=this._facet;if(r){var a=r._graph,o=n.tuple,s=r.param("transform");n.ds=a.data(o._facetID,s,o),n.disconnect=i,r.addListener(s[0])}return n},h._newtuple=function(t,e){var n=u._newtuple.call(this,t);return this._facet&&(l.set(n,"key",e),l.set(n,"_facetID",this._facetID+"_"+e)),n},h.clear=function(){if(this._facet)for(var t in this._cells)this._cells[t].disconnect(this._facet);return u.clear.call(this)},h._on_add=function(t,e){this._facet&&e.ds._input.add.push(t)},h._on_rem=function(t,e){this._facet&&e.ds._input.rem.push(t)},h._on_mod=function(t,e,n,r){this._facet&&(n===r?n.ds._input.mod.push(t):(n.ds._input.rem.push(t),r.ds._input.add.push(t)))},h._on_drop=function(t){this._facet&&t.disconnect(this._facet)},h._on_keep=function(t){this._facet&&s.ChangeSet.copy(this._input,t.ds._input)},t.exports=r},function(t,e,n){function r(t){return s.prototype.init.call(this,t),u.addParameters(this,{field:{type:"field"},min:{type:"value"},max:{type:"value"},base:{type:"value","default":10},maxbins:{type:"value","default":20},step:{type:"value"},steps:{type:"value"},minstep:{type:"value"},div:{type:"array","default":[5,2]}}),this._output={start:"bin_start",end:"bin_end",mid:"bin_mid"},this.mutates(!0)}var i=n(12),a=n(4).Tuple,o=n(8),u=n(105),s=n(109),l=r.prototype=Object.create(s.prototype);l.constructor=r,l.extent=function(t){var e,n=[this.param("min"),this.param("max")];return null!=n[0]&&null!=n[1]||(e=i.extent(t,this.param("field").accessor),null==n[0]&&(n[0]=e[0]),null==n[1]&&(n[1]=e[1])),n},l.batchTransform=function(t,e){function n(t){var e=f(t);e=null==e?null:d.start+p*~~((e-d.start)/p),a.set(t,u.start,e),a.set(t,u.end,e+p),a.set(t,u.mid,e+p/2)}o.debug(t,["binning"]);var r=this.extent(e),u=this._output,s=this.param("step"),l=this.param("steps"),c=this.param("minstep"),f=this.param("field").accessor,h={min:r[0],max:r[1],base:this.param("base"),maxbins:this.param("maxbins"),div:this.param("div")};s&&(h.step=s),l&&(h.steps=l),c&&(h.minstep=c);var d=i.bins(h),p=d.step;return t.add.forEach(n),t.mod.forEach(n),t.rem.forEach(n),t.fields[u.start]=1,t.fields[u.end]=1,t.fields[u.mid]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Bin transform",description:"Bins values into quantitative bins (e.g., for a histogram).",type:"object",properties:{type:{"enum":["bin"]},field:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}],description:"The name of the field to bin values from."},min:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}],description:"The minimum bin value to consider."},max:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}],description:"The maximum bin value to consider."},base:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}],description:"The number base to use for automatic bin determination.","default":10},maxbins:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}],description:"The maximum number of allowable bins.","default":20},step:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}],description:"An exact step size to use between bins. If provided, options such as maxbins will be ignored."},steps:{description:"An array of allowable step sizes to choose from.",oneOf:[{type:"array",items:{type:"number"}},{$ref:"#/refs/signal"}]},minstep:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}],description:"A minimum allowable step size (particularly useful for integer values)."},div:{description:"An array of scale factors indicating allowable subdivisions.",oneOf:[{type:"array",items:{type:"number"},"default":[5,2]},{$ref:"#/refs/signal"}]},output:{type:"object",description:"Rename the output data fields",properties:{start:{type:"string","default":"bin_start"},end:{type:"string","default":"bin_end"},mid:{type:"string","default":"bin_mid"}},additionalProperties:!1}},additionalProperties:!1,required:["type","field"]}},function(t,e,n){function r(){this._collector=null}var i=n(105).prototype,a=r.prototype=Object.create(i);a.constructor=r,a.init=function(t){return i.init.call(this,t),this.batch(!0)},a.transform=function(t,e){return this.batchTransform(t,this._collector.data(),e)},a.batchTransform=function(){},t.exports=r},function(t,e,n){function r(t){return m.prototype.init.call(this,t),g.addParameters(this,{"with":{type:"data"},diagonal:{type:"value","default":"true"},filter:{type:"expr"}}),this._output={left:"a",right:"b"},this._lastWith=null,this._cids={},this._cache={},this.router(!0).produces(!0)}function i(t,e){var n=this._cache,r=n[t._id]||(n[t._id]={c:[],f:!1});r.c.push(e)}function a(t,e,n){return t?e._id+"_"+n._id:n._id+"_"+e._id}function o(t,e,n,r,o,u,s){for(var l,c,f=this._output,h=this._cache,p=this._cids,g=t.add,m=!1,v=0,y=n.length,x={};y>v;++v)l=n[v],c=a(e,s,l),p[c]||(s._id!==l._id||r)&&(d.set(x,f.left,e?s:l),d.set(x,f.right,e?l:s),!o||o(x)?(g.push(x=d.ingest(x)),i.call(this,s,x),s._id!==l._id&&i.call(this,l,x),u[x._id]=1,p[c]=!0,x={}):(h[l._id]&&(h[l._id].f=!0),m=!0));h[s._id]&&(h[s._id].f=m)}function u(t,e,n,r,i,u,s,l){var c,f,h,d,p,g=this._output,m=this._cache,v=this._cids,y=m[l._id],x=y&&y.c,_=!y||y.f,b=t.mod,M=t.rem;if(x)for(c=x.length-1;c>=0;--c)if(f=x[c],d=l===f[g.left],h=d?f[g.right]:f[g.left],p=a(d,l,h),m[h._id])if(!i||i(f)){if(u[f._id])continue;b.push(f),u[f._id]=1}else s[f._id]||M.push.apply(M,x.splice(c,1)),s[f._id]=1,v[p]=!1,y.f=!0;else v[p]=!1,x.splice(c,1);i&&_&&o.call(this,t,e,n,r,i,u,l)}function s(t,e,n,r){var i,o,u,s,l,c=this._output,f=this._cache[r._id],h=this._cids,d=t.rem;if(f){for(i=0,o=f.c.length;o>i;++i)u=f.c[i],l=r===u[c.left],s=l?u[c.right]:u[c.left],h[a(l,r,s)]=!1,n[u._id]||(d.push(u),n[u._id]=1);this._cache[r._id]=null}}function l(t,e){var n,r,i,a,o,u,s=this._cache,l=c.keys(s),f=t.rem;for(n=0,r=l.length;r>n;++n)for(o=s[l[n]],i=0,a=o.c.length;a>i;++i)u=o.c[i],e[u._id]||(f.push(u),e[u._id]=1);this._cache={},this._cids={},this._lastWith=null}var c=n(12),f=n(4),h=f.ChangeSet,d=f.Tuple,p=n(8),g=n(105),m=n(109),v=r.prototype=Object.create(m.prototype);v.constructor=r,v.batchTransform=function(t,e,n){p.debug(t,["crossing"]);var r=this.param("with"),i=this.param("diagonal"),a=this._output,c=this.param("filter")||null,f=!r.name,d=f?t:r.source.last(),g=f?e:r.source.values(),m=h.create(t),v={},y={};return n?(l.call(this,m,y),e.forEach(o.bind(this,m,!0,g,i,c,v)),this._lastWith=d.stamp):(t.rem.forEach(s.bind(this,m,!0,y)),t.add.forEach(o.bind(this,m,!0,g,i,c,v)),d.stamp>this._lastWith&&(d.rem.forEach(s.bind(this,m,!1,y)),d.add.forEach(o.bind(this,m,!1,e,i,c,v)),d.mod.forEach(u.bind(this,m,!1,e,i,c,v,y)),this._lastWith=d.stamp),t.mod.forEach(u.bind(this,m,!0,g,i,c,v,y))),m.fields[a.left]=1,m.fields[a.right]=1,m},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Cross transform",description:"Compute the cross-product of two data sets.",type:"object",properties:{type:{"enum":["cross"]},"with":{type:"string",description:"The name of the secondary data set to cross with the primary data. If unspecified, the primary data is crossed with itself."},diagonal:{oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],description:'If false, items along the "diagonal" of the cross-product (those elements with the same index in their respective array) will not be included in the output.',"default":!0},filter:{type:"string",description:"A string containing an expression (in JavaScript syntax) to filter the resulting data elements."},output:{type:"object",description:"Rename the output data fields",properties:{left:{type:"string","default":"a"},right:{type:"string","default":"b"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return u.prototype.init.call(this,t),u.addParameters(this,{field:{type:"field","default":"data"},pattern:{type:"value","default":"[\\w']+"},"case":{type:"value","default":"lower"},stopwords:{type:"value","default":""}}),this._output={text:"text",count:"count"},this.router(!0).produces(!0)}var i=n(4),a=i.Tuple,o=n(8),u=n(105),s=r.prototype=Object.create(u.prototype);s.constructor=r,s.transform=function(t,e){function n(t){return a.prev_init(t),i(t)}function r(t){return i(a.prev(t))}o.debug(t,["countpattern"]);var i=this.param("field").accessor,u=this.param("pattern"),s=this.param("stopwords"),l=!1;return this._stop!==s&&(this._stop=s,this._stop_re=new RegExp("^"+s+"$","i"),e=!0),this._pattern!==u&&(this._pattern=u,this._match=new RegExp(this._pattern,"g"),e=!0),e&&(this._counts={}),this._add(t.add,n),e||this._rem(t.rem,r),(e||(l=t.fields[i.field]))&&(l&&this._rem(t.mod,r),this._add(t.mod,n)),this._changeset(t)},s._changeset=function(t){var e,n,r,o=this._counts,u=this._tuples||(this._tuples={}),s=i.ChangeSet.create(t),l=this._output;for(e in o)n=u[e],r=o[e]||0,!n&&r?(u[e]=n=a.ingest({}),n[l.text]=e,n[l.count]=r,s.add.push(n)):0===r?(n&&s.rem.push(n),delete o[e],delete u[e]):n[l.count]!==r&&(a.set(n,l.count,r),s.mod.push(n));return s},s._tokenize=function(t){switch(this.param("case")){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(this._match)},s._add=function(t,e){var n,r,i,a,o=this._counts,u=this._stop_re;for(i=0;iMath.PI?t>=n:n>t;return"M"+e*i+","+e*a+"A"+e+","+e+" 0 0,"+(s?1:0)+" "+e*o+","+e*u+"L"+r*o+","+r*u}function l(t,e,n,r){var i=(t+n)/2;return"M"+t+","+e+"C"+i+","+e+" "+i+","+r+" "+n+","+r}function c(t,e,n,r){var i=(e+r)/2;return"M"+t+","+e+"C"+t+","+i+" "+n+","+i+" "+n+","+r}function f(t,e,n,r){var i=Math.cos(t),a=Math.sin(t),o=Math.cos(n),u=Math.sin(n),s=(e+r)/2;return"M"+e*i+","+e*a+"C"+s*i+","+s*a+" "+s*o+","+s*u+" "+r*o+","+r*u}var h=n(4).Tuple,d=n(8),p=n(105),g=r.prototype=Object.create(p.prototype);g.constructor=r;var m={line:i,curve:a,cornerX:o,cornerY:u,cornerR:s,diagonalX:l,diagonalY:c,diagonalR:f};g.transform=function(t){function e(t){var e=r(i(t),a(t),o(t),u(t),s);h.set(t,n.path,e)}d.debug(t,["linkpath"]);var n=this._output,r=m[this.param("shape")]||m.line,i=this.param("sourceX").accessor,a=this.param("sourceY").accessor,o=this.param("targetX").accessor,u=this.param("targetY").accessor,s=this.param("tension");return t.add.forEach(e),this.reevaluate(t)&&(t.mod.forEach(e),t.rem.forEach(e)),t.fields[n.path]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"LinkPath transform",description:"Computes a path definition for connecting nodes within a node-link network or tree diagram.",type:"object",properties:{type:{"enum":["linkpath"]},sourceX:{description:"The data field that references the source x-coordinate for this link.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"_source"},sourceY:{description:"The data field that references the source y-coordinate for this link.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"_source"},targetX:{description:"The data field that references the target x-coordinate for this link.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"_target"},targetY:{description:"The data field that references the target y-coordinate for this link.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"_target"},tension:{description:'A tension parameter for the "tightness" of "curve"-shaped links.',oneOf:[{type:"number",minimum:0,maximum:1},{$ref:"#/refs/signal"}],"default":.2},shape:{description:"The path shape to use",oneOf:[{"enum":["line","curve","cornerX","cornerY","cornerR","diagonalX","diagonalY","diagonalR"]},{$ref:"#/refs/signal"}],"default":"line"},output:{type:"object",description:"Rename the output data fields",properties:{path:{type:"string","default":"layout_path"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return i.addParameters(this,{transform:{type:"custom",set:function(t){return this._transform._pipeline=t,this._transform},get:function(){var t=n(102),e=this._transform;return e._pipeline.map(function(n){return t(e._graph,n)})}}}),this._pipeline=[],a.call(this,t)}var i=n(105),a=n(104),o=r.prototype=Object.create(a.prototype);o.constructor=r,o.aggr=function(){return a.prototype.aggr.call(this).facet(this)},o.transform=function(t,e){var n=a.prototype.transform.call(this,t,e);return t.add.length&&this.listeners()[0].rerank(),n},t.exports=r;var u=n(12);r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Facet transform",description:'A special aggregate transform that organizes a data set into groups or "facets".',type:"object",properties:u.extend({},a.schema.properties,{type:{"enum":["facet"]},transform:{$ref:"#/defs/transform"}}),additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return o.prototype.init.call(this,t),o.addParameters(this,{test:{type:"expr"}}),this._skip={},this.router(!0)}var i=n(4),a=n(8),o=n(105),u=r.prototype=Object.create(o.prototype);u.constructor=r,u.transform=function(t){a.debug(t,["filtering"]);var e=i.ChangeSet.create(t),n=this._skip,r=this.param("test");return t.rem.forEach(function(t){1!==n[t._id]?e.rem.push(t):n[t._id]=0}),t.add.forEach(function(t){r(t)?e.add.push(t):n[t._id]=1}),t.mod.forEach(function(t){var i=r(t),a=1===n[t._id];i&&a?(n[t._id]=0,e.add.push(t)):i&&!a?e.mod.push(t):!i&&a||(e.rem.push(t),n[t._id]=1)}),e},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Filter transform",description:"Filters elements from a data set to remove unwanted items.",type:"object",properties:{type:{"enum":["filter"]},test:{type:"string",description:"A string containing an expression (in JavaScript syntax) for the filter predicate."}},additionalProperties:!1,required:["type","test"]}},function(t,e,n){function r(t){return u.prototype.init.call(this,t),u.addParameters(this,{fields:{type:"array"}}),this._output={key:"key",value:"value"},this._cache={},this.router(!0).produces(!0)}var i=n(4),a=i.Tuple,o=n(8),u=n(105),s=r.prototype=Object.create(u.prototype);s.constructor=r,s._reset=function(t,e){for(var n in this._cache)e.rem.push.apply(e.rem,this._cache[n]);this._cache={}},s._tuple=function(t,e,n){var r=this._cache[t._id]||(this._cache[t._id]=Array(n));return r[e]?a.rederive(t,r[e]):r[e]=a.derive(t)},s._fn=function(t,e,n){var r,i,o,u,s,l;for(r=0,o=t.length;o>r;++r)for(s=t[r],i=0,u=e.field.length;u>i;++i)l=this._tuple(s,i,u),a.set(l,this._output.key,e.field[i]),a.set(l,this._output.value,e.accessor[i](s)),n.push(l)},s.transform=function(t,e){o.debug(t,["folding"]);var n=this,r=this.param("fields"),a=i.ChangeSet.create(t);return e&&this._reset(t,a),this._fn(t.add,r,a.add),this._fn(t.mod,r,e?a.add:a.mod),t.rem.forEach(function(t){a.rem.push.apply(a.rem,n._cache[t._id]),n._cache[t._id]=null}),(t.add.length||t.rem.length||r.field.some(function(e){return!!t.fields[e]}))&&(a.fields[this._output.key]=1,a.fields[this._output.value]=1),a},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Fold transform",description:'Collapse ("fold") one or more data properties into two properties.',type:"object",properties:{type:{"enum":["fold"]},fields:{oneOf:[{type:"array",description:"An array of field references indicating the data properties to fold.",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},minItems:1,uniqueItems:!0},{$ref:"#/refs/signal"}]},output:{type:"object",description:"Rename the output data fields",properties:{key:{type:"string","default":"key"},value:{type:"string","default":"value"}},additionalProperties:!1}},additionalProperties:!1,required:["type","fields"]}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),this._prev=null,this._interactive=!1,this._setup=!0,this._nodes=[],this._links=[],this._layout=i.layout.force(),l.addParameters(this,{size:{type:"array","default":n(117).size},bound:{type:"value","default":!0},links:{type:"data"},linkStrength:{type:"value","default":1},linkDistance:{type:"value","default":20},charge:{type:"value","default":-30},chargeDistance:{type:"value","default":1/0},friction:{type:"value","default":.9},theta:{type:"value","default":.8},gravity:{type:"value","default":.1},alpha:{type:"value","default":.1},iterations:{type:"value","default":500},interactive:{type:"value","default":this._interactive},active:{type:"value","default":this._prev},fixed:{type:"data"}}),this._output={x:"layout_x",y:"layout_y"},this.mutates(!0)}var i=n(57),a=n(4),o=a.Tuple,u=a.ChangeSet,s=n(8),l=n(105),c=r.prototype=Object.create(l.prototype);c.constructor=r,c.transform=function(t,e){s.debug(t,["force"]),e-=t.signals.active?1:0;var n=this.param("interactive"),r=this.param("links").source,i=r.last(),a=this.param("active"),u=this._output,l=this._layout,c=this._nodes,f=this._links;if(i.stampd;++d)l.tick();l.stop()}return this.update(a),(e||a!==this._prev&&a&&a.update)&&l.alpha(this.param("alpha")),a!==this._prev&&(this._prev=a),t.rem.length&&l.nodes(this._nodes=o.idFilter(c,t.rem)),i&&i.rem.length&&l.links(this._links=o.idFilter(f,i.rem)),t.fields[u.x]=1,t.fields[u.y]=1,t},c.configure=function(t,e,n,r){var i=this._layout,a=this._setup||t.add.length||e&&e.add.length||n!==this._interactive||this.param("charge")!==i.charge()||this.param("linkStrength")!==i.linkStrength()||this.param("linkDistance")!==i.linkDistance();if((a||r)&&i.size(this.param("size")).chargeDistance(this.param("chargeDistance")).theta(this.param("theta")).gravity(this.param("gravity")).friction(this.param("friction")),a){this._setup=!1,this._interactive=n;var o,s,l=this,c=this._graph,f=this._nodes,h=this._links;for(o=t.add,s=0;sn;++n)d[c[n].id]=1;for(n=0;n"},translate:{type:"array","default":n(117).center},rotate:{type:"array"},scale:{type:"value"},precision:{type:"value"},clipAngle:{type:"value"},clipExtent:{type:"value"}},r.d3Projection=function(){var t,e,n,o=this.param("projection"),u=r.Parameters;o!==this._mode&&(this._mode=o,this._projection=i.geo[o]()),t=this._projection;for(e in u)"projection"!==e&&t[e]&&(n=this.param(e),void 0===n||a.isArray(n)&&0===n.length||n!==t[e]()&&t[e](n));return t};var l=r.prototype=Object.create(s.prototype);l.constructor=r,l.transform=function(t){function e(t){var e=[i(t),a(t)],r=s(e)||[null,null];o.set(t,n.x,r[0]),o.set(t,n.y,r[1])}u.debug(t,["geo"]);var n=this._output,i=this.param("lon").accessor,a=this.param("lat").accessor,s=r.d3Projection.call(this);return t.add.forEach(e),this.reevaluate(t)&&(t.mod.forEach(e),t.rem.forEach(e)),t.fields[n.x]=1,t.fields[n.y]=1,t},t.exports=r,r.baseSchema={projection:{description:"The type of cartographic projection to use.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"mercator"},center:{description:"The center of the projection.",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}]},translate:{description:"The translation of the projection.",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}]},rotate:{description:"The rotation of the projection.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},scale:{description:"The scale of the projection.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},precision:{description:"The desired precision of the projection.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},clipAngle:{description:"The clip angle of the projection.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},clipExtent:{description:"The clip extent of the projection.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}},r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Geo transform",description:"Performs a cartographic projection. Given longitude and latitude values, sets corresponding x and y properties for a mark.",type:"object",properties:a.extend({type:{"enum":["geo"]},lon:{description:"The input longitude values.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},lat:{description:"The input latitude values.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"}},additionalProperties:!1}},r.baseSchema),required:["type","lon","lat"],additionalProperties:!1}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),l.addParameters(this,s.Parameters),l.addParameters(this,{field:{type:"field","default":null}}),this._output={path:"layout_path"},this.mutates(!0)}var i=n(57),a=n(12),o=n(4).Tuple,u=n(8),s=n(119),l=n(105),c=r.prototype=Object.create(l.prototype);c.constructor=r,c.transform=function(t){function e(t){o.set(t,n.path,c(r(t)))}u.debug(t,["geopath"]);var n=this._output,r=this.param("field").accessor||a.identity,l=s.d3Projection.call(this),c=i.geo.path().projection(l);return t.add.forEach(e),this.reevaluate(t)&&(t.mod.forEach(e),t.rem.forEach(e)),t.fields[n.path]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"GeoPath transform",description:"Creates paths for geographic regions, such as countries, states and counties.",type:"object",properties:a.extend({type:{"enum":["geopath"]},field:{description:"The data field containing GeoJSON Feature data.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},output:{type:"object",description:"Rename the output data fields",properties:{path:{type:"string","default":"layout_path"}},additionalProperties:!1}},s.baseSchema),required:["type"],additionalProperties:!1}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),s.addParameters(this,{sort:{type:"array","default":null},children:{type:"field","default":"children"},parent:{type:"field","default":"parent"},field:{type:"value","default":null},mode:{type:"value","default":"tidy"},size:{type:"array","default":n(117).size},nodesize:{type:"array","default":null},orient:{type:"value","default":"cartesian"}}),this._mode=null,this._output={x:"layout_x",y:"layout_y",width:"layout_width",height:"layout_height",depth:"layout_depth"},this.mutates(!0)}var i=n(57),a=n(12),o=n(4).Tuple,u=n(8),s=n(105),l=n(109),c="partition",f={cartesian:function(t,e){return t.parent===e.parent?1:2},radial:function(t,e){return(t.parent===e.parent?1:2)/t.depth; -}},h=r.prototype=Object.create(l.prototype);h.constructor=r,h.batchTransform=function(t,e){u.debug(t,["hierarchy layout"]);var n=this._layout,r=this._output,s=this.param("mode"),l=this.param("sort"),h=this.param("nodesize"),d=this.param("parent").accessor,p=e.filter(function(t){return null===d(t)})[0];return s!==this._mode&&(this._mode=s,"tidy"===s&&(s="tree"),n=this._layout=i.layout[s]()),t.fields[r.x]=1,t.fields[r.y]=1,t.fields[r.depth]=1,s===c?(t.fields[r.width]=1,t.fields[r.height]=1,n.value(this.param("field").accessor)):n.separation(f[this.param("orient")]),h.length&&s!==c?n.nodeSize(h):n.size(this.param("size")),n.sort(l.field.length?a.comparator(l.field):null).children(this.param("children").accessor).nodes(p),e.forEach(function(t){o.set(t,r.x,t.x),o.set(t,r.y,t.y),o.set(t,r.depth,t.depth),s===c&&(o.set(t,r.width,t.dx),o.set(t,r.height,t.dy))}),t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Hierarchy transform",type:"object",properties:{type:{"enum":["hierarchy"]},sort:{description:"A list of fields to use as sort criteria for sibling nodes.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]},children:{description:"The data field for the children node array",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"children"},parent:{description:"The data field for the parent node",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"parent"},field:{description:"The value for the area of each leaf-level node for partition layouts.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},mode:{description:"The layout algorithm mode to use.",oneOf:[{"enum":["tidy","cluster","partition"]},{$ref:"#/refs/signal"}],"default":"tidy"},orient:{description:"The layout orientation to use.",oneOf:[{"enum":["cartesian","radial"]},{$ref:"#/refs/signal"}],"default":"cartesian"},size:{description:"The dimensions of the tree layout",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":[500,500]},nodesize:{description:"Sets a fixed x,y size for each node (overrides the size parameter)",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":null},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"},width:{type:"string","default":"layout_width"},height:{type:"string","default":"layout_height"},depth:{type:"string","default":"layout_depth"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return c.prototype.init.call(this,t),l.addParameters(this,{groupby:{type:"array"},orderby:{type:"array"},field:{type:"field"},method:{type:"value","default":"value"},value:{type:"value","default":0}}),this.router(!0).produces(!0)}function i(t,e,n,r){var i,a={_imputed:!0};for(i=0;il;++l)for(r=M[l],"value"!==g&&(m=o[g](r,n)),s=0,c=r.length;c>s;++s)null==r[s]&&(h=i(d.field,r.values,p.field,w[s]),h[x]=m,b.push(h));for(s=0,c=b.length;c>s;++s)t.add.push(b[s]);for(s=0,c=_.length;c>s;++s)t.rem.push(_[s]);return this._imputed=b,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Impute transform",description:"Performs imputation of missing values.",type:"object",properties:{type:{"enum":["impute"]},method:{description:"The imputation method to use.",oneOf:[{"enum":["value","mean","median","min","max"]},{$ref:"#/refs/signal"}],"default":"value"},value:{description:"The value to use for missing data if the method is 'value'.",oneOf:[{type:"number"},{type:"string"},{type:"boolean"},{type:"null"},{$ref:"#/refs/signal"}],"default":0},field:{description:"The data field to impute.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},groupby:{description:"A list of fields to group the data into series.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]},orderby:{description:"A list of fields to determine ordering within series.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]}},additionalProperties:!1,required:["type","groupby","orderby","field"]}},function(t,e,n){function r(t){return o.prototype.init.call(this,t),o.addParameters(this,{on:{type:"data"},onKey:{type:"field","default":null},as:{type:"array"},keys:{type:"array","default":["data"]},"default":{type:"value"}}),this.mutates(!0)}var i=n(4).Tuple,a=n(8),o=n(105),u=r.prototype=Object.create(o.prototype);u.constructor=r,u.transform=function(t,e){function n(t){for(var e=0;en;++n)o=e[n],f[u=c(o)]=f[u]||(f[u]=++r);for(n=0;h>n&&(o=e[n]);++n)c&&(u=c(o))?i.set(o,s,l?f[u]/r:f[u]):i.set(o,s,l?(n+1)/h:n+1);return t.fields[s]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Rank transform",description:"Computes ascending rank scores for data tuples.",type:"object",properties:{type:{"enum":["rank"]},field:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}],description:"A key field to used to rank tuples. If undefined, tuples will be ranked in their observed order."},normalize:{description:"If true, values of the output field will lie in the range [0, 1].",oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],"default":!1},output:{type:"object",description:"Rename the output data fields",properties:{rank:{type:"string","default":"rank"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){o.prototype.init.call(this,t),o.addParameters(this,{by:{type:"array"}}),this.router(!0)}var i=n(12),a=n(8),o=n(105),u=r.prototype=Object.create(o.prototype);u.constructor=r,u.transform=function(t){return a.debug(t,["sorting"]),(t.add.length||t.mod.length||t.rem.length)&&(t.sort=i.comparator(this.param("by").field)),t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Sort transform",description:"Sorts the values of a data set.",type:"object",properties:{type:{"enum":["sort"]},by:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}}],description:"A list of fields to use as sort criteria."}},required:["type","by"]}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),s.addParameters(this,{groupby:{type:"array"},sortby:{type:"array"},field:{type:"field"},offset:{type:"value","default":"zero"}}),this._output={start:"layout_start",end:"layout_end",mid:"layout_mid"},this.mutates(!0)}function i(t,e,n,r){var i,a,o,u,s,l,c,f=[],h=function(t){return t(o)};if(null==e)f.push(t.slice());else for(i={},a=0;ac&&(c=l),null!=n&&s.sort(n)}return f.max=c,f}var a=n(12),o=n(4).Tuple,u=n(8),s=n(105),l=n(109),c=r.prototype=Object.create(l.prototype);c.constructor=r,c.batchTransform=function(t,e){u.debug(t,["stacking"]);for(var n=this.param("groupby").accessor,r=a.comparator(this.param("sortby").field),s=this.param("field").accessor,l=this.param("offset"),c=this._output,f=i(e,n,r,s),h=0,d=f.max;h"}}),this._output={children:"children",parent:"parent"},this.router(!0).produces(!0)}var i=n(12),a=n(4).Tuple,o=n(8),u=n(105),s=n(109),l=r.prototype=Object.create(s.prototype);l.constructor=r,l.batchTransform=function(t,e){function n(t,e,r){var i=h[t].execute(r);e[l]=i,i.forEach(function(r){r[c]=e,p.push(a.ingest(r)),t+1r;++r)t.add.push(p[r]);for(r=0,u=d.length;u>r;++r)t.rem.push(d[r]);return this._internal=p,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Treeify transform",type:"object",properties:{type:{"enum":["treeify"]},groupby:{description:"An ordered list of fields by which to group tuples into a tree.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]},output:{type:"object",description:"Rename the output data fields",properties:{children:{type:"string","default":"children"},parent:{type:"string","default":"parent"}},additionalProperties:!1}},additionalProperties:!1,required:["type","groupby"]}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),s.addParameters(this,{sort:{type:"array","default":["-value"]},children:{type:"field","default":"children"},parent:{type:"field","default":"parent"},field:{type:"field","default":"value"},size:{type:"array","default":n(117).size},round:{type:"value","default":!0},sticky:{type:"value","default":!1},ratio:{type:"value","default":c},padding:{type:"value","default":null},mode:{type:"value","default":"squarify"}}),this._layout=i.layout.treemap(),this._output={x:"layout_x",y:"layout_y",width:"layout_width",height:"layout_height",depth:"layout_depth"},this.mutates(!0)}var i=n(57),a=n(12),o=n(4).Tuple,u=n(8),s=n(105),l=n(109),c=.5*(1+Math.sqrt(5)),f=r.prototype=Object.create(l.prototype);f.constructor=r,f.batchTransform=function(t,e){u.debug(t,["treemap"]);var n=this._layout,r=this._output,i=this.param("sticky"),s=this.param("parent").accessor,l=e.filter(function(t){return null===s(t)})[0];return n.sticky()!==i&&n.sticky(i),n.sort(a.comparator(this.param("sort").field)).children(this.param("children").accessor).value(this.param("field").accessor).size(this.param("size")).round(this.param("round")).ratio(this.param("ratio")).padding(this.param("padding")).mode(this.param("mode")).nodes(l),e.forEach(function(t){o.set(t,r.x,t.x),o.set(t,r.y,t.y),o.set(t,r.width,t.dx),o.set(t,r.height,t.dy),o.set(t,r.depth,t.depth)}),t.fields[r.x]=1,t.fields[r.y]=1,t.fields[r.width]=1,t.fields[r.height]=1,t.fields[r.depth]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Treemap transform",type:"object",properties:{type:{"enum":["treemap"]},sort:{description:"A list of fields to use as sort criteria for sibling nodes.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}],"default":["-value"]},children:{description:"The data field for the children node array",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"children"},parent:{description:"The data field for the parent node",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"parent"},field:{description:"The values to use to determine the area of each leaf-level treemap cell.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},mode:{description:"The treemap layout algorithm to use.",oneOf:[{"enum":["squarify","slice","dice","slice-dice"]},{$ref:"#/refs/signal"}],"default":"squarify"},size:{description:"The dimensions of the treemap layout",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":[500,500]},round:{description:"If true, treemap cell dimensions will be rounded to integer pixels.",oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],"default":!0},sticky:{description:"If true, repeated runs of the treemap will use cached partition boundaries.",oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],"default":!1},ratio:{description:"The target aspect ratio for the layout to optimize.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}],"default":c},padding:{oneOf:[{type:"number"},{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:4,maxItems:4},{$ref:"#/refs/signal"}],description:"he padding (in pixels) to provide around internal nodes in the treemap."},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"},width:{type:"string","default":"layout_width"},height:{type:"string","default":"layout_height"},depth:{type:"string","default":"layout_depth"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return s.prototype.init.call(this,t),u.addParameters(this,{clipExtent:{type:"array","default":n(117).extent},x:{type:"field","default":"layout_x"},y:{type:"field","default":"layout_y"}}),this._layout=i.geom.voronoi(),this._output={path:"layout_path"},this.mutates(!0)}var i=n(57),a=n(9),o=n(8),u=n(105),s=n(109),l=r.prototype=Object.create(s.prototype);l.constructor=r,l.batchTransform=function(t,e){o.debug(t,["voronoi"]);for(var n=this._output.path,r=this._layout.clipExtent(this.param("clipExtent")).x(this.param("x").accessor).y(this.param("y").accessor)(e),i=0;i","default":n(117).size},text:{type:"field","default":"data"},rotate:{type:"field|value","default":0},font:{type:"field|value","default":{value:"sans-serif"}},fontSize:{type:"field|value","default":14},fontStyle:{type:"field|value","default":{value:"normal"}},fontWeight:{type:"field|value","default":{value:"normal"}},fontScale:{type:"array","default":[10,50]},padding:{type:"value","default":1},spiral:{type:"value","default":"archimedean"}}),this._layout=s().canvas(l.instance),this._output={x:"layout_x",y:"layout_y",font:"layout_font",fontSize:"layout_fontSize",fontStyle:"layout_fontStyle",fontWeight:"layout_fontWeight",rotate:"layout_rotate"},this.mutates(!0)}function i(t){return t&&t.accessor||t}function a(t){var e=Object.create(t);return e._tuple=t,e}var o=n(12),u=n(57),s=n(132),l=n(60).canvas,c=n(9),f=n(8),h=n(105),d=n(109),p=r.prototype=Object.create(d.prototype);p.constructor=r,p.batchTransform=function(t,e){f.debug(t,["wordcloud"]);var n,r,s=this._layout,l=this._output,h=this.param("fontSize"),d=h.accessor&&this.param("fontScale");h=h.accessor||u.functor(h),d.length&&(r=u.scale.sqrt().domain(o.extent(e,n=h)).range(d),h=function(t){return r(n(t))}),s.size(this.param("size")).text(i(this.param("text"))).padding(this.param("padding")).spiral(this.param("spiral")).rotate(i(this.param("rotate"))).font(i(this.param("font"))).fontStyle(i(this.param("fontStyle"))).fontWeight(i(this.param("fontWeight"))).fontSize(h).words(e.map(a)).on("end",function(t){var e,n,r,i,a=s.size(),o=a[0]>>1,u=a[1]>>1;for(r=0,i=t.length;i>r;++r)e=t[r],n=e._tuple,c.set(n,l.x,e.x+o),c.set(n,l.y,e.y+u),c.set(n,l.font,e.font),c.set(n,l.fontSize,e.size),c.set(n,l.fontStyle,e.style),c.set(n,l.fontWeight,e.weight),c.set(n,l.rotate,e.rotate)}).start();for(var p in l)t.fields[l[p]]=1;return t},t.exports=r;var g=n(106);r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Wordcloud transform",type:"object",properties:{type:{"enum":["wordcloud"]},size:{description:"The dimensions of the wordcloud layout",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":[900,500]},font:{description:"The font face to use for a word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"sans-serif"},fontStyle:{description:"The font style to use for a word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"normal"},fontWeight:{description:"The font weight to use for a word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"normal"},fontSize:{description:"The font size to use for a word.",oneOf:[{type:"number"},g.schema,{type:"string"},{$ref:"#/refs/signal"}],"default":14},fontScale:{description:"The minimum and maximum scaled font sizes, or null to prevent scaling.",oneOf:[{type:"null"},{type:"array",minItems:2,maxItems:2,items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}}],"default":[10,50]},rotate:{description:"The field or number to set the roration angle (in degrees).",oneOf:[{type:"number"},{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":0},text:{description:"The field containing the text to use for each word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"data"},spiral:{description:"The type of spiral used for positioning words, either 'archimedean' or 'rectangular'.",oneOf:[{"enum":["archimedean","rectangular"]},g.schema,{$ref:"#/refs/signal"}],"default":"archimedean"},padding:{description:"The padding around each word.",oneOf:[{type:"number"},g.schema,{$ref:"#/refs/signal"}],"default":1},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"},font:{type:"string","default":"layout_font"},fontSize:{type:"string","default":"layout_fontSize"},fontStyle:{type:"string","default":"layout_fontStyle"},fontWeight:{type:"string","default":"layout_fontWeight"},rotate:{type:"string","default":"layout_rotate"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return t.text}function i(){return"serif"}function a(){return"normal"}function o(t){return Math.sqrt(t.value)}function u(){return 30*(~~(6*Math.random())-3)}function s(){return 1}function l(t,e,n,r){if(!e.sprite){var i=t.context,a=t.ratio;i.clearRect(0,0,(_<<5)/a,b/a);var o=0,u=0,s=0,l=n.length;for(--r;++r>5<<5,f=~~Math.max(Math.abs(g+m),Math.abs(g-m))}else c=c+31>>5<<5;if(f>s&&(s=f),o+c>=_<<5&&(o=0,u+=s,s=0),u+f>=b)break;i.translate((o+(c>>1))/a,(u+(f>>1))/a),e.rotate&&i.rotate(e.rotate*x),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=c,e.height=f,e.xoff=o,e.yoff=u,e.x1=c>>1,e.y1=f>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,o+=c}for(var y=i.getImageData(0,0,(_<<5)/a,b/a).data,M=[];--r>=0;)if(e=n[r],e.hasText){for(var c=e.width,w=c>>5,f=e.y1-e.y0,k=0;f*w>k;k++)M[k]=0;if(o=e.xoff,null==o)return;u=e.yoff;for(var E=0,S=-1,A=0;f>A;A++){for(var k=0;c>k;k++){var T=w*A+(k>>5),O=y[(u+A)*(_<<5)+(o+k)<<2]?1<<31-k%32:0;M[T]|=O,E|=O}E?S=A:(e.y0++,f--,A--,u++)}e.y1=e.y0+S,e.sprite=M.slice(0,(e.y1-e.y0)*w)}}}function c(t,e,n){n>>=5;for(var r,i=t.sprite,a=t.width>>5,o=t.x-(a<<4),u=127&o,s=32-u,l=t.y1-t.y0,c=(t.y+t.y0)*n+(o>>5),f=0;l>f;f++){r=0;for(var h=0;a>=h;h++)if((r<h?(r=i[f*a+h])>>>u:0))&e[c+h])return!0;c+=n}return!1}function f(t,e){var n=t[0],r=t[1];e.x+e.x0r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function h(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0t?-1:1;switch(Math.sqrt(1+4*a*t)-a&3){case 0:r+=n;break;case 1:i+=e;break;case 2:r-=n;break;default:i-=e}return[r,i]}}function g(t){for(var e=[],n=-1;++n>2);t.width=(_<<5)/e,t.height=b/e;var n=t.getContext("2d");return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}function e(t,e,r){for(var i,a,o,u=([{x:0,y:0},{x:n[0],y:n[1]}],e.x),s=e.y,l=Math.sqrt(n[0]*n[0]+n[1]*n[1]),f=T(n),d=R()<.5?1:-1,p=-d;(i=f(p+=d))&&(a=~~i[0],o=~~i[1],!(Math.min(Math.abs(a),Math.abs(o))>=l));)if(e.x=u+a,e.y=s+o,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>n[0]||e.y+e.y1>n[1])&&(!r||!c(e,t,n[0]))&&(!r||h(e,r))){for(var g,m=e.sprite,v=e.width>>5,y=n[0]>>5,x=e.x-(v<<4),_=127&x,b=32-_,M=e.y1-e.y0,w=(e.y+e.y0)*y+(x>>5),k=0;M>k;k++){g=0;for(var E=0;v>=E;E++)t[w+E]|=g<E?(g=m[k*v+E])>>>_:0);w+=y}return delete e.sprite,!0}return!1}var n=[256,256],p=r,x=i,w=o,k=a,E=a,S=u,A=s,T=d,O=[],N=1/0,L=y("word","end"),C=null,R=Math.random,D={},I=m;return D.canvas=function(t){return arguments.length?(I=v(t),D):I},D.start=function(){function r(){for(var t=Date.now();Date.now()-t>1,r.y=n[1]*(R()+.5)>>1,l(i,r,h,s),r.hasText&&e(a,r,o)&&(c.push(r),L.word(r),o?f(o,r):o=[{x:r.x+r.x0,y:r.y+r.y0},{x:r.x+r.x1,y:r.y+r.y1}],r.x-=n[0]>>1,r.y-=n[1]>>1)}s>=u&&(D.stop(),L.end(c,o))}var i=t(I()),a=g((n[0]>>5)*n[1]),o=null,u=O.length,s=-1,c=[],h=O.map(function(t,e){return t.text=p.call(this,t,e),t.font=x.call(this,t,e),t.style=k.call(this,t,e),t.weight=E.call(this,t,e),t.rotate=S.call(this,t,e),t.size=~~w.call(this,t,e),t.padding=A.call(this,t,e),t}).sort(function(t,e){return e.size-t.size});return C&&clearInterval(C),C=setInterval(r,0),r(),D},D.stop=function(){return C&&(clearInterval(C),C=null),D},D.timeInterval=function(t){return arguments.length?(N=null==t?1/0:t,D):N},D.words=function(t){return arguments.length?(O=t,D):O},D.size=function(t){return arguments.length?(n=[+t[0],+t[1]],D):n},D.font=function(t){return arguments.length?(x=v(t),D):x},D.fontStyle=function(t){return arguments.length?(k=v(t),D):k},D.fontWeight=function(t){return arguments.length?(E=v(t),D):E},D.rotate=function(t){return arguments.length?(S=v(t),D):S},D.text=function(t){return arguments.length?(p=v(t),D):p},D.spiral=function(t){return arguments.length?(T=M[t]||t,D):T},D.fontSize=function(t){return arguments.length?(w=v(t),D):w},D.padding=function(t){return arguments.length?(A=v(t),D):A},D.random=function(t){return arguments.length?(R=t,D):R},D.on=function(){var t=L.on.apply(L,arguments);return t===L?D:t},D};var M={archimedean:d,rectangular:p}},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(){return new n(arguments)}function n(t){function e(t){var e=(t+="").indexOf("."),n=t;if(e>=0?t=t.slice(0,e):n+=".",t&&!o.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}function n(t){return function(){for(var e,n=o[t],r=-1,i=n.length;++r=0;--i){for(a=0;l>a;++a)if(o=t[a],u=e&&o(e)||e,o(n[i])!==u){s=!1;break}s&&r.push.apply(r,n.splice(i,1)),s=!0}}function i(t,e,n){var r=c.ingest(e);t.add.push(r),n._data.push(r)}function a(t,e,n){var a=e.signal?o.field(e.signal):null,s=a?a[0]:null,p=e.predicate?t.predicate(e.predicate.name||e.predicate):null,g=e.test?t.expr(e.test):null,m=null===p&&null===g,v=e.type===h.CLEAR,y=o.array(e.field||"data"),x=y.map(o.accessor),_=y.map(o.mutator),b=new l(t).router(v);return b.evaluate=function(l){var b,M;if(null!==p&&(b=t.values(f.DATA,p.data||d),M=t.values(f.SIGNALS,p.signals||d),m=p.call(p,{},b,M,t._predicates)),null!==g&&(M=t.values(f.SIGNALS,g.globals||d),m=g.fn()),u.debug(l,[e.type+"ing",m]),!m||!v&&!l.signals[s])return l;var w,k=a?t.signalRef(e.signal):null,E=t.data(n.name),S=null,A=[],T=[],O=0;return o.isObject(k)?(w=k,e.field||(y=o.keys(w),x=y.map(o.accessor),_=y.map(o.mutator))):(w={},_.forEach(function(t){t(w,k)})),e.type===h.INSERT?i(l,w,E):e.type===h.REMOVE?(r(x,k,l.mod,l.rem),r(x,k,l.add,T),r(x,k,E._data,T)):e.type===h.UPSERT?(l.mod.forEach(function(t){var e=x.every(function(e){return e(t)===e(w)});e&&(o.extend(t,w),O+=1)}),0===O&&i(l,w,E)):e.type===h.TOGGLE?(r(x,k,l.mod,T),l.rem.push.apply(l.rem,T),r(x,k,l.add,A),A.length||T.length?E._data=E._data.filter(function(t){return T.indexOf(t)<0&&A.indexOf(t)<0}):(l.add.push(S=c.ingest(w)),E._data.push(S))):e.type===h.CLEAR&&(l.rem.push.apply(l.rem,l.mod.splice(0)),l.add.splice(0),E._data.splice(0)),y.forEach(function(t){l.fields[t]=1}),l},s&&b.dependency(f.SIGNALS,s),p&&(b.dependency(f.DATA,p.data),b.dependency(f.SIGNALS,p.signals)),g&&(b.dependency(f.SIGNALS,g.globals),b.dependency(f.DATA,g.dataSources)),b}var o=n(12),u=n(8),s=n(4),l=s.Node,c=s.Tuple,f=s.Dependencies,h={INSERT:"insert",REMOVE:"remove",UPSERT:"upsert",TOGGLE:"toggle",CLEAR:"clear"},d=[];t.exports=a,a.schema={defs:{modify:{ -type:"array",items:{type:"object",oneOf:[{properties:{type:{"enum":[h.INSERT,h.REMOVE,h.UPSERT,h.TOGGLE]},signal:{type:"string"},field:{type:"string"}},required:["type","signal"]},{properties:{type:{"enum":[h.CLEAR]},predicate:{type:"string"}},required:["type","predicate"]},{properties:{type:{"enum":[h.CLEAR]},test:{type:"string"}},required:["type","test"]}]}}}}},function(t,e){t.exports=function(){"use strict";function t(t,e){function n(){this.constructor=t}n.prototype=e.prototype,t.prototype=new n}function e(t,n,r,i){this.message=t,this.expected=n,this.found=r,this.location=i,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e)}function n(t){function n(e){var n,r,i=pe[e];if(i)return i;for(n=e-1;!pe[n];)n--;for(i=pe[n],i={line:i.line,column:i.column,seenCR:i.seenCR};e>n;)r=t.charAt(n),"\n"===r?(i.seenCR||i.line++,i.column=1,i.seenCR=!1):"\r"===r||"\u2028"===r||"\u2029"===r?(i.line++,i.column=1,i.seenCR=!0):(i.column++,i.seenCR=!1),n++;return pe[e]=i,i}function r(t,e){var r=n(t),i=n(e);return{start:{offset:t,line:r.line,column:r.column},end:{offset:e,line:i.line,column:i.column}}}function i(t){ge>he||(he>ge&&(ge=he,me=[]),me.push(t))}function a(t,n,r,i){function a(t){var e=1;for(t.sort(function(t,e){return t.descriptione.description?1:0});e1?o.slice(0,-1).join(", ")+" or "+o[t.length-1]:o[0],i=e?'"'+n(e)+'"':"end of input","Expected "+r+" but "+i+" found."}return null!==n&&a(n),new e(null!==t?t:o(n,r),n,r,i)}function o(){var t;return t=u()}function u(){var e,n,r,a,o,l;return e=he,n=s(),n!==_?(r=v(),r!==_?(44===t.charCodeAt(he)?(a=w,he++):(a=_,0===ve&&i(k)),a!==_?(o=v(),o!==_?(l=u(),l!==_?(de=e,n=E(n,l),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=s(),n!==_&&(de=e,n=S(n)),e=n),e}function s(){var e,n,r,a,o,u,c,f,h,d,p,g,m,y;return e=he,91===t.charCodeAt(he)?(n=A,he++):(n=_,0===ve&&i(T)),n!==_?(r=v(),r!==_?(a=l(),a!==_?(o=v(),o!==_?(44===t.charCodeAt(he)?(u=w,he++):(u=_,0===ve&&i(k)),u!==_?(c=v(),c!==_?(f=l(),f!==_?(h=v(),h!==_?(93===t.charCodeAt(he)?(d=O,he++):(d=_,0===ve&&i(N)),d!==_?(p=v(),p!==_?(62===t.charCodeAt(he)?(g=L,he++):(g=_,0===ve&&i(C)),g!==_?(m=v(),m!==_?(y=s(),y!==_?(de=e,n=R(a,f,y),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=l()),e}function l(){var t,e,n,r;if(t=he,e=c(),e!==_){if(n=[],r=d(),r!==_)for(;r!==_;)n.push(r),r=d();else n=_;n!==_?(de=t,e=D(e,n),t=e):(he=t,t=_)}else he=t,t=_;return t===_&&(t=he,e=c(),e!==_&&(de=t,e=I(e)),t=e),t}function c(){var e,n,r,a,o;return e=he,40===t.charCodeAt(he)?(n=U,he++):(n=_,0===ve&&i(P)),n!==_?(r=u(),r!==_?(41===t.charCodeAt(he)?(a=z,he++):(a=_,0===ve&&i(j)),a!==_?(de=e,n=q(r),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,64===t.charCodeAt(he)?(n=$,he++):(n=_,0===ve&&i(F)),n!==_?(r=p(),r!==_?(58===t.charCodeAt(he)?(a=Y,he++):(a=_,0===ve&&i(H)),a!==_?(o=h(),o!==_?(de=e,n=B(r,o),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=f(),n!==_?(58===t.charCodeAt(he)?(r=Y,he++):(r=_,0===ve&&i(H)),r!==_?(a=h(),a!==_?(de=e,n=V(n,a),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=g(),n!==_?(58===t.charCodeAt(he)?(r=Y,he++):(r=_,0===ve&&i(H)),r!==_?(a=h(),a!==_?(de=e,n=X(n,a),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=h(),n!==_&&(de=e,n=W(n)),e=n,e===_&&(e=he,n=p(),n!==_&&(de=e,n=G(n)),e=n))))),e}function f(){var e;return t.substr(he,4)===Z?(e=Z,he+=4):(e=_,0===ve&&i(J)),e===_&&(t.substr(he,6)===Q?(e=Q,he+=6):(e=_,0===ve&&i(K)),e===_&&(t.substr(he,4)===tt?(e=tt,he+=4):(e=_,0===ve&&i(et)),e===_&&(t.substr(he,3)===nt?(e=nt,he+=3):(e=_,0===ve&&i(rt)),e===_&&(t.substr(he,4)===it?(e=it,he+=4):(e=_,0===ve&&i(at)),e===_&&(t.substr(he,4)===ot?(e=ot,he+=4):(e=_,0===ve&&i(ut)),e===_&&(t.substr(he,4)===st?(e=st,he+=4):(e=_,0===ve&&i(lt)),e===_&&(t.substr(he,5)===ct?(e=ct,he+=5):(e=_,0===ve&&i(ft)),e===_&&(t.substr(he,4)===ht?(e=ht,he+=4):(e=_,0===ve&&i(dt)),e===_&&(t.substr(he,5)===pt?(e=pt,he+=5):(e=_,0===ve&&i(gt))))))))))),e}function h(){var e;return t.substr(he,9)===mt?(e=mt,he+=9):(e=_,0===ve&&i(vt)),e===_&&(t.substr(he,7)===yt?(e=yt,he+=7):(e=_,0===ve&&i(xt)),e===_&&(t.substr(he,5)===_t?(e=_t,he+=5):(e=_,0===ve&&i(bt)),e===_&&(t.substr(he,8)===Mt?(e=Mt,he+=8):(e=_,0===ve&&i(wt)),e===_&&(t.substr(he,5)===kt?(e=kt,he+=5):(e=_,0===ve&&i(Et)),e===_&&(t.substr(he,7)===St?(e=St,he+=7):(e=_,0===ve&&i(At)),e===_&&(t.substr(he,8)===Tt?(e=Tt,he+=8):(e=_,0===ve&&i(Ot)),e===_&&(t.substr(he,5)===Nt?(e=Nt,he+=5):(e=_,0===ve&&i(Lt)),e===_&&(t.substr(he,10)===Ct?(e=Ct,he+=10):(e=_,0===ve&&i(Rt)),e===_&&(t.substr(he,9)===Dt?(e=Dt,he+=9):(e=_,0===ve&&i(It)),e===_&&(t.substr(he,8)===Ut?(e=Ut,he+=8):(e=_,0===ve&&i(Pt)),e===_&&(t.substr(he,9)===zt?(e=zt,he+=9):(e=_,0===ve&&i(jt)),e===_&&(t.substr(he,10)===qt?(e=qt,he+=10):(e=_,0===ve&&i($t)),e===_&&(t.substr(he,10)===Ft?(e=Ft,he+=10):(e=_,0===ve&&i(Yt)),e===_&&(t.substr(he,9)===Ht?(e=Ht,he+=9):(e=_,0===ve&&i(Bt)),e===_&&(t.substr(he,8)===Vt?(e=Vt,he+=8):(e=_,0===ve&&i(Xt)),e===_&&(t.substr(he,9)===Wt?(e=Wt,he+=9):(e=_,0===ve&&i(Gt)),e===_&&(t.substr(he,8)===Zt?(e=Zt,he+=8):(e=_,0===ve&&i(Jt)),e===_&&(t.substr(he,9)===Qt?(e=Qt,he+=9):(e=_,0===ve&&i(Kt)))))))))))))))))))),e}function d(){var e,n,r,a;return e=he,91===t.charCodeAt(he)?(n=A,he++):(n=_,0===ve&&i(T)),n!==_?(r=m(),r!==_?(93===t.charCodeAt(he)?(a=O,he++):(a=_,0===ve&&i(N)),a!==_?(de=e,n=te(r),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e}function p(){var e,n,r;if(e=he,n=[],ee.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ne)),r!==_)for(;r!==_;)n.push(r),ee.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ne));else n=_;return n!==_&&(de=e,n=re(n)),e=n}function g(){var e,n,r;if(e=he,n=[],ie.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ae)),r!==_)for(;r!==_;)n.push(r),ie.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ae));else n=_;return n!==_&&(de=e,n=oe(n)),e=n}function m(){var e,n,r;if(e=he,n=[],ue.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(se)),r!==_)for(;r!==_;)n.push(r),ue.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(se));else n=_;return n!==_&&(de=e,n=le(n)),e=n}function v(){var e,n;for(e=[],ce.test(t.charAt(he))?(n=t.charAt(he),he++):(n=_,0===ve&&i(fe));n!==_;)e.push(n),ce.test(t.charAt(he))?(n=t.charAt(he),he++):(n=_,0===ve&&i(fe));return e}var y,x=arguments.length>1?arguments[1]:{},_={},b={start:o},M=o,w=",",k={type:"literal",value:",",description:'","'},E=function(t,e){return[t].concat(e)},S=function(t){return[t]},A="[",T={type:"literal",value:"[",description:'"["'},O="]",N={type:"literal",value:"]",description:'"]"'},L=">",C={type:"literal",value:">",description:'">"'},R=function(t,e,n){return{start:t,middle:n,end:e,str:"["+t.str+", "+e.str+"] > "+n.str}},D=function(t,e){return t.filters=e,t.str+=e.map(function(t){return"["+t+"]"}).join(""),t},I=function(t){return t},U="(",P={type:"literal",value:"(",description:'"("'},z=")",j={type:"literal",value:")",description:'")"'},q=function(t){return{stream:t,str:"("+t.map(function(t){return t.str}).join(", ")+")"}},$="@",F={type:"literal",value:"@",description:'"@"'},Y=":",H={type:"literal",value:":",description:'":"'},B=function(t,e){return{event:e,name:t,str:"@"+t+":"+e}},V=function(t,e){return{event:e,mark:t,str:t+":"+e}},X=function(t,e){return{event:e,target:t,str:t+":"+e}},W=function(t){return{event:t,str:t}},G=function(t){return{signal:t,str:t}},Z="rect",J={type:"literal",value:"rect",description:'"rect"'},Q="symbol",K={type:"literal",value:"symbol",description:'"symbol"'},tt="path",et={type:"literal",value:"path",description:'"path"'},nt="arc",rt={type:"literal",value:"arc",description:'"arc"'},it="area",at={type:"literal",value:"area",description:'"area"'},ot="line",ut={type:"literal",value:"line",description:'"line"'},st="rule",lt={type:"literal",value:"rule",description:'"rule"'},ct="image",ft={type:"literal",value:"image",description:'"image"'},ht="text",dt={type:"literal",value:"text",description:'"text"'},pt="group",gt={type:"literal",value:"group",description:'"group"'},mt="mousedown",vt={type:"literal",value:"mousedown",description:'"mousedown"'},yt="mouseup",xt={type:"literal",value:"mouseup",description:'"mouseup"'},_t="click",bt={type:"literal",value:"click",description:'"click"'},Mt="dblclick",wt={type:"literal",value:"dblclick",description:'"dblclick"'},kt="wheel",Et={type:"literal",value:"wheel",description:'"wheel"'},St="keydown",At={type:"literal",value:"keydown",description:'"keydown"'},Tt="keypress",Ot={type:"literal",value:"keypress",description:'"keypress"'},Nt="keyup",Lt={type:"literal",value:"keyup",description:'"keyup"'},Ct="mousewheel",Rt={type:"literal",value:"mousewheel",description:'"mousewheel"'},Dt="mousemove",It={type:"literal",value:"mousemove",description:'"mousemove"'},Ut="mouseout",Pt={type:"literal",value:"mouseout",description:'"mouseout"'},zt="mouseover",jt={type:"literal",value:"mouseover",description:'"mouseover"'},qt="mouseenter",$t={type:"literal",value:"mouseenter",description:'"mouseenter"'},Ft="touchstart",Yt={type:"literal",value:"touchstart",description:'"touchstart"'},Ht="touchmove",Bt={type:"literal",value:"touchmove",description:'"touchmove"'},Vt="touchend",Xt={type:"literal",value:"touchend",description:'"touchend"'},Wt="dragenter",Gt={type:"literal",value:"dragenter",description:'"dragenter"'},Zt="dragover",Jt={type:"literal",value:"dragover",description:'"dragover"'},Qt="dragleave",Kt={type:"literal",value:"dragleave",description:'"dragleave"'},te=function(t){return t},ee=/^[a-zA-Z0-9_\-]/,ne={type:"class",value:"[a-zA-Z0-9_-]",description:"[a-zA-Z0-9_-]"},re=function(t){return t.join("")},ie=/^[a-zA-Z0-9\-_ #.>+~[\]=|\^$*]/,ae={type:"class",value:"[a-zA-Z0-9-_ #\\.\\>\\+~\\[\\]=|\\^\\$\\*]",description:"[a-zA-Z0-9-_ #\\.\\>\\+~\\[\\]=|\\^\\$\\*]"},oe=function(t){return t.join("")},ue=/^['"a-zA-Z0-9_().><=! \t-&|~]/,se={type:"class",value:"['\"a-zA-Z0-9_\\(\\)\\.\\>\\<\\=\\! \\t-&|~]",description:"['\"a-zA-Z0-9_\\(\\)\\.\\>\\<\\=\\! \\t-&|~]"},le=function(t){return t.join("")},ce=/^[ \t\r\n]/,fe={type:"class",value:"[ \\t\\r\\n]",description:"[ \\t\\r\\n]"},he=0,de=0,pe=[{line:1,column:1,seenCR:!1}],ge=0,me=[],ve=0;if("startRule"in x){if(!(x.startRule in b))throw new Error("Can't start parsing from rule \""+x.startRule+'".');M=b[x.startRule]}if(y=M(),y!==_&&he===t.length)return y;throw y!==_&&her||r>3)throw Error("scale takes exactly 2 or 3 arguments.");return"this.defs.scale(this.model, "+e+", "+n[0]+","+n[1]+(r>2?","+n[2]:"")+")"}}function i(t,e,n,r,i){if(i&&i.scale||(i=i&&i.mark?i.mark.group:t.scene().items[0]),t.group(i._id)!==i)throw Error('Scope for scale "'+n+'" is not a valid group item.');var a=i.scale(n);return a?e?a.invert(r):a(r):r}function a(t,e,n,r){var i=e,a=n;return e>n&&(i=n,a=e),r?t>i&&a>t:t>=i&&a>=t}function o(t){return function(e,n,r,i){var a;if(3!==e.length)throw Error("indata takes 3 arguments.");if("Literal"!==e[0].type)throw Error("Data source name must be a literal for indata.");return a=e[0].value,i[a]=1,"Literal"===e[2].type&&o.model.requestIndex(a,e[2].value),e=e.map(t),"this.defs.indata(this.model,"+e[0]+","+e[1]+","+e[2]+")"}}function u(t,e,n,r){var i=t.data(e),a=i.getIndex(r);return a[n]>0}function s(t,e){return d.format(t,"number")(e)}function l(t,e){return d.format(t,"time")(e)}function c(t,e){return d.format(t,"utc")(e)}function f(t){return function(e){o.model=t;var n=m(e);return n.model=t,n.sig=t?t._signals:{},n}}var h=n(12),d=h.template,p=n(137),g=["datum","event","signals"],m=p.compiler(g,{idWhiteList:g,fieldVar:g[0],globalVar:function(t){return"this.sig["+h.str(t)+"]._value"},functions:function(t){var e=p.functions(t);return e.eventItem="event.vg.getItem",e.eventGroup="event.vg.getGroup",e.eventX="event.vg.getX",e.eventY="event.vg.getY",e.open="window.open",e.scale=r(t,!1),e.iscale=r(t,!0),e.inrange="this.defs.inrange",e.indata=o(t),e.format="this.defs.format",e.timeFormat="this.defs.timeFormat",e.utcFormat="this.defs.utcFormat",e},functionDefs:function(){return{scale:i,inrange:a,indata:u,format:s,timeFormat:l,utcFormat:c}}});f.scale=i,f.codegen=m.codegen,t.exports=f},function(t,e,n){var r=n(138),i=n(139),a=t.exports={parse:function(t,e){return r.parse("("+t+")",e)},code:function(t){return i(t)},compiler:function(t,e){t=t.slice();var n=i(e),r=t.length,o=function(e){var i=n(a.parse(e));t[r]='"use strict"; return ('+i.code+");";var o=Function.apply(null,t);return i.fn=t.length>8?function(){return o.apply(i,arguments)}:function(t,e,n,r,a,u,s){return o.call(i,t,e,n,r,a,u,s)},i};return o.codegen=n,o},functions:n(141),constants:n(140)}},function(t,e){t.exports=function(){"use strict";function t(t,e){if(!t)throw new Error("ASSERT: "+e)}function e(t){return t>=48&&57>=t}function n(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function r(t){return"01234567".indexOf(t)>=0}function i(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function a(t){return 10===t||13===t||8232===t||8233===t}function o(t){return 36===t||95===t||t>=65&&90>=t||t>=97&&122>=t||92===t||t>=128&&kt.NonAsciiIdentifierStart.test(String.fromCharCode(t))}function u(t){return 36===t||95===t||t>=65&&90>=t||t>=97&&122>=t||t>=48&&57>=t||92===t||t>=128&&kt.NonAsciiIdentifierPart.test(String.fromCharCode(t))}function s(t){switch(t){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function l(t){switch(t){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function c(t){if(St&&l(t))return!0;switch(t.length){case 2:return"if"===t||"in"===t||"do"===t;case 3:return"var"===t||"for"===t||"new"===t||"try"===t||"let"===t;case 4:return"this"===t||"else"===t||"case"===t||"void"===t||"with"===t||"enum"===t;case 5:return"while"===t||"break"===t||"catch"===t||"throw"===t||"const"===t||"yield"===t||"class"===t||"super"===t;case 6:return"return"===t||"typeof"===t||"delete"===t||"switch"===t||"export"===t||"import"===t;case 7:return"default"===t||"finally"===t||"extends"===t;case 8:return"function"===t||"continue"===t||"debugger"===t;case 10:return"instanceof"===t;default:return!1}}function f(){var t,e;for(e=0===At;Nt>At;)if(t=Et.charCodeAt(At),i(t))++At;else{if(!a(t))break;++At,13===t&&10===Et.charCodeAt(At)&&++At,++Tt,Ot=At,e=!0}}function h(t){var e,r,i,a=0;for(r="u"===t?4:2,e=0;r>e;++e){if(!(Nt>At&&n(Et[At])))return"";i=Et[At++],a=16*a+"0123456789abcdef".indexOf(i.toLowerCase())}return String.fromCharCode(a)}function d(){var t,e,r,i;for(t=Et[At],e=0,"}"===t&&j({},wt.UnexpectedToken,"ILLEGAL");Nt>At&&(t=Et[At++],n(t));)e=16*e+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||"}"!==t)&&j({},wt.UnexpectedToken,"ILLEGAL"),65535>=e?String.fromCharCode(e):(r=(e-65536>>10)+55296,i=(e-65536&1023)+56320,String.fromCharCode(r,i))}function p(){var t,e;for(t=Et.charCodeAt(At++),e=String.fromCharCode(t),92===t&&(117!==Et.charCodeAt(At)&&j({},wt.UnexpectedToken,"ILLEGAL"),++At,t=h("u"),t&&"\\"!==t&&o(t.charCodeAt(0))||j({},wt.UnexpectedToken,"ILLEGAL"),e=t);Nt>At&&(t=Et.charCodeAt(At),u(t));)++At,e+=String.fromCharCode(t),92===t&&(e=e.substr(0,e.length-1),117!==Et.charCodeAt(At)&&j({},wt.UnexpectedToken,"ILLEGAL"),++At,t=h("u"),t&&"\\"!==t&&u(t.charCodeAt(0))||j({},wt.UnexpectedToken,"ILLEGAL"),e+=t);return e}function g(){var t,e;for(t=At++;Nt>At;){if(e=Et.charCodeAt(At),92===e)return At=t,p();if(!u(e))break;++At}return Et.slice(t,At)}function m(){var t,e,n;return t=At,e=92===Et.charCodeAt(At)?p():g(),n=1===e.length?xt.Identifier:c(e)?xt.Keyword:"null"===e?xt.NullLiteral:"true"===e||"false"===e?xt.BooleanLiteral:xt.Identifier,{type:n,value:e,lineNumber:Tt,lineStart:Ot,start:t,end:At}}function v(){var t,e,n,r,i=At,a=Et.charCodeAt(At),o=Et[At];switch(a){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++At,Rt.tokenize&&(40===a?Rt.openParenToken=Rt.tokens.length:123===a&&(Rt.openCurlyToken=Rt.tokens.length)),{type:xt.Punctuator,value:String.fromCharCode(a),lineNumber:Tt,lineStart:Ot,start:i,end:At};default:if(t=Et.charCodeAt(At+1),61===t)switch(a){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return At+=2,{type:xt.Punctuator,value:String.fromCharCode(a)+String.fromCharCode(t),lineNumber:Tt,lineStart:Ot,start:i,end:At};case 33:case 61:return At+=2,61===Et.charCodeAt(At)&&++At,{type:xt.Punctuator,value:Et.slice(i,At),lineNumber:Tt,lineStart:Ot,start:i,end:At}}}return r=Et.substr(At,4),">>>="===r?(At+=4,{type:xt.Punctuator,value:r,lineNumber:Tt,lineStart:Ot,start:i,end:At}):(n=r.substr(0,3),">>>"===n||"<<="===n||">>="===n?(At+=3,{type:xt.Punctuator,value:n,lineNumber:Tt,lineStart:Ot,start:i,end:At}):(e=n.substr(0,2),o===e[1]&&"+-<>&|".indexOf(o)>=0||"=>"===e?(At+=2,{type:xt.Punctuator,value:e,lineNumber:Tt,lineStart:Ot,start:i,end:At}):"<>=!+-*%&|^/".indexOf(o)>=0?(++At,{type:xt.Punctuator,value:o,lineNumber:Tt,lineStart:Ot,start:i,end:At}):void j({},wt.UnexpectedToken,"ILLEGAL")))}function y(t){for(var e="";Nt>At&&n(Et[At]);)e+=Et[At++];return 0===e.length&&j({},wt.UnexpectedToken,"ILLEGAL"),o(Et.charCodeAt(At))&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.NumericLiteral,value:parseInt("0x"+e,16),lineNumber:Tt,lineStart:Ot,start:t,end:At}}function x(t){for(var n="0"+Et[At++];Nt>At&&r(Et[At]);)n+=Et[At++];return(o(Et.charCodeAt(At))||e(Et.charCodeAt(At)))&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.NumericLiteral,value:parseInt(n,8),octal:!0,lineNumber:Tt,lineStart:Ot,start:t,end:At}}function _(){var n,i,a;if(a=Et[At],t(e(a.charCodeAt(0))||"."===a,"Numeric literal must start with a decimal digit or a decimal point"),i=At,n="","."!==a){if(n=Et[At++],a=Et[At],"0"===n){if("x"===a||"X"===a)return++At,y(i);if(r(a))return x(i);a&&e(a.charCodeAt(0))&&j({},wt.UnexpectedToken,"ILLEGAL")}for(;e(Et.charCodeAt(At));)n+=Et[At++];a=Et[At]}if("."===a){for(n+=Et[At++];e(Et.charCodeAt(At));)n+=Et[At++];a=Et[At]}if("e"===a||"E"===a)if(n+=Et[At++],a=Et[At],"+"!==a&&"-"!==a||(n+=Et[At++]),e(Et.charCodeAt(At)))for(;e(Et.charCodeAt(At));)n+=Et[At++];else j({},wt.UnexpectedToken,"ILLEGAL");return o(Et.charCodeAt(At))&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.NumericLiteral,value:parseFloat(n),lineNumber:Tt,lineStart:Ot,start:i,end:At}}function b(){var e,n,i,o,u,s,l,c,f="",p=!1;for(l=Tt,c=Ot,e=Et[At],t("'"===e||'"'===e,"String literal must starts with a quote"),n=At,++At;Nt>At;){if(i=Et[At++],i===e){e="";break}if("\\"===i)if(i=Et[At++],i&&a(i.charCodeAt(0)))++Tt,"\r"===i&&"\n"===Et[At]&&++At,Ot=At;else switch(i){case"u":case"x":"{"===Et[At]?(++At,f+=d()):(s=At,u=h(i),u?f+=u:(At=s,f+=i));break;case"n":f+="\n";break;case"r":f+="\r";break;case"t":f+=" ";break;case"b":f+="\b";break;case"f":f+="\f";break;case"v":f+="\x0B";break;default:r(i)?(o="01234567".indexOf(i),0!==o&&(p=!0),Nt>At&&r(Et[At])&&(p=!0,o=8*o+"01234567".indexOf(Et[At++]),"0123".indexOf(i)>=0&&Nt>At&&r(Et[At])&&(o=8*o+"01234567".indexOf(Et[At++]))),f+=String.fromCharCode(o)):f+=i}else{if(a(i.charCodeAt(0)))break;f+=i}}return""!==e&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.StringLiteral,value:f,octal:p,startLineNumber:l,startLineStart:c,lineNumber:Tt,lineStart:Ot,start:n,end:At}}function M(t,e){var n,r=t;e.indexOf("u")>=0&&(r=r.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e){return parseInt(e,16)<=1114111?"x":void j({},wt.InvalidRegExp)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{n=new RegExp(r)}catch(i){j({},wt.InvalidRegExp)}try{return new RegExp(t,e)}catch(a){return null}}function w(){var e,n,r,i,o;for(e=Et[At],t("/"===e,"Regular expression literal must start with a slash"),n=Et[At++],r=!1,i=!1;Nt>At;)if(e=Et[At++],n+=e,"\\"===e)e=Et[At++],a(e.charCodeAt(0))&&j({},wt.UnterminatedRegExp),n+=e;else if(a(e.charCodeAt(0)))j({},wt.UnterminatedRegExp);else if(r)"]"===e&&(r=!1);else{if("/"===e){i=!0;break}"["===e&&(r=!0)}return i||j({},wt.UnterminatedRegExp),o=n.substr(1,n.length-2),{value:o,literal:n}}function k(){var t,e,n,r;for(e="",n="";Nt>At&&(t=Et[At],u(t.charCodeAt(0)));)if(++At,"\\"===t&&Nt>At)if(t=Et[At],"u"===t){if(++At,r=At,t=h("u"))for(n+=t,e+="\\u";At>r;++r)e+=Et[r];else At=r,n+="u",e+="\\u";q({},wt.UnexpectedToken,"ILLEGAL")}else e+="\\",q({},wt.UnexpectedToken,"ILLEGAL");else n+=t,e+=t;return{value:n,literal:e}}function E(){var t,e,n,r;return Lt=null,f(),t=At,e=w(),n=k(),r=M(e.value,n.value),Rt.tokenize?{type:xt.RegularExpression,value:r,regex:{pattern:e.value,flags:n.value},lineNumber:Tt,lineStart:Ot,start:t,end:At}:{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:At}}function S(){var t,e,n,r;return f(),t=At,e={start:{line:Tt,column:At-Ot}},n=E(),e.end={line:Tt,column:At-Ot},Rt.tokenize||(Rt.tokens.length>0&&(r=Rt.tokens[Rt.tokens.length-1],r.range[0]===t&&"Punctuator"===r.type&&("/"!==r.value&&"/="!==r.value||Rt.tokens.pop())),Rt.tokens.push({type:"RegularExpression",value:n.literal,regex:n.regex,range:[t,At],loc:e})),n}function A(t){return t.type===xt.Identifier||t.type===xt.Keyword||t.type===xt.BooleanLiteral||t.type===xt.NullLiteral}function T(){var t,e;if(t=Rt.tokens[Rt.tokens.length-1],!t)return S();if("Punctuator"===t.type){if("]"===t.value)return v();if(")"===t.value)return e=Rt.tokens[Rt.openParenToken-1],!e||"Keyword"!==e.type||"if"!==e.value&&"while"!==e.value&&"for"!==e.value&&"with"!==e.value?v():S();if("}"===t.value){if(Rt.tokens[Rt.openCurlyToken-3]&&"Keyword"===Rt.tokens[Rt.openCurlyToken-3].type){if(e=Rt.tokens[Rt.openCurlyToken-4],!e)return v()}else{if(!Rt.tokens[Rt.openCurlyToken-4]||"Keyword"!==Rt.tokens[Rt.openCurlyToken-4].type)return v();if(e=Rt.tokens[Rt.openCurlyToken-5],!e)return S()}return v()}return S()}return"Keyword"===t.type&&"this"!==t.value?S():v()}function O(){var t;return f(),At>=Nt?{type:xt.EOF,lineNumber:Tt,lineStart:Ot,start:At,end:At}:(t=Et.charCodeAt(At),o(t)?m():40===t||41===t||59===t?v():39===t||34===t?b():46===t?e(Et.charCodeAt(At+1))?_():v():e(t)?_():Rt.tokenize&&47===t?T():v())}function N(){var t,e,n,r;return f(),t={start:{line:Tt,column:At-Ot}},e=O(),t.end={line:Tt,column:At-Ot},e.type!==xt.EOF&&(n=Et.slice(e.start,e.end),r={type:_t[e.type],value:n,range:[e.start,e.end],loc:t},e.regex&&(r.regex={pattern:e.regex.pattern,flags:e.regex.flags}),Rt.tokens.push(r)),e}function L(){var t;return t=Lt,At=t.end,Tt=t.lineNumber,Ot=t.lineStart,Lt="undefined"!=typeof Rt.tokens?N():O(),At=t.end,Tt=t.lineNumber,Ot=t.lineStart,t}function C(){var t,e,n;t=At,e=Tt,n=Ot,Lt="undefined"!=typeof Rt.tokens?N():O(),At=t,Tt=e,Ot=n}function R(){this.line=Tt,this.column=At-Ot}function D(){this.start=new R,this.end=null}function I(t){t.type===xt.StringLiteral?this.start={line:t.startLineNumber,column:t.start-t.startLineStart}:this.start={line:t.lineNumber,column:t.start-t.lineStart},this.end=null}function U(){At=Lt.start,Lt.type===xt.StringLiteral?(Tt=Lt.startLineNumber,Ot=Lt.startLineStart):(Tt=Lt.lineNumber,Ot=Lt.lineStart),Rt.range&&(this.range=[At,0]),Rt.loc&&(this.loc=new D)}function P(t){Rt.range&&(this.range=[t.start,0]),Rt.loc&&(this.loc=new I(t))}function z(){var t,e,n,r;return t=At,e=Tt,n=Ot,f(),r=Tt!==e,At=t,Tt=e,Ot=n,r}function j(e,n){var r,i=Array.prototype.slice.call(arguments,2),a=n.replace(/%(\d)/g,function(e,n){return t(nAt&&(t.push(lt()),!H(")"));)Y(",");return F(")"),t}function tt(){var t,e=new U;return t=L(),A(t)||$(t),e.finishIdentifier(t.value)}function et(){return F("."),tt()}function nt(){var t;return F("["),t=ct(),F("]"),t}function rt(){var t,e,n,r,i=Ct.allowIn;for(r=Lt,Ct.allowIn=!0,t=Q();;)if(H("."))n=et(),t=new P(r).finishMemberExpression(".",t,n);else if(H("("))e=K(),t=new P(r).finishCallExpression(t,e);else{if(!H("["))break;n=nt(),t=new P(r).finishMemberExpression("[",t,n)}return Ct.allowIn=i,t}function it(){var t=rt();if(Lt.type===xt.Punctuator&&(H("++")||H("--"))&&!z())throw new Error("Disabled.");return t}function at(){var t,e,n;if(Lt.type!==xt.Punctuator&&Lt.type!==xt.Keyword)e=it();else{if(H("++")||H("--"))throw new Error("Disabled.");if(H("+")||H("-")||H("~")||H("!"))n=Lt,t=L(),e=at(),e=new P(n).finishUnaryExpression(t.value,e);else{if(B("delete")||B("void")||B("typeof"))throw new Error("Disabled.");e=it()}}return e}function ot(t,e){var n=0;if(t.type!==xt.Punctuator&&t.type!==xt.Keyword)return 0;switch(t.value){case"||":n=1;break;case"&&":n=2;break;case"|":n=3;break;case"^":n=4;break;case"&":n=5;break;case"==":case"!=":case"===":case"!==":n=6;break;case"<":case">":case"<=":case">=":case"instanceof":n=7;break;case"in":n=e?7:0;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function ut(){var t,e,n,r,i,a,o,u,s,l;if(t=Lt,s=at(),r=Lt,i=ot(r,Ct.allowIn),0===i)return s;for(r.prec=i,L(),e=[t,Lt],o=at(),a=[s,r,o];(i=ot(Lt,Ct.allowIn))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),u=a.pop().value,s=a.pop(),e.pop(),n=new P(e[e.length-1]).finishBinaryExpression(u,s,o),a.push(n);r=L(),r.prec=i,a.push(r),e.push(Lt),n=at(),a.push(n)}for(l=a.length-1,n=a[l],e.pop();l>1;)n=new P(e.pop()).finishBinaryExpression(a[l-1].value,a[l-2],n),l-=2;return n}function st(){var t,e,n,r,i;return i=Lt,t=ut(),H("?")&&(L(),e=Ct.allowIn,Ct.allowIn=!0,n=lt(),Ct.allowIn=e,F(":"),r=lt(),t=new P(i).finishConditionalExpression(t,n,r)),t}function lt(){var t,e,n,r;return t=Ct.parenthesisCount,r=Lt,e=Lt,n=st()}function ct(){var t=lt();if(H(","))throw new Error("Disabled.");return t}function ft(t){var e=ct();return V(),t.finishExpressionStatement(e)}function ht(){var t,e,n=Lt.type;if(n===xt.EOF&&$(Lt),n===xt.Punctuator&&"{"===Lt.value)throw new Error("Disabled.");if(e=new U,n===xt.Punctuator)switch(Lt.value){case";":throw new Error("Disabled.");case"(":return ft(e)}else if(n===xt.Keyword)throw new Error("Disabled.");return t=ct(),V(),e.finishExpressionStatement(t)}function dt(){if(Lt.type===xt.Keyword)switch(Lt.value){case"const":case"let":throw new Error("Disabled.");case"function":throw new Error("Disabled.");default:return ht()}return Lt.type!==xt.EOF?ht():void 0}function pt(){for(var t,e,n,r,i=[];Nt>At&&(e=Lt,e.type===xt.StringLiteral)&&(t=dt(),i.push(t),t.expression.type===bt.Literal);)n=Et.slice(e.start+1,e.end-1),"use strict"===n?(St=!0,r&&q(r,wt.StrictOctalLiteral)):!r&&e.octal&&(r=e);for(;Nt>At&&(t=dt(),"undefined"!=typeof t);)i.push(t);return i}function gt(){var t,e;return f(),C(),e=new U,St=!0,t=pt(),e.finishProgram(t)}function mt(){var t,e,n,r=[];for(t=0;t0?1:0,Ot=0,Nt=Et.length,Lt=null,Ct={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},Rt={},e=e||{},e.tokens=!0,Rt.tokens=[],Rt.tokenize=!0,Rt.openParenToken=-1,Rt.openCurlyToken=-1,Rt.range="boolean"==typeof e.range&&e.range,Rt.loc="boolean"==typeof e.loc&&e.loc,"boolean"==typeof e.tolerant&&e.tolerant&&(Rt.errors=[]);try{if(C(),Lt.type===xt.EOF)return Rt.tokens;for(L();Lt.type!==xt.EOF;)try{L()}catch(i){if(Rt.errors){Rt.errors.push(i);break}throw i}mt(),r=Rt.tokens,"undefined"!=typeof Rt.errors&&(r.errors=Rt.errors)}catch(a){throw a}finally{Rt={}}return r}function yt(t,e){var n,r;r=String,"string"==typeof t||t instanceof String||(t=r(t)),Et=t,At=0,Tt=Et.length>0?1:0,Ot=0,Nt=Et.length,Lt=null,Ct={allowIn:!0,labelSet:{},parenthesisCount:0,inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},Rt={},"undefined"!=typeof e&&(Rt.range="boolean"==typeof e.range&&e.range,Rt.loc="boolean"==typeof e.loc&&e.loc,Rt.loc&&null!==e.source&&void 0!==e.source&&(Rt.source=r(e.source)),"boolean"==typeof e.tokens&&e.tokens&&(Rt.tokens=[]),"boolean"==typeof e.tolerant&&e.tolerant&&(Rt.errors=[]));try{n=gt(),"undefined"!=typeof Rt.tokens&&(mt(),n.tokens=Rt.tokens),"undefined"!=typeof Rt.errors&&(n.errors=Rt.errors)}catch(i){throw i}finally{ -Rt={}}return n}var xt,_t,bt,Mt,wt,kt,Et,St,At,Tt,Ot,Nt,Lt,Ct,Rt;xt={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9},_t={},_t[xt.BooleanLiteral]="Boolean",_t[xt.EOF]="",_t[xt.Identifier]="Identifier",_t[xt.Keyword]="Keyword",_t[xt.NullLiteral]="Null",_t[xt.NumericLiteral]="Numeric",_t[xt.Punctuator]="Punctuator",_t[xt.StringLiteral]="String",_t[xt.RegularExpression]="RegularExpression",bt={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BinaryExpression:"BinaryExpression",CallExpression:"CallExpression",ConditionalExpression:"ConditionalExpression",ExpressionStatement:"ExpressionStatement",Identifier:"Identifier",Literal:"Literal",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",UnaryExpression:"UnaryExpression"},Mt={Data:1,Get:2,Set:4},wt={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},kt={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԯԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠ-ࢲࣤ-ॣ०-९ॱ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಁ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲഁ-ഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤞᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧ᪰-᪽ᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶ᳸᳹ᴀ-᷵᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚝꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꧠ-ꧾꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︭︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},P.prototype=U.prototype={finish:function(){Rt.range&&(this.range[1]=At),Rt.loc&&(this.loc.end=new R,Rt.source&&(this.loc.source=Rt.source))},finishArrayExpression:function(t){return this.type=bt.ArrayExpression,this.elements=t,this.finish(),this},finishAssignmentExpression:function(t,e,n){return this.type=bt.AssignmentExpression,this.operator=t,this.left=e,this.right=n,this.finish(),this},finishBinaryExpression:function(t,e,n){return this.type="||"===t||"&&"===t?bt.LogicalExpression:bt.BinaryExpression,this.operator=t,this.left=e,this.right=n,this.finish(),this},finishCallExpression:function(t,e){return this.type=bt.CallExpression,this.callee=t,this.arguments=e,this.finish(),this},finishConditionalExpression:function(t,e,n){return this.type=bt.ConditionalExpression,this.test=t,this.consequent=e,this.alternate=n,this.finish(),this},finishExpressionStatement:function(t){return this.type=bt.ExpressionStatement,this.expression=t,this.finish(),this},finishIdentifier:function(t){return this.type=bt.Identifier,this.name=t,this.finish(),this},finishLiteral:function(t){return this.type=bt.Literal,this.value=t.value,this.raw=Et.slice(t.start,t.end),t.regex&&("//"==this.raw&&(this.raw="/(?:)/"),this.regex=t.regex),this.finish(),this},finishMemberExpression:function(t,e,n){return this.type=bt.MemberExpression,this.computed="["===t,this.object=e,this.property=n,this.finish(),this},finishObjectExpression:function(t){return this.type=bt.ObjectExpression,this.properties=t,this.finish(),this},finishProgram:function(t){return this.type=bt.Program,this.body=t,this.finish(),this},finishProperty:function(t,e,n){return this.type=bt.Property,this.key=e,this.value=n,this.kind=t,this.finish(),this},finishUnaryExpression:function(t,e){return this.type=bt.UnaryExpression,this.operator=t,this.argument=e,this.prefix=!0,this.finish(),this}};var Dt={"if":1,"this":1};return{tokenize:vt,parse:yt}}()},function(t,e,n){function r(t){var e,n,r={};for(e=0,n=t.length;n>e;++e)r[t[e]]=1;return r}function i(t){var e,n=[];for(e in t)n.push(e);return n}t.exports=function(t){function e(t){var e={code:a(t),globals:i(p),fields:i(g),dataSources:i(m),defs:s};return p={},g={},m={},e}function a(t){if("string"==typeof t)return t;var e=y[t.type];if(null==e)throw new Error("Unsupported type: "+t.type);return e(t)}t=t||{};var o=t.constants||n(140),u=(t.functions||n(141))(a),s=t.functionDefs?t.functionDefs(a):{},l=t.idWhiteList?r(t.idWhiteList):null,c=t.idBlackList?r(t.idBlackList):null,f=0,h=t.fieldVar||"datum",d=t.globalVar||"signals",p={},g={},m={},v="function"==typeof d?d:function(t){return d+'["'+t+'"]'},y={Literal:function(t){return t.raw},Identifier:function(t){var e=t.name;if(f>0)return e;if(o.hasOwnProperty(e))return o[e];if(l)return l.hasOwnProperty(e)?e:(p[e]=1,v(e));if(c&&c.hasOwnProperty(e))throw new Error("Illegal identifier: "+e);return e},Program:function(t){return t.body.map(a).join("\n")},MemberExpression:function(t){var e=!t.computed,n=a(t.object);e&&(f+=1);var r=a(t.property);return n===h&&(g[r]=1),e&&(f-=1),n+(e?"."+r:"["+r+"]")},CallExpression:function(t){if("Identifier"!==t.callee.type)throw new Error("Illegal callee type: "+t.callee.type);var e=t.callee.name,n=t.arguments,r=u.hasOwnProperty(e)&&u[e];if(!r)throw new Error("Unrecognized function: "+e);return r instanceof Function?r(n,p,g,m):r+"("+n.map(a).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(a).join(",")+"]"},BinaryExpression:function(t){return"("+a(t.left)+t.operator+a(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+a(t.argument)+")"},ConditionalExpression:function(t){return"("+a(t.test)+"?"+a(t.consequent)+":"+a(t.alternate)+")"},LogicalExpression:function(t){return"("+a(t.left)+t.operator+a(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(a).join(",")+"}"},Property:function(t){f+=1;var e=a(t.key);return f-=1,e+":"+a(t.value)},ExpressionStatement:function(t){return a(t.expression)}};return e.functions=u,e.functionDefs=s,e.constants=o,e}},function(t,e){t.exports={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2"}},function(t,e){t.exports=function(t){function e(e,n,r,i){var a=t(n[0]);return r&&(a=r+"("+a+")",0===r.lastIndexOf("new ",0)&&(a="("+a+")")),a+"."+e+(0>i?"":0===i?"()":"("+n.slice(1).map(t).join(",")+")")}function n(t,n,r){return function(i){return e(t,i,n,r)}}var r="new Date",i="String",a="RegExp";return{isNaN:"isNaN",isFinite:"isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){if(e.length<3)throw new Error("Missing arguments to clamp function.");if(e.length>3)throw new Error("Too many arguments to clamp function.");var n=e.map(t);return"Math.max("+n[1]+", Math.min("+n[2]+","+n[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),indexof:n("indexOf",null),lastindexof:n("lastIndexOf",null),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),slice:n("slice",i),substring:n("substring",i),replace:n("replace",i),regexp:a,test:n("test",a),"if":function(e){if(e.length<3)throw new Error("Missing arguments to if function.");if(e.length>3)throw new Error("Too many arguments to if function.");var n=e.map(t);return n[0]+"?"+n[1]+":"+n[2]}}}},function(t,e,n){function r(t,e,n,r){(e||[]).forEach(function(e,o){n[o]=n[o]||a(t),i(e,o,n[o],r)})}function i(t,e,n,r){n.size(t.size?r.scale(t.size):null),n.shape(t.shape?r.scale(t.shape):null),n.fill(t.fill?r.scale(t.fill):null),n.stroke(t.stroke?r.scale(t.stroke):null),t.orient&&n.orient(t.orient),null!=t.offset&&n.offset(t.offset),n.title(t.title||null),n.values(t.values||null),n.format(void 0!==t.format?t.format:null),n.formatType(t.formatType||null);var i=t.properties;n.titleProperties(i&&i.title||{}),n.labelProperties(i&&i.labels||{}),n.legendProperties(i&&i.legend||{}),n.symbolProperties(i&&i.symbols||{}),n.gradientProperties(i&&i.gradient||{})}var a=n(143);t.exports=r,r.schema={defs:{legend:{type:"object",properties:{size:{type:"string"},shape:{type:"string"},fill:{type:"string"},stroke:{type:"string"},orient:{"enum":["left","right"],"default":"right"},offset:{type:"number"},title:{type:"string"},values:{type:"array"},format:{type:"string"},formatType:{"enum":["time","utc","string","number"]},properties:{type:"object",properties:{title:{$ref:"#/defs/propset"},labels:{$ref:"#/defs/propset"},legend:{$ref:"#/defs/propset"},symbols:{$ref:"#/defs/propset"},gradient:{$ref:"#/defs/propset"}},additionalProperties:!1}},additionalProperties:!1,anyOf:[{required:["size"]},{required:["shape"]},{required:["fill"]},{required:["stroke"]}]}}}},function(t,e,n){function r(t){function e(){Y.type=null}function n(t,e){return{data:t,index:e}}function r(t){return"ordinal"===t||"quantize"===t||"quantile"===t||"threshold"===t}function y(t){var e,r,i,a=x(M,w,k,E),o=(null==A?t.ticks?t.ticks.apply(t,I):t.domain():A).map(n),u=m.getTickFormat(t,o.length,O,T),s=5,l=f.range(o.length);M?(r=o.map(function(t){return Math.sqrt(M(t.data))}),i=f.max(r),r=r.reduce(function(t,e,n,r){return n>0&&(t[n]=t[n-1]+r[n-1]/2+s),t[n]+=e/2,t},[0]).map(Math.round)):(i=Math.round(Math.sqrt(L.symbolSize)),r=S||(e=q.fontSize)&&e.value+s||L.labelFontSize+s,r=l.map(function(t,e){return Math.round(i/2+e*r)}));var c,d=D;N&&(c=j.fontSize,d+=5+(c&&c.value||L.titleFontSize));for(var p=0,g=r.length;g>p;++p)r[p]+=d;a.scales=a.scales||[{}],h.extend(a.scales[0],{name:"legend",type:"ordinal",points:!0,domain:l,range:r});var v=(N?[N]:[]).map(n);return o.forEach(function(t){t.label=u(t.data),t.offset=i}),a.marks[0].from=function(){return v},a.marks[1].from=function(){return o},a.marks[2].from=a.marks[1].from,a}function x(e,n,r,l){var c=h.extend($.titles,o(L)),f=h.extend($.symbols,u(L)),d=h.extend($.labels,s(L));return a(f,e,n,r,l),h.extend(c.properties.update,j),h.extend(f.properties.update,P),h.extend(d.properties.update,q),c.properties.enter.x.value+=D,c.properties.enter.y.value+=D,d.properties.enter.x.offset+=D+1,f.properties.enter.x.offset=D+1,d.properties.update.x.offset+=D+1,f.properties.update.x.offset=D+1,h.extend(Y,{type:"group",interactive:!1,properties:{enter:p(t,"group",U),legendPosition:{encode:i,signals:[],scales:[],data:[],fields:[]}}}),Y.marks=[c,f,d].map(function(e){return g(t,e)}),Y}function _(t){var e=b(t),r=t.domain(),i=(null==A?r:A).map(n),a=z.width&&z.width.value||L.gradientWidth,o=m.getTickFormat(t,i.length,O,T);e.scales=e.scales||[{}];var u=h.extend(e.scales[0],{name:"legend",type:t.type,round:!0,zero:!1,domain:[r[0],r[r.length-1]],range:[D,a+D]});"pow"===t.type&&(u.exponent=t.exponent());var s=(N?[N]:[]).map(n);return i.forEach(function(t,e){t.label=o(t.data),t.align=e==i.length-1?"right":0===e?"left":"center"}),e.marks[0].from=function(){return s},e.marks[1].from=function(){return[1]},e.marks[2].from=function(){return i},e}function b(e){var n=h.extend($.titles,o(L)),r=h.extend($.gradient,l(L)),a=h.extend($.labels,c(L)),u=new d,s=e.domain(),f=s[0],m=s[s.length-1],v=e.copy().domain([f,m]).range([0,1]),y="linear"!==e.type&&e.ticks?e.ticks.call(e,15):s;f!==y[0]&&y.unshift(f),m!==y[y.length-1]&&y.push(m);for(var x=0,_=y.length;_>x;++x)u.stop(v(y[x]),e(y[x]));r.properties.enter.fill={value:u},h.extend(n.properties.update,j),h.extend(r.properties.update,z),h.extend(a.properties.update,q);var b=r.properties,M=z.height,w=M&&M.value||b.enter.height.value;if(a.properties.enter.y.value=w,a.properties.update.y.value=w,N){var k=n.properties,E=j.fontSize,S=4+(E&&E.value||k.enter.fontSize.value);r.properties.enter.y.value+=S,a.properties.enter.y.value+=S,r.properties.update.y.value+=S,a.properties.update.y.value+=S}return n.properties.enter.x.value+=D,n.properties.enter.y.value+=D,r.properties.enter.x.value+=D,r.properties.enter.y.value+=D,a.properties.enter.y.value+=D,r.properties.update.x.value+=D,r.properties.update.y.value+=D,a.properties.update.y.value+=D,h.extend(Y,{type:"group",interactive:!1,properties:{enter:p(t,"group",U),legendPosition:{encode:i,signals:[],scales:[],data:[],fields:[]}}}),Y.marks=[n,r,a].map(function(e){return g(t,e)}),Y}var M=null,w=null,k=null,E=null,S=null,A=null,T=null,O=null,N=null,L=t.config().legend,C=L.orient,R=L.offset,D=L.padding,I=[5],U={},P={},z={},j={},q={},$={titles:{},symbols:{},labels:{},gradient:{}},F={},Y={};return F.def=function(){var t=M||w||k||E;return Y.type||(Y=t!==k&&t!==E||r(t.type)?y(t):_(t)),Y.orient=C,Y.offset=R,Y.padding=D,Y.margin=L.margin,Y},F.size=function(t){return arguments.length?(M!==t&&(M=t,e()),F):M},F.shape=function(t){return arguments.length?(w!==t&&(w=t,e()),F):w},F.fill=function(t){return arguments.length?(k!==t&&(k=t,e()),F):k},F.stroke=function(t){return arguments.length?(E!==t&&(E=t,e()),F):E},F.title=function(t){return arguments.length?(N!==t&&(N=t,e()),F):N},F.format=function(t){return arguments.length?(T!==t&&(T=t,e()),F):T},F.formatType=function(t){return arguments.length?(O!==t&&(O=t,e()),F):O},F.spacing=function(t){return arguments.length?(S!==+t&&(S=+t,e()),F):S},F.orient=function(t){return arguments.length?(C=t in v?t+"":L.orient,F):C},F.offset=function(t){return arguments.length?(R=+t,F):R},F.values=function(t){return arguments.length?(A=t,F):A},F.legendProperties=function(t){return arguments.length?(U=t,F):U},F.symbolProperties=function(t){return arguments.length?(P=t,F):P},F.gradientProperties=function(t){return arguments.length?(z=t,F):z},F.labelProperties=function(t){return arguments.length?(q=t,F):q},F.titleProperties=function(t){return arguments.length?(j=t,F):j},F.reset=function(){return e(),F},F}function i(t,e,n,r,i,a){var o,u=n?{}:t,s=t.mark.def,l=s.offset,c=s.orient,f=2*s.padding,h="left"===c?0:e.width,d=~~t.bounds.width()+(t.width?0:f),p=~~t.bounds.height()+(t.height?0:f),g=e._legendPositions||(e._legendPositions={right:.5,left:.5});u.x=.5,u.width=d,u.y=g[c],g[c]+=(u.height=p)+s.margin;var m=e.axes,y=e.axisItems,x=v[c];for(o=0;on;++n)a=u[n],void 0!==(s=t[a])?c[a]=s.signal?s:{value:s}:l[a]?c[a]={value:l[a]}:--i;return i?{update:o(e,"group",c)}:{}}var a=n(55),o=n(56),u=["fill","fillOpacity","stroke","strokeOpacity","strokeWidth","strokeDash","strokeDashOffset"];t.exports=r,r.schema={defs:{container:{type:"object",properties:{scene:{type:"object",properties:{fill:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},fillOpacity:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},stroke:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},strokeOpacity:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},strokeWidth:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},strokeDash:{oneOf:[{type:"array",items:{type:"number"}},{$ref:"#/refs/signal"}]},strokeDashOffset:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}}},scales:{type:"array",items:{$ref:"#/defs/scale"}},axes:{type:"array",items:{$ref:"#/defs/axis"}},legends:{type:"array",items:{$ref:"#/defs/legend"}},marks:{type:"array",items:{oneOf:[{$ref:"#/defs/groupMark"},{$ref:"#/defs/visualMark"}]}}}},groupMark:{allOf:[{properties:{type:{"enum":["group"]}},required:["type"]},{$ref:"#/defs/mark"},{$ref:"#/defs/container"}]},visualMark:{allOf:[{not:{properties:{type:{"enum":["group"]}}}},{$ref:"#/defs/mark"}]}}}},function(t,e,n){function r(t){return null==t?"auto":i.isObject(t)?t:i.isNumber(t)?{top:t,left:t,right:t,bottom:t}:"strict"===t?t:"auto"}var i=n(12);t.exports=r,r.schema={defs:{padding:{oneOf:[{"enum":["strict","auto"]},{type:"number"},{type:"object",properties:{top:{type:"number"},bottom:{type:"number"},left:{type:"number"},right:{type:"number"}},additionalProperties:!1}]}}}},function(t,e,n){function r(t,e){return(e||[]).forEach(function(e){var n=f[e.type](t,e),r=Function("args","db","signals","predicates",n.code);r.root=function(){return t.scene().items[0]},r.nullScale=h,r.isFunction=c.isFunction,r.signals=n.signals,r.data=n.data,t.predicate(e.name,r)}),e}function i(t,e){var n=c.field(t),r="signals["+n.map(c.str).join("][")+"]";return e[n[0]]=1,r}function a(t,e){function n(t){u[t]=1}function r(t){s[t]=1}var a=[],o=[],u={},s={};return c.array(e).forEach(function(e,s){var l="o"+s,f="";if(void 0!==e.value)f=c.str(e.value);else if(e.arg)f="args["+c.str(e.arg)+"]";else if(e.signal)f=i(e.signal,u);else if(e.predicate){var h=e.predicate,d=h&&(h.name||h),p=t.predicate(d),g="predicates["+c.str(d)+"]";p.signals.forEach(n),p.data.forEach(r),c.isObject(h)&&c.keys(h).forEach(function(t){if("name"!==t){var e=h[t];f+="args["+c.str(t)+"] = ",e.signal?f+=i(e.signal,u):e.arg&&(f+="args["+c.str(e.arg)+"]"),f+=", "}}),f+=g+".call("+g+", args, db, signals, predicates)"}a.push(l),o.push(l+"=("+f+")")}),{code:"var "+a.join(", ")+";\n"+o.join(";\n")+";\n",signals:c.keys(u),data:c.keys(s)}}function o(t,e){var n=a(t,e.operands);return"="===e.type&&(e.type="=="),n.code+="o0 = o0 instanceof Date ? o0.getTime() : o0;\no1 = o1 instanceof Date ? o1.getTime() : o1;\n",{code:n.code+"return "+["o0","o1"].join(e.type)+";",signals:n.signals,data:n.data}}function u(t,e){for(var n=a(t,e.operands),r=[],i=0,o=e.operands.length;r.push("o"+i++) 0;"}else e.range&&(e.scale&&(r+="if (scale.length == 2) {\n ordSet = scale(o1, o2);\n} else {\n o1 = scale(o1);\no2 = scale(o2);\n}"),r+="return ordSet !== null ? ordSet.indexOf(o0) !== -1 :\n o1 < o2 ? o1 <= o0 && o0 <= o2 : o2 <= o0 && o0 <= o1;");return{code:r,signals:i.signals,data:i.data.concat(e.data?[e.data]:[])}}function l(t,e){var n="var scale = ",r=e.length;return c.isString(t)?(e.push({value:t}),n+="this.root().scale(o"+r+")"):t.arg?(e.push(t),n+="o"+r):t.name&&(e.push(c.isString(t.name)?{value:t.name}:t.name),n+="(this.isFunction(o"+r+") ? o"+r+" : ",t.scope?(e.push(t.scope),n+="((o"+(r+1)+".scale || this.root().scale)(o"+r+") || this.nullScale)"):n+="this.root().scale(o"+r+")",n+=")"),t.invert===!0&&(n+=".invert"),n+";\n"}var c=n(12),f={"=":o,"==":o,"!=":o,">":o,">=":o,"<":o,"<=":o,and:u,"&&":u,or:u,"||":u,"in":s},h=function(){return 0};h.invert=h,t.exports=r,r.schema={refs:{operand:{type:"object",oneOf:[{properties:{value:{}},required:["value"]},{properties:{arg:{type:"string"}},required:["arg"]},{$ref:"#/refs/signal"},{properties:{predicate:{oneOf:[{type:"string"},{type:"object",properties:{name:{type:"string"}},required:["name"]}]}},required:["predicate"]}]}},defs:{predicate:{type:"object",oneOf:[{properties:{name:{type:"string"},type:{"enum":["==","!=",">","<",">=","<="]},operands:{type:"array",items:{$ref:"#/refs/operand"},minItems:2,maxItems:2}},required:["name","type","operands"]},{properties:{name:{type:"string"},type:{"enum":["and","&&","or","||"]},operands:{type:"array",items:{$ref:"#/refs/operand"},minItems:2}},required:["name","type","operands"]},{properties:{name:{type:"string"},type:{"enum":["in"]},item:{$ref:"#/refs/operand"}},oneOf:[{properties:{range:{type:"array",items:{$ref:"#/refs/operand"},minItems:2},scale:{$ref:"#/refs/scopedScale"}},required:["range"]},{properties:{data:{type:"string"},field:{type:"string"}},required:["data","field"]}],required:["name","type","item"]}]}}}},function(t,e,n){function r(t,e){return(e||[]).forEach(function(e){if(-1!==s.indexOf(e.name))throw Error('Signal name "'+e.name+'" is a reserved keyword ('+s.join(", ")+").");var n=t.signal(e.name,e.init).verbose(e.verbose);e.init&&e.init.expr&&(e.init.expr=t.expr(e.init.expr),n.value(i(t,e.init))),e.expr&&(e.expr=t.expr(e.expr),n.evaluate=function(r){var a=i(t,e),o=r.signals;return(a!==n.value()||n.verbose())&&(n.value(a),o[e.name]=1),o[e.name]?r:t.doNotPropagate},n.dependency(u,e.expr.globals),e.expr.globals.forEach(function(e){t.signal(e).addListener(n)}))}),e}function i(t,e){var n=e.expr,i=n.fn();return e.scale?r.scale(t,e,i):i}var a=n(12),o=n(136),u=n(4).Dependencies.SIGNALS,s=["datum","event","signals","width","height","padding"].concat(a.keys(o.codegen.functions));r.scale=function(t,e,n,r,i){var u,s=e.scale,l=s.name||s.signal||s,c=s.scope;return c&&(c.signal?c=t.signalRef(c.signal):a.isString(c)&&(u=s._expr=s._expr||t.expr(c),c=u.fn(r,i))),o.scale(t,s.invert,l,n,c)},t.exports=r,r.schema={refs:{signal:{title:"SignalRef",type:"object",properties:{signal:{type:"string"}},required:["signal"]},scopedScale:{oneOf:[{type:"string"},{type:"object",properties:{name:{oneOf:[{$ref:"#/refs/signal"},{type:"string"}]},scope:{oneOf:[{$ref:"#/refs/signal"},{type:"string"}]},invert:{type:"boolean","default":!1}},additionalProperties:!1,required:["name"]}]}},defs:{signal:{type:"object",properties:{name:{type:"string",not:{"enum":s}},init:{},verbose:{type:"boolean","default":!1},expr:{type:"string"},scale:{$ref:"#/refs/scopedScale"},streams:{$ref:"#/defs/streams"}},additionalProperties:!1,required:["name"]}}}},function(t,e,n){function r(t){function e(t){try{t=i.duplicate(t);var e=n(52),a=t.width||500,o=t.height||500,u=e.padding(t.padding);h.signal("width",a),h.signal("height",o),h.signal("padding",u),r(t),h.defs({width:a,height:o,padding:u,viewport:t.viewport||null,background:e.background(t.background),signals:e.signals(h,t.signals),predicates:e.predicates(h,t.predicates),marks:e.marks(h,t,a,o),data:e.data(h,t.data,s)})}catch(l){s(l)}}function r(t){var e,n=t.signals||(t.signals=[]);n.some(function(t){return"cursor"===t.name?(e=t,!0):!1}),e||n.push(e={name:"cursor",streams:[]}),e.init=e.init||{},e.streams.unshift({type:"mousemove",expr:"eventItem().cursor === cursor.default ? cursor : {default: eventItem().cursor}"})}function s(t){var e;t?a.error(t):e=d(h.buildIndexes()),f&&(f.length>1?f(t,e):t||f(e),f=null)}var l=arguments.length,c=2,f=arguments[l-1],h=new o,d=u.factory;if(l>c&&i.isFunction(arguments[l-c])&&(d=arguments[l-c],++c),l>c&&i.isObject(arguments[l-c])&&h.config(arguments[l-c]),i.isObject(t))e(t);else if(i.isString(t)){var p=i.extend({url:t},h.config().load);i.json(p,function(t,n){t?s("SPECIFICATION LOAD FAILED: "+t):e(n)})}else s("INVALID SPECIFICATION: Must be a valid JSON object or URL.")}var i=n(12),a=n(8),o=n(149),u=n(157);t.exports=r,r.schema={defs:{spec:{title:"Vega visualization specification",type:"object",allOf:[{$ref:"#/defs/container"},{properties:{width:{type:"number"},height:{type:"number"},viewport:{type:"array",items:{type:"number"},maxItems:2},background:{$ref:"#/defs/background"},padding:{$ref:"#/defs/padding"},signals:{type:"array",items:{$ref:"#/defs/signal"}},predicates:{type:"array",items:{$ref:"#/defs/predicate"}},data:{type:"array",items:{$ref:"#/defs/data"}}}}]}}}},function(t,e,n){function r(t){this._defs={},this._predicates={},this._scene=null,this._groups=null,this._node=null,this._builder=null,this._reset={axes:!1,legends:!1},this.config(t),this.expr=h(this),s.init.call(this)}function i(t){var e=this,n={};return a.isArray(t)?(t.forEach(function(t){n[t]=e._predicates[t]}),n):this._predicates[t]}var a=n(12),o=n(4),u=o.ChangeSet,s=o.Graph.prototype,l=o.Node,c=n(150),f=n(155),h=n(136),d=n(156),p=r.prototype=Object.create(s);p.constructor=r,p.defs=function(t){return arguments.length?(this._defs=t,this):this._defs},p.config=function(t){if(!arguments.length)return this._config;this._config=Object.create(d);for(var e in t){var n=t[e],r=this._config[e];a.isObject(n)&&a.isObject(r)?this._config[e]=a.extend({},r,n):this._config[e]=n}return this},p.width=function(t){return this._defs&&(this._defs.width=t),this._defs&&this._defs.marks&&(this._defs.marks.width=t),this._scene&&(this._scene.items[0].width=t,this._scene.items[0]._dirty=!0),this._reset.axes=!0,this},p.height=function(t){return this._defs&&(this._defs.height=t),this._defs&&this._defs.marks&&(this._defs.marks.height=t),this._scene&&(this._scene.items[0].height=t,this._scene.items[0]._dirty=!0),this._reset.axes=!0,this},p.node=function(){return this._node||(this._node=new l(this))},p.data=function(){var t=s.data.apply(this,arguments);return arguments.length>1&&this.node().addListener(t.pipeline()[0]),t},p.predicate=function(t,e){return 1===arguments.length?i.call(this,t):this._predicates[t]=e},p.predicates=function(){return this._predicates},p.scene=function(t){if(!arguments.length)return this._scene;this._builder&&(this.node().removeListener(this._builder),this._builder._groupBuilder.disconnect());var e=this,n=this._builder=new l(this);return n.evaluate=function(r){if(n._groupBuilder)return r;var i=n._groupBuilder=new c(e,e._defs.marks,e._scene={}),a=i.pipeline();return e._groups={},this.addListener(i.connect()),a[a.length-1].addListener(t),r},this.addListener(n),this},p.group=function(t,e){var n=this._groups;return 1===arguments.length?n[t]:(n[t]=e,this)},p.reset=function(){return this._scene&&this._reset.axes&&(f(this._scene,function(t){t.axes&&t.axes.forEach(function(t){t.reset()})}),this._reset.axes=!1),this._scene&&this._reset.legends&&(f(this._scene,function(t){t.legends&&t.legends.forEach(function(t){t.reset()})}),this._reset.legends=!1),this},p.addListener=function(t){this.node().addListener(t)},p.removeListener=function(t){this.node().removeListener(t)},p.fire=function(t){t||(t=u.create()),this.propagate(t,this.node()); +}},h=r.prototype=Object.create(l.prototype);h.constructor=r,h.batchTransform=function(t,e){u.debug(t,["hierarchy layout"]);var n=this._layout,r=this._output,s=this.param("mode"),l=this.param("sort"),h=this.param("nodesize"),d=this.param("parent").accessor,p=e.filter(function(t){return null===d(t)})[0];return s!==this._mode&&(this._mode=s,"tidy"===s&&(s="tree"),n=this._layout=i.layout[s]()),t.fields[r.x]=1,t.fields[r.y]=1,t.fields[r.depth]=1,s===c?(t.fields[r.width]=1,t.fields[r.height]=1,n.value(this.param("field").accessor)):n.separation(f[this.param("orient")]),h.length&&s!==c?n.nodeSize(h):n.size(this.param("size")),n.sort(l.field.length?a.comparator(l.field):null).children(this.param("children").accessor).nodes(p),e.forEach(function(t){o.set(t,r.x,t.x),o.set(t,r.y,t.y),o.set(t,r.depth,t.depth),s===c&&(o.set(t,r.width,t.dx),o.set(t,r.height,t.dy))}),t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Hierarchy transform",type:"object",properties:{type:{"enum":["hierarchy"]},sort:{description:"A list of fields to use as sort criteria for sibling nodes.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]},children:{description:"The data field for the children node array",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"children"},parent:{description:"The data field for the parent node",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"parent"},field:{description:"The value for the area of each leaf-level node for partition layouts.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},mode:{description:"The layout algorithm mode to use.",oneOf:[{"enum":["tidy","cluster","partition"]},{$ref:"#/refs/signal"}],"default":"tidy"},orient:{description:"The layout orientation to use.",oneOf:[{"enum":["cartesian","radial"]},{$ref:"#/refs/signal"}],"default":"cartesian"},size:{description:"The dimensions of the tree layout",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":[500,500]},nodesize:{description:"Sets a fixed x,y size for each node (overrides the size parameter)",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":null},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"},width:{type:"string","default":"layout_width"},height:{type:"string","default":"layout_height"},depth:{type:"string","default":"layout_depth"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return c.prototype.init.call(this,t),l.addParameters(this,{groupby:{type:"array"},orderby:{type:"array"},field:{type:"field"},method:{type:"value","default":"value"},value:{type:"value","default":0}}),this.router(!0).produces(!0)}function i(t,e,n,r){var i,a={_imputed:!0};for(i=0;il;++l)for(r=M[l],"value"!==g&&(m=o[g](r,n)),s=0,c=r.length;c>s;++s)null==r[s]&&(h=i(d.field,r.values,p.field,w[s]),h[x]=m,b.push(h));for(s=0,c=b.length;c>s;++s)t.add.push(b[s]);for(s=0,c=_.length;c>s;++s)t.rem.push(_[s]);return this._imputed=b,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Impute transform",description:"Performs imputation of missing values.",type:"object",properties:{type:{"enum":["impute"]},method:{description:"The imputation method to use.",oneOf:[{"enum":["value","mean","median","min","max"]},{$ref:"#/refs/signal"}],"default":"value"},value:{description:"The value to use for missing data if the method is 'value'.",oneOf:[{type:"number"},{type:"string"},{type:"boolean"},{type:"null"},{$ref:"#/refs/signal"}],"default":0},field:{description:"The data field to impute.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},groupby:{description:"A list of fields to group the data into series.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]},orderby:{description:"A list of fields to determine ordering within series.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]}},additionalProperties:!1,required:["type","groupby","orderby","field"]}},function(t,e,n){function r(t){return o.prototype.init.call(this,t),o.addParameters(this,{on:{type:"data"},onKey:{type:"field","default":null},as:{type:"array"},keys:{type:"array","default":["data"]},"default":{type:"value"}}),this.mutates(!0)}var i=n(4).Tuple,a=n(8),o=n(105),u=r.prototype=Object.create(o.prototype);u.constructor=r,u.transform=function(t,e){function n(t){for(var e=0;en;++n)o=e[n],f[u=c(o)]=f[u]||(f[u]=++r);for(n=0;h>n&&(o=e[n]);++n)c&&(u=c(o))?i.set(o,s,l?f[u]/r:f[u]):i.set(o,s,l?(n+1)/h:n+1);return t.fields[s]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Rank transform",description:"Computes ascending rank scores for data tuples.",type:"object",properties:{type:{"enum":["rank"]},field:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}],description:"A key field to used to rank tuples. If undefined, tuples will be ranked in their observed order."},normalize:{description:"If true, values of the output field will lie in the range [0, 1].",oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],"default":!1},output:{type:"object",description:"Rename the output data fields",properties:{rank:{type:"string","default":"rank"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){o.prototype.init.call(this,t),o.addParameters(this,{by:{type:"array"}}),this.router(!0)}var i=n(12),a=n(8),o=n(105),u=r.prototype=Object.create(o.prototype);u.constructor=r,u.transform=function(t){return a.debug(t,["sorting"]),(t.add.length||t.mod.length||t.rem.length)&&(t.sort=i.comparator(this.param("by").field)),t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Sort transform",description:"Sorts the values of a data set.",type:"object",properties:{type:{"enum":["sort"]},by:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}}],description:"A list of fields to use as sort criteria."}},required:["type","by"]}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),s.addParameters(this,{groupby:{type:"array"},sortby:{type:"array"},field:{type:"field"},offset:{type:"value","default":"zero"}}),this._output={start:"layout_start",end:"layout_end",mid:"layout_mid"},this.mutates(!0)}function i(t,e,n,r){var i,a,o,u,s,l,c,f=[],h=function(t){return t(o)};if(null==e)f.push(t.slice());else for(i={},a=0;ac&&(c=l),null!=n&&s.sort(n)}return f.max=c,f}var a=n(12),o=n(4).Tuple,u=n(8),s=n(105),l=n(109),c=r.prototype=Object.create(l.prototype);c.constructor=r,c.batchTransform=function(t,e){u.debug(t,["stacking"]);for(var n=this.param("groupby").accessor,r=a.comparator(this.param("sortby").field),s=this.param("field").accessor,l=this.param("offset"),c=this._output,f=i(e,n,r,s),h=0,d=f.max;h"}}),this._output={children:"children",parent:"parent"},this.router(!0).produces(!0)}var i=n(12),a=n(4).Tuple,o=n(8),u=n(105),s=n(109),l=r.prototype=Object.create(s.prototype);l.constructor=r,l.batchTransform=function(t,e){function n(t,e,r){var i=h[t].execute(r);e[l]=i,i.forEach(function(r){r[c]=e,p.push(a.ingest(r)),t+1r;++r)t.add.push(p[r]);for(r=0,u=d.length;u>r;++r)t.rem.push(d[r]);return this._internal=p,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Treeify transform",type:"object",properties:{type:{"enum":["treeify"]},groupby:{description:"An ordered list of fields by which to group tuples into a tree.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}]},output:{type:"object",description:"Rename the output data fields",properties:{children:{type:"string","default":"children"},parent:{type:"string","default":"parent"}},additionalProperties:!1}},additionalProperties:!1,required:["type","groupby"]}},function(t,e,n){function r(t){return l.prototype.init.call(this,t),s.addParameters(this,{sort:{type:"array","default":["-value"]},children:{type:"field","default":"children"},parent:{type:"field","default":"parent"},field:{type:"field","default":"value"},size:{type:"array","default":n(117).size},round:{type:"value","default":!0},sticky:{type:"value","default":!1},ratio:{type:"value","default":c},padding:{type:"value","default":null},mode:{type:"value","default":"squarify"}}),this._layout=i.layout.treemap(),this._output={x:"layout_x",y:"layout_y",width:"layout_width",height:"layout_height",depth:"layout_depth"},this.mutates(!0)}var i=n(57),a=n(12),o=n(4).Tuple,u=n(8),s=n(105),l=n(109),c=.5*(1+Math.sqrt(5)),f=r.prototype=Object.create(l.prototype);f.constructor=r,f.batchTransform=function(t,e){u.debug(t,["treemap"]);var n=this._layout,r=this._output,i=this.param("sticky"),s=this.param("parent").accessor,l=e.filter(function(t){return null===s(t)})[0];return n.sticky()!==i&&n.sticky(i),n.sort(a.comparator(this.param("sort").field)).children(this.param("children").accessor).value(this.param("field").accessor).size(this.param("size")).round(this.param("round")).ratio(this.param("ratio")).padding(this.param("padding")).mode(this.param("mode")).nodes(l),e.forEach(function(t){o.set(t,r.x,t.x),o.set(t,r.y,t.y),o.set(t,r.width,t.dx),o.set(t,r.height,t.dy),o.set(t,r.depth,t.depth)}),t.fields[r.x]=1,t.fields[r.y]=1,t.fields[r.width]=1,t.fields[r.height]=1,t.fields[r.depth]=1,t},t.exports=r,r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Treemap transform",type:"object",properties:{type:{"enum":["treemap"]},sort:{description:"A list of fields to use as sort criteria for sibling nodes.",oneOf:[{type:"array",items:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}],"default":["-value"]},children:{description:"The data field for the children node array",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"children"},parent:{description:"The data field for the parent node",oneOf:[{type:"string"},{$ref:"#/refs/signal"}],"default":"parent"},field:{description:"The values to use to determine the area of each leaf-level treemap cell.",oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},mode:{description:"The treemap layout algorithm to use.",oneOf:[{"enum":["squarify","slice","dice","slice-dice"]},{$ref:"#/refs/signal"}],"default":"squarify"},size:{description:"The dimensions of the treemap layout",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":[500,500]},round:{description:"If true, treemap cell dimensions will be rounded to integer pixels.",oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],"default":!0},sticky:{description:"If true, repeated runs of the treemap will use cached partition boundaries.",oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}],"default":!1},ratio:{description:"The target aspect ratio for the layout to optimize.",oneOf:[{type:"number"},{$ref:"#/refs/signal"}],"default":c},padding:{oneOf:[{type:"number"},{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:4,maxItems:4},{$ref:"#/refs/signal"}],description:"he padding (in pixels) to provide around internal nodes in the treemap."},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"},width:{type:"string","default":"layout_width"},height:{type:"string","default":"layout_height"},depth:{type:"string","default":"layout_depth"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return s.prototype.init.call(this,t),u.addParameters(this,{clipExtent:{type:"array","default":n(117).extent},x:{type:"field","default":"layout_x"},y:{type:"field","default":"layout_y"}}),this._layout=i.geom.voronoi(),this._output={path:"layout_path"},this.mutates(!0)}var i=n(57),a=n(9),o=n(8),u=n(105),s=n(109),l=r.prototype=Object.create(s.prototype);l.constructor=r,l.batchTransform=function(t,e){o.debug(t,["voronoi"]);for(var n=this._output.path,r=this._layout.clipExtent(this.param("clipExtent")).x(this.param("x").accessor).y(this.param("y").accessor)(e),i=0;i","default":n(117).size},text:{type:"field","default":"data"},rotate:{type:"field|value","default":0},font:{type:"field|value","default":{value:"sans-serif"}},fontSize:{type:"field|value","default":14},fontStyle:{type:"field|value","default":{value:"normal"}},fontWeight:{type:"field|value","default":{value:"normal"}},fontScale:{type:"array","default":[10,50]},padding:{type:"value","default":1},spiral:{type:"value","default":"archimedean"}}),this._layout=s().canvas(l.instance),this._output={x:"layout_x",y:"layout_y",font:"layout_font",fontSize:"layout_fontSize",fontStyle:"layout_fontStyle",fontWeight:"layout_fontWeight",rotate:"layout_rotate"},this.mutates(!0)}function i(t){return t&&t.accessor||t}function a(t){var e=Object.create(t);return e._tuple=t,e}var o=n(12),u=n(57),s=n(132),l=n(60).canvas,c=n(9),f=n(8),h=n(105),d=n(109),p=r.prototype=Object.create(d.prototype);p.constructor=r,p.batchTransform=function(t,e){f.debug(t,["wordcloud"]);var n,r,s=this._layout,l=this._output,h=this.param("fontSize"),d=h.accessor&&this.param("fontScale");h=h.accessor||u.functor(h),d.length&&(r=u.scale.sqrt().domain(o.extent(e,n=h)).range(d),h=function(t){return r(n(t))}),s.size(this.param("size")).text(i(this.param("text"))).padding(this.param("padding")).spiral(this.param("spiral")).rotate(i(this.param("rotate"))).font(i(this.param("font"))).fontStyle(i(this.param("fontStyle"))).fontWeight(i(this.param("fontWeight"))).fontSize(h).words(e.map(a)).on("end",function(t){var e,n,r,i,a=s.size(),o=a[0]>>1,u=a[1]>>1;for(r=0,i=t.length;i>r;++r)e=t[r],n=e._tuple,c.set(n,l.x,e.x+o),c.set(n,l.y,e.y+u),c.set(n,l.font,e.font),c.set(n,l.fontSize,e.size),c.set(n,l.fontStyle,e.style),c.set(n,l.fontWeight,e.weight),c.set(n,l.rotate,e.rotate)}).start();for(var p in l)t.fields[l[p]]=1;return t},t.exports=r;var g=n(106);r.schema={$schema:"http://json-schema.org/draft-04/schema#",title:"Wordcloud transform",type:"object",properties:{type:{"enum":["wordcloud"]},size:{description:"The dimensions of the wordcloud layout",oneOf:[{type:"array",items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},minItems:2,maxItems:2},{$ref:"#/refs/signal"}],"default":[900,500]},font:{description:"The font face to use for a word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"sans-serif"},fontStyle:{description:"The font style to use for a word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"normal"},fontWeight:{description:"The font weight to use for a word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"normal"},fontSize:{description:"The font size to use for a word.",oneOf:[{type:"number"},g.schema,{type:"string"},{$ref:"#/refs/signal"}],"default":14},fontScale:{description:"The minimum and maximum scaled font sizes, or null to prevent scaling.",oneOf:[{type:"null"},{type:"array",minItems:2,maxItems:2,items:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}}],"default":[10,50]},rotate:{description:"The field or number to set the roration angle (in degrees).",oneOf:[{type:"number"},{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":0},text:{description:"The field containing the text to use for each word.",oneOf:[{type:"string"},g.schema,{$ref:"#/refs/signal"}],"default":"data"},spiral:{description:"The type of spiral used for positioning words, either 'archimedean' or 'rectangular'.",oneOf:[{"enum":["archimedean","rectangular"]},g.schema,{$ref:"#/refs/signal"}],"default":"archimedean"},padding:{description:"The padding around each word.",oneOf:[{type:"number"},g.schema,{$ref:"#/refs/signal"}],"default":1},output:{type:"object",description:"Rename the output data fields",properties:{x:{type:"string","default":"layout_x"},y:{type:"string","default":"layout_y"},font:{type:"string","default":"layout_font"},fontSize:{type:"string","default":"layout_fontSize"},fontStyle:{type:"string","default":"layout_fontStyle"},fontWeight:{type:"string","default":"layout_fontWeight"},rotate:{type:"string","default":"layout_rotate"}},additionalProperties:!1}},additionalProperties:!1,required:["type"]}},function(t,e,n){function r(t){return t.text}function i(){return"serif"}function a(){return"normal"}function o(t){return Math.sqrt(t.value)}function u(){return 30*(~~(6*Math.random())-3)}function s(){return 1}function l(t,e,n,r){if(!e.sprite){var i=t.context,a=t.ratio;i.clearRect(0,0,(_<<5)/a,b/a);var o=0,u=0,s=0,l=n.length;for(--r;++r>5<<5,f=~~Math.max(Math.abs(g+m),Math.abs(g-m))}else c=c+31>>5<<5;if(f>s&&(s=f),o+c>=_<<5&&(o=0,u+=s,s=0),u+f>=b)break;i.translate((o+(c>>1))/a,(u+(f>>1))/a),e.rotate&&i.rotate(e.rotate*x),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=c,e.height=f,e.xoff=o,e.yoff=u,e.x1=c>>1,e.y1=f>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,o+=c}for(var y=i.getImageData(0,0,(_<<5)/a,b/a).data,M=[];--r>=0;)if(e=n[r],e.hasText){for(var c=e.width,w=c>>5,f=e.y1-e.y0,k=0;f*w>k;k++)M[k]=0;if(o=e.xoff,null==o)return;u=e.yoff;for(var E=0,S=-1,A=0;f>A;A++){for(var k=0;c>k;k++){var T=w*A+(k>>5),O=y[(u+A)*(_<<5)+(o+k)<<2]?1<<31-k%32:0;M[T]|=O,E|=O}E?S=A:(e.y0++,f--,A--,u++)}e.y1=e.y0+S,e.sprite=M.slice(0,(e.y1-e.y0)*w)}}}function c(t,e,n){n>>=5;for(var r,i=t.sprite,a=t.width>>5,o=t.x-(a<<4),u=127&o,s=32-u,l=t.y1-t.y0,c=(t.y+t.y0)*n+(o>>5),f=0;l>f;f++){r=0;for(var h=0;a>=h;h++)if((r<h?(r=i[f*a+h])>>>u:0))&e[c+h])return!0;c+=n}return!1}function f(t,e){var n=t[0],r=t[1];e.x+e.x0r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function h(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0t?-1:1;switch(Math.sqrt(1+4*a*t)-a&3){case 0:r+=n;break;case 1:i+=e;break;case 2:r-=n;break;default:i-=e}return[r,i]}}function g(t){for(var e=[],n=-1;++n>2);t.width=(_<<5)/e,t.height=b/e;var n=t.getContext("2d");return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}function e(t,e,r){for(var i,a,o,u=([{x:0,y:0},{x:n[0],y:n[1]}],e.x),s=e.y,l=Math.sqrt(n[0]*n[0]+n[1]*n[1]),f=T(n),d=R()<.5?1:-1,p=-d;(i=f(p+=d))&&(a=~~i[0],o=~~i[1],!(Math.min(Math.abs(a),Math.abs(o))>=l));)if(e.x=u+a,e.y=s+o,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>n[0]||e.y+e.y1>n[1])&&(!r||!c(e,t,n[0]))&&(!r||h(e,r))){for(var g,m=e.sprite,v=e.width>>5,y=n[0]>>5,x=e.x-(v<<4),_=127&x,b=32-_,M=e.y1-e.y0,w=(e.y+e.y0)*y+(x>>5),k=0;M>k;k++){g=0;for(var E=0;v>=E;E++)t[w+E]|=g<E?(g=m[k*v+E])>>>_:0);w+=y}return delete e.sprite,!0}return!1}var n=[256,256],p=r,x=i,w=o,k=a,E=a,S=u,A=s,T=d,O=[],N=1/0,L=y("word","end"),C=null,R=Math.random,I={},D=m;return I.canvas=function(t){return arguments.length?(D=v(t),I):D},I.start=function(){function r(){for(var t=Date.now();Date.now()-t>1,r.y=n[1]*(R()+.5)>>1,l(i,r,h,s),r.hasText&&e(a,r,o)&&(c.push(r),L.word(r),o?f(o,r):o=[{x:r.x+r.x0,y:r.y+r.y0},{x:r.x+r.x1,y:r.y+r.y1}],r.x-=n[0]>>1,r.y-=n[1]>>1)}s>=u&&(I.stop(),L.end(c,o))}var i=t(D()),a=g((n[0]>>5)*n[1]),o=null,u=O.length,s=-1,c=[],h=O.map(function(t,e){return t.text=p.call(this,t,e),t.font=x.call(this,t,e),t.style=k.call(this,t,e),t.weight=E.call(this,t,e),t.rotate=S.call(this,t,e),t.size=~~w.call(this,t,e),t.padding=A.call(this,t,e),t}).sort(function(t,e){return e.size-t.size});return C&&clearInterval(C),C=setInterval(r,0),r(),I},I.stop=function(){return C&&(clearInterval(C),C=null),I},I.timeInterval=function(t){return arguments.length?(N=null==t?1/0:t,I):N},I.words=function(t){return arguments.length?(O=t,I):O},I.size=function(t){return arguments.length?(n=[+t[0],+t[1]],I):n},I.font=function(t){return arguments.length?(x=v(t),I):x},I.fontStyle=function(t){return arguments.length?(k=v(t),I):k},I.fontWeight=function(t){return arguments.length?(E=v(t),I):E},I.rotate=function(t){return arguments.length?(S=v(t),I):S},I.text=function(t){return arguments.length?(p=v(t),I):p},I.spiral=function(t){return arguments.length?(T=M[t]||t,I):T},I.fontSize=function(t){return arguments.length?(w=v(t),I):w},I.padding=function(t){return arguments.length?(A=v(t),I):A},I.random=function(t){return arguments.length?(R=t,I):R},I.on=function(){var t=L.on.apply(L,arguments);return t===L?I:t},I};var M={archimedean:d,rectangular:p}},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(){return new n(arguments)}function n(t){function e(t){var e=(t+="").indexOf("."),n=t;if(e>=0?t=t.slice(0,e):n+=".",t&&!o.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}function n(t){return function(){for(var e,n=o[t],r=-1,i=n.length;++r=0;--i){for(a=0;l>a;++a)if(o=t[a],u=e&&o(e)||e,o(n[i])!==u){s=!1;break}s&&r.push.apply(r,n.splice(i,1)),s=!0}}function i(t,e,n){var r=c.ingest(e);t.add.push(r),n._data.push(r)}function a(t,e,n){var a=e.signal?o.field(e.signal):null,s=a?a[0]:null,p=e.predicate?t.predicate(e.predicate.name||e.predicate):null,g=e.test?t.expr(e.test):null,m=null===p&&null===g,v=e.type===h.CLEAR,y=o.array(e.field||"data"),x=y.map(o.accessor),_=y.map(o.mutator),b=new l(t).router(v);return b.evaluate=function(l){var b,M;if(null!==p&&(b=t.values(f.DATA,p.data||d),M=t.values(f.SIGNALS,p.signals||d),m=p.call(p,{},b,M,t._predicates)),null!==g&&(M=t.values(f.SIGNALS,g.globals||d),m=g.fn()),u.debug(l,[e.type+"ing",m]),!m||!v&&!l.signals[s])return l;var w,k=a?t.signalRef(e.signal):null,E=t.data(n.name),S=null,A=[],T=[],O=0;return o.isObject(k)?(w=k,e.field||(y=o.keys(w),x=y.map(o.accessor),_=y.map(o.mutator))):(w={},_.forEach(function(t){t(w,k)})),e.type===h.INSERT?i(l,w,E):e.type===h.REMOVE?(r(x,k,l.mod,l.rem),r(x,k,l.add,T),r(x,k,E._data,T)):e.type===h.UPSERT?(l.mod.forEach(function(t){var e=x.every(function(e){return e(t)===e(w)});e&&(o.extend(t,w),O+=1)}),0===O&&i(l,w,E)):e.type===h.TOGGLE?(r(x,k,l.mod,T),l.rem.push.apply(l.rem,T),r(x,k,l.add,A),A.length||T.length?E._data=E._data.filter(function(t){return T.indexOf(t)<0&&A.indexOf(t)<0}):(l.add.push(S=c.ingest(w)),E._data.push(S))):e.type===h.CLEAR&&(l.rem.push.apply(l.rem,l.mod.splice(0)),l.add.splice(0),E._data.splice(0)),y.forEach(function(t){l.fields[t]=1}),l},s&&b.dependency(f.SIGNALS,s),p&&(b.dependency(f.DATA,p.data),b.dependency(f.SIGNALS,p.signals)),g&&(b.dependency(f.SIGNALS,g.globals),b.dependency(f.DATA,g.dataSources)),b}var o=n(12),u=n(8),s=n(4),l=s.Node,c=s.Tuple,f=s.Dependencies,h={INSERT:"insert",REMOVE:"remove",UPSERT:"upsert",TOGGLE:"toggle",CLEAR:"clear"},d=[];t.exports=a,a.schema={defs:{modify:{ +type:"array",items:{type:"object",oneOf:[{properties:{type:{"enum":[h.INSERT,h.REMOVE,h.UPSERT,h.TOGGLE]},signal:{type:"string"},field:{type:"string"}},required:["type","signal"]},{properties:{type:{"enum":[h.CLEAR]},predicate:{type:"string"}},required:["type","predicate"]},{properties:{type:{"enum":[h.CLEAR]},test:{type:"string"}},required:["type","test"]}]}}}}},function(t,e){t.exports=function(){"use strict";function t(t,e){function n(){this.constructor=t}n.prototype=e.prototype,t.prototype=new n}function e(t,n,r,i){this.message=t,this.expected=n,this.found=r,this.location=i,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e)}function n(t){function n(e){var n,r,i=pe[e];if(i)return i;for(n=e-1;!pe[n];)n--;for(i=pe[n],i={line:i.line,column:i.column,seenCR:i.seenCR};e>n;)r=t.charAt(n),"\n"===r?(i.seenCR||i.line++,i.column=1,i.seenCR=!1):"\r"===r||"\u2028"===r||"\u2029"===r?(i.line++,i.column=1,i.seenCR=!0):(i.column++,i.seenCR=!1),n++;return pe[e]=i,i}function r(t,e){var r=n(t),i=n(e);return{start:{offset:t,line:r.line,column:r.column},end:{offset:e,line:i.line,column:i.column}}}function i(t){ge>he||(he>ge&&(ge=he,me=[]),me.push(t))}function a(t,n,r,i){function a(t){var e=1;for(t.sort(function(t,e){return t.descriptione.description?1:0});e1?o.slice(0,-1).join(", ")+" or "+o[t.length-1]:o[0],i=e?'"'+n(e)+'"':"end of input","Expected "+r+" but "+i+" found."}return null!==n&&a(n),new e(null!==t?t:o(n,r),n,r,i)}function o(){var t;return t=u()}function u(){var e,n,r,a,o,l;return e=he,n=s(),n!==_?(r=v(),r!==_?(44===t.charCodeAt(he)?(a=w,he++):(a=_,0===ve&&i(k)),a!==_?(o=v(),o!==_?(l=u(),l!==_?(de=e,n=E(n,l),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=s(),n!==_&&(de=e,n=S(n)),e=n),e}function s(){var e,n,r,a,o,u,c,f,h,d,p,g,m,y;return e=he,91===t.charCodeAt(he)?(n=A,he++):(n=_,0===ve&&i(T)),n!==_?(r=v(),r!==_?(a=l(),a!==_?(o=v(),o!==_?(44===t.charCodeAt(he)?(u=w,he++):(u=_,0===ve&&i(k)),u!==_?(c=v(),c!==_?(f=l(),f!==_?(h=v(),h!==_?(93===t.charCodeAt(he)?(d=O,he++):(d=_,0===ve&&i(N)),d!==_?(p=v(),p!==_?(62===t.charCodeAt(he)?(g=L,he++):(g=_,0===ve&&i(C)),g!==_?(m=v(),m!==_?(y=s(),y!==_?(de=e,n=R(a,f,y),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=l()),e}function l(){var t,e,n,r;if(t=he,e=c(),e!==_){if(n=[],r=d(),r!==_)for(;r!==_;)n.push(r),r=d();else n=_;n!==_?(de=t,e=I(e,n),t=e):(he=t,t=_)}else he=t,t=_;return t===_&&(t=he,e=c(),e!==_&&(de=t,e=D(e)),t=e),t}function c(){var e,n,r,a,o;return e=he,40===t.charCodeAt(he)?(n=U,he++):(n=_,0===ve&&i(P)),n!==_?(r=u(),r!==_?(41===t.charCodeAt(he)?(a=z,he++):(a=_,0===ve&&i(j)),a!==_?(de=e,n=q(r),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,64===t.charCodeAt(he)?(n=$,he++):(n=_,0===ve&&i(F)),n!==_?(r=p(),r!==_?(58===t.charCodeAt(he)?(a=Y,he++):(a=_,0===ve&&i(H)),a!==_?(o=h(),o!==_?(de=e,n=B(r,o),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=f(),n!==_?(58===t.charCodeAt(he)?(r=Y,he++):(r=_,0===ve&&i(H)),r!==_?(a=h(),a!==_?(de=e,n=V(n,a),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=g(),n!==_?(58===t.charCodeAt(he)?(r=Y,he++):(r=_,0===ve&&i(H)),r!==_?(a=h(),a!==_?(de=e,n=X(n,a),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e===_&&(e=he,n=h(),n!==_&&(de=e,n=W(n)),e=n,e===_&&(e=he,n=p(),n!==_&&(de=e,n=G(n)),e=n))))),e}function f(){var e;return t.substr(he,4)===Z?(e=Z,he+=4):(e=_,0===ve&&i(J)),e===_&&(t.substr(he,6)===Q?(e=Q,he+=6):(e=_,0===ve&&i(K)),e===_&&(t.substr(he,4)===tt?(e=tt,he+=4):(e=_,0===ve&&i(et)),e===_&&(t.substr(he,3)===nt?(e=nt,he+=3):(e=_,0===ve&&i(rt)),e===_&&(t.substr(he,4)===it?(e=it,he+=4):(e=_,0===ve&&i(at)),e===_&&(t.substr(he,4)===ot?(e=ot,he+=4):(e=_,0===ve&&i(ut)),e===_&&(t.substr(he,4)===st?(e=st,he+=4):(e=_,0===ve&&i(lt)),e===_&&(t.substr(he,5)===ct?(e=ct,he+=5):(e=_,0===ve&&i(ft)),e===_&&(t.substr(he,4)===ht?(e=ht,he+=4):(e=_,0===ve&&i(dt)),e===_&&(t.substr(he,5)===pt?(e=pt,he+=5):(e=_,0===ve&&i(gt))))))))))),e}function h(){var e;return t.substr(he,9)===mt?(e=mt,he+=9):(e=_,0===ve&&i(vt)),e===_&&(t.substr(he,7)===yt?(e=yt,he+=7):(e=_,0===ve&&i(xt)),e===_&&(t.substr(he,5)===_t?(e=_t,he+=5):(e=_,0===ve&&i(bt)),e===_&&(t.substr(he,8)===Mt?(e=Mt,he+=8):(e=_,0===ve&&i(wt)),e===_&&(t.substr(he,5)===kt?(e=kt,he+=5):(e=_,0===ve&&i(Et)),e===_&&(t.substr(he,7)===St?(e=St,he+=7):(e=_,0===ve&&i(At)),e===_&&(t.substr(he,8)===Tt?(e=Tt,he+=8):(e=_,0===ve&&i(Ot)),e===_&&(t.substr(he,5)===Nt?(e=Nt,he+=5):(e=_,0===ve&&i(Lt)),e===_&&(t.substr(he,10)===Ct?(e=Ct,he+=10):(e=_,0===ve&&i(Rt)),e===_&&(t.substr(he,9)===It?(e=It,he+=9):(e=_,0===ve&&i(Dt)),e===_&&(t.substr(he,8)===Ut?(e=Ut,he+=8):(e=_,0===ve&&i(Pt)),e===_&&(t.substr(he,9)===zt?(e=zt,he+=9):(e=_,0===ve&&i(jt)),e===_&&(t.substr(he,10)===qt?(e=qt,he+=10):(e=_,0===ve&&i($t)),e===_&&(t.substr(he,10)===Ft?(e=Ft,he+=10):(e=_,0===ve&&i(Yt)),e===_&&(t.substr(he,9)===Ht?(e=Ht,he+=9):(e=_,0===ve&&i(Bt)),e===_&&(t.substr(he,8)===Vt?(e=Vt,he+=8):(e=_,0===ve&&i(Xt)),e===_&&(t.substr(he,9)===Wt?(e=Wt,he+=9):(e=_,0===ve&&i(Gt)),e===_&&(t.substr(he,8)===Zt?(e=Zt,he+=8):(e=_,0===ve&&i(Jt)),e===_&&(t.substr(he,9)===Qt?(e=Qt,he+=9):(e=_,0===ve&&i(Kt)))))))))))))))))))),e}function d(){var e,n,r,a;return e=he,91===t.charCodeAt(he)?(n=A,he++):(n=_,0===ve&&i(T)),n!==_?(r=m(),r!==_?(93===t.charCodeAt(he)?(a=O,he++):(a=_,0===ve&&i(N)),a!==_?(de=e,n=te(r),e=n):(he=e,e=_)):(he=e,e=_)):(he=e,e=_),e}function p(){var e,n,r;if(e=he,n=[],ee.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ne)),r!==_)for(;r!==_;)n.push(r),ee.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ne));else n=_;return n!==_&&(de=e,n=re(n)),e=n}function g(){var e,n,r;if(e=he,n=[],ie.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ae)),r!==_)for(;r!==_;)n.push(r),ie.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(ae));else n=_;return n!==_&&(de=e,n=oe(n)),e=n}function m(){var e,n,r;if(e=he,n=[],ue.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(se)),r!==_)for(;r!==_;)n.push(r),ue.test(t.charAt(he))?(r=t.charAt(he),he++):(r=_,0===ve&&i(se));else n=_;return n!==_&&(de=e,n=le(n)),e=n}function v(){var e,n;for(e=[],ce.test(t.charAt(he))?(n=t.charAt(he),he++):(n=_,0===ve&&i(fe));n!==_;)e.push(n),ce.test(t.charAt(he))?(n=t.charAt(he),he++):(n=_,0===ve&&i(fe));return e}var y,x=arguments.length>1?arguments[1]:{},_={},b={start:o},M=o,w=",",k={type:"literal",value:",",description:'","'},E=function(t,e){return[t].concat(e)},S=function(t){return[t]},A="[",T={type:"literal",value:"[",description:'"["'},O="]",N={type:"literal",value:"]",description:'"]"'},L=">",C={type:"literal",value:">",description:'">"'},R=function(t,e,n){return{start:t,middle:n,end:e,str:"["+t.str+", "+e.str+"] > "+n.str}},I=function(t,e){return t.filters=e,t.str+=e.map(function(t){return"["+t+"]"}).join(""),t},D=function(t){return t},U="(",P={type:"literal",value:"(",description:'"("'},z=")",j={type:"literal",value:")",description:'")"'},q=function(t){return{stream:t,str:"("+t.map(function(t){return t.str}).join(", ")+")"}},$="@",F={type:"literal",value:"@",description:'"@"'},Y=":",H={type:"literal",value:":",description:'":"'},B=function(t,e){return{event:e,name:t,str:"@"+t+":"+e}},V=function(t,e){return{event:e,mark:t,str:t+":"+e}},X=function(t,e){return{event:e,target:t,str:t+":"+e}},W=function(t){return{event:t,str:t}},G=function(t){return{signal:t,str:t}},Z="rect",J={type:"literal",value:"rect",description:'"rect"'},Q="symbol",K={type:"literal",value:"symbol",description:'"symbol"'},tt="path",et={type:"literal",value:"path",description:'"path"'},nt="arc",rt={type:"literal",value:"arc",description:'"arc"'},it="area",at={type:"literal",value:"area",description:'"area"'},ot="line",ut={type:"literal",value:"line",description:'"line"'},st="rule",lt={type:"literal",value:"rule",description:'"rule"'},ct="image",ft={type:"literal",value:"image",description:'"image"'},ht="text",dt={type:"literal",value:"text",description:'"text"'},pt="group",gt={type:"literal",value:"group",description:'"group"'},mt="mousedown",vt={type:"literal",value:"mousedown",description:'"mousedown"'},yt="mouseup",xt={type:"literal",value:"mouseup",description:'"mouseup"'},_t="click",bt={type:"literal",value:"click",description:'"click"'},Mt="dblclick",wt={type:"literal",value:"dblclick",description:'"dblclick"'},kt="wheel",Et={type:"literal",value:"wheel",description:'"wheel"'},St="keydown",At={type:"literal",value:"keydown",description:'"keydown"'},Tt="keypress",Ot={type:"literal",value:"keypress",description:'"keypress"'},Nt="keyup",Lt={type:"literal",value:"keyup",description:'"keyup"'},Ct="mousewheel",Rt={type:"literal",value:"mousewheel",description:'"mousewheel"'},It="mousemove",Dt={type:"literal",value:"mousemove",description:'"mousemove"'},Ut="mouseout",Pt={type:"literal",value:"mouseout",description:'"mouseout"'},zt="mouseover",jt={type:"literal",value:"mouseover",description:'"mouseover"'},qt="mouseenter",$t={type:"literal",value:"mouseenter",description:'"mouseenter"'},Ft="touchstart",Yt={type:"literal",value:"touchstart",description:'"touchstart"'},Ht="touchmove",Bt={type:"literal",value:"touchmove",description:'"touchmove"'},Vt="touchend",Xt={type:"literal",value:"touchend",description:'"touchend"'},Wt="dragenter",Gt={type:"literal",value:"dragenter",description:'"dragenter"'},Zt="dragover",Jt={type:"literal",value:"dragover",description:'"dragover"'},Qt="dragleave",Kt={type:"literal",value:"dragleave",description:'"dragleave"'},te=function(t){return t},ee=/^[a-zA-Z0-9_\-]/,ne={type:"class",value:"[a-zA-Z0-9_-]",description:"[a-zA-Z0-9_-]"},re=function(t){return t.join("")},ie=/^[a-zA-Z0-9\-_ #.>+~[\]=|\^$*]/,ae={type:"class",value:"[a-zA-Z0-9-_ #\\.\\>\\+~\\[\\]=|\\^\\$\\*]",description:"[a-zA-Z0-9-_ #\\.\\>\\+~\\[\\]=|\\^\\$\\*]"},oe=function(t){return t.join("")},ue=/^['"a-zA-Z0-9_().><=! \t-&|~]/,se={type:"class",value:"['\"a-zA-Z0-9_\\(\\)\\.\\>\\<\\=\\! \\t-&|~]",description:"['\"a-zA-Z0-9_\\(\\)\\.\\>\\<\\=\\! \\t-&|~]"},le=function(t){return t.join("")},ce=/^[ \t\r\n]/,fe={type:"class",value:"[ \\t\\r\\n]",description:"[ \\t\\r\\n]"},he=0,de=0,pe=[{line:1,column:1,seenCR:!1}],ge=0,me=[],ve=0;if("startRule"in x){if(!(x.startRule in b))throw new Error("Can't start parsing from rule \""+x.startRule+'".');M=b[x.startRule]}if(y=M(),y!==_&&he===t.length)return y;throw y!==_&&her||r>3)throw Error("scale takes exactly 2 or 3 arguments.");return"this.defs.scale(this.model, "+e+", "+n[0]+","+n[1]+(r>2?","+n[2]:"")+")"}}function i(t,e,n,r,i){if(i&&i.scale||(i=i&&i.mark?i.mark.group:t.scene().items[0]),t.group(i._id)!==i)throw Error('Scope for scale "'+n+'" is not a valid group item.');var a=i.scale(n);return a?e?a.invert(r):a(r):r}function a(t,e,n,r){var i=e,a=n;return e>n&&(i=n,a=e),r?t>i&&a>t:t>=i&&a>=t}function o(t){return function(e,n,r,i){var a;if(3!==e.length)throw Error("indata takes 3 arguments.");if("Literal"!==e[0].type)throw Error("Data source name must be a literal for indata.");return a=e[0].value,i[a]=1,"Literal"===e[2].type&&o.model.requestIndex(a,e[2].value),e=e.map(t),"this.defs.indata(this.model,"+e[0]+","+e[1]+","+e[2]+")"}}function u(t,e,n,r){var i=t.data(e),a=i.getIndex(r);return a[n]>0}function s(t,e){return d.format(t,"number")(e)}function l(t,e){return d.format(t,"time")(e)}function c(t,e){return d.format(t,"utc")(e)}function f(t){return function(e){o.model=t;var n=m(e);return n.model=t,n.sig=t?t._signals:{},n}}var h=n(12),d=h.template,p=n(137),g=["datum","event","signals"],m=p.compiler(g,{idWhiteList:g,fieldVar:g[0],globalVar:function(t){return"this.sig["+h.str(t)+"]._value"},functions:function(t){var e=p.functions(t);return e.eventItem="event.vg.getItem",e.eventGroup="event.vg.getGroup",e.eventX="event.vg.getX",e.eventY="event.vg.getY",e.open="window.open",e.scale=r(t,!1),e.iscale=r(t,!0),e.inrange="this.defs.inrange",e.indata=o(t),e.format="this.defs.format",e.timeFormat="this.defs.timeFormat",e.utcFormat="this.defs.utcFormat",e},functionDefs:function(){return{scale:i,inrange:a,indata:u,format:s,timeFormat:l,utcFormat:c}}});f.scale=i,f.codegen=m.codegen,t.exports=f},function(t,e,n){var r=n(138),i=n(139),a=t.exports={parse:function(t,e){return r.parse("("+t+")",e)},code:function(t){return i(t)},compiler:function(t,e){t=t.slice();var n=i(e),r=t.length,o=function(e){var i=n(a.parse(e));t[r]='"use strict"; return ('+i.code+");";var o=Function.apply(null,t);return i.fn=t.length>8?function(){return o.apply(i,arguments)}:function(t,e,n,r,a,u,s){return o.call(i,t,e,n,r,a,u,s)},i};return o.codegen=n,o},functions:n(141),constants:n(140)}},function(t,e){t.exports=function(){"use strict";function t(t,e){if(!t)throw new Error("ASSERT: "+e)}function e(t){return t>=48&&57>=t}function n(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function r(t){return"01234567".indexOf(t)>=0}function i(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function a(t){return 10===t||13===t||8232===t||8233===t}function o(t){return 36===t||95===t||t>=65&&90>=t||t>=97&&122>=t||92===t||t>=128&&kt.NonAsciiIdentifierStart.test(String.fromCharCode(t))}function u(t){return 36===t||95===t||t>=65&&90>=t||t>=97&&122>=t||t>=48&&57>=t||92===t||t>=128&&kt.NonAsciiIdentifierPart.test(String.fromCharCode(t))}function s(t){switch(t){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function l(t){switch(t){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function c(t){if(St&&l(t))return!0;switch(t.length){case 2:return"if"===t||"in"===t||"do"===t;case 3:return"var"===t||"for"===t||"new"===t||"try"===t||"let"===t;case 4:return"this"===t||"else"===t||"case"===t||"void"===t||"with"===t||"enum"===t;case 5:return"while"===t||"break"===t||"catch"===t||"throw"===t||"const"===t||"yield"===t||"class"===t||"super"===t;case 6:return"return"===t||"typeof"===t||"delete"===t||"switch"===t||"export"===t||"import"===t;case 7:return"default"===t||"finally"===t||"extends"===t;case 8:return"function"===t||"continue"===t||"debugger"===t;case 10:return"instanceof"===t;default:return!1}}function f(){var t,e;for(e=0===At;Nt>At;)if(t=Et.charCodeAt(At),i(t))++At;else{if(!a(t))break;++At,13===t&&10===Et.charCodeAt(At)&&++At,++Tt,Ot=At,e=!0}}function h(t){var e,r,i,a=0;for(r="u"===t?4:2,e=0;r>e;++e){if(!(Nt>At&&n(Et[At])))return"";i=Et[At++],a=16*a+"0123456789abcdef".indexOf(i.toLowerCase())}return String.fromCharCode(a)}function d(){var t,e,r,i;for(t=Et[At],e=0,"}"===t&&j({},wt.UnexpectedToken,"ILLEGAL");Nt>At&&(t=Et[At++],n(t));)e=16*e+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||"}"!==t)&&j({},wt.UnexpectedToken,"ILLEGAL"),65535>=e?String.fromCharCode(e):(r=(e-65536>>10)+55296,i=(e-65536&1023)+56320,String.fromCharCode(r,i))}function p(){var t,e;for(t=Et.charCodeAt(At++),e=String.fromCharCode(t),92===t&&(117!==Et.charCodeAt(At)&&j({},wt.UnexpectedToken,"ILLEGAL"),++At,t=h("u"),t&&"\\"!==t&&o(t.charCodeAt(0))||j({},wt.UnexpectedToken,"ILLEGAL"),e=t);Nt>At&&(t=Et.charCodeAt(At),u(t));)++At,e+=String.fromCharCode(t),92===t&&(e=e.substr(0,e.length-1),117!==Et.charCodeAt(At)&&j({},wt.UnexpectedToken,"ILLEGAL"),++At,t=h("u"),t&&"\\"!==t&&u(t.charCodeAt(0))||j({},wt.UnexpectedToken,"ILLEGAL"),e+=t);return e}function g(){var t,e;for(t=At++;Nt>At;){if(e=Et.charCodeAt(At),92===e)return At=t,p();if(!u(e))break;++At}return Et.slice(t,At)}function m(){var t,e,n;return t=At,e=92===Et.charCodeAt(At)?p():g(),n=1===e.length?xt.Identifier:c(e)?xt.Keyword:"null"===e?xt.NullLiteral:"true"===e||"false"===e?xt.BooleanLiteral:xt.Identifier,{type:n,value:e,lineNumber:Tt,lineStart:Ot,start:t,end:At}}function v(){var t,e,n,r,i=At,a=Et.charCodeAt(At),o=Et[At];switch(a){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++At,Rt.tokenize&&(40===a?Rt.openParenToken=Rt.tokens.length:123===a&&(Rt.openCurlyToken=Rt.tokens.length)),{type:xt.Punctuator,value:String.fromCharCode(a),lineNumber:Tt,lineStart:Ot,start:i,end:At};default:if(t=Et.charCodeAt(At+1),61===t)switch(a){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return At+=2,{type:xt.Punctuator,value:String.fromCharCode(a)+String.fromCharCode(t),lineNumber:Tt,lineStart:Ot,start:i,end:At};case 33:case 61:return At+=2,61===Et.charCodeAt(At)&&++At,{type:xt.Punctuator,value:Et.slice(i,At),lineNumber:Tt,lineStart:Ot,start:i,end:At}}}return r=Et.substr(At,4),">>>="===r?(At+=4,{type:xt.Punctuator,value:r,lineNumber:Tt,lineStart:Ot,start:i,end:At}):(n=r.substr(0,3),">>>"===n||"<<="===n||">>="===n?(At+=3,{type:xt.Punctuator,value:n,lineNumber:Tt,lineStart:Ot,start:i,end:At}):(e=n.substr(0,2),o===e[1]&&"+-<>&|".indexOf(o)>=0||"=>"===e?(At+=2,{type:xt.Punctuator,value:e,lineNumber:Tt,lineStart:Ot,start:i,end:At}):"<>=!+-*%&|^/".indexOf(o)>=0?(++At,{type:xt.Punctuator,value:o,lineNumber:Tt,lineStart:Ot,start:i,end:At}):void j({},wt.UnexpectedToken,"ILLEGAL")))}function y(t){for(var e="";Nt>At&&n(Et[At]);)e+=Et[At++];return 0===e.length&&j({},wt.UnexpectedToken,"ILLEGAL"),o(Et.charCodeAt(At))&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.NumericLiteral,value:parseInt("0x"+e,16),lineNumber:Tt,lineStart:Ot,start:t,end:At}}function x(t){for(var n="0"+Et[At++];Nt>At&&r(Et[At]);)n+=Et[At++];return(o(Et.charCodeAt(At))||e(Et.charCodeAt(At)))&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.NumericLiteral,value:parseInt(n,8),octal:!0,lineNumber:Tt,lineStart:Ot,start:t,end:At}}function _(){var n,i,a;if(a=Et[At],t(e(a.charCodeAt(0))||"."===a,"Numeric literal must start with a decimal digit or a decimal point"),i=At,n="","."!==a){if(n=Et[At++],a=Et[At],"0"===n){if("x"===a||"X"===a)return++At,y(i);if(r(a))return x(i);a&&e(a.charCodeAt(0))&&j({},wt.UnexpectedToken,"ILLEGAL")}for(;e(Et.charCodeAt(At));)n+=Et[At++];a=Et[At]}if("."===a){for(n+=Et[At++];e(Et.charCodeAt(At));)n+=Et[At++];a=Et[At]}if("e"===a||"E"===a)if(n+=Et[At++],a=Et[At],"+"!==a&&"-"!==a||(n+=Et[At++]),e(Et.charCodeAt(At)))for(;e(Et.charCodeAt(At));)n+=Et[At++];else j({},wt.UnexpectedToken,"ILLEGAL");return o(Et.charCodeAt(At))&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.NumericLiteral,value:parseFloat(n),lineNumber:Tt,lineStart:Ot,start:i,end:At}}function b(){var e,n,i,o,u,s,l,c,f="",p=!1;for(l=Tt,c=Ot,e=Et[At],t("'"===e||'"'===e,"String literal must starts with a quote"),n=At,++At;Nt>At;){if(i=Et[At++],i===e){e="";break}if("\\"===i)if(i=Et[At++],i&&a(i.charCodeAt(0)))++Tt,"\r"===i&&"\n"===Et[At]&&++At,Ot=At;else switch(i){case"u":case"x":"{"===Et[At]?(++At,f+=d()):(s=At,u=h(i),u?f+=u:(At=s,f+=i));break;case"n":f+="\n";break;case"r":f+="\r";break;case"t":f+=" ";break;case"b":f+="\b";break;case"f":f+="\f";break;case"v":f+="\x0B";break;default:r(i)?(o="01234567".indexOf(i),0!==o&&(p=!0),Nt>At&&r(Et[At])&&(p=!0,o=8*o+"01234567".indexOf(Et[At++]),"0123".indexOf(i)>=0&&Nt>At&&r(Et[At])&&(o=8*o+"01234567".indexOf(Et[At++]))),f+=String.fromCharCode(o)):f+=i}else{if(a(i.charCodeAt(0)))break;f+=i}}return""!==e&&j({},wt.UnexpectedToken,"ILLEGAL"),{type:xt.StringLiteral,value:f,octal:p,startLineNumber:l,startLineStart:c,lineNumber:Tt,lineStart:Ot,start:n,end:At}}function M(t,e){var n,r=t;e.indexOf("u")>=0&&(r=r.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e){return parseInt(e,16)<=1114111?"x":void j({},wt.InvalidRegExp)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{n=new RegExp(r)}catch(i){j({},wt.InvalidRegExp)}try{return new RegExp(t,e)}catch(a){return null}}function w(){var e,n,r,i,o;for(e=Et[At],t("/"===e,"Regular expression literal must start with a slash"),n=Et[At++],r=!1,i=!1;Nt>At;)if(e=Et[At++],n+=e,"\\"===e)e=Et[At++],a(e.charCodeAt(0))&&j({},wt.UnterminatedRegExp),n+=e;else if(a(e.charCodeAt(0)))j({},wt.UnterminatedRegExp);else if(r)"]"===e&&(r=!1);else{if("/"===e){i=!0;break}"["===e&&(r=!0)}return i||j({},wt.UnterminatedRegExp),o=n.substr(1,n.length-2),{value:o,literal:n}}function k(){var t,e,n,r;for(e="",n="";Nt>At&&(t=Et[At],u(t.charCodeAt(0)));)if(++At,"\\"===t&&Nt>At)if(t=Et[At],"u"===t){if(++At,r=At,t=h("u"))for(n+=t,e+="\\u";At>r;++r)e+=Et[r];else At=r,n+="u",e+="\\u";q({},wt.UnexpectedToken,"ILLEGAL")}else e+="\\",q({},wt.UnexpectedToken,"ILLEGAL");else n+=t,e+=t;return{value:n,literal:e}}function E(){var t,e,n,r;return Lt=null,f(),t=At,e=w(),n=k(),r=M(e.value,n.value),Rt.tokenize?{type:xt.RegularExpression,value:r,regex:{pattern:e.value,flags:n.value},lineNumber:Tt,lineStart:Ot,start:t,end:At}:{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:At}}function S(){var t,e,n,r;return f(),t=At,e={start:{line:Tt,column:At-Ot}},n=E(),e.end={line:Tt,column:At-Ot},Rt.tokenize||(Rt.tokens.length>0&&(r=Rt.tokens[Rt.tokens.length-1],r.range[0]===t&&"Punctuator"===r.type&&("/"!==r.value&&"/="!==r.value||Rt.tokens.pop())),Rt.tokens.push({type:"RegularExpression",value:n.literal,regex:n.regex,range:[t,At],loc:e})),n}function A(t){return t.type===xt.Identifier||t.type===xt.Keyword||t.type===xt.BooleanLiteral||t.type===xt.NullLiteral}function T(){var t,e;if(t=Rt.tokens[Rt.tokens.length-1],!t)return S();if("Punctuator"===t.type){if("]"===t.value)return v();if(")"===t.value)return e=Rt.tokens[Rt.openParenToken-1],!e||"Keyword"!==e.type||"if"!==e.value&&"while"!==e.value&&"for"!==e.value&&"with"!==e.value?v():S();if("}"===t.value){if(Rt.tokens[Rt.openCurlyToken-3]&&"Keyword"===Rt.tokens[Rt.openCurlyToken-3].type){if(e=Rt.tokens[Rt.openCurlyToken-4],!e)return v()}else{if(!Rt.tokens[Rt.openCurlyToken-4]||"Keyword"!==Rt.tokens[Rt.openCurlyToken-4].type)return v();if(e=Rt.tokens[Rt.openCurlyToken-5],!e)return S()}return v()}return S()}return"Keyword"===t.type&&"this"!==t.value?S():v()}function O(){var t;return f(),At>=Nt?{type:xt.EOF,lineNumber:Tt,lineStart:Ot,start:At,end:At}:(t=Et.charCodeAt(At),o(t)?m():40===t||41===t||59===t?v():39===t||34===t?b():46===t?e(Et.charCodeAt(At+1))?_():v():e(t)?_():Rt.tokenize&&47===t?T():v())}function N(){var t,e,n,r;return f(),t={start:{line:Tt,column:At-Ot}},e=O(),t.end={line:Tt,column:At-Ot},e.type!==xt.EOF&&(n=Et.slice(e.start,e.end),r={type:_t[e.type],value:n,range:[e.start,e.end],loc:t},e.regex&&(r.regex={pattern:e.regex.pattern,flags:e.regex.flags}),Rt.tokens.push(r)),e}function L(){var t;return t=Lt,At=t.end,Tt=t.lineNumber,Ot=t.lineStart,Lt="undefined"!=typeof Rt.tokens?N():O(),At=t.end,Tt=t.lineNumber,Ot=t.lineStart,t}function C(){var t,e,n;t=At,e=Tt,n=Ot,Lt="undefined"!=typeof Rt.tokens?N():O(),At=t,Tt=e,Ot=n}function R(){this.line=Tt,this.column=At-Ot}function I(){this.start=new R,this.end=null}function D(t){t.type===xt.StringLiteral?this.start={line:t.startLineNumber,column:t.start-t.startLineStart}:this.start={line:t.lineNumber,column:t.start-t.lineStart},this.end=null}function U(){At=Lt.start,Lt.type===xt.StringLiteral?(Tt=Lt.startLineNumber,Ot=Lt.startLineStart):(Tt=Lt.lineNumber,Ot=Lt.lineStart),Rt.range&&(this.range=[At,0]),Rt.loc&&(this.loc=new I)}function P(t){Rt.range&&(this.range=[t.start,0]),Rt.loc&&(this.loc=new D(t))}function z(){var t,e,n,r;return t=At,e=Tt,n=Ot,f(),r=Tt!==e,At=t,Tt=e,Ot=n,r}function j(e,n){var r,i=Array.prototype.slice.call(arguments,2),a=n.replace(/%(\d)/g,function(e,n){return t(nAt&&(t.push(lt()),!H(")"));)Y(",");return F(")"),t}function tt(){var t,e=new U;return t=L(),A(t)||$(t),e.finishIdentifier(t.value)}function et(){return F("."),tt()}function nt(){var t;return F("["),t=ct(),F("]"),t}function rt(){var t,e,n,r,i=Ct.allowIn;for(r=Lt,Ct.allowIn=!0,t=Q();;)if(H("."))n=et(),t=new P(r).finishMemberExpression(".",t,n);else if(H("("))e=K(),t=new P(r).finishCallExpression(t,e);else{if(!H("["))break;n=nt(),t=new P(r).finishMemberExpression("[",t,n)}return Ct.allowIn=i,t}function it(){var t=rt();if(Lt.type===xt.Punctuator&&(H("++")||H("--"))&&!z())throw new Error("Disabled.");return t}function at(){var t,e,n;if(Lt.type!==xt.Punctuator&&Lt.type!==xt.Keyword)e=it();else{if(H("++")||H("--"))throw new Error("Disabled.");if(H("+")||H("-")||H("~")||H("!"))n=Lt,t=L(),e=at(),e=new P(n).finishUnaryExpression(t.value,e);else{if(B("delete")||B("void")||B("typeof"))throw new Error("Disabled.");e=it()}}return e}function ot(t,e){var n=0;if(t.type!==xt.Punctuator&&t.type!==xt.Keyword)return 0;switch(t.value){case"||":n=1;break;case"&&":n=2;break;case"|":n=3;break;case"^":n=4;break;case"&":n=5;break;case"==":case"!=":case"===":case"!==":n=6;break;case"<":case">":case"<=":case">=":case"instanceof":n=7;break;case"in":n=e?7:0;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function ut(){var t,e,n,r,i,a,o,u,s,l;if(t=Lt,s=at(),r=Lt,i=ot(r,Ct.allowIn),0===i)return s;for(r.prec=i,L(),e=[t,Lt],o=at(),a=[s,r,o];(i=ot(Lt,Ct.allowIn))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),u=a.pop().value,s=a.pop(),e.pop(),n=new P(e[e.length-1]).finishBinaryExpression(u,s,o),a.push(n);r=L(),r.prec=i,a.push(r),e.push(Lt),n=at(),a.push(n)}for(l=a.length-1,n=a[l],e.pop();l>1;)n=new P(e.pop()).finishBinaryExpression(a[l-1].value,a[l-2],n),l-=2;return n}function st(){var t,e,n,r,i;return i=Lt,t=ut(),H("?")&&(L(),e=Ct.allowIn,Ct.allowIn=!0,n=lt(),Ct.allowIn=e,F(":"),r=lt(),t=new P(i).finishConditionalExpression(t,n,r)),t}function lt(){var t,e,n,r;return t=Ct.parenthesisCount,r=Lt,e=Lt,n=st()}function ct(){var t=lt();if(H(","))throw new Error("Disabled.");return t}function ft(t){var e=ct();return V(),t.finishExpressionStatement(e)}function ht(){var t,e,n=Lt.type;if(n===xt.EOF&&$(Lt),n===xt.Punctuator&&"{"===Lt.value)throw new Error("Disabled.");if(e=new U,n===xt.Punctuator)switch(Lt.value){case";":throw new Error("Disabled.");case"(":return ft(e)}else if(n===xt.Keyword)throw new Error("Disabled.");return t=ct(),V(),e.finishExpressionStatement(t)}function dt(){if(Lt.type===xt.Keyword)switch(Lt.value){case"const":case"let":throw new Error("Disabled.");case"function":throw new Error("Disabled.");default:return ht()}return Lt.type!==xt.EOF?ht():void 0}function pt(){for(var t,e,n,r,i=[];Nt>At&&(e=Lt,e.type===xt.StringLiteral)&&(t=dt(),i.push(t),t.expression.type===bt.Literal);)n=Et.slice(e.start+1,e.end-1),"use strict"===n?(St=!0,r&&q(r,wt.StrictOctalLiteral)):!r&&e.octal&&(r=e);for(;Nt>At&&(t=dt(),"undefined"!=typeof t);)i.push(t);return i}function gt(){var t,e;return f(),C(),e=new U,St=!0,t=pt(),e.finishProgram(t)}function mt(){var t,e,n,r=[];for(t=0;t0?1:0,Ot=0,Nt=Et.length,Lt=null,Ct={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},Rt={},e=e||{},e.tokens=!0,Rt.tokens=[],Rt.tokenize=!0,Rt.openParenToken=-1,Rt.openCurlyToken=-1,Rt.range="boolean"==typeof e.range&&e.range,Rt.loc="boolean"==typeof e.loc&&e.loc,"boolean"==typeof e.tolerant&&e.tolerant&&(Rt.errors=[]);try{if(C(),Lt.type===xt.EOF)return Rt.tokens;for(L();Lt.type!==xt.EOF;)try{L()}catch(i){if(Rt.errors){Rt.errors.push(i);break}throw i}mt(),r=Rt.tokens,"undefined"!=typeof Rt.errors&&(r.errors=Rt.errors)}catch(a){throw a}finally{Rt={}}return r}function yt(t,e){var n,r;r=String,"string"==typeof t||t instanceof String||(t=r(t)),Et=t,At=0,Tt=Et.length>0?1:0,Ot=0,Nt=Et.length,Lt=null,Ct={allowIn:!0,labelSet:{},parenthesisCount:0,inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},Rt={},"undefined"!=typeof e&&(Rt.range="boolean"==typeof e.range&&e.range,Rt.loc="boolean"==typeof e.loc&&e.loc,Rt.loc&&null!==e.source&&void 0!==e.source&&(Rt.source=r(e.source)),"boolean"==typeof e.tokens&&e.tokens&&(Rt.tokens=[]),"boolean"==typeof e.tolerant&&e.tolerant&&(Rt.errors=[]));try{n=gt(),"undefined"!=typeof Rt.tokens&&(mt(),n.tokens=Rt.tokens),"undefined"!=typeof Rt.errors&&(n.errors=Rt.errors)}catch(i){throw i}finally{ +Rt={}}return n}var xt,_t,bt,Mt,wt,kt,Et,St,At,Tt,Ot,Nt,Lt,Ct,Rt;xt={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9},_t={},_t[xt.BooleanLiteral]="Boolean",_t[xt.EOF]="",_t[xt.Identifier]="Identifier",_t[xt.Keyword]="Keyword",_t[xt.NullLiteral]="Null",_t[xt.NumericLiteral]="Numeric",_t[xt.Punctuator]="Punctuator",_t[xt.StringLiteral]="String",_t[xt.RegularExpression]="RegularExpression",bt={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BinaryExpression:"BinaryExpression",CallExpression:"CallExpression",ConditionalExpression:"ConditionalExpression",ExpressionStatement:"ExpressionStatement",Identifier:"Identifier",Literal:"Literal",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",UnaryExpression:"UnaryExpression"},Mt={Data:1,Get:2,Set:4},wt={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},kt={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԯԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠ-ࢲࣤ-ॣ०-९ॱ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಁ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲഁ-ഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤞᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧ᪰-᪽ᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶ᳸᳹ᴀ-᷵᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚝꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꧠ-ꧾꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︭︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},P.prototype=U.prototype={finish:function(){Rt.range&&(this.range[1]=At),Rt.loc&&(this.loc.end=new R,Rt.source&&(this.loc.source=Rt.source))},finishArrayExpression:function(t){return this.type=bt.ArrayExpression,this.elements=t,this.finish(),this},finishAssignmentExpression:function(t,e,n){return this.type=bt.AssignmentExpression,this.operator=t,this.left=e,this.right=n,this.finish(),this},finishBinaryExpression:function(t,e,n){return this.type="||"===t||"&&"===t?bt.LogicalExpression:bt.BinaryExpression,this.operator=t,this.left=e,this.right=n,this.finish(),this},finishCallExpression:function(t,e){return this.type=bt.CallExpression,this.callee=t,this.arguments=e,this.finish(),this},finishConditionalExpression:function(t,e,n){return this.type=bt.ConditionalExpression,this.test=t,this.consequent=e,this.alternate=n,this.finish(),this},finishExpressionStatement:function(t){return this.type=bt.ExpressionStatement,this.expression=t,this.finish(),this},finishIdentifier:function(t){return this.type=bt.Identifier,this.name=t,this.finish(),this},finishLiteral:function(t){return this.type=bt.Literal,this.value=t.value,this.raw=Et.slice(t.start,t.end),t.regex&&("//"==this.raw&&(this.raw="/(?:)/"),this.regex=t.regex),this.finish(),this},finishMemberExpression:function(t,e,n){return this.type=bt.MemberExpression,this.computed="["===t,this.object=e,this.property=n,this.finish(),this},finishObjectExpression:function(t){return this.type=bt.ObjectExpression,this.properties=t,this.finish(),this},finishProgram:function(t){return this.type=bt.Program,this.body=t,this.finish(),this},finishProperty:function(t,e,n){return this.type=bt.Property,this.key=e,this.value=n,this.kind=t,this.finish(),this},finishUnaryExpression:function(t,e){return this.type=bt.UnaryExpression,this.operator=t,this.argument=e,this.prefix=!0,this.finish(),this}};var It={"if":1,"this":1};return{tokenize:vt,parse:yt}}()},function(t,e,n){function r(t){var e,n,r={};for(e=0,n=t.length;n>e;++e)r[t[e]]=1;return r}function i(t){var e,n=[];for(e in t)n.push(e);return n}t.exports=function(t){function e(t){var e={code:a(t),globals:i(p),fields:i(g),dataSources:i(m),defs:s};return p={},g={},m={},e}function a(t){if("string"==typeof t)return t;var e=y[t.type];if(null==e)throw new Error("Unsupported type: "+t.type);return e(t)}t=t||{};var o=t.constants||n(140),u=(t.functions||n(141))(a),s=t.functionDefs?t.functionDefs(a):{},l=t.idWhiteList?r(t.idWhiteList):null,c=t.idBlackList?r(t.idBlackList):null,f=0,h=t.fieldVar||"datum",d=t.globalVar||"signals",p={},g={},m={},v="function"==typeof d?d:function(t){return d+'["'+t+'"]'},y={Literal:function(t){return t.raw},Identifier:function(t){var e=t.name;if(f>0)return e;if(o.hasOwnProperty(e))return o[e];if(l)return l.hasOwnProperty(e)?e:(p[e]=1,v(e));if(c&&c.hasOwnProperty(e))throw new Error("Illegal identifier: "+e);return e},Program:function(t){return t.body.map(a).join("\n")},MemberExpression:function(t){var e=!t.computed,n=a(t.object);e&&(f+=1);var r=a(t.property);return n===h&&(g[r]=1),e&&(f-=1),n+(e?"."+r:"["+r+"]")},CallExpression:function(t){if("Identifier"!==t.callee.type)throw new Error("Illegal callee type: "+t.callee.type);var e=t.callee.name,n=t.arguments,r=u.hasOwnProperty(e)&&u[e];if(!r)throw new Error("Unrecognized function: "+e);return r instanceof Function?r(n,p,g,m):r+"("+n.map(a).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(a).join(",")+"]"},BinaryExpression:function(t){return"("+a(t.left)+t.operator+a(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+a(t.argument)+")"},ConditionalExpression:function(t){return"("+a(t.test)+"?"+a(t.consequent)+":"+a(t.alternate)+")"},LogicalExpression:function(t){return"("+a(t.left)+t.operator+a(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(a).join(",")+"}"},Property:function(t){f+=1;var e=a(t.key);return f-=1,e+":"+a(t.value)},ExpressionStatement:function(t){return a(t.expression)}};return e.functions=u,e.functionDefs=s,e.constants=o,e}},function(t,e){t.exports={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2"}},function(t,e){t.exports=function(t){function e(e,n,r,i){var a=t(n[0]);return r&&(a=r+"("+a+")",0===r.lastIndexOf("new ",0)&&(a="("+a+")")),a+"."+e+(0>i?"":0===i?"()":"("+n.slice(1).map(t).join(",")+")")}function n(t,n,r){return function(i){return e(t,i,n,r)}}var r="new Date",i="String",a="RegExp";return{isNaN:"isNaN",isFinite:"isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){if(e.length<3)throw new Error("Missing arguments to clamp function.");if(e.length>3)throw new Error("Too many arguments to clamp function.");var n=e.map(t);return"Math.max("+n[1]+", Math.min("+n[2]+","+n[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),indexof:n("indexOf",null),lastindexof:n("lastIndexOf",null),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),slice:n("slice",i),substring:n("substring",i),replace:n("replace",i),regexp:a,test:n("test",a),"if":function(e){if(e.length<3)throw new Error("Missing arguments to if function.");if(e.length>3)throw new Error("Too many arguments to if function.");var n=e.map(t);return n[0]+"?"+n[1]+":"+n[2]}}}},function(t,e,n){function r(t,e,n,r){(e||[]).forEach(function(e,o){n[o]=n[o]||a(t),i(e,o,n[o],r)})}function i(t,e,n,r){n.size(t.size?r.scale(t.size):null),n.shape(t.shape?r.scale(t.shape):null),n.fill(t.fill?r.scale(t.fill):null),n.stroke(t.stroke?r.scale(t.stroke):null),t.orient&&n.orient(t.orient),null!=t.offset&&n.offset(t.offset),n.title(t.title||null),n.values(t.values||null),n.format(void 0!==t.format?t.format:null),n.formatType(t.formatType||null);var i=t.properties;n.titleProperties(i&&i.title||{}),n.labelProperties(i&&i.labels||{}),n.legendProperties(i&&i.legend||{}),n.symbolProperties(i&&i.symbols||{}),n.gradientProperties(i&&i.gradient||{})}var a=n(143);t.exports=r,r.schema={defs:{legend:{type:"object",properties:{size:{type:"string"},shape:{type:"string"},fill:{type:"string"},stroke:{type:"string"},orient:{"enum":["left","right"],"default":"right"},offset:{type:"number"},title:{type:"string"},values:{type:"array"},format:{type:"string"},formatType:{"enum":["time","utc","string","number"]},properties:{type:"object",properties:{title:{$ref:"#/defs/propset"},labels:{$ref:"#/defs/propset"},legend:{$ref:"#/defs/propset"},symbols:{$ref:"#/defs/propset"},gradient:{$ref:"#/defs/propset"}},additionalProperties:!1}},additionalProperties:!1,anyOf:[{required:["size"]},{required:["shape"]},{required:["fill"]},{required:["stroke"]}]}}}},function(t,e,n){function r(t){function e(){Y.type=null}function n(t,e){return{data:t,index:e}}function r(t){return"ordinal"===t||"quantize"===t||"quantile"===t||"threshold"===t}function y(t){var e,r,i,a=x(M,w,k,E),o=(null==A?t.ticks?t.ticks.apply(t,D):t.domain():A).map(n),u=m.getTickFormat(t,o.length,O,T),s=5,l=f.range(o.length);M?(r=o.map(function(t){return Math.sqrt(M(t.data))}),i=f.max(r),r=r.reduce(function(t,e,n,r){return n>0&&(t[n]=t[n-1]+r[n-1]/2+s),t[n]+=e/2,t},[0]).map(Math.round)):(i=Math.round(Math.sqrt(L.symbolSize)),r=S||(e=q.fontSize)&&e.value+s||L.labelFontSize+s,r=l.map(function(t,e){return Math.round(i/2+e*r)}));var c,d=I;N&&(c=j.fontSize,d+=5+(c&&c.value||L.titleFontSize));for(var p=0,g=r.length;g>p;++p)r[p]+=d;a.scales=a.scales||[{}],h.extend(a.scales[0],{name:"legend",type:"ordinal",points:!0,domain:l,range:r});var v=(N?[N]:[]).map(n);return o.forEach(function(t){t.label=u(t.data),t.offset=i}),a.marks[0].from=function(){return v},a.marks[1].from=function(){return o},a.marks[2].from=a.marks[1].from,a}function x(e,n,r,l){var c=h.extend($.titles,o(L)),f=h.extend($.symbols,u(L)),d=h.extend($.labels,s(L));return a(f,e,n,r,l),h.extend(c.properties.update,j),h.extend(f.properties.update,P),h.extend(d.properties.update,q),c.properties.enter.x.value+=I,c.properties.enter.y.value+=I,d.properties.enter.x.offset+=I+1,f.properties.enter.x.offset=I+1,d.properties.update.x.offset+=I+1,f.properties.update.x.offset=I+1,h.extend(Y,{type:"group",interactive:!1,properties:{enter:p(t,"group",U),legendPosition:{encode:i,signals:[],scales:[],data:[],fields:[]}}}),Y.marks=[c,f,d].map(function(e){return g(t,e)}),Y}function _(t){var e=b(t),r=t.domain(),i=(null==A?r:A).map(n),a=z.width&&z.width.value||L.gradientWidth,o=m.getTickFormat(t,i.length,O,T);e.scales=e.scales||[{}];var u=h.extend(e.scales[0],{name:"legend",type:t.type,round:!0,zero:!1,domain:[r[0],r[r.length-1]],range:[I,a+I]});"pow"===t.type&&(u.exponent=t.exponent());var s=(N?[N]:[]).map(n);return i.forEach(function(t,e){t.label=o(t.data),t.align=e==i.length-1?"right":0===e?"left":"center"}),e.marks[0].from=function(){return s},e.marks[1].from=function(){return[1]},e.marks[2].from=function(){return i},e}function b(e){var n=h.extend($.titles,o(L)),r=h.extend($.gradient,l(L)),a=h.extend($.labels,c(L)),u=new d,s=e.domain(),f=s[0],m=s[s.length-1],v=e.copy().domain([f,m]).range([0,1]),y="linear"!==e.type&&e.ticks?e.ticks.call(e,15):s;f!==y[0]&&y.unshift(f),m!==y[y.length-1]&&y.push(m);for(var x=0,_=y.length;_>x;++x)u.stop(v(y[x]),e(y[x]));r.properties.enter.fill={value:u},h.extend(n.properties.update,j),h.extend(r.properties.update,z),h.extend(a.properties.update,q);var b=r.properties,M=z.height,w=M&&M.value||b.enter.height.value;if(a.properties.enter.y.value=w,a.properties.update.y.value=w,N){var k=n.properties,E=j.fontSize,S=4+(E&&E.value||k.enter.fontSize.value);r.properties.enter.y.value+=S,a.properties.enter.y.value+=S,r.properties.update.y.value+=S,a.properties.update.y.value+=S}return n.properties.enter.x.value+=I,n.properties.enter.y.value+=I,r.properties.enter.x.value+=I,r.properties.enter.y.value+=I,a.properties.enter.y.value+=I,r.properties.update.x.value+=I,r.properties.update.y.value+=I,a.properties.update.y.value+=I,h.extend(Y,{type:"group",interactive:!1,properties:{enter:p(t,"group",U),legendPosition:{encode:i,signals:[],scales:[],data:[],fields:[]}}}),Y.marks=[n,r,a].map(function(e){return g(t,e)}),Y}var M=null,w=null,k=null,E=null,S=null,A=null,T=null,O=null,N=null,L=t.config().legend,C=L.orient,R=L.offset,I=L.padding,D=[5],U={},P={},z={},j={},q={},$={titles:{},symbols:{},labels:{},gradient:{}},F={},Y={};return F.def=function(){var t=M||w||k||E;return Y.type||(Y=t!==k&&t!==E||r(t.type)?y(t):_(t)),Y.orient=C,Y.offset=R,Y.padding=I,Y.margin=L.margin,Y},F.size=function(t){return arguments.length?(M!==t&&(M=t,e()),F):M},F.shape=function(t){return arguments.length?(w!==t&&(w=t,e()),F):w},F.fill=function(t){return arguments.length?(k!==t&&(k=t,e()),F):k},F.stroke=function(t){return arguments.length?(E!==t&&(E=t,e()),F):E},F.title=function(t){return arguments.length?(N!==t&&(N=t,e()),F):N},F.format=function(t){return arguments.length?(T!==t&&(T=t,e()),F):T},F.formatType=function(t){return arguments.length?(O!==t&&(O=t,e()),F):O},F.spacing=function(t){return arguments.length?(S!==+t&&(S=+t,e()),F):S},F.orient=function(t){return arguments.length?(C=t in v?t+"":L.orient,F):C},F.offset=function(t){return arguments.length?(R=+t,F):R},F.values=function(t){return arguments.length?(A=t,F):A},F.legendProperties=function(t){return arguments.length?(U=t,F):U},F.symbolProperties=function(t){return arguments.length?(P=t,F):P},F.gradientProperties=function(t){return arguments.length?(z=t,F):z},F.labelProperties=function(t){return arguments.length?(q=t,F):q},F.titleProperties=function(t){return arguments.length?(j=t,F):j},F.reset=function(){return e(),F},F}function i(t,e,n,r,i,a){var o,u=n?{}:t,s=t.mark.def,l=s.offset,c=s.orient,f=2*s.padding,h="left"===c?0:e.width,d=~~t.bounds.width()+(t.width?0:f),p=~~t.bounds.height()+(t.height?0:f),g=e._legendPositions||(e._legendPositions={right:.5,left:.5});u.x=.5,u.width=d,u.y=g[c],g[c]+=(u.height=p)+s.margin;var m=e.axes,y=e.axisItems,x=v[c];for(o=0;on;++n)a=u[n],void 0!==(s=t[a])?c[a]=s.signal?s:{value:s}:l[a]?c[a]={value:l[a]}:--i;return i?{update:o(e,"group",c)}:{}}var a=n(55),o=n(56),u=["fill","fillOpacity","stroke","strokeOpacity","strokeWidth","strokeDash","strokeDashOffset"];t.exports=r,r.schema={defs:{container:{type:"object",properties:{scene:{type:"object",properties:{fill:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},fillOpacity:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},stroke:{oneOf:[{type:"string"},{$ref:"#/refs/signal"}]},strokeOpacity:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},strokeWidth:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},strokeDash:{oneOf:[{type:"array",items:{type:"number"}},{$ref:"#/refs/signal"}]},strokeDashOffset:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}}},scales:{type:"array",items:{$ref:"#/defs/scale"}},axes:{type:"array",items:{$ref:"#/defs/axis"}},legends:{type:"array",items:{$ref:"#/defs/legend"}},marks:{type:"array",items:{oneOf:[{$ref:"#/defs/groupMark"},{$ref:"#/defs/visualMark"}]}}}},groupMark:{allOf:[{properties:{type:{"enum":["group"]}},required:["type"]},{$ref:"#/defs/mark"},{$ref:"#/defs/container"}]},visualMark:{allOf:[{not:{properties:{type:{"enum":["group"]}}}},{$ref:"#/defs/mark"}]}}}},function(t,e,n){function r(t){return null==t?"auto":i.isObject(t)?t:i.isNumber(t)?{top:t,left:t,right:t,bottom:t}:"strict"===t?t:"auto"}var i=n(12);t.exports=r,r.schema={defs:{padding:{oneOf:[{"enum":["strict","auto"]},{type:"number"},{type:"object",properties:{top:{type:"number"},bottom:{type:"number"},left:{type:"number"},right:{type:"number"}},additionalProperties:!1}]}}}},function(t,e,n){function r(t,e){return(e||[]).forEach(function(e){var n=f[e.type](t,e),r=Function("args","db","signals","predicates",n.code);r.root=function(){return t.scene().items[0]},r.nullScale=h,r.isFunction=c.isFunction,r.signals=n.signals,r.data=n.data,t.predicate(e.name,r)}),e}function i(t,e){var n=c.field(t),r="signals["+n.map(c.str).join("][")+"]";return e[n[0]]=1,r}function a(t,e){function n(t){u[t]=1}function r(t){s[t]=1}var a=[],o=[],u={},s={};return c.array(e).forEach(function(e,s){var l="o"+s,f="";if(void 0!==e.value)f=c.str(e.value);else if(e.arg)f="args["+c.str(e.arg)+"]";else if(e.signal)f=i(e.signal,u);else if(e.predicate){var h=e.predicate,d=h&&(h.name||h),p=t.predicate(d),g="predicates["+c.str(d)+"]";p.signals.forEach(n),p.data.forEach(r),c.isObject(h)&&c.keys(h).forEach(function(t){if("name"!==t){var e=h[t];f+="args["+c.str(t)+"] = ",e.signal?f+=i(e.signal,u):e.arg&&(f+="args["+c.str(e.arg)+"]"),f+=", "}}),f+=g+".call("+g+", args, db, signals, predicates)"}a.push(l),o.push(l+"=("+f+")")}),{code:"var "+a.join(", ")+";\n"+o.join(";\n")+";\n",signals:c.keys(u),data:c.keys(s)}}function o(t,e){var n=a(t,e.operands);return"="===e.type&&(e.type="=="),n.code+="o0 = o0 instanceof Date ? o0.getTime() : o0;\no1 = o1 instanceof Date ? o1.getTime() : o1;\n",{code:n.code+"return "+["o0","o1"].join(e.type)+";",signals:n.signals,data:n.data}}function u(t,e){for(var n=a(t,e.operands),r=[],i=0,o=e.operands.length;r.push("o"+i++) 0;"}else e.range&&(e.scale&&(r+="if (scale.length == 2) {\n ordSet = scale(o1, o2);\n} else {\n o1 = scale(o1);\no2 = scale(o2);\n}"),r+="return ordSet !== null ? ordSet.indexOf(o0) !== -1 :\n o1 < o2 ? o1 <= o0 && o0 <= o2 : o2 <= o0 && o0 <= o1;");return{code:r,signals:i.signals,data:i.data.concat(e.data?[e.data]:[])}}function l(t,e){var n="var scale = ",r=e.length;return c.isString(t)?(e.push({value:t}),n+="this.root().scale(o"+r+")"):t.arg?(e.push(t),n+="o"+r):t.name&&(e.push(c.isString(t.name)?{value:t.name}:t.name),n+="(this.isFunction(o"+r+") ? o"+r+" : ",t.scope?(e.push(t.scope),n+="((o"+(r+1)+".scale || this.root().scale)(o"+r+") || this.nullScale)"):n+="this.root().scale(o"+r+")",n+=")"),t.invert===!0&&(n+=".invert"),n+";\n"}var c=n(12),f={"=":o,"==":o,"!=":o,">":o,">=":o,"<":o,"<=":o,and:u,"&&":u,or:u,"||":u,"in":s},h=function(){return 0};h.invert=h,t.exports=r,r.schema={refs:{operand:{type:"object",oneOf:[{properties:{value:{}},required:["value"]},{properties:{arg:{type:"string"}},required:["arg"]},{$ref:"#/refs/signal"},{properties:{predicate:{oneOf:[{type:"string"},{type:"object",properties:{name:{type:"string"}},required:["name"]}]}},required:["predicate"]}]}},defs:{predicate:{type:"object",oneOf:[{properties:{name:{type:"string"},type:{"enum":["==","!=",">","<",">=","<="]},operands:{type:"array",items:{$ref:"#/refs/operand"},minItems:2,maxItems:2}},required:["name","type","operands"]},{properties:{name:{type:"string"},type:{"enum":["and","&&","or","||"]},operands:{type:"array",items:{$ref:"#/refs/operand"},minItems:2}},required:["name","type","operands"]},{properties:{name:{type:"string"},type:{"enum":["in"]},item:{$ref:"#/refs/operand"}},oneOf:[{properties:{range:{type:"array",items:{$ref:"#/refs/operand"},minItems:2},scale:{$ref:"#/refs/scopedScale"}},required:["range"]},{properties:{data:{type:"string"},field:{type:"string"}},required:["data","field"]}],required:["name","type","item"]}]}}}},function(t,e,n){function r(t,e){return(e||[]).forEach(function(e){if(-1!==s.indexOf(e.name))throw Error('Signal name "'+e.name+'" is a reserved keyword ('+s.join(", ")+").");var n=t.signal(e.name,e.init).verbose(e.verbose);e.init&&e.init.expr&&(e.init.expr=t.expr(e.init.expr),n.value(i(t,e.init))),e.expr&&(e.expr=t.expr(e.expr),n.evaluate=function(r){var a=i(t,e),o=r.signals;return(a!==n.value()||n.verbose())&&(n.value(a),o[e.name]=1),o[e.name]?r:t.doNotPropagate},n.dependency(u,e.expr.globals),e.expr.globals.forEach(function(e){t.signal(e).addListener(n)}))}),e}function i(t,e){var n=e.expr,i=n.fn();return e.scale?r.scale(t,e,i):i}var a=n(12),o=n(136),u=n(4).Dependencies.SIGNALS,s=["datum","event","signals","width","height","padding"].concat(a.keys(o.codegen.functions));r.scale=function(t,e,n,r,i){var u,s=e.scale,l=s.name||s.signal||s,c=s.scope;return c&&(c.signal?c=t.signalRef(c.signal):a.isString(c)&&(u=s._expr=s._expr||t.expr(c),c=u.fn(r,i))),o.scale(t,s.invert,l,n,c)},t.exports=r,r.schema={refs:{signal:{title:"SignalRef",type:"object",properties:{signal:{type:"string"}},required:["signal"]},scopedScale:{oneOf:[{type:"string"},{type:"object",properties:{name:{oneOf:[{$ref:"#/refs/signal"},{type:"string"}]},scope:{oneOf:[{$ref:"#/refs/signal"},{type:"string"}]},invert:{type:"boolean","default":!1}},additionalProperties:!1,required:["name"]}]}},defs:{signal:{type:"object",properties:{name:{type:"string",not:{"enum":s}},init:{},verbose:{type:"boolean","default":!1},expr:{type:"string"},scale:{$ref:"#/refs/scopedScale"},streams:{$ref:"#/defs/streams"}},additionalProperties:!1,required:["name"]}}}},function(t,e,n){function r(t){function e(t){try{t=i.duplicate(t);var e=n(52),a=t.width||500,o=t.height||500,u=e.padding(t.padding);h.signal("width",a),h.signal("height",o),h.signal("padding",u),r(t),h.defs({width:a,height:o,padding:u,viewport:t.viewport||null,background:e.background(t.background),signals:e.signals(h,t.signals),predicates:e.predicates(h,t.predicates),marks:e.marks(h,t,a,o),data:e.data(h,t.data,s)})}catch(l){s(l)}}function r(t){var e,n=t.signals||(t.signals=[]);n.some(function(t){return"cursor"===t.name?(e=t,!0):!1}),e||n.push(e={name:"cursor",streams:[]}),e.init=e.init||{},e.streams.unshift({type:"mousemove",expr:"eventItem().cursor === cursor.default ? cursor : {default: eventItem().cursor}"})}function s(t){var e;t?a.error(t):e=d(h.buildIndexes()),f&&(f.length>1?f(t,e):t||f(e),f=null)}var l=arguments.length,c=2,f=arguments[l-1],h=new o,d=u.factory;if(l>c&&i.isFunction(arguments[l-c])&&(d=arguments[l-c],++c),l>c&&i.isObject(arguments[l-c])&&h.config(arguments[l-c]),i.isObject(t))e(t);else if(i.isString(t)){var p=i.extend({url:t},h.config().load);i.json(p,function(t,n){t?s("SPECIFICATION LOAD FAILED: "+t):e(n)})}else s("INVALID SPECIFICATION: Must be a valid JSON object or URL.")}var i=n(12),a=n(8),o=n(149),u=n(157);t.exports=r,r.schema={defs:{spec:{title:"Vega visualization specification",type:"object",allOf:[{$ref:"#/defs/container"},{properties:{width:{type:"number"},height:{type:"number"},viewport:{type:"array",items:{type:"number"},maxItems:2},background:{$ref:"#/defs/background"},padding:{$ref:"#/defs/padding"},signals:{type:"array",items:{$ref:"#/defs/signal"}},predicates:{type:"array",items:{$ref:"#/defs/predicate"}},data:{type:"array",items:{$ref:"#/defs/data"}}}}]}}}},function(t,e,n){function r(t){this._defs={},this._predicates={},this._scene=null,this._groups=null,this._node=null,this._builder=null,this._reset={axes:!1,legends:!1},this.config(t),this.expr=h(this),s.init.call(this)}function i(t){var e=this,n={};return a.isArray(t)?(t.forEach(function(t){n[t]=e._predicates[t]}),n):this._predicates[t]}var a=n(12),o=n(4),u=o.ChangeSet,s=o.Graph.prototype,l=o.Node,c=n(150),f=n(155),h=n(136),d=n(156),p=r.prototype=Object.create(s);p.constructor=r,p.defs=function(t){return arguments.length?(this._defs=t,this):this._defs},p.config=function(t){if(!arguments.length)return this._config;this._config=Object.create(d);for(var e in t){var n=t[e],r=this._config[e];a.isObject(n)&&a.isObject(r)?this._config[e]=a.extend({},r,n):this._config[e]=n}return this},p.width=function(t){return this._defs&&(this._defs.width=t),this._defs&&this._defs.marks&&(this._defs.marks.width=t),this._scene&&(this._scene.items[0].width=t,this._scene.items[0]._dirty=!0),this._reset.axes=!0,this},p.height=function(t){return this._defs&&(this._defs.height=t),this._defs&&this._defs.marks&&(this._defs.marks.height=t),this._scene&&(this._scene.items[0].height=t,this._scene.items[0]._dirty=!0),this._reset.axes=!0,this},p.node=function(){return this._node||(this._node=new l(this))},p.data=function(){var t=s.data.apply(this,arguments);return arguments.length>1&&this.node().addListener(t.pipeline()[0]),t},p.predicate=function(t,e){return 1===arguments.length?i.call(this,t):this._predicates[t]=e},p.predicates=function(){return this._predicates},p.scene=function(t){if(!arguments.length)return this._scene;this._builder&&(this.node().removeListener(this._builder),this._builder._groupBuilder.disconnect());var e=this,n=this._builder=new l(this);return n.evaluate=function(r){if(n._groupBuilder)return r;var i=n._groupBuilder=new c(e,e._defs.marks,e._scene={}),a=i.pipeline();return e._groups={},this.addListener(i.connect()),a[a.length-1].addListener(t),r},this.addListener(n),this},p.group=function(t,e){var n=this._groups;return 1===arguments.length?n[t]:(n[t]=e,this)},p.reset=function(){return this._scene&&this._reset.axes&&(f(this._scene,function(t){t.axes&&t.axes.forEach(function(t){t.reset()})}),this._reset.axes=!1),this._scene&&this._reset.legends&&(f(this._scene,function(t){t.legends&&t.legends.forEach(function(t){t.reset()})}),this._reset.legends=!1),this},p.addListener=function(t){this.node().addListener(t)},p.removeListener=function(t){this.node().removeListener(t)},p.fire=function(t){t||(t=u.create()),this.propagate(t,this.node()); },t.exports=r},function(t,e,n){function r(){return this._children={},this._scaler=null,this._recursor=null,this._scales={},this.scale=a.bind(this),arguments.length?this.init.apply(this,arguments):this}function i(t){function e(t){t.type!=b.MARK||t.inline||void 0===m._graph.data(t.from)||m._recursor.removeListener(t.builder)}function n(e){var n=e.scale();t.scales[n.scaleName]&&e.reset().def()}function r(e){var n=e.size()||e.shape()||e.fill()||e.stroke();t.scales[n.scaleName]&&e.reset().def()}function i(t){m._recursor.removeListener(t.builder),t.builder.disconnect()}var a,o,f,h,d,p,g,m=this,v=c.array(this._def.marks).length>0,y=c.array(this._def.axes).length>0,x=c.array(this._def.legends).length>0,_=!1;for(a=0,h=t.add.length;h>a;++a)d=t.add[a],v&&u.call(this,t,d),y&&s.call(this,t,d),x&&l.call(this,t,d);for(a=t.add.length-1;a>=0;--a)for(d=t.add[a],o=this._children[d._id].length-1;o>=0;--o)f=this._children[d._id][o],f.builder.connect(),p=f.builder.pipeline(),g=f.builder._def,_=g.type!==b.GROUP,_=_&&void 0!==this._graph.data(f.from),_=_&&1===p[p.length-1].listeners().length,_=_&&g.from&&!g.from.mark,f.inline=_,_?this._graph.evaluate(t,f.builder):this._recursor.addListener(f.builder);for(a=0,h=t.mod.length;h>a;++a)d=t.mod[a],v&&m._children[d._id].forEach(e),y&&d.axes.forEach(n),x&&d.legends.forEach(r);for(a=0,h=t.rem.length;h>a;++a)d=t.rem[a],m._children[d._id].forEach(i),delete m._children[d._id];return t}function a(t,e){var n=this,r=null;if(2===arguments.length)return n._scales[t]=e,e;for(;null==r&&(r=n._scales[t],n=n.mark?n.mark.group:n._parent););return r}function o(t,e){m.debug(t,["building group",e._id]),e._scales=e._scales||{},e.scale=a.bind(e),e.items=e.items||[],this._children[e._id]=this._children[e._id]||[],e.axes=e.axes||[],e.axisItems=e.axisItems||[],e.legends=e.legends||[],e.legendItems=e.legendItems||[],this._graph.group(e._id,e)}function u(t,e){m.debug(t,["building children marks #"+e._id]);var n,i,a,o,u,s,l=this._def.marks;for(o=0,u=l.length;u>o;++o)n=l[o],i=n.from||{},a=e.datum._facetID,e.items[o]={group:e,_scaleRefs:{}},s=n.type===b.GROUP?new r:new v,s.init(this._graph,n,e.items[o],this,e._id,a),this._children[e._id].push({builder:s,from:i.data||(i.mark?"vg_"+e._id+"_"+i.mark:a),type:b.MARK})}function s(t,e){var n=e.axes,i=e.axisItems,a=this;x(this._graph,this._def.axes,n,e),n.forEach(function(t,n){var o=a._def.axes[n].scale,u=t.def(),s=null;i[n]={group:e,axis:t,layer:u.layer},s=u.type===b.GROUP?new r:new v,s.init(a._graph,u,i[n],a).dependency(d.SCALES,o),a._children[e._id].push({builder:s,type:b.AXIS,scale:o})})}function l(t,e){var n=e.legends,i=e.legendItems,a=this;_(this._graph,this._def.legends,n,e),n.forEach(function(t,n){var o=t.size()||t.shape()||t.fill()||t.stroke(),u=t.def(),s=null;i[n]={group:e,legend:t},s=u.type===b.GROUP?new r:new v,s.init(a._graph,u,i[n],a).dependency(d.SCALES,o),a._children[e._id].push({builder:s,type:b.LEGEND,scale:o})})}var c=n(12),f=n(4),h=f.Node,d=f.Dependencies,p=f.Tuple,g=f.Collector,m=n(8),v=n(151),y=n(154),x=n(53),_=n(142),b=r.TYPES={GROUP:"group",MARK:"mark",AXIS:"axis",LEGEND:"legend"},M=r.prototype=new v;M.init=function(t,e){var n,r=this;this._scaler=new h(t),(e.scales||[]).forEach(function(e){e=r.scale(n=e.name,new y(t,e,r)),r.scale(n+":prev",e),r._scaler.addListener(e)}),this._recursor=new h(t),this._recursor.evaluate=i.bind(this);var a=(e.axes||[]).reduce(function(t,e){return t[e.scale]=1,t},{});return a=(e.legends||[]).reduce(function(t,e){return t[e.size||e.shape||e.fill||e.stroke],t},a),this._recursor.dependency(d.SCALES,c.keys(a)),this._collector=new g(t),v.prototype.init.apply(this,arguments)},M.evaluate=function(){var t=v.prototype.evaluate.apply(this,arguments),e=this._graph,n=this,r=this._scales,i=this._mark.items;if(t.mod.lengthi&&(n=r[i],n.type!=b.MARK||n.builder._def.name!=t);++i);return n.builder},t.exports=r},function(t,e,n){function r(){return arguments.length?this.init.apply(this,arguments):this}function i(){var t,e,n,r,i,a,o,u=this._def.from,s=u.mark;if(s)r=this.sibling(s),t=r._isSuper?r:r._bounder,e=["vg",this._parent_id,s,t.listeners(!0).length].join("_"),n={name:e,transform:u.transform,modify:u.modify};else{if(t=this._graph.data(this._from),!t)throw Error('Data source "'+this._from+'" is not defined.');e=["vg",this._from,this._def.type,t.listeners(!0).length].join("_"),n={name:e,source:this._from,transform:u.transform,modify:u.modify}}this._from=e,this._ds=x.datasource(this._graph,n),s?(o=new h(this._graph).addListener(this._ds.listener()),o.evaluate=function(t){var e=g.create(t),n=r._output;return e.add=n.add,e.mod=n.mod,e.rem=n.rem,e},t.addListener(o)):(i=this._ds.source().last(),a=g.create(i),a.add=i.add,a.mod=i.mod,a.rem=i.rem,a.stamp=null,this._graph.propagate(a,this._ds.listener(),i.stamp))}function a(){var t=p.ingest(new c(this._mark));return this._def.width&&p.set(t,"width",this._def.width),this._def.height&&p.set(t,"height",this._def.height),t}function o(t,e,n,r,i){var o,s,l,c,f,h,d,g=u(this._def.key||(r?"_id":null)),m=this._mark.items||[],v=r?t.rem:m,y=p.idMap(!r||i?n:t.mod),x=[];for(o=0,l=v.length;l>o;++o)c=v[o]===m[o]?m[o]:g?this._map[g(v[o])]:v[o],c.status=_.EXIT;for(o=0,l=n.length;l>o;++o)f=n[o],c=g?this._map[s=g(f)]:m[o],h=c?!1:(c=a.call(this),!0),c.status=h?_.ENTER:_.UPDATE,d=!h&&c.datum!==f,c.datum=f,g&&(p.set(c,"key",s),this._map[s]=c),h?e.add.push(c):(d||y[f._id])&&e.mod.push(c),x.push(c);for(o=0,l=v.length;l>o;++o)c=v[o]===m[o]?m[o]:g?this._map[s=g(v[o])]:v[o],c.status===_.EXIT&&(c._dirty=!0,t.dirty.push(c),x.push(c),e.rem.push(c),g&&(this._map[s]=null));return this._mark.items=x,e}function u(t){if(null==t)return null;var e=s.array(t).map(s.accessor);return function(t){for(var n="",r=0,i=e.length;i>r;++r)r>0&&(n+="|"),n+=String(e[r](t));return n}}var s=n(12),l=n(8),c=n(60).Item,f=n(4),h=f.Node,d=f.Dependencies,p=f.Tuple,g=f.ChangeSet,m={},v=n(152),y=n(153),x=n(101),_=r.STATUS={ENTER:"enter",UPDATE:"update",EXIT:"exit"},b=1,M=2,w=r.prototype=new h;w.init=function(t,e,n,r,a,o){return h.prototype.init.call(this,t).router(!0).collector(!0),this._def=e,this._mark=n,this._from=(e.from?e.from.data:null)||o,this._ds=s.isString(this._from)?t.data(this._from):null,this._map={},this._status=null,n.def=e,n.marktype=e.type,n.interactive=e.interactive!==!1,n.items=[],s.isValid(e.name)&&(n.name=e.name),this._parent=r,this._parent_id=a,e.from&&(e.from.mark||e.from.transform||e.from.modify)&&i.call(this),this._isSuper="group"!==this._def.type,this._encoder=new v(this._graph,this._mark,this),this._bounder=new y(this._graph,this._mark),this._output=null,this._ds&&this._encoder.dependency(d.DATA,this._from),this.dependency(d.DATA,this._encoder.dependency(d.DATA)),this.dependency(d.SCALES,this._encoder.dependency(d.SCALES)),this.dependency(d.SIGNALS,this._encoder.dependency(d.SIGNALS)),this},w.ds=function(){return this._ds},w.parent=function(){return this._parent},w.encoder=function(){return this._encoder},w.pipeline=function(){return[this]},w.connect=function(){var t=this;return this._graph.connect(this.pipeline()),this._encoder._scales.forEach(function(e){(e=t._parent.scale(e))&&e.addListener(t)}),this._parent&&(this._isSuper?this.addListener(this._parent._collector):this._bounder.addListener(this._parent._collector)),this._status=b,this},w.disconnect=function(){function t(t){for(var n,r=0,i=t.length;i>r;++r)(n=e._parent.scale(t[r]))&&n.removeListener(e)}var e=this;return this._listeners.length?(h.prototype.disconnect.call(this),this._graph.disconnect(this.pipeline()),t(this._encoder._scales),t(s.keys(this._mark._scaleRefs)),this._status=M,this):this},w.sibling=function(t){return this._parent.child(t,this._parent_id)},w.evaluate=function(t){l.debug(t,["building",this._from||this._def.from,this._def.type]);var e,n,r,i,a=this,u=this._mark.def,c=u.properties||{},f=c.update||{},h=g.create(t);if(this._ds){if(r=h.data[i=this._ds.name()],h.data[i]=null,e=this._encoder.reevaluate(h),h.data[i]=r,n=this._ds.last(),!n)throw Error("Builder evaluated before backing DataSource.");n.stamp>this._stamp?o.call(this,n,h,this._ds.values(),!0,e):e&&(h.mod=this._mark.items.slice())}else r=s.isFunction(this._def.from)?this._def.from():[m],o.call(this,t,h,r);return this._output=h=this._graph.evaluate(h,this._encoder),f.nested&&f.nested.length&&this._status===b&&s.keys(this._mark._scaleRefs).forEach(function(t){var e=a._parent.scale(t);e&&(e.addListener(a),a.dependency(d.SCALES,t),a._encoder.dependency(d.SCALES,t))}),this._isSuper&&(h.mod=h.mod.filter(function(t){return t._dirty}),h=this._graph.evaluate(h,this._bounder)),h},t.exports=r},function(t,e,n){function r(t,e,n){var r=e.def.properties||{},i=r.enter,a=r.update,o=r.exit;c.prototype.init.call(this,t),this._mark=e,this._builder=n;var u=this._scales=[];return i&&u.push.apply(u,i.scales),a&&(this.dependency(f.DATA,a.data),this.dependency(f.SIGNALS,a.signals),this.dependency(f.FIELDS,a.fields),this.dependency(f.SCALES,a.scales),u.push.apply(u,a.scales)),o&&u.push.apply(u,o.scales),this.mutates(!0)}function i(t,e,n,r){var i,a,o,u=n.add.length;return(i=r.enter)&&(a=i[t]).length&&u&&(o=e.values(t,a,o=o||{})),(i=r.exit)&&(a=i[t]).length&&n.rem.length&&(o=e.values(t,a,o=o||{})),(i=r.update)&&(a=i[t]).length&&(u||n.mod.length)&&(o=e.values(t,a,o=o||{})),o||d}function a(t,e,n,r,i,a,o){var u=t.encode,s=e._dirty,l=u.call(u,e,e.mark.group||e,n,r,i,a);e._dirty=l||s,l&&!s&&o.push(e)}function o(){for(var t,e,n,r=this._mark.def.properties.update.nested,i=this._builder,a=0,o=0,u=r.length;u>o;++o)if(t=r[o],!t.scale){for(;athis._stamp)return!0}return!1}var u=n(12),s=n(8),l=n(4),c=l.Node,f=l.Dependencies,h=n(60).bound,d={},p=r.prototype=new c;p.evaluate=function(t){s.debug(t,["encoding",this._mark.def.type]);var e,r,o,u,l=this._graph,c=this._mark.def.properties||{},h=this._mark.items,p=c.enter,g=c.update,m=c.exit,v=t.dirty,y=l.predicates(),x=t.request,_=this._mark.group,b=_&&(_.mark.axis||_.mark.legend),M=d,w=d;if(x&&!b){if((u=c[x])&&t.mod.length)for(M=u.data?l.values(f.DATA,u.data):null,w=u.signals?l.values(f.SIGNALS,u.signals):null,e=0,r=t.mod.length;r>e;++e)o=t.mod[e],a.call(this,u,o,t.trans,M,w,y,v);return t}for(M=i(f.DATA,l,t,c),w=i(f.SIGNALS,l,t,c),e=0,r=t.rem.length;r>e;++e)o=t.rem[e],m&&a.call(this,m,o,t.trans,M,w,y,v),t.trans&&!m?t.trans.interpolate(o,d):t.trans||h.pop();var k=n(151).STATUS.UPDATE;for(e=0,r=t.add.length;r>e;++e)o=t.add[e],p&&a.call(this,p,o,t.trans,M,w,y,v),g&&a.call(this,g,o,t.trans,M,w,y,v),o.status=k;if(g)for(e=0,r=t.mod.length;r>e;++e)o=t.mod[e],a.call(this,g,o,t.trans,M,w,y,v);return t},p.reevaluate=function(t){var e=this._mark.def,n=e.properties||{},r=u.isFunction(e.from)||e.orient||t.request||c.prototype.reevaluate.call(this,t);return r||(n.update?o.call(this):!1)},r.update=function(t,e,n,r,i){r=u.array(r);var o,s,l,c,d,p=t.predicates(),g=t.values(f.DATA),m=t.values(f.SIGNALS);for(o=0,s=r.length;s>o;++o)l=r[o],c=l.mark.def.properties,d=c&&c[n],d&&(a.call(null,d,l,e,g,m,p,i),h.item(l))},t.exports=r},function(t,e,n){function r(t,e){return this._mark=e,u.prototype.init.call(this,t).router(!0).reflows(!0).mutates(!0)}var i=n(12),a=n(4),o=n(60),u=a.Node,s=n(8),l=o.bound,c=o.Bounds,f=n(152),h=r.prototype=new u;h.evaluate=function(t){s.debug(t,["bounds",this._mark.marktype]);var e,n,r,o,u,h,d=this._mark,p=d.marktype,g="group"===p,m=d.items,v=i.array(d.def.legends).length>0,y=d.bounds,x=!y||t.rem.length;if("line"===p||"area"===p)l.mark(d,null,g&&!v);else if(t.add.forEach(function(t){l.item(t),x=x||y&&!y.encloses(t.bounds)}),t.mod.forEach(function(t){x=x||y&&y.alignsWith(t.bounds),l.item(t)}),x)for(y=d.bounds&&d.bounds.clear()||(d.bounds=new c),e=0,n=m.length;n>e;++e)y.union(m[e].bounds);if(g&&v){for(e=0,n=m.length;n>e;++e)for(u=m[e],u._legendPositions=null,r=0,o=u.legendItems.length;o>r;++r)h=u.legendItems[r],f.update(this._graph,t.trans,"legendPosition",h.items,t.dirty),l.mark(h,null,!1);l.mark(d,null,!0)}return a.ChangeSet.create(t,!0)},t.exports=r},function(t,e,n){function r(t,e,n){return this._def=e,this._parent=n,this._updated=!1,w.prototype.init.call(this,t).reflows(!0)}function i(t){var e=this._def.name,n=e+":prev",r=a.call(this,t.scale(e)),i=r.type===A.ORDINAL?o:s,u=y.call(this,t);return i.call(this,r,u,t),t.scale(e,r),t.scale(n,t.scale(n)||r),r}function a(t){var e=this._graph.config(),n=this._def.type||A.LINEAR;if(!t||n!==t.type){var r=e.scale[n]||x.scale[n];if(!r)throw Error("Unrecognized scale type: "+n);(t=r()).type=t.type||n,t.scaleName=this._def.name,t._prev={}}return t}function o(t,e,n){var r,i,a=this._def,o=t._prev,s=!1,l=m.call(this,a.padding)||0,c=null==a.outerPadding?l:m.call(this,a.outerPadding),f=a.points&&m.call(this,a.points),h=m.call(this,a.round)||null==a.round,d=!0;if(_.isObject(a.range)&&!_.isArray(a.range)&&(s=!0,e=g.call(this,T.RANGE,a.range,t,n)),r=g.call(this,T.DOMAIN,a.domain,t,n),r&&!_.equal(o.domain,r)&&(t.domain(r),o.domain=r,this._updated=!0),!_.equal(o.range,e)){if(a.bandSize){var p,v=m.call(this,a.bandSize),y=r.length,x=a.points?l*v:l*v*(y-1)+2*c;e[0]>e[1]?(p=e[1]||0,e=[p+(v*y+x),p]):(p=e[0]||0,e=[p,p+(v*y+x)]),a.reverse&&(e=e.reverse())}i="string"==typeof e[0],i||e.length>2||1===e.length||s?(t.range(e),d=!1):f&&h?t.rangeRoundPoints(e,l):f?t.rangePoints(e,l):h?t.rangeRoundBands(e,l,c):t.rangeBands(e,l,c),o.range=e,this._updated=!0}!t.invert&&d&&u(t)}function u(t){t.invert=function(e,n){var r=t.range(),i=r[0]l&&(o=s,s=l,l=s),0>s&&(s=0),l>c&&(l=c),(i?_.range(s,l+1):_.range(l,s-1,-1)).map(function(t){return u[t]})}}}function s(t,e,n){var r,i,a=this._def,o=t._prev,u=m.call(this,a.round),s=m.call(this,a.exponent),l=m.call(this,a.clamp),c=m.call(this,a.nice);r=a.type===A.QUANTILE?g.call(this,T.DOMAIN,a.domain,t,n):v.call(this,t,n),r&&!_.equal(o.domain,r)&&(t.domain(r),o.domain=r,this._updated=!0),"height"===m.call(this,a.range)&&(e=e.reverse()),e&&!_.equal(o.range,e)&&(t[u&&t.rangeRound?"rangeRound":"range"](e),o.range=e,this._updated=!0),s&&a.type===A.POWER&&t.exponent(s),l&&t.clamp(!0),c&&(a.type===A.TIME?(i=x.time[c],i||M.error("Unrecognized interval: "+i),t.nice(i)):t.nice())}function l(t){return t.type===A.ORDINAL||t.type===A.QUANTILE}function c(t){return t.fields||_.array(t)}function f(t){return t.some(function(t){return t.data?t.data&&_.array(t.field).some(function(t){return t.parent}):!0})}function h(t,e){return _.array(t.field).map(function(t){return t.parent?_.accessor(t.parent)(e.datum):t})}function d(t,e){var n=c(t);return 1==n.length&&1==_.array(n[0].field).length?E.TYPES.TUPLE:l(e)&&_.isObject(t.sort)?E.TYPES.MULTI:E.TYPES.VALUE}function p(t,e,n,r){var i=c(e),a=f(i),o=d(e,n),u=l(n),s=e.sort,p="_"+t,g=h(i[0],r);if(n[p]||this[p])return n[p]||this[p];var m,v,y=new E(this._graph).type(o);return a?n[p]=y:this[p]=y,u?o===E.TYPES.VALUE?(m=[{name:T.GROUPBY,get:_.identity}],v={"*":T.COUNT}):o===E.TYPES.TUPLE?(m=[{name:T.GROUPBY,get:_.$(g[0])}],v=_.isObject(s)?[{field:T.VALUE,get:_.$(s.field),ops:[s.op]}]:{"*":T.COUNT}):(m=T.GROUPBY,v=[{field:T.VALUE,ops:[s.op]}]):(m=[],v=[{field:T.VALUE,get:o==E.TYPES.TUPLE?_.$(g[0]):_.identity,ops:[T.MIN,T.MAX],as:[T.MIN,T.MAX]}]),y.param("groupby",m).param("summarize",v),y._lastUpdate=-1,y}function g(t,e,n,r){function i(t){w.dependency(k.SIGNALS,t)}if(null==e)return[];if(_.isArray(e))return e.map(m.bind(this));var a,o,u,s,g,v,y,x,b,M,w=this,S=this._graph,A=c(e),O=f(A),N=d(e,n),L=p.apply(this,arguments),C=e.sort,R=l(n);if(O||!O&&L._lastUpdatea;++a)if(g=A[a],b=g.data||r.datum._facetID,x=S.data(b).last(),!(x.stamp<=this._stamp)){for(v=h(g,r),u=0,s=v.length;s>u;++u)y=v[u],N===E.TYPES.VALUE?L.accessors(null,y):N===E.TYPES.MULTI&&L.accessors(y,g.sort||C.field),L.evaluate(x);this.dependency(k.DATA,b),L.dependency(k.SIGNALS).forEach(i)}L._lastUpdate=this._stamp,x=L.aggr().result(),R?(_.isObject(C)?(M=C.op+"_"+T.VALUE,M=_.comparator(M)):C===!0&&(M=_.comparator(T.GROUPBY)),M&&(x=x.sort(M)),L._values=x.map(function(t){return t[T.GROUPBY]})):(x=x[0],L._values=_.isValid(x)?[x[T.MIN],x[T.MAX]]:[])}return L._values}function m(t){if(!t||!t.signal)return t;var e,n=t.signal;return this.dependency(k.SIGNALS,(e=_.field(n))[0]),this._graph.signalRef(e)}function v(t,e){var n,r,i=this._def,a=[null,null];return void 0!==i.domain&&(a=_.isObject(i.domain)?g.call(this,T.DOMAIN,i.domain,t,e):a),r=a.length-1,void 0!==i.domainMin&&(_.isObject(i.domainMin)?i.domainMin.signal?a[0]=_.isValid(n=m.call(this,i.domainMin))?n:a[0]:a[0]=g.call(this,T.DOMAIN+T.MIN,i.domainMin,t,e)[0]:a[0]=i.domainMin),void 0!==i.domainMax&&(_.isObject(i.domainMax)?i.domainMax.signal?a[r]=_.isValid(n=m.call(this,i.domainMax))?n:a[r]:a[r]=g.call(this,T.DOMAIN+T.MAX,i.domainMax,t,e)[1]:a[r]=i.domainMax),i.type===A.LOG||i.type===A.TIME||!i.zero&&void 0!==i.zero||(a[0]=Math.min(0,a[0]),a[r]=Math.max(0,a[r])),a}function y(t){var e=this._def,n=this._graph.config(),r=m.call(this,e.range),i=[null,null];if(void 0!==r)if("string"==typeof r)if(S[r])i=[0,t[r]];else{if(!n.range[r])return M.error("Unrecogized range: "+r),i;i=n.range[r]}else if(_.isArray(r))i=_.duplicate(r).map(m.bind(this));else{if(_.isObject(r))return null;i=[0,r]}if(void 0!==e.rangeMin&&(i[0]=e.rangeMin.signal?m.call(this,e.rangeMin):e.rangeMin),void 0!==e.rangeMax&&(i[i.length-1]=e.rangeMax.signal?m.call(this,e.rangeMax):e.rangeMax),void 0!==e.reverse){var a=m.call(this,e.reverse);_.isObject(a)&&(a=_.accessor(a.field)(t.datum)),a&&(i=i.reverse())}return i}var x=n(57),_=n(12),b=n(4),M=n(8),w=b.Node,k=b.Dependencies,E=n(104),S={width:1,height:1},A={LINEAR:"linear",ORDINAL:"ordinal",LOG:"log",POWER:"pow",SQRT:"sqrt",TIME:"time",TIME_UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold"},T={DOMAIN:"domain",RANGE:"range",COUNT:"count",GROUPBY:"groupby",MIN:"min",MAX:"max",VALUE:"value",ASC:"asc",DESC:"desc"},O=r.prototype=new w;O.evaluate=function(t){var e=this,n=function(t){i.call(e,t)};return this._updated=!1,t.add.forEach(n),t.mod.forEach(n),this._updated&&(t.scales[this._def.name]=1,M.debug(t,["scale",this._def.name])),b.ChangeSet.create(t,!0)},O.dependency=function(t,e){if(2==arguments.length){var n=t===k.DATA?"data":"signal";e=_.array(e);for(var r=0,i=e.length;i>r;++r)this._graph[n](e[r]).addListener(this._parent)}return w.prototype.dependency.call(this,t,e)};var N=x.bisector(_.numcmp).right,L=function(t,e){return N(t,e)-1},C=x.bisector(function(t,e){return-1*_.numcmp(t,e)}).left;t.exports=r;var R=[{"enum":["width","height","shapes","category10","category20","category20b","category20c"]},{type:"array",items:{oneOf:[{type:"string"},{type:"number"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/signal"}];r.schema={refs:{data:{type:"object",properties:{data:{oneOf:[{type:"string"},{type:"object",properties:{fields:{type:"array",items:{$ref:"#/refs/data"}}},required:["fields"]}]},field:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}},{type:"object",properties:{parent:{type:"string"}},required:["parent"]},{type:"array",items:{type:"object",properties:{parent:{type:"string"}},required:["parent"]}}]},sort:{oneOf:[{type:"boolean"},{type:"object",properties:{field:{type:"string"},op:{"enum":n(104).VALID_OPS}}}]}},additionalProperties:!1}},defs:{scale:{title:"Scale function",type:"object",allOf:[{properties:{name:{type:"string"},type:{"enum":[A.LINEAR,A.ORDINAL,A.TIME,A.TIME_UTC,A.LOG,A.POWER,A.SQRT,A.QUANTILE,A.QUANTIZE,A.THRESHOLD],"default":A.LINEAR},domain:{oneOf:[{type:"array",items:{oneOf:[{type:"string"},{type:"number"},{$ref:"#/refs/signal"}]}},{$ref:"#/refs/data"},{type:"object",properties:{fields:{type:"array",items:{$ref:"#/refs/data"}}},required:["fields"]}]},domainMin:{oneOf:[{type:"number"},{$ref:"#/refs/data"},{$ref:"#/refs/signal"}]},domainMax:{oneOf:[{type:"number"},{$ref:"#/refs/data"},{$ref:"#/refs/signal"}]},rangeMin:{oneOf:[{type:"string"},{type:"number"},{$ref:"#/refs/signal"}]},rangeMax:{oneOf:[{type:"string"},{type:"number"},{$ref:"#/refs/signal"}]},reverse:{oneOf:[{type:"boolean"},{$ref:"#/refs/data"}]},round:{type:"boolean"}},required:["name"]},{oneOf:[{properties:{type:{"enum":[A.ORDINAL]},range:{oneOf:R.concat({$ref:"#/refs/data"})},points:{oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}]},padding:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},outerPadding:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]},bandSize:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}},required:["type"]},{properties:{type:{"enum":[A.TIME,A.TIME_UTC]},range:{oneOf:R},clamp:{oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}]},nice:{oneOf:[{"enum":["second","minute","hour","day","week","month","year"]},{$ref:"#/refs/signal"}]}},required:["type"]},{anyOf:[{properties:{type:{"enum":[A.LINEAR,A.LOG,A.POWER,A.SQRT,A.QUANTILE,A.QUANTIZE,A.THRESHOLD],"default":A.LINEAR},range:{oneOf:R},clamp:{oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}]},nice:{oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}]},zero:{oneOf:[{type:"boolean"},{$ref:"#/refs/signal"}]}}},{properties:{type:{"enum":[A.POWER]},exponent:{oneOf:[{type:"number"},{$ref:"#/refs/signal"}]}},required:["type"]}]}]}]}}}},function(t,e){t.exports=function n(t,e){var r,i,a,o,u;if(e(t))return!0;var s=["items","axisItems","legendItems"];for(a=0,o=s.length;o>a;++a)if(u=t[s[a]])for(r=0,i=u.length;i>r;++r)if(n(u[r],e))return!0}},function(t,e,n){var r=n(57),i={};i.load={baseURL:"",domainWhiteList:!1},i.autopadInset=5,i.scale={time:r.time.scale,utc:r.time.scale.utc},i.render={retina:!0},i.scene={fill:void 0,fillOpacity:void 0,stroke:void 0,strokeOpacity:void 0,strokeWidth:void 0,strokeDash:void 0,strokeDashOffset:void 0},i.axis={orient:"bottom",ticks:10,padding:3,axisColor:"#000",axisWidth:1,gridColor:"#000",gridOpacity:.15,tickColor:"#000",tickLabelColor:"#000",tickWidth:1,tickSize:6,tickLabelFontSize:11,tickLabelFont:"sans-serif",titleColor:"#000",titleFont:"sans-serif",titleFontSize:11,titleFontWeight:"bold",titleOffset:"auto",titleOffsetAutoMin:30,titleOffsetAutoMax:1/0,titleOffsetAutoMargin:4},i.legend={orient:"right",offset:20,padding:3,margin:2,gradientStrokeColor:"#888",gradientStrokeWidth:1,gradientHeight:16,gradientWidth:100,labelColor:"#000",labelFontSize:10,labelFont:"sans-serif",labelAlign:"left",labelBaseline:"middle",labelOffset:8,symbolShape:"circle",symbolSize:50,symbolColor:"#888",symbolStrokeWidth:1,titleColor:"#000",titleFont:"sans-serif",titleFontSize:11,titleFontWeight:"bold"},i.color={rgb:[128,128,128],lab:[50,0,0],hcl:[0,0,50],hsl:[0,0,.5]},i.range={category10:r.scale.category10().range(),category20:r.scale.category20().range(),category20b:r.scale.category20b().range(),category20c:r.scale.category20c().range(),shapes:["circle","cross","diamond","square","triangle-down","triangle-up"]},t.exports=i},function(t,e,n){function r(t,e,n){this._el=null,this._model=null,this._width=this.__width=e||500,this._height=this.__height=n||300,this._bgcolor=null,this._cursor=!0,this._autopad=1,this._padding={top:0,left:0,bottom:0,right:0},this._viewport=null,this._renderer=null,this._handler=null,this._streamer=null,this._skipSignals=!1,this._changeset=null,this._repaint=!0,this._renderers=c,this._io=null,this._api={}}function i(t){var e=this,n=this._model.data(t);if(!n)return f.error('Data source "'+t+'" is not defined.');var r=n.pipeline()[0],i=this._streamer,a={};return this._api[t]?this._api[t]:(a.insert=function(o){return n.insert(s.duplicate(o)),i.addListener(r),e._changeset.data[t]=1,a},a.update=function(){return i.addListener(r),e._changeset.data[t]=1,n.update.apply(n,arguments),a},a.remove=function(){return i.addListener(r),e._changeset.data[t]=1,n.remove.apply(n,arguments),a},a.values=function(){return n.values()},this._api[t]=a)}function a(t,e){var n=this._changeset,r=this._model.signal(t);return r?(this._streamer.addListener(r.value(e)),n.signals[t]=1,void(n.reflow=!0)):f.error('Signal "'+t+'" is not defined.')}function o(){var t=this;return t._renderNode=new l.Node(t._model).router(!0),t._renderNode.evaluate=function(e){f.debug(e,["rendering"]);var n=t._model.scene(),r=t._handler;return r&&r.scene&&r.scene(n),e.trans?e.trans.start(function(e){t._renderer.render(n,e)}):t._repaint?t._renderer.render(n):e.dirty.length&&t._renderer.render(n,e.dirty),e.dirty.length&&(e.dirty.forEach(function(t){t._dirty=!1}),n.items[0]._dirty=!1),t._repaint=t._skipSignals=!1,e},t._model.scene(t._renderNode),!0}var u=n(57),s=n(12),l=n(4),c=n(60).render,f=n(8),h=l.Dependencies,d=n(158),p=n(152),g=n(159),m=r.prototype;m.model=function(t){return arguments.length?(this._model!==t&&(this._model=t,this._streamer=new l.Node(t),this._streamer._rank=-1,this._changeset=l.ChangeSet.create(),this._handler&&this._handler.model(t)),this):this._model},m.data=function(t){var e=this;return arguments.length?s.isString(t)?i.call(e,t):(s.isObject(t)&&s.keys(t).forEach(function(n){var r=i.call(e,n);t[n](r)}),this):e._model.values()};var v=s.toMap(["width","height","padding"]);m.signal=function(t,e,n){var r,i,o=this._model;if(!arguments.length)return o.values(h.SIGNALS);if(1===arguments.length&&s.isString(t))return o.values(h.SIGNALS,t);s.isObject(t)?(i=t,n=e):(i={},i[t]=e);for(r in i)v[r]?this[r](i[r]):a.call(this,r,i[r]);return this._skipSignals=n,this},m.width=function(t){return arguments.length?(this.__width!==t&&(this._width=this.__width=t,this.model().width(t),this.initialize(),this._strict&&(this._autopad=1),a.call(this,"width",t)),this):this.__width},m.height=function(t){return arguments.length?(this.__height!==t&&(this._height=this.__height=t,this.model().height(t),this.initialize(),this._strict&&(this._autopad=1),a.call(this,"height",t)),this):this.__height},m.background=function(t){return arguments.length?(this._bgcolor!==t&&(this._bgcolor=t,this.initialize()),this):this._bgcolor},m.padding=function(t){return arguments.length?(this._padding!==t&&(s.isString(t)?(this._autopad=1,this._padding={top:0,left:0,bottom:0,right:0},this._strict="strict"===t):(this._autopad=0,this._padding=t,this._strict=!1),this._renderer&&this._renderer.resize(this._width,this._height,this._padding),this._handler&&this._handler.padding(this._padding),a.call(this,"padding",this._padding)),this._repaint=!0,this):this._padding},m.autopad=function(t){if(this._autopad<1)return this;this._autopad=0;var e=this.model().scene().bounds,n=this._padding,r=this.model().config(),i=r.autopadInset,o=e.x1<0?Math.ceil(-e.x1)+i:0,u=e.y1<0?Math.ceil(-e.y1)+i:0,s=e.x2>this._width?Math.ceil(+e.x2-this._width)+i:0;return e=e.y2>this._height?Math.ceil(+e.y2-this._height)+i:0,n={left:o,top:u,right:s,bottom:e},this._strict?(this._autopad=0,this._padding=n,this._width=Math.max(0,this.__width-(o+s)),this._height=Math.max(0,this.__height-(u+e)),this._model.width(this._width).height(this._height).reset(),a.call(this,"width",this._width),a.call(this,"height",this._height),a.call(this,"padding",n),this.initialize().update({props:"enter"}).update({props:"update"})):this.padding(n).update(t),this},m.viewport=function(t){return arguments.length?(this._viewport!==t&&(this._viewport=t,this.initialize()),this):this._viewport},m.renderer=function(t){if(!arguments.length)return this._renderer;if(this._renderers[t])t=this._renderers[t];else{if(s.isString(t))throw new Error("Unknown renderer: "+t);if(!t)throw new Error("No renderer specified")}return this._io!==t&&(this._io=t,this._renderer=null,this.initialize(),this._build&&this.render()),this},m.initialize=function(t){var e,n=this,r=n._width,i=n._height,a=n._padding,o=n._bgcolor,s=this.model().config();return arguments.length&&null!==t||(t=this._el?this._el.parentNode:null)?(u.select(t).select("div.vega").remove(),this._el=t=u.select(t).append("div").attr("class","vega").style("position","relative").node(),n._viewport&&u.select(t).style("width",(n._viewport[0]||r)+"px").style("height",(n._viewport[1]||i)+"px").style("overflow","auto"),c.canvas.Renderer.RETINA=s.render.retina,n._renderer=(n._renderer||new this._io.Renderer(s.load)).initialize(t,r,i,a).background(o),e=n._handler,n._handler=(new this._io.Handler).initialize(t,a,n),e?e.handlers().forEach(function(t){n._handler.on(t.type,t.handler)}):n._detach=d(this),this._repaint=!0,this):this},m.destroy=function(){this._detach&&this._detach()},m.update=function(t){t=t||{};var e=this,n=this._model,r=this._streamer,i=this._changeset,a=t.duration?new g(t.duration,t.ease):null;if(a&&(i.trans=a),void 0!==t.props){if(s.keys(i.data).length>0)throw Error("New data values are not reflected in the visualization. Please call view.update() before updating a specified property set.");i.reflow=!0,i.request=t.props}var u=e._build;return e._build=e._build||o.call(this),t.items&&u?(p.update(n,t.trans,t.props,t.items,i.dirty),e._renderNode.evaluate(i)):r.listeners().length&&u?(this._repaint&&r.addListener(n.node()),n.propagate(i,r,null,this._skipSignals),r.disconnect()):n.fire(i),e._changeset=l.ChangeSet.create(),e.autopad(t)},m.toImageURL=function(t){var e,n=this;switch(t||"png"){case"canvas":case"png":e=c.canvas.Renderer;break;case"svg":e=c.svg.string.Renderer;break;default:throw Error("Unrecognized renderer type: "+t)}var r=c.canvas.Renderer.RETINA;c.canvas.Renderer.RETINA=!1;var i=new e(n._model.config.load).initialize(null,n._width,n._height,n._padding).background(n._bgcolor).render(n._model.scene());if(c.canvas.Renderer.RETINA=r,"svg"===t){var a=new Blob([i.svg()],{type:"image/svg+xml"});return window.URL.createObjectURL(a)}return i.canvas().toDataURL("image/png")},m.render=function(t){return this._renderer.render(this._model.scene(),t),this},m.on=function(){return this._handler.on.apply(this._handler,arguments),this},m.onSignal=function(t,e){var n=this._model.signal(t);return n?n.on(e):f.error('Signal "'+t+'" is not defined.'),this},m.off=function(){return this._handler.off.apply(this._handler,arguments),this},m.offSignal=function(t,e){var n=this._model.signal(t);return n?n.off(e):f.error('Signal "'+t+'" is not defined.'),this},r.factory=function(t){var e=n(160);return function(n){n=n||{};var i=t.defs(),a=(n.el?new r:new e).model(t).renderer(n.renderer||"canvas").width(i.width).height(i.height).background(i.background).padding(i.padding).viewport(i.viewport).initialize(n.el);return n.data&&a.data(n.data),n.el&&(n.hover!==!1&&a.on("mouseover",function(t,e){e&&e.hasPropertySet("hover")&&this.update({props:"hover",items:e})}).on("mouseout",function(t,e){e&&e.hasPropertySet("hover")&&this.update({props:"update",items:e})}),n.cursor!==!1&&a.onSignal("cursor",function(t,e){var n=u.select("body");s.isString(e)?(a._cursor="default"===e,n.style("cursor",e)):s.isObject(e)&&a._cursor&&n.style("cursor",e["default"])})),a}},t.exports=r},function(t,e,n){function r(t){function e(e,n){var r,a,o,u=i.mouse((i.event=e,t.renderer().scene())),s=t.padding(),l={};if(n)for(r=n.mark,a="group"===r.marktype?n:r.group,o=n;null!=o;o=o.mark.group)o.mark.def.name&&(l[o.mark.def.name]=o);l.root=t.model().scene().items[0],e.vg=Object.create(f),e.vg.group=a,e.vg.item=n||{},e.vg.name=l,e.vg.x=u[0]-s.left,e.vg.y=u[1]-s.top}function n(t,e,n,r){function i(t){return!t.fn(n,r)}var a,u,l,c,f=t.handlers[e],h=t.nodes[e],d=o.ChangeSet.create(null,!0),p=!1;for(u=0,l=f.length;l>u;++u)c=f[u],p=c.filters.some(i),p||(a=c.exp.fn(n,r), -c.spec.scale&&(a=s.scale(g,c.spec,a,n,r)),(a!==c.signal.value()||c.signal.verbose())&&(c.signal.value(a),d.signals[c.signal.name()]=1));g.propagate(d,h)}function r(t,e,n,i){e.forEach(function(e){e.event?h(t,e,n,i):e.signal?d(t,e,n,i):e.start?p(t,e,n,i):e.stream&&(e.filters&&e.stream.forEach(function(t){t.filters=a.array(t.filters).concat(e.filters)}),r(t,e.stream,n,i))})}function h(t,e,n,r){var i=e.event,u=e.name,s=e.mark,l=e.target,c=a.array(e.filters),f=l?b:_,h=l?l+":"+i:i,d=f.nodes[h]||(f.nodes[h]=new o.Node(g)),p=f.handlers[h]||(f.handlers[h]=[]);u?c.push('!!event.vg.name["'+u+'"]'):s&&c.push("event.vg.item.mark && event.vg.item.mark.marktype==="+a.str(s)),p.push({signal:t,exp:n,spec:r,filters:c.map(function(t){return g.expr(t)})}),d.addListener(t)}function d(t,e,n,r){var i=t.name(),a=g.signal(i+c,null);a.evaluate=function(a){if(!a.signals[e.signal])return g.doNotPropagate;var o=n.fn();return r.scale&&(o=s.scale(g,r,o)),(o!==t.value()||t.verbose())&&(t.value(o),a.signals[i]=1,a.reflow=!0),a},a.dependency(o.Dependencies.SIGNALS,e.signal),a.addListener(t),g.signal(e.signal).addListener(a)}function p(t,e,n,i){var a=t.name(),o=a+l,u=e.middle,s=u.filters||(u.filters=[]),c=g.signal(o)||g.signal(o,!1);r(c,[e.start],m,{}),r(c,[e.end],v,{}),s.push(c.name()),r(t,[e.middle],n,i)}var g=t.model(),m=g.expr("true"),v=g.expr("false"),y=g.defs().signals,x={handlers:{},nodes:{}},_=a.duplicate(x),b=a.duplicate(x);return a.array(y).forEach(function(t){var e=g.signal(t.name);t.expr||a.array(t.streams).forEach(function(t){var n=u.parse(t.type),i=g.expr(t.expr);r(e,n,i,t)})}),a.keys(_.handlers).forEach(function(r){t.on(r,function(t,i){t.preventDefault(),e(t,i),n(_,r,i&&i.datum||{},t)})}),a.keys(b.handlers).forEach(function(t){function r(r){e(r),n(b,t,i.select(this).datum(),r)}if("undefined"!=typeof window){for(var a=b.handlers[t],o=t.split(":"),u="window"===o[0]?[window]:window.document.querySelectorAll(o[0]),s=0;sr)d=!1;else{for(r>1&&(r=1),i=f.ease(r),a=0,u=f.length;u>a;++a)e[f[a].property]=f[a](i);e.touch(),o.item(e),1===r?(f.remove&&(e.status=s.EXIT,e.remove()),c.next=f.next,f=c):d=!1}return this.callback(),d}var a=n(57),o=n(60).bound,u=n(4).Tuple,s=n(151).STATUS,l=r.prototype,c={text:1,url:1};l.interpolate=function(t,e){var n,r,i,o,l=null;for(n in e)r=t[n],i=e[n],r!==i&&(c[n]||void 0===r?u.set(t,n,i):"number"!=typeof r||isFinite(r)?(o=a.interpolate(r,i),o.property=n,(l||(l=[])).push(o)):u.set(t,n,i));return null===l&&t.status===s.EXIT&&(l=[]),null!=l&&(l.item=t,l.ease=t.mark.ease||this.ease,l.next=this.updates.next,this.updates.next=l),this},l.start=function(t){for(var e=this,n=e.updates,r=n.next;null!=r;n=r,r=n.next)r.item.status===s.EXIT&&(r.item.status=s.UPDATE,r.remove=!0);e.callback=t,a.timer(function(t){return i.call(e,t)})},t.exports=r},function(t,e,n){function r(t,e,n){u.call(this,t,e,n),this._type="canvas",this._renderers={canvas:a,svg:o}}var i=n(60).render,a=i.canvas,o=i.svg.string,u=n(157),s=r.prototype=new u;s.renderer=function(t){return t&&(this._type=t),u.prototype.renderer.apply(this,arguments)},s.canvas=function(){return"canvas"===this._type?this._renderer.canvas():null},s.canvasAsync=function(t){function e(){0===n.pendingImages()?(r.render(),t(r.canvas())):setTimeout(e,10)}var n=this._renderer,r=this;return"canvas"!==this._type?null:void(n.pendingImages()>0?e():t(this.canvas()))},s.svg=function(){return"svg"===this._type?this._renderer.svg():null},s.initialize=function(){var t=this._width,e=this._height,n=this._bgcolor,r=this._padding,i=this.model().config();return this._viewport&&(t=this._viewport[0]-(r?r.left+r.right:0),e=this._viewport[1]-(r?r.top+r.bottom:0)),this._renderer=(this._renderer||new this._io.Renderer(i.load)).initialize(null,t,e,r).background(n),this},t.exports=r},function(t,e,n){function r(t,e,n){var r=t.schema;r&&(r.refs&&i.extend(n.refs,r.refs),r.defs&&i.extend(n.defs,r.defs))}var i=n(12),a=n(52),o=n(154),u=n(156);t.exports=function(t){var e=null;return t=t||{},t.url?e=i.json(i.extend({url:t.url},u.load)):(e={$schema:"http://json-schema.org/draft-04/schema#",title:"Vega Visualization Specification Language",defs:{},refs:{},$ref:"#/defs/spec"},i.keys(a).forEach(function(n){r(a[n],t,e)}),r(o,t,e)),t.properties&&i.keys(t.properties).forEach(function(n){e.defs.propset.properties[n]={$ref:"#/refs/"+t.properties[n]+"Value"}}),t.propertySets&&i.keys(t.propertySets).forEach(function(t){e.defs.mark.properties.properties.properties[t]={$ref:"#/defs/propset"}}),e}},function(t,e,n){"use strict";var r=n(163),i=n(164),a=n(171),o=n(173),u=n(174),s=n(177),l=n(202),c=n(203),f=n(176),h=n(172),d=n(204),p=n(165);e.bin=r,e.channel=i,e.compile=s.compile,e.data=a,e.encoding=o,e.fieldDef=u,e.shorthand=l,e.spec=c,e.timeUnit=f,e.type=h,e.util=p,e.validate=d,e.version="__VERSION__"},function(t,e,n){"use strict";function r(t){switch(t){case i.ROW:case i.COLUMN:case i.SIZE:case i.SHAPE:return 6;default:return 10}}var i=n(164);e.autoMaxBins=r},function(t,e,n){"use strict";function r(t,e){return!!i(t)[e]}function i(t){switch(t){case e.X:case e.Y:case e.COLOR:case e.DETAIL:case e.ORDER:case e.ROW:case e.COLUMN:return{point:!0,tick:!0,circle:!0,square:!0,bar:!0,line:!0,area:!0,text:!0};case e.SIZE:return{point:!0,tick:!0,circle:!0,square:!0,bar:!0,text:!0};case e.SHAPE:return{point:!0};case e.TEXT:return{text:!0};case e.PATH:return{line:!0}}return{}}function a(t){switch(t){case e.X:case e.Y:case e.COLOR:case e.LABEL:return{measure:!0,dimension:!0};case e.ROW:case e.COLUMN:case e.SHAPE:case e.DETAIL:return{measure:!1,dimension:!0};case e.SIZE:case e.TEXT:return{measure:!0,dimension:!1};case e.PATH:return{measure:!1,dimension:!0}}throw new Error("Invalid encoding channel"+t)}function o(t){return!u.contains([e.DETAIL,e.PATH,e.TEXT,e.LABEL,e.ORDER],t)}var u=n(165);!function(t){t[t.X="x"]="X",t[t.Y="y"]="Y",t[t.ROW="row"]="ROW",t[t.COLUMN="column"]="COLUMN",t[t.SHAPE="shape"]="SHAPE",t[t.SIZE="size"]="SIZE",t[t.COLOR="color"]="COLOR",t[t.TEXT="text"]="TEXT",t[t.DETAIL="detail"]="DETAIL",t[t.LABEL="label"]="LABEL",t[t.PATH="path"]="PATH",t[t.ORDER="order"]="ORDER"}(e.Channel||(e.Channel={}));var s=e.Channel;e.X=s.X,e.Y=s.Y,e.ROW=s.ROW,e.COLUMN=s.COLUMN,e.SHAPE=s.SHAPE,e.SIZE=s.SIZE,e.COLOR=s.COLOR,e.TEXT=s.TEXT,e.DETAIL=s.DETAIL,e.LABEL=s.LABEL,e.PATH=s.PATH,e.ORDER=s.ORDER,e.CHANNELS=[e.X,e.Y,e.ROW,e.COLUMN,e.SIZE,e.SHAPE,e.COLOR,e.PATH,e.ORDER,e.TEXT,e.DETAIL,e.LABEL],e.supportMark=r,e.getSupportedMark=i,e.getSupportedRole=a,e.hasScale=o},function(t,e,n){"use strict";function r(t,e){return t.indexOf(e)>-1}function i(t,e){return t.filter(function(t){return!r(e,t)})}function a(t,e,n){if(t.forEach)t.forEach.call(n,e);else for(var r in t)t.hasOwnProperty(r)&&e.call(n,t[r],r,t)}function o(t,e,n,r){if(t.reduce)return t.reduce.call(r,e,n);for(var i in t)t.hasOwnProperty(i)&&(n=e.call(r,n,t[i],i,t));return n}function u(t,e,n){if(t.map)return t.map.call(n,e);var r=[];for(var i in t)t.hasOwnProperty(i)&&r.push(e.call(n,t[i],i,t));return r}function s(t,e){for(var n=0,r=0;rn;++n)r+=e;return r}function r(t,e,n){var r=0,i=t.split(s);return t=n?(i=i.reverse()).filter(function(t){return r+=t.length,e>=r}).reverse():i.filter(function(t){return r+=t.length,e>=r}),t.length?t.join("").trim():i[0].slice(0,e)}var i=t.exports,a="__name__";i.namedfunc=function(t,e){return e[a]=t,e},i.name=function(t){return null==t?null:t[a]},i.identity=function(t){return t},i["true"]=i.namedfunc("true",function(){return!0}),i["false"]=i.namedfunc("false",function(){return!1}),i.duplicate=function(t){return JSON.parse(JSON.stringify(t))},i.equal=function(t,e){return JSON.stringify(t)===JSON.stringify(e)},i.extend=function(t){for(var e,n,r=1,i=arguments.length;i>r;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t},i.length=function(t){return null!=t&&null!=t.length?t.length:null},i.keys=function(t){var e,n=[];for(e in t)n.push(e);return n},i.vals=function(t){var e,n=[];for(e in t)n.push(t[e]);return n},i.toMap=function(t,e){return(e=i.$(e))?t.reduce(function(t,n){return t[e(n)]=1,t},{}):t.reduce(function(t,e){return t[e]=1,t},{})},i.keystr=function(t){var e=t.length;if(!e)return"";for(var n=String(t[0]),r=1;e>r;++r)n+="|"+String(t[r]);return n};var o=Object.prototype.toString;i.isObject=function(t){return t===Object(t)},i.isFunction=function(t){return"[object Function]"===o.call(t)},i.isString=function(t){return"string"==typeof value||"[object String]"===o.call(t)},i.isArray=Array.isArray||function(t){return"[object Array]"===o.call(t)},i.isNumber=function(t){return"number"==typeof t||"[object Number]"===o.call(t)},i.isBoolean=function(t){return t===!0||t===!1||"[object Boolean]"==o.call(t)},i.isDate=function(t){return"[object Date]"===o.call(t)},i.isValid=function(t){return null!=t&&t===t},i.isBuffer="function"==typeof e&&e.isBuffer||i["false"],i.number=function(t){return null==t||""===t?null:+t},i["boolean"]=function(t){return null==t||""===t?null:"false"===t?!1:!!t},i.date=function(t,e){var n=e?e:Date;return null==t||""===t?null:n.parse(t)},i.array=function(t){return null!=t?i.isArray(t)?t:[t]:[]},i.str=function(t){return i.isArray(t)?"["+t.map(i.str)+"]":i.isObject(t)||i.isString(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t};var u=/\[(.*?)\]|[^.\[]+/g;i.field=function(t){return String(t).match(u).map(function(t){return"["!==t[0]?t:"'"!==t[1]&&'"'!==t[1]?t.slice(1,-1):t.slice(2,-2).replace(/\\(["'])/g,"$1")})},i.accessor=function(t){return null==t||i.isFunction(t)?t:i.namedfunc(t,Function("x","return x["+i.field(t).map(i.str).join("][")+"];"))},i.$=i.accessor,i.mutator=function(t){var e;return i.isString(t)&&(e=i.field(t)).length>1?function(t,n){for(var r=0;ri;++i){if(o=t[i],u=o(n),s=o(r),s>u)return-1*e[i];if(u>s)return e[i]}return 0}},i.cmp=function(t,e){return e>t?-1:t>e?1:t>=e?0:null===t?-1:null===e?1:NaN},i.numcmp=function(t,e){return t-e},i.stablesort=function(t,e,n){var r=t.reduce(function(t,e,r){return t[n(e)]=r,t},{});return t.sort(function(t,i){var a=e(t),o=e(i);return o>a?-1:a>o?1:r[n(t)]-r[n(i)]}),t},i.pad=function(t,e,r,i){i=i||" ";var a=e-t.length;if(0>=a)return t;switch(r){case"left":return n(a,i)+t;case"middle":case"center":return n(Math.floor(a/2),i)+t+n(Math.ceil(a/2),i);default:return t+n(a,i)}},i.truncate=function(t,e,n,i,a){var o=t.length;if(e>=o)return t;a=void 0!==a?String(a):"…";var u=Math.max(0,e-a.length);switch(n){case"left":return a+(i?r(t,u,1):t.slice(o-u));case"middle":case"center":var s=Math.ceil(u/2),l=Math.floor(u/2);return(i?r(t,s):t.slice(0,s))+a+(i?r(t,l,1):t.slice(o-l));default:return(i?r(t,u):t.slice(0,u))+a}};var s=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/}).call(e,n(14).Buffer)},function(t,e,n){var r=n(166),i=t.exports;i.repeat=function(t,e){var n,r=Array(e);for(n=0;e>n;++n)r[n]=t;return r},i.zeros=function(t){return i.repeat(0,t)},i.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n==1/0)throw new Error("Infinite range");var r,i=[],a=-1;if(0>n)for(;(r=t+n*++a)>e;)i.push(r);else for(;(r=t+n*++a)=t&&e>=r?1/n:0},r.cdf=function(r){return t>r?0:r>e?1:(r-t)/n},r.icdf=function(e){return e>=0&&1>=e?t+e*n:NaN},r},i.random.integer=function(t,e){void 0===e&&(e=t,t=0);var n=e-t,r=function(){return t+Math.floor(n*Math.random())};return r.samples=function(t){return i.zeros(t).map(r)},r.pdf=function(r){return r===Math.floor(r)&&r>=t&&e>r?1/n:0},r.cdf=function(r){var i=Math.floor(r);return t>i?0:i>=e?1:(i-t+1)/n},r.icdf=function(e){return e>=0&&1>=e?t-1+Math.floor(e*n):NaN},r},i.random.normal=function(t,e){t=t||0,e=e||1;var n,r=function(){var r,i,a=0,o=0;if(void 0!==n)return a=n,n=void 0,a;do a=2*Math.random()-1,o=2*Math.random()-1,r=a*a+o*o;while(0===r||r>1);return i=Math.sqrt(-2*Math.log(r)/r),n=t+o*i*e,t+a*i*e};return r.samples=function(t){return i.zeros(t).map(r)},r.pdf=function(n){var r=Math.exp(Math.pow(n-t,2)/(-2*Math.pow(e,2)));return 1/(e*Math.sqrt(2*Math.PI))*r},r.cdf=function(n){var r,i=(n-t)/e,a=Math.abs(i);if(a>37)r=0;else{var o,u=Math.exp(-a*a/2);7.07106781186547>a?(o=.0352624965998911*a+.700383064443688,o=o*a+6.37396220353165,o=o*a+33.912866078383,o=o*a+112.079291497871,o=o*a+221.213596169931,o=o*a+220.206867912376,r=u*o,o=.0883883476483184*a+1.75566716318264,o=o*a+16.064177579207,o=o*a+86.7807322029461,o=o*a+296.564248779674,o=o*a+637.333633378831,o=o*a+793.826512519948,o=o*a+440.413735824752,r/=o):(o=a+.65,o=a+4/o,o=a+3/o,o=a+2/o,o=a+1/o,r=u/o/2.506628274631)}return i>0?1-r:r},r.icdf=function(n){if(0>=n||n>=1)return NaN;var r=2*n-1,i=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),a=2/(Math.PI*i)+Math.log(1-Math.pow(r,2))/2,o=Math.log(1-r*r)/i,u=(r>0?1:-1)*Math.sqrt(Math.sqrt(a*a-o)-a);return t+e*Math.SQRT2*u},r},i.random.bootstrap=function(t,e){var n=t.filter(r.isValid),a=n.length,o=e?i.random.normal(0,e):null,u=function(){return n[~~(Math.random()*a)]+(o?o():0)};return u.samples=function(t){return i.zeros(t).map(u)},u}},function(t,e,n){function r(t){if(!t)throw Error("Missing binning options.");var e,n,r,u,s,l,c,f=t.maxbins||15,h=t.base||10,d=Math.log(h),p=t.div||[5,2],g=t.min,m=t.max,v=m-g;if(t.step)e=t.step;else if(t.steps)e=t.steps[Math.min(t.steps.length-1,i(t.steps,v/f,0,t.steps.length))];else{for(n=Math.ceil(Math.log(f)/d),r=t.minstep||0,e=Math.max(r,Math.pow(h,Math.round(Math.log(v)/d)-n));Math.ceil(v/e)>f;)e*=h;for(l=0;l=r&&f>=v/s&&(e=s)}return s=Math.log(e),u=s>=0?0:~~(-s/d)+1,c=Math.pow(h,-u-1),g=Math.min(g,Math.floor(g/e+c)*e),m=Math.ceil(m/e)*e,{start:g,stop:m,step:e,unit:{precision:u},value:a,index:o}}function i(t,e,n,r){for(;r>n;){var i=n+r>>>1;l.cmp(t[i],e)<0?n=i+1:r=i}return n}function a(t){return this.step*Math.floor(t/this.step+f)}function o(t){return Math.floor((t-this.start)/this.step+f)}function u(t){return this.unit.date(a.call(this,t))}function s(t){return o.call(this,this.unit.unit(t))}var l=n(166),c=n(169),f=1e-15;r.date=function(t){if(!t)throw Error("Missing date binning options.");var e=t.utc?c.utc:c,n=t.min,i=t.max,a=t.maxbins||20,o=t.minbins||4,l=+i-+n,f=t.unit?e[t.unit]:e.find(l,o,a),h=r({min:null!=f.min?f.min:f.unit(n),max:null!=f.max?f.max:f.unit(i),maxbins:a,minstep:f.minstep,steps:f.step});return h.unit=f,h.index=s,t.raw||(h.value=u),h},t.exports=r},function(t,e,n){function r(t){return l.setTime(+t),l}function i(t,e,n,r,i,a){var o={type:t,date:e,unit:n};return r?o.step=r:o.minstep=1,null!=i&&(o.min=i),null!=a&&(o.max=a),o}function a(t,e,n,r,a,o){return i(t,function(t){return e.offset(n,t)},function(t){return e.count(n,t)},r,a,o)}function o(t,e,n,r){var i,a,o,u=p[0];for(i=1,a=p.length;a>i;++i)if(u=p[i],e>u[0]){if(o=e/u[0],o>r)return t[p[i-1][1]];if(o>=n)return t[u[1]]}return t[p[a-1][1]]}function u(t){var e,n,r={};for(e=0,n=t.length;n>e;++e)r[t[e].type]=t[e];return r.find=function(e,n,r){return o(t,e,n,r)},r}var s=n(170),l=new Date,c=new Date(0,0,1).setFullYear(0),f=new Date(Date.UTC(0,0,1)).setUTCFullYear(0),h=[a("second",s.second,c),a("minute",s.minute,c),a("hour",s.hour,c),a("day",s.day,c,[1,7]),a("month",s.month,c,[1,3,6]),a("year",s.year,c),i("seconds",function(t){return new Date(1970,0,1,0,0,t)},function(t){return r(t).getSeconds()},null,0,59),i("minutes",function(t){return new Date(1970,0,1,0,t)},function(t){return r(t).getMinutes()},null,0,59),i("hours",function(t){return new Date(1970,0,1,t)},function(t){return r(t).getHours()},null,0,23),i("weekdays",function(t){return new Date(1970,0,4+t)},function(t){return r(t).getDay()},[1],0,6),i("dates",function(t){return new Date(1970,0,t)},function(t){return r(t).getDate()},[1],1,31),i("months",function(t){return new Date(1970,t%12,1)},function(t){return r(t).getMonth()},[1],0,11)],d=[a("second",s.utcSecond,f),a("minute",s.utcMinute,f),a("hour",s.utcHour,f),a("day",s.utcDay,f,[1,7]),a("month",s.utcMonth,f,[1,3,6]),a("year",s.utcYear,f),i("seconds",function(t){return new Date(Date.UTC(1970,0,1,0,0,t))},function(t){return r(t).getUTCSeconds()},null,0,59),i("minutes",function(t){return new Date(Date.UTC(1970,0,1,0,t))},function(t){return r(t).getUTCMinutes()},null,0,59),i("hours",function(t){return new Date(Date.UTC(1970,0,1,t))},function(t){return r(t).getUTCHours()},null,0,23),i("weekdays",function(t){return new Date(Date.UTC(1970,0,4+t))},function(t){return r(t).getUTCDay()},[1],0,6),i("dates",function(t){return new Date(Date.UTC(1970,0,t))},function(t){return r(t).getUTCDate()},[1],1,31),i("months",function(t){return new Date(Date.UTC(1970,t%12,1))},function(t){return r(t).getUTCMonth()},[1],0,11)],p=[[31536e6,5],[7776e6,4],[2592e6,4],[12096e5,3],[6048e5,3],[1728e5,3],[864e5,3],[432e5,2],[216e5,2],[108e5,2],[36e5,2],[18e5,1],[9e5,1],[3e5,1],[6e4,1],[3e4,0],[15e3,0],[5e3,0],[1e3,0]];t.exports=u(h),t.exports.utc=u(d)},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(t,n,r,o){function u(e){return t(e=new Date(+e)),e}return u.floor=u,u.round=function(e){var r=new Date(+e),i=new Date(e-1);return t(r),t(i),n(i,1),i-e>e-r?r:i},u.ceil=function(e){return t(e=new Date(e-1)),n(e,1),e},u.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},u.range=function(e,r,i){var a=[];if(e=new Date(e-1),r=new Date(+r),i=null==i?1:Math.floor(i),!(r>e&&i>0))return a;for(n(e,1),t(e),r>e&&a.push(new Date(+e));n(e,i),t(e),r>e;)a.push(new Date(+e));return a},u.filter=function(r){return e(function(e){for(;t(e),!r(e);)e.setTime(e-1)},function(t,e){for(;--e>=0;)for(;n(t,1),!r(t););})},r&&(u.count=function(e,n){return i.setTime(+e),a.setTime(+n),t(i),t(a),Math.floor(r(i,a))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(o?function(e){return o(e)%t===0}:function(e){return u.count(0,e)%t===0}):u:null}),u}function n(t){return e(function(e){e.setHours(0,0,0,0),e.setDate(e.getDate()-(e.getDay()+7-t)%7)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5})}function r(t){return e(function(e){e.setUTCHours(0,0,0,0),e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/6048e5})}var i=new Date,a=new Date,o=e(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});o.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?e(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):o:null};var u=e(function(t){t.setMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getSeconds()}),s=e(function(t){t.setSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getMinutes()}),l=e(function(t){t.setMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),c=e(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5},function(t){return t.getDate()-1}),f=n(0),h=n(1),d=n(2),p=n(3),g=n(4),m=n(5),v=n(6),y=e(function(t){t.setHours(0,0,0,0),t.setDate(1)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),x=e(function(t){t.setHours(0,0,0,0),t.setMonth(0,1)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}),_=e(function(t){t.setUTCMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),b=e(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getUTCMinutes()}),M=e(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),w=e(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),k=r(0),E=r(1),S=r(2),A=r(3),T=r(4),O=r(5),N=r(6),L=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCDate(1)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),C=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCMonth(0,1)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}),R=o.range,D=u.range,I=s.range,U=l.range,P=c.range,z=f.range,j=h.range,q=d.range,$=p.range,F=g.range,Y=m.range,H=v.range,B=f.range,V=y.range,X=x.range,W=o,G=R,Z=_.range,J=b.range,Q=M.range,K=w.range,tt=k.range,et=E.range,nt=S.range,rt=A.range,it=T.range,at=O.range,ot=N.range,ut=k.range,st=L.range,lt=C.range,ct="0.1.1";t.version=ct,t.milliseconds=R,t.seconds=D,t.minutes=I,t.hours=U,t.days=P,t.sundays=z,t.mondays=j,t.tuesdays=q,t.wednesdays=$,t.thursdays=F,t.fridays=Y,t.saturdays=H,t.weeks=B,t.months=V,t.years=X,t.utcMillisecond=W,t.utcMilliseconds=G,t.utcSeconds=Z,t.utcMinutes=J,t.utcHours=Q,t.utcDays=K,t.utcSundays=tt,t.utcMondays=et,t.utcTuesdays=nt,t.utcWednesdays=rt,t.utcThursdays=it,t.utcFridays=at,t.utcSaturdays=ot,t.utcWeeks=ut,t.utcMonths=st,t.utcYears=lt,t.millisecond=o,t.second=u,t.minute=s,t.hour=l,t.day=c,t.sunday=f,t.monday=h,t.tuesday=d,t.wednesday=p,t.thursday=g,t.friday=m,t.saturday=v,t.week=f,t.month=y,t.year=x,t.utcSecond=_,t.utcMinute=b,t.utcHour=M,t.utcDay=w,t.utcSunday=k,t.utcMonday=E,t.utcTuesday=S,t.utcWednesday=A,t.utcThursday=T,t.utcFriday=O,t.utcSaturday=N,t.utcWeek=k,t.utcMonth=L,t.utcYear=C,t.interval=e})},function(t,e,n){"use strict";var r=n(172);!function(t){t[t.JSON="json"]="JSON",t[t.CSV="csv"]="CSV",t[t.TSV="tsv"]="TSV"}(e.DataFormat||(e.DataFormat={}));e.DataFormat;e.SUMMARY="summary",e.SOURCE="source",e.STACKED_SCALE="stacked_scale",e.LAYOUT="layout",e.types={"boolean":r.Type.NOMINAL,number:r.Type.QUANTITATIVE,integer:r.Type.QUANTITATIVE,date:r.Type.TEMPORAL,string:r.Type.NOMINAL}},function(t,e){"use strict";function n(t){var n=t;return e.TYPE_FROM_SHORT_TYPE[n.toUpperCase()]||n.toLowerCase()}!function(t){t[t.QUANTITATIVE="quantitative"]="QUANTITATIVE",t[t.ORDINAL="ordinal"]="ORDINAL",t[t.TEMPORAL="temporal"]="TEMPORAL",t[t.NOMINAL="nominal"]="NOMINAL"}(e.Type||(e.Type={}));var r=e.Type;e.QUANTITATIVE=r.QUANTITATIVE,e.ORDINAL=r.ORDINAL,e.TEMPORAL=r.TEMPORAL,e.NOMINAL=r.NOMINAL,e.SHORT_TYPE={quantitative:"Q",temporal:"T",nominal:"N",ordinal:"O"},e.TYPE_FROM_SHORT_TYPE={Q:e.QUANTITATIVE,T:e.TEMPORAL,O:e.ORDINAL,N:e.NOMINAL},e.getFullName=n},function(t,e,n){"use strict";function r(t){var e=0;return t.color&&e++,t.size&&e++,t.shape&&e++,e}function i(t){return f.CHANNELS.filter(function(e){return a(t,e)})}function a(t,e){var n=t&&t[e];return n&&(void 0!==n.field||h.isArray(n)&&n.length>0)}function o(t){return h.any(f.CHANNELS,function(e){return!(!a(t,e)||!t[e].aggregate)})}function u(t){var e=[];return f.CHANNELS.forEach(function(n){a(t,n)&&(h.isArray(t[n])?t[n].forEach(function(t){e.push(t)}):e.push(t[n]))}),e}function s(t,e,n){var r=0;f.CHANNELS.forEach(function(i){a(t,i)&&(h.isArray(t[i])?t[i].forEach(function(t){e.call(n,t,i,r++)}):e.call(n,t[i],i,r++))})}function l(t,e,n){var r=[];return f.CHANNELS.forEach(function(i){a(t,i)&&(h.isArray(t[i])?t[i].forEach(function(a){r.push(e.call(n,a,i,t))}):r.push(e.call(n,t[i],i,t)))}),r}function c(t,e,n,r){var i=n;return f.CHANNELS.forEach(function(n){a(t,n)&&(h.isArray(t[n])?t[n].forEach(function(a){i=e.call(r,i,a,n,t)}):i=e.call(r,i,t[n],n,t))}),i}var f=n(164),h=n(165);e.countRetinal=r,e.channels=i,e.has=a,e.isAggregate=o,e.fieldDefs=u,e.forEach=s,e.map=l,e.reduce=c},function(t,e,n){"use strict";function r(t,e){void 0===e&&(e={});var n=(e.datum?"datum.":"")+(e.prefn||""),r=e.suffix||"",i=t.field;return s(t)?n+"count"+r:e.fn?n+e.fn+"_"+i+r:!e.nofn&&t.bin?n+"bin_"+i+(e.binSuffix||r||"_start"):e.nofn||e.noAggregate||!t.aggregate?!e.nofn&&t.timeUnit?n+t.timeUnit+"_"+i+r:n+i:n+t.aggregate+"_"+i+r}function i(t){return p.contains([d.NOMINAL,d.ORDINAL],t.type)||!!t.bin||t.type===d.TEMPORAL&&!!t.timeUnit}function a(t){return t&&t.field&&i(t)}function o(t){return t&&t.field&&!i(t)}function u(){return{field:"*",aggregate:f.AggregateOp.COUNT,type:d.QUANTITATIVE,displayName:e.COUNT_DISPLAYNAME}}function s(t){return t.aggregate===f.AggregateOp.COUNT}function l(t,e,n){void 0===n&&(n={});var r=e[t.field],i=t.type;if(t.bin){var a=t.bin,o="boolean"==typeof a?void 0:a.maxbins;void 0===o&&(o=10);var u=p.getbins(r,o);return(u.stop-u.start)/u.step}if(i===d.TEMPORAL){var s=t.timeUnit;switch(s){case h.TimeUnit.SECONDS:return 60;case h.TimeUnit.MINUTES:return 60;case h.TimeUnit.HOURS:return 24;case h.TimeUnit.DAY:return 7;case h.TimeUnit.DATE:return 31;case h.TimeUnit.MONTH:return 12;case h.TimeUnit.YEAR:var l=e["year_"+t.field];return l?l.distinct-(r.missing>0&&n[i]?1:0):null}}return t.aggregate?1:r.distinct-(r.missing>0&&n[i]?1:0)}function c(t){if(s(t))return e.COUNT_DISPLAYNAME;var n=t.aggregate||t.timeUnit||t.bin&&"bin";return n?n.toString().toUpperCase()+"("+t.field+")":t.field}var f=n(175),h=n(176),d=n(172),p=n(165);e.aggregate={type:"string","enum":f.AGGREGATE_OPS,supportedEnums:{quantitative:f.AGGREGATE_OPS,ordinal:["median","min","max"],nominal:[],temporal:["mean","median","min","max"],"":["count"]},supportedTypes:p.toMap([d.QUANTITATIVE,d.NOMINAL,d.ORDINAL,d.TEMPORAL,""])},e.field=r,e.isDimension=a,e.isMeasure=o,e.COUNT_DISPLAYNAME="Number of Records",e.count=u,e.isCount=s,e.cardinality=l,e.title=c},function(t,e){"use strict";!function(t){t[t.VALUES="values"]="VALUES",t[t.COUNT="count"]="COUNT",t[t.VALID="valid"]="VALID",t[t.MISSING="missing"]="MISSING",t[t.DISTINCT="distinct"]="DISTINCT",t[t.SUM="sum"]="SUM",t[t.MEAN="mean"]="MEAN",t[t.AVERAGE="average"]="AVERAGE",t[t.VARIANCE="variance"]="VARIANCE",t[t.VARIANCEP="variancep"]="VARIANCEP",t[t.STDEV="stdev"]="STDEV",t[t.STDEVP="stdevp"]="STDEVP",t[t.MEDIAN="median"]="MEDIAN",t[t.Q1="q1"]="Q1",t[t.Q3="q3"]="Q3",t[t.MODESKEW="modeskew"]="MODESKEW",t[t.MIN="min"]="MIN",t[t.MAX="max"]="MAX",t[t.ARGMIN="argmin"]="ARGMIN",t[t.ARGMAX="argmax"]="ARGMAX"}(e.AggregateOp||(e.AggregateOp={}));var n=e.AggregateOp;e.AGGREGATE_OPS=[n.VALUES,n.COUNT,n.VALID,n.MISSING,n.DISTINCT,n.SUM,n.MEAN,n.AVERAGE,n.VARIANCE,n.VARIANCEP,n.STDEV,n.STDEVP,n.MEDIAN,n.Q1,n.Q3,n.MODESKEW,n.MIN,n.MAX,n.ARGMIN,n.ARGMAX],e.SHARED_DOMAIN_OPS=[n.MEAN,n.AVERAGE,n.STDEV,n.STDEVP,n.MEDIAN,n.Q1,n.Q3,n.MIN,n.MAX]},function(t,e){"use strict";!function(t){t[t.YEAR="year"]="YEAR",t[t.MONTH="month"]="MONTH",t[t.DAY="day"]="DAY",t[t.DATE="date"]="DATE",t[t.HOURS="hours"]="HOURS",t[t.MINUTES="minutes"]="MINUTES",t[t.SECONDS="seconds"]="SECONDS",t[t.MILLISECONDS="milliseconds"]="MILLISECONDS",t[t.YEARMONTH="yearmonth"]="YEARMONTH",t[t.YEARMONTHDAY="yearmonthday"]="YEARMONTHDAY",t[t.YEARMONTHDATE="yearmonthdate"]="YEARMONTHDATE",t[t.YEARDAY="yearday"]="YEARDAY",t[t.YEARDATE="yeardate"]="YEARDATE",t[t.YEARMONTHDAYHOURS="yearmonthdayhours"]="YEARMONTHDAYHOURS",t[t.YEARMONTHDAYHOURSMINUTES="yearmonthdayhoursminutes"]="YEARMONTHDAYHOURSMINUTES",t[t.YEARMONTHDAYHOURSMINUTESSECONDS="yearmonthdayhoursminutesseconds"]="YEARMONTHDAYHOURSMINUTESSECONDS",t[t.HOURSMINUTES="hoursminutes"]="HOURSMINUTES",t[t.HOURSMINUTESSECONDS="hoursminutesseconds"]="HOURSMINUTESSECONDS",t[t.MINUTESSECONDS="minutesseconds"]="MINUTESSECONDS",t[t.SECONDSMILLISECONDS="secondsmilliseconds"]="SECONDSMILLISECONDS"}(e.TimeUnit||(e.TimeUnit={}));var n=e.TimeUnit;e.TIMEUNITS=[n.YEAR,n.MONTH,n.DAY,n.DATE,n.HOURS,n.MINUTES,n.SECONDS,n.MILLISECONDS,n.YEARMONTH,n.YEARMONTHDAY,n.YEARMONTHDATE,n.YEARDAY,n.YEARDATE,n.YEARMONTHDAYHOURS,n.YEARMONTHDAYHOURSMINUTES,n.YEARMONTHDAYHOURSMINUTESSECONDS,n.HOURSMINUTES,n.HOURSMINUTESSECONDS,n.MINUTESSECONDS,n.SECONDSMILLISECONDS]},function(t,e,n){"use strict";function r(t){var e=new a.Model(t),n=e.config(),r=p.extend(t.name?{name:t.name}:{},{width:1,height:1,padding:"auto"},n.viewport?{viewport:n.viewport}:{},n.background?{background:n.background}:{},{data:u.compileData(e).concat([s.compileLayoutData(e)]),marks:[i(e)]});return{spec:r}}function i(t){var e=t.spec(),n=p.extend({name:e.name?e.name+"-root":"root",type:"group"},e.description?{description:e.description}:{},{from:{data:g.LAYOUT},properties:{update:{width:{field:"width"},height:{field:"height"}}}}),r=f.compileMark(t);if(t.has(m.ROW)||t.has(m.COLUMN))p.extend(n,l.facetMixins(t,r));else{d.applyConfig(n.properties.update,t.config().cell,d.FILL_STROKE_CONFIG.concat(["clip"])),n.marks=r,n.scales=h.compileScales(t);var i=(t.has(m.X)&&t.axis(m.X)?[o.compileAxis(m.X,t)]:[]).concat(t.has(m.Y)&&t.axis(m.Y)?[o.compileAxis(m.Y,t)]:[]);i.length>0&&(n.axes=i)}var a=c.compileLegends(t);return a.length>0&&(n.legends=a),n}var a=n(178),o=n(190),u=n(191),s=n(192),l=n(193),c=n(194),f=n(195),h=n(189),d=n(186),p=n(165),g=n(171),m=n(164),v=n(178);e.Model=v.Model,e.compile=r,e.compileRootGroup=i},function(t,e,n){"use strict";var r=n(179),i=n(164),a=n(171),o=n(174),u=n(173),s=n(183),l=n(172),c=n(165),f=n(184),h=n(185),d=n(189),p=n(180),g=n(175),m=n(164),v=function(){ +c.spec.scale&&(a=s.scale(g,c.spec,a,n,r)),(a!==c.signal.value()||c.signal.verbose())&&(c.signal.value(a),d.signals[c.signal.name()]=1));g.propagate(d,h)}function r(t,e,n,i){e.forEach(function(e){e.event?h(t,e,n,i):e.signal?d(t,e,n,i):e.start?p(t,e,n,i):e.stream&&(e.filters&&e.stream.forEach(function(t){t.filters=a.array(t.filters).concat(e.filters)}),r(t,e.stream,n,i))})}function h(t,e,n,r){var i=e.event,u=e.name,s=e.mark,l=e.target,c=a.array(e.filters),f=l?b:_,h=l?l+":"+i:i,d=f.nodes[h]||(f.nodes[h]=new o.Node(g)),p=f.handlers[h]||(f.handlers[h]=[]);u?c.push('!!event.vg.name["'+u+'"]'):s&&c.push("event.vg.item.mark && event.vg.item.mark.marktype==="+a.str(s)),p.push({signal:t,exp:n,spec:r,filters:c.map(function(t){return g.expr(t)})}),d.addListener(t)}function d(t,e,n,r){var i=t.name(),a=g.signal(i+c,null);a.evaluate=function(a){if(!a.signals[e.signal])return g.doNotPropagate;var o=n.fn();return r.scale&&(o=s.scale(g,r,o)),(o!==t.value()||t.verbose())&&(t.value(o),a.signals[i]=1,a.reflow=!0),a},a.dependency(o.Dependencies.SIGNALS,e.signal),a.addListener(t),g.signal(e.signal).addListener(a)}function p(t,e,n,i){var a=t.name(),o=a+l,u=e.middle,s=u.filters||(u.filters=[]),c=g.signal(o)||g.signal(o,!1);r(c,[e.start],m,{}),r(c,[e.end],v,{}),s.push(c.name()),r(t,[e.middle],n,i)}var g=t.model(),m=g.expr("true"),v=g.expr("false"),y=g.defs().signals,x={handlers:{},nodes:{}},_=a.duplicate(x),b=a.duplicate(x);return a.array(y).forEach(function(t){var e=g.signal(t.name);t.expr||a.array(t.streams).forEach(function(t){var n=u.parse(t.type),i=g.expr(t.expr);r(e,n,i,t)})}),a.keys(_.handlers).forEach(function(r){t.on(r,function(t,i){t.preventDefault(),e(t,i),n(_,r,i&&i.datum||{},t)})}),a.keys(b.handlers).forEach(function(t){function r(r){e(r),n(b,t,i.select(this).datum(),r)}if("undefined"!=typeof window){for(var a=b.handlers[t],o=t.split(":"),u="window"===o[0]?[window]:window.document.querySelectorAll(o[0]),s=0;sr)d=!1;else{for(r>1&&(r=1),i=f.ease(r),a=0,u=f.length;u>a;++a)e[f[a].property]=f[a](i);e.touch(),o.item(e),1===r?(f.remove&&(e.status=s.EXIT,e.remove()),c.next=f.next,f=c):d=!1}return this.callback(),d}var a=n(57),o=n(60).bound,u=n(4).Tuple,s=n(151).STATUS,l=r.prototype,c={text:1,url:1};l.interpolate=function(t,e){var n,r,i,o,l=null;for(n in e)r=t[n],i=e[n],r!==i&&(c[n]||void 0===r?u.set(t,n,i):"number"!=typeof r||isFinite(r)?(o=a.interpolate(r,i),o.property=n,(l||(l=[])).push(o)):u.set(t,n,i));return null===l&&t.status===s.EXIT&&(l=[]),null!=l&&(l.item=t,l.ease=t.mark.ease||this.ease,l.next=this.updates.next,this.updates.next=l),this},l.start=function(t){for(var e=this,n=e.updates,r=n.next;null!=r;n=r,r=n.next)r.item.status===s.EXIT&&(r.item.status=s.UPDATE,r.remove=!0);e.callback=t,a.timer(function(t){return i.call(e,t)})},t.exports=r},function(t,e,n){function r(t,e,n){u.call(this,t,e,n),this._type="canvas",this._renderers={canvas:a,svg:o}}var i=n(60).render,a=i.canvas,o=i.svg.string,u=n(157),s=r.prototype=new u;s.renderer=function(t){return t&&(this._type=t),u.prototype.renderer.apply(this,arguments)},s.canvas=function(){return"canvas"===this._type?this._renderer.canvas():null},s.canvasAsync=function(t){function e(){0===n.pendingImages()?(r.render(),t(r.canvas())):setTimeout(e,10)}var n=this._renderer,r=this;return"canvas"!==this._type?null:void(n.pendingImages()>0?e():t(this.canvas()))},s.svg=function(){return"svg"===this._type?this._renderer.svg():null},s.initialize=function(){var t=this._width,e=this._height,n=this._bgcolor,r=this._padding,i=this.model().config();return this._viewport&&(t=this._viewport[0]-(r?r.left+r.right:0),e=this._viewport[1]-(r?r.top+r.bottom:0)),this._renderer=(this._renderer||new this._io.Renderer(i.load)).initialize(null,t,e,r).background(n),this},t.exports=r},function(t,e,n){function r(t,e,n){var r=t.schema;r&&(r.refs&&i.extend(n.refs,r.refs),r.defs&&i.extend(n.defs,r.defs))}var i=n(12),a=n(52),o=n(154),u=n(156);t.exports=function(t){var e=null;return t=t||{},t.url?e=i.json(i.extend({url:t.url},u.load)):(e={$schema:"http://json-schema.org/draft-04/schema#",title:"Vega Visualization Specification Language",defs:{},refs:{},$ref:"#/defs/spec"},i.keys(a).forEach(function(n){r(a[n],t,e)}),r(o,t,e)),t.properties&&i.keys(t.properties).forEach(function(n){e.defs.propset.properties[n]={$ref:"#/refs/"+t.properties[n]+"Value"}}),t.propertySets&&i.keys(t.propertySets).forEach(function(t){e.defs.mark.properties.properties.properties[t]={$ref:"#/defs/propset"}}),e}},function(t,e,n){"use strict";var r=n(163),i=n(164),a=n(171),o=n(173),u=n(174),s=n(177),l=n(202),c=n(203),f=n(176),h=n(172),d=n(204),p=n(165);e.bin=r,e.channel=i,e.compile=s.compile,e.data=a,e.encoding=o,e.fieldDef=u,e.shorthand=l,e.spec=c,e.timeUnit=f,e.type=h,e.util=p,e.validate=d,e.version="__VERSION__"},function(t,e,n){"use strict";function r(t){switch(t){case i.ROW:case i.COLUMN:case i.SIZE:case i.SHAPE:return 6;default:return 10}}var i=n(164);e.autoMaxBins=r},function(t,e,n){"use strict";function r(t,e){return!!i(t)[e]}function i(t){switch(t){case e.X:case e.Y:case e.COLOR:case e.DETAIL:case e.ORDER:case e.ROW:case e.COLUMN:return{point:!0,tick:!0,circle:!0,square:!0,bar:!0,line:!0,area:!0,text:!0};case e.SIZE:return{point:!0,tick:!0,circle:!0,square:!0,bar:!0,text:!0};case e.SHAPE:return{point:!0};case e.TEXT:return{text:!0};case e.PATH:return{line:!0}}return{}}function a(t){switch(t){case e.X:case e.Y:case e.COLOR:case e.LABEL:return{measure:!0,dimension:!0};case e.ROW:case e.COLUMN:case e.SHAPE:case e.DETAIL:return{measure:!1,dimension:!0};case e.SIZE:case e.TEXT:return{measure:!0,dimension:!1};case e.PATH:return{measure:!1,dimension:!0}}throw new Error("Invalid encoding channel"+t)}function o(t){return!u.contains([e.DETAIL,e.PATH,e.TEXT,e.LABEL,e.ORDER],t)}var u=n(165);!function(t){t[t.X="x"]="X",t[t.Y="y"]="Y",t[t.ROW="row"]="ROW",t[t.COLUMN="column"]="COLUMN",t[t.SHAPE="shape"]="SHAPE",t[t.SIZE="size"]="SIZE",t[t.COLOR="color"]="COLOR",t[t.TEXT="text"]="TEXT",t[t.DETAIL="detail"]="DETAIL",t[t.LABEL="label"]="LABEL",t[t.PATH="path"]="PATH",t[t.ORDER="order"]="ORDER"}(e.Channel||(e.Channel={}));var s=e.Channel;e.X=s.X,e.Y=s.Y,e.ROW=s.ROW,e.COLUMN=s.COLUMN,e.SHAPE=s.SHAPE,e.SIZE=s.SIZE,e.COLOR=s.COLOR,e.TEXT=s.TEXT,e.DETAIL=s.DETAIL,e.LABEL=s.LABEL,e.PATH=s.PATH,e.ORDER=s.ORDER,e.CHANNELS=[e.X,e.Y,e.ROW,e.COLUMN,e.SIZE,e.SHAPE,e.COLOR,e.PATH,e.ORDER,e.TEXT,e.DETAIL,e.LABEL],e.supportMark=r,e.getSupportedMark=i,e.getSupportedRole=a,e.hasScale=o},function(t,e,n){"use strict";function r(t,e){return t.indexOf(e)>-1}function i(t,e){return t.filter(function(t){return!r(e,t)})}function a(t,e,n){if(t.forEach)t.forEach.call(n,e);else for(var r in t)t.hasOwnProperty(r)&&e.call(n,t[r],r,t)}function o(t,e,n,r){if(t.reduce)return t.reduce.call(r,e,n);for(var i in t)t.hasOwnProperty(i)&&(n=e.call(r,n,t[i],i,t));return n}function u(t,e,n){if(t.map)return t.map.call(n,e);var r=[];for(var i in t)t.hasOwnProperty(i)&&r.push(e.call(n,t[i],i,t));return r}function s(t,e){for(var n=0,r=0;rn;++n)r+=e;return r}function r(t,e,n){var r=0,i=t.split(s);return t=n?(i=i.reverse()).filter(function(t){return r+=t.length,e>=r}).reverse():i.filter(function(t){return r+=t.length,e>=r}),t.length?t.join("").trim():i[0].slice(0,e)}var i=t.exports,a="__name__";i.namedfunc=function(t,e){return e[a]=t,e},i.name=function(t){return null==t?null:t[a]},i.identity=function(t){return t},i["true"]=i.namedfunc("true",function(){return!0}),i["false"]=i.namedfunc("false",function(){return!1}),i.duplicate=function(t){return JSON.parse(JSON.stringify(t))},i.equal=function(t,e){return JSON.stringify(t)===JSON.stringify(e)},i.extend=function(t){for(var e,n,r=1,i=arguments.length;i>r;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t},i.length=function(t){return null!=t&&null!=t.length?t.length:null},i.keys=function(t){var e,n=[];for(e in t)n.push(e);return n},i.vals=function(t){var e,n=[];for(e in t)n.push(t[e]);return n},i.toMap=function(t,e){return(e=i.$(e))?t.reduce(function(t,n){return t[e(n)]=1,t},{}):t.reduce(function(t,e){return t[e]=1,t},{})},i.keystr=function(t){var e=t.length;if(!e)return"";for(var n=String(t[0]),r=1;e>r;++r)n+="|"+String(t[r]);return n};var o=Object.prototype.toString;i.isObject=function(t){return t===Object(t)},i.isFunction=function(t){return"[object Function]"===o.call(t)},i.isString=function(t){return"string"==typeof value||"[object String]"===o.call(t)},i.isArray=Array.isArray||function(t){return"[object Array]"===o.call(t)},i.isNumber=function(t){return"number"==typeof t||"[object Number]"===o.call(t)},i.isBoolean=function(t){return t===!0||t===!1||"[object Boolean]"==o.call(t)},i.isDate=function(t){return"[object Date]"===o.call(t)},i.isValid=function(t){return null!=t&&t===t},i.isBuffer="function"==typeof e&&e.isBuffer||i["false"],i.number=function(t){return null==t||""===t?null:+t},i["boolean"]=function(t){return null==t||""===t?null:"false"===t?!1:!!t},i.date=function(t,e){var n=e?e:Date;return null==t||""===t?null:n.parse(t)},i.array=function(t){return null!=t?i.isArray(t)?t:[t]:[]},i.str=function(t){return i.isArray(t)?"["+t.map(i.str)+"]":i.isObject(t)||i.isString(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t};var u=/\[(.*?)\]|[^.\[]+/g;i.field=function(t){return String(t).match(u).map(function(t){return"["!==t[0]?t:"'"!==t[1]&&'"'!==t[1]?t.slice(1,-1):t.slice(2,-2).replace(/\\(["'])/g,"$1")})},i.accessor=function(t){return null==t||i.isFunction(t)?t:i.namedfunc(t,Function("x","return x["+i.field(t).map(i.str).join("][")+"];"))},i.$=i.accessor,i.mutator=function(t){var e;return i.isString(t)&&(e=i.field(t)).length>1?function(t,n){for(var r=0;ri;++i){if(o=t[i],u=o(n),s=o(r),s>u)return-1*e[i];if(u>s)return e[i]}return 0}},i.cmp=function(t,e){return e>t?-1:t>e?1:t>=e?0:null===t?-1:null===e?1:NaN},i.numcmp=function(t,e){return t-e},i.stablesort=function(t,e,n){var r=t.reduce(function(t,e,r){return t[n(e)]=r,t},{});return t.sort(function(t,i){var a=e(t),o=e(i);return o>a?-1:a>o?1:r[n(t)]-r[n(i)]}),t},i.pad=function(t,e,r,i){i=i||" ";var a=e-t.length;if(0>=a)return t;switch(r){case"left":return n(a,i)+t;case"middle":case"center":return n(Math.floor(a/2),i)+t+n(Math.ceil(a/2),i);default:return t+n(a,i)}},i.truncate=function(t,e,n,i,a){var o=t.length;if(e>=o)return t;a=void 0!==a?String(a):"…";var u=Math.max(0,e-a.length);switch(n){case"left":return a+(i?r(t,u,1):t.slice(o-u));case"middle":case"center":var s=Math.ceil(u/2),l=Math.floor(u/2);return(i?r(t,s):t.slice(0,s))+a+(i?r(t,l,1):t.slice(o-l));default:return(i?r(t,u):t.slice(0,u))+a}};var s=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/}).call(e,n(14).Buffer)},function(t,e,n){var r=n(166),i=t.exports;i.repeat=function(t,e){var n,r=Array(e);for(n=0;e>n;++n)r[n]=t;return r},i.zeros=function(t){return i.repeat(0,t)},i.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n==1/0)throw new Error("Infinite range");var r,i=[],a=-1;if(0>n)for(;(r=t+n*++a)>e;)i.push(r);else for(;(r=t+n*++a)=t&&e>=r?1/n:0},r.cdf=function(r){return t>r?0:r>e?1:(r-t)/n},r.icdf=function(e){return e>=0&&1>=e?t+e*n:NaN},r},i.random.integer=function(t,e){void 0===e&&(e=t,t=0);var n=e-t,r=function(){return t+Math.floor(n*Math.random())};return r.samples=function(t){return i.zeros(t).map(r)},r.pdf=function(r){return r===Math.floor(r)&&r>=t&&e>r?1/n:0},r.cdf=function(r){var i=Math.floor(r);return t>i?0:i>=e?1:(i-t+1)/n},r.icdf=function(e){return e>=0&&1>=e?t-1+Math.floor(e*n):NaN},r},i.random.normal=function(t,e){t=t||0,e=e||1;var n,r=function(){var r,i,a=0,o=0;if(void 0!==n)return a=n,n=void 0,a;do a=2*Math.random()-1,o=2*Math.random()-1,r=a*a+o*o;while(0===r||r>1);return i=Math.sqrt(-2*Math.log(r)/r),n=t+o*i*e,t+a*i*e};return r.samples=function(t){return i.zeros(t).map(r)},r.pdf=function(n){var r=Math.exp(Math.pow(n-t,2)/(-2*Math.pow(e,2)));return 1/(e*Math.sqrt(2*Math.PI))*r},r.cdf=function(n){var r,i=(n-t)/e,a=Math.abs(i);if(a>37)r=0;else{var o,u=Math.exp(-a*a/2);7.07106781186547>a?(o=.0352624965998911*a+.700383064443688,o=o*a+6.37396220353165,o=o*a+33.912866078383,o=o*a+112.079291497871,o=o*a+221.213596169931,o=o*a+220.206867912376,r=u*o,o=.0883883476483184*a+1.75566716318264,o=o*a+16.064177579207,o=o*a+86.7807322029461,o=o*a+296.564248779674,o=o*a+637.333633378831,o=o*a+793.826512519948,o=o*a+440.413735824752,r/=o):(o=a+.65,o=a+4/o,o=a+3/o,o=a+2/o,o=a+1/o,r=u/o/2.506628274631)}return i>0?1-r:r},r.icdf=function(n){if(0>=n||n>=1)return NaN;var r=2*n-1,i=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),a=2/(Math.PI*i)+Math.log(1-Math.pow(r,2))/2,o=Math.log(1-r*r)/i,u=(r>0?1:-1)*Math.sqrt(Math.sqrt(a*a-o)-a);return t+e*Math.SQRT2*u},r},i.random.bootstrap=function(t,e){var n=t.filter(r.isValid),a=n.length,o=e?i.random.normal(0,e):null,u=function(){return n[~~(Math.random()*a)]+(o?o():0)};return u.samples=function(t){return i.zeros(t).map(u)},u}},function(t,e,n){function r(t){if(!t)throw Error("Missing binning options.");var e,n,r,u,s,l,c,f=t.maxbins||15,h=t.base||10,d=Math.log(h),p=t.div||[5,2],g=t.min,m=t.max,v=m-g;if(t.step)e=t.step;else if(t.steps)e=t.steps[Math.min(t.steps.length-1,i(t.steps,v/f,0,t.steps.length))];else{for(n=Math.ceil(Math.log(f)/d),r=t.minstep||0,e=Math.max(r,Math.pow(h,Math.round(Math.log(v)/d)-n));Math.ceil(v/e)>f;)e*=h;for(l=0;l=r&&f>=v/s&&(e=s)}return s=Math.log(e),u=s>=0?0:~~(-s/d)+1,c=Math.pow(h,-u-1),g=Math.min(g,Math.floor(g/e+c)*e),m=Math.ceil(m/e)*e,{start:g,stop:m,step:e,unit:{precision:u},value:a,index:o}}function i(t,e,n,r){for(;r>n;){var i=n+r>>>1;l.cmp(t[i],e)<0?n=i+1:r=i}return n}function a(t){return this.step*Math.floor(t/this.step+f)}function o(t){return Math.floor((t-this.start)/this.step+f)}function u(t){return this.unit.date(a.call(this,t))}function s(t){return o.call(this,this.unit.unit(t))}var l=n(166),c=n(169),f=1e-15;r.date=function(t){if(!t)throw Error("Missing date binning options.");var e=t.utc?c.utc:c,n=t.min,i=t.max,a=t.maxbins||20,o=t.minbins||4,l=+i-+n,f=t.unit?e[t.unit]:e.find(l,o,a),h=r({min:null!=f.min?f.min:f.unit(n),max:null!=f.max?f.max:f.unit(i),maxbins:a,minstep:f.minstep,steps:f.step});return h.unit=f,h.index=s,t.raw||(h.value=u),h},t.exports=r},function(t,e,n){function r(t){return l.setTime(+t),l}function i(t,e,n,r,i,a){var o={type:t,date:e,unit:n};return r?o.step=r:o.minstep=1,null!=i&&(o.min=i),null!=a&&(o.max=a),o}function a(t,e,n,r,a,o){return i(t,function(t){return e.offset(n,t)},function(t){return e.count(n,t)},r,a,o)}function o(t,e,n,r){var i,a,o,u=p[0];for(i=1,a=p.length;a>i;++i)if(u=p[i],e>u[0]){if(o=e/u[0],o>r)return t[p[i-1][1]];if(o>=n)return t[u[1]]}return t[p[a-1][1]]}function u(t){var e,n,r={};for(e=0,n=t.length;n>e;++e)r[t[e].type]=t[e];return r.find=function(e,n,r){return o(t,e,n,r)},r}var s=n(170),l=new Date,c=new Date(0,0,1).setFullYear(0),f=new Date(Date.UTC(0,0,1)).setUTCFullYear(0),h=[a("second",s.second,c),a("minute",s.minute,c),a("hour",s.hour,c),a("day",s.day,c,[1,7]),a("month",s.month,c,[1,3,6]),a("year",s.year,c),i("seconds",function(t){return new Date(1970,0,1,0,0,t)},function(t){return r(t).getSeconds()},null,0,59),i("minutes",function(t){return new Date(1970,0,1,0,t)},function(t){return r(t).getMinutes()},null,0,59),i("hours",function(t){return new Date(1970,0,1,t)},function(t){return r(t).getHours()},null,0,23),i("weekdays",function(t){return new Date(1970,0,4+t)},function(t){return r(t).getDay()},[1],0,6),i("dates",function(t){return new Date(1970,0,t)},function(t){return r(t).getDate()},[1],1,31),i("months",function(t){return new Date(1970,t%12,1)},function(t){return r(t).getMonth()},[1],0,11)],d=[a("second",s.utcSecond,f),a("minute",s.utcMinute,f),a("hour",s.utcHour,f),a("day",s.utcDay,f,[1,7]),a("month",s.utcMonth,f,[1,3,6]),a("year",s.utcYear,f),i("seconds",function(t){return new Date(Date.UTC(1970,0,1,0,0,t))},function(t){return r(t).getUTCSeconds()},null,0,59),i("minutes",function(t){return new Date(Date.UTC(1970,0,1,0,t))},function(t){return r(t).getUTCMinutes()},null,0,59),i("hours",function(t){return new Date(Date.UTC(1970,0,1,t))},function(t){return r(t).getUTCHours()},null,0,23),i("weekdays",function(t){return new Date(Date.UTC(1970,0,4+t))},function(t){return r(t).getUTCDay()},[1],0,6),i("dates",function(t){return new Date(Date.UTC(1970,0,t))},function(t){return r(t).getUTCDate()},[1],1,31),i("months",function(t){return new Date(Date.UTC(1970,t%12,1))},function(t){return r(t).getUTCMonth()},[1],0,11)],p=[[31536e6,5],[7776e6,4],[2592e6,4],[12096e5,3],[6048e5,3],[1728e5,3],[864e5,3],[432e5,2],[216e5,2],[108e5,2],[36e5,2],[18e5,1],[9e5,1],[3e5,1],[6e4,1],[3e4,0],[15e3,0],[5e3,0],[1e3,0]];t.exports=u(h),t.exports.utc=u(d)},function(t,e,n){!function(t,n){n(e)}(this,function(t){"use strict";function e(t,n,r,o){function u(e){return t(e=new Date(+e)),e}return u.floor=u,u.round=function(e){var r=new Date(+e),i=new Date(e-1);return t(r),t(i),n(i,1),i-e>e-r?r:i},u.ceil=function(e){return t(e=new Date(e-1)),n(e,1),e},u.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},u.range=function(e,r,i){var a=[];if(e=new Date(e-1),r=new Date(+r),i=null==i?1:Math.floor(i),!(r>e&&i>0))return a;for(n(e,1),t(e),r>e&&a.push(new Date(+e));n(e,i),t(e),r>e;)a.push(new Date(+e));return a},u.filter=function(r){return e(function(e){for(;t(e),!r(e);)e.setTime(e-1)},function(t,e){for(;--e>=0;)for(;n(t,1),!r(t););})},r&&(u.count=function(e,n){return i.setTime(+e),a.setTime(+n),t(i),t(a),Math.floor(r(i,a))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(o?function(e){return o(e)%t===0}:function(e){return u.count(0,e)%t===0}):u:null}),u}function n(t){return e(function(e){e.setHours(0,0,0,0),e.setDate(e.getDate()-(e.getDay()+7-t)%7)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5})}function r(t){return e(function(e){e.setUTCHours(0,0,0,0),e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/6048e5})}var i=new Date,a=new Date,o=e(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});o.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?e(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):o:null};var u=e(function(t){t.setMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getSeconds()}),s=e(function(t){t.setSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getMinutes()}),l=e(function(t){t.setMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),c=e(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5},function(t){return t.getDate()-1}),f=n(0),h=n(1),d=n(2),p=n(3),g=n(4),m=n(5),v=n(6),y=e(function(t){t.setHours(0,0,0,0),t.setDate(1)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),x=e(function(t){t.setHours(0,0,0,0),t.setMonth(0,1)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}),_=e(function(t){t.setUTCMilliseconds(0)},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),b=e(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+6e4*e)},function(t,e){return(e-t)/6e4},function(t){return t.getUTCMinutes()}),M=e(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),w=e(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),k=r(0),E=r(1),S=r(2),A=r(3),T=r(4),O=r(5),N=r(6),L=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCDate(1)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),C=e(function(t){t.setUTCHours(0,0,0,0),t.setUTCMonth(0,1)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}),R=o.range,I=u.range,D=s.range,U=l.range,P=c.range,z=f.range,j=h.range,q=d.range,$=p.range,F=g.range,Y=m.range,H=v.range,B=f.range,V=y.range,X=x.range,W=o,G=R,Z=_.range,J=b.range,Q=M.range,K=w.range,tt=k.range,et=E.range,nt=S.range,rt=A.range,it=T.range,at=O.range,ot=N.range,ut=k.range,st=L.range,lt=C.range,ct="0.1.1";t.version=ct,t.milliseconds=R,t.seconds=I,t.minutes=D,t.hours=U,t.days=P,t.sundays=z,t.mondays=j,t.tuesdays=q,t.wednesdays=$,t.thursdays=F,t.fridays=Y,t.saturdays=H,t.weeks=B,t.months=V,t.years=X,t.utcMillisecond=W,t.utcMilliseconds=G,t.utcSeconds=Z,t.utcMinutes=J,t.utcHours=Q,t.utcDays=K,t.utcSundays=tt,t.utcMondays=et,t.utcTuesdays=nt,t.utcWednesdays=rt,t.utcThursdays=it,t.utcFridays=at,t.utcSaturdays=ot,t.utcWeeks=ut,t.utcMonths=st,t.utcYears=lt,t.millisecond=o,t.second=u,t.minute=s,t.hour=l,t.day=c,t.sunday=f,t.monday=h,t.tuesday=d,t.wednesday=p,t.thursday=g,t.friday=m,t.saturday=v,t.week=f,t.month=y,t.year=x,t.utcSecond=_,t.utcMinute=b,t.utcHour=M,t.utcDay=w,t.utcSunday=k,t.utcMonday=E,t.utcTuesday=S,t.utcWednesday=A,t.utcThursday=T,t.utcFriday=O,t.utcSaturday=N,t.utcWeek=k,t.utcMonth=L,t.utcYear=C,t.interval=e})},function(t,e,n){"use strict";var r=n(172);!function(t){t[t.JSON="json"]="JSON",t[t.CSV="csv"]="CSV",t[t.TSV="tsv"]="TSV"}(e.DataFormat||(e.DataFormat={}));e.DataFormat;e.SUMMARY="summary",e.SOURCE="source",e.STACKED_SCALE="stacked_scale",e.LAYOUT="layout",e.types={"boolean":r.Type.NOMINAL,number:r.Type.QUANTITATIVE,integer:r.Type.QUANTITATIVE,date:r.Type.TEMPORAL,string:r.Type.NOMINAL}},function(t,e){"use strict";function n(t){var n=t;return e.TYPE_FROM_SHORT_TYPE[n.toUpperCase()]||n.toLowerCase()}!function(t){t[t.QUANTITATIVE="quantitative"]="QUANTITATIVE",t[t.ORDINAL="ordinal"]="ORDINAL",t[t.TEMPORAL="temporal"]="TEMPORAL",t[t.NOMINAL="nominal"]="NOMINAL"}(e.Type||(e.Type={}));var r=e.Type;e.QUANTITATIVE=r.QUANTITATIVE,e.ORDINAL=r.ORDINAL,e.TEMPORAL=r.TEMPORAL,e.NOMINAL=r.NOMINAL,e.SHORT_TYPE={quantitative:"Q",temporal:"T",nominal:"N",ordinal:"O"},e.TYPE_FROM_SHORT_TYPE={Q:e.QUANTITATIVE,T:e.TEMPORAL,O:e.ORDINAL,N:e.NOMINAL},e.getFullName=n},function(t,e,n){"use strict";function r(t){var e=0;return t.color&&e++,t.size&&e++,t.shape&&e++,e}function i(t){return f.CHANNELS.filter(function(e){return a(t,e)})}function a(t,e){var n=t&&t[e];return n&&(void 0!==n.field||h.isArray(n)&&n.length>0)}function o(t){return h.any(f.CHANNELS,function(e){return!(!a(t,e)||!t[e].aggregate)})}function u(t){var e=[];return f.CHANNELS.forEach(function(n){a(t,n)&&(h.isArray(t[n])?t[n].forEach(function(t){e.push(t)}):e.push(t[n]))}),e}function s(t,e,n){var r=0;f.CHANNELS.forEach(function(i){a(t,i)&&(h.isArray(t[i])?t[i].forEach(function(t){e.call(n,t,i,r++)}):e.call(n,t[i],i,r++))})}function l(t,e,n){var r=[];return f.CHANNELS.forEach(function(i){a(t,i)&&(h.isArray(t[i])?t[i].forEach(function(a){r.push(e.call(n,a,i,t))}):r.push(e.call(n,t[i],i,t)))}),r}function c(t,e,n,r){var i=n;return f.CHANNELS.forEach(function(n){a(t,n)&&(h.isArray(t[n])?t[n].forEach(function(a){i=e.call(r,i,a,n,t)}):i=e.call(r,i,t[n],n,t))}),i}var f=n(164),h=n(165);e.countRetinal=r,e.channels=i,e.has=a,e.isAggregate=o,e.fieldDefs=u,e.forEach=s,e.map=l,e.reduce=c},function(t,e,n){"use strict";function r(t,e){void 0===e&&(e={});var n=(e.datum?"datum.":"")+(e.prefn||""),r=e.suffix||"",i=t.field;return s(t)?n+"count"+r:e.fn?n+e.fn+"_"+i+r:!e.nofn&&t.bin?n+"bin_"+i+(e.binSuffix||r||"_start"):e.nofn||e.noAggregate||!t.aggregate?!e.nofn&&t.timeUnit?n+t.timeUnit+"_"+i+r:n+i:n+t.aggregate+"_"+i+r}function i(t){return p.contains([d.NOMINAL,d.ORDINAL],t.type)||!!t.bin||t.type===d.TEMPORAL&&!!t.timeUnit}function a(t){return t&&t.field&&i(t)}function o(t){return t&&t.field&&!i(t)}function u(){return{field:"*",aggregate:f.AggregateOp.COUNT,type:d.QUANTITATIVE,displayName:e.COUNT_DISPLAYNAME}}function s(t){return t.aggregate===f.AggregateOp.COUNT}function l(t,e,n){void 0===n&&(n={});var r=e[t.field],i=t.type;if(t.bin){var a=t.bin,o="boolean"==typeof a?void 0:a.maxbins;void 0===o&&(o=10);var u=p.getbins(r,o);return(u.stop-u.start)/u.step}if(i===d.TEMPORAL){var s=t.timeUnit;switch(s){case h.TimeUnit.SECONDS:return 60;case h.TimeUnit.MINUTES:return 60;case h.TimeUnit.HOURS:return 24;case h.TimeUnit.DAY:return 7;case h.TimeUnit.DATE:return 31;case h.TimeUnit.MONTH:return 12;case h.TimeUnit.YEAR:var l=e["year_"+t.field];return l?l.distinct-(r.missing>0&&n[i]?1:0):null}}return t.aggregate?1:r.distinct-(r.missing>0&&n[i]?1:0)}function c(t){if(s(t))return e.COUNT_DISPLAYNAME;var n=t.aggregate||t.timeUnit||t.bin&&"bin";return n?n.toString().toUpperCase()+"("+t.field+")":t.field}var f=n(175),h=n(176),d=n(172),p=n(165);e.aggregate={type:"string","enum":f.AGGREGATE_OPS,supportedEnums:{quantitative:f.AGGREGATE_OPS,ordinal:["median","min","max"],nominal:[],temporal:["mean","median","min","max"],"":["count"]},supportedTypes:p.toMap([d.QUANTITATIVE,d.NOMINAL,d.ORDINAL,d.TEMPORAL,""])},e.field=r,e.isDimension=a,e.isMeasure=o,e.COUNT_DISPLAYNAME="Number of Records",e.count=u,e.isCount=s,e.cardinality=l,e.title=c},function(t,e){"use strict";!function(t){t[t.VALUES="values"]="VALUES",t[t.COUNT="count"]="COUNT",t[t.VALID="valid"]="VALID",t[t.MISSING="missing"]="MISSING",t[t.DISTINCT="distinct"]="DISTINCT",t[t.SUM="sum"]="SUM",t[t.MEAN="mean"]="MEAN",t[t.AVERAGE="average"]="AVERAGE",t[t.VARIANCE="variance"]="VARIANCE",t[t.VARIANCEP="variancep"]="VARIANCEP",t[t.STDEV="stdev"]="STDEV",t[t.STDEVP="stdevp"]="STDEVP",t[t.MEDIAN="median"]="MEDIAN",t[t.Q1="q1"]="Q1",t[t.Q3="q3"]="Q3",t[t.MODESKEW="modeskew"]="MODESKEW",t[t.MIN="min"]="MIN",t[t.MAX="max"]="MAX",t[t.ARGMIN="argmin"]="ARGMIN",t[t.ARGMAX="argmax"]="ARGMAX"}(e.AggregateOp||(e.AggregateOp={}));var n=e.AggregateOp;e.AGGREGATE_OPS=[n.VALUES,n.COUNT,n.VALID,n.MISSING,n.DISTINCT,n.SUM,n.MEAN,n.AVERAGE,n.VARIANCE,n.VARIANCEP,n.STDEV,n.STDEVP,n.MEDIAN,n.Q1,n.Q3,n.MODESKEW,n.MIN,n.MAX,n.ARGMIN,n.ARGMAX],e.SHARED_DOMAIN_OPS=[n.MEAN,n.AVERAGE,n.STDEV,n.STDEVP,n.MEDIAN,n.Q1,n.Q3,n.MIN,n.MAX]},function(t,e){"use strict";!function(t){t[t.YEAR="year"]="YEAR",t[t.MONTH="month"]="MONTH",t[t.DAY="day"]="DAY",t[t.DATE="date"]="DATE",t[t.HOURS="hours"]="HOURS",t[t.MINUTES="minutes"]="MINUTES",t[t.SECONDS="seconds"]="SECONDS",t[t.MILLISECONDS="milliseconds"]="MILLISECONDS",t[t.YEARMONTH="yearmonth"]="YEARMONTH",t[t.YEARMONTHDAY="yearmonthday"]="YEARMONTHDAY",t[t.YEARMONTHDATE="yearmonthdate"]="YEARMONTHDATE",t[t.YEARDAY="yearday"]="YEARDAY",t[t.YEARDATE="yeardate"]="YEARDATE",t[t.YEARMONTHDAYHOURS="yearmonthdayhours"]="YEARMONTHDAYHOURS",t[t.YEARMONTHDAYHOURSMINUTES="yearmonthdayhoursminutes"]="YEARMONTHDAYHOURSMINUTES",t[t.YEARMONTHDAYHOURSMINUTESSECONDS="yearmonthdayhoursminutesseconds"]="YEARMONTHDAYHOURSMINUTESSECONDS",t[t.HOURSMINUTES="hoursminutes"]="HOURSMINUTES",t[t.HOURSMINUTESSECONDS="hoursminutesseconds"]="HOURSMINUTESSECONDS",t[t.MINUTESSECONDS="minutesseconds"]="MINUTESSECONDS",t[t.SECONDSMILLISECONDS="secondsmilliseconds"]="SECONDSMILLISECONDS"}(e.TimeUnit||(e.TimeUnit={}));var n=e.TimeUnit;e.TIMEUNITS=[n.YEAR,n.MONTH,n.DAY,n.DATE,n.HOURS,n.MINUTES,n.SECONDS,n.MILLISECONDS,n.YEARMONTH,n.YEARMONTHDAY,n.YEARMONTHDATE,n.YEARDAY,n.YEARDATE,n.YEARMONTHDAYHOURS,n.YEARMONTHDAYHOURSMINUTES,n.YEARMONTHDAYHOURSMINUTESSECONDS,n.HOURSMINUTES,n.HOURSMINUTESSECONDS,n.MINUTESSECONDS,n.SECONDSMILLISECONDS]},function(t,e,n){"use strict";function r(t){var e=new a.Model(t),n=e.config(),r=p.extend(t.name?{name:t.name}:{},{width:1,height:1,padding:"auto"},n.viewport?{viewport:n.viewport}:{},n.background?{background:n.background}:{},{data:u.compileData(e).concat([s.compileLayoutData(e)]),marks:[i(e)]});return{spec:r}}function i(t){var e=t.spec(),n=p.extend({name:e.name?e.name+"-root":"root",type:"group"},e.description?{description:e.description}:{},{from:{data:g.LAYOUT},properties:{update:{width:{field:"width"},height:{field:"height"}}}}),r=f.compileMark(t);if(t.has(m.ROW)||t.has(m.COLUMN))p.extend(n,l.facetMixins(t,r));else{d.applyConfig(n.properties.update,t.config().cell,d.FILL_STROKE_CONFIG.concat(["clip"])),n.marks=r,n.scales=h.compileScales(t);var i=(t.has(m.X)&&t.axis(m.X)?[o.compileAxis(m.X,t)]:[]).concat(t.has(m.Y)&&t.axis(m.Y)?[o.compileAxis(m.Y,t)]:[]);i.length>0&&(n.axes=i)}var a=c.compileLegends(t);return a.length>0&&(n.legends=a),n}var a=n(178),o=n(190),u=n(191),s=n(192),l=n(193),c=n(194),f=n(195),h=n(189),d=n(186),p=n(165),g=n(171),m=n(164),v=n(178);e.Model=v.Model,e.compile=r,e.compileRootGroup=i},function(t,e,n){"use strict";var r=n(179),i=n(164),a=n(171),o=n(174),u=n(173),s=n(183),l=n(172),c=n(165),f=n(184),h=n(185),d=n(189),p=n(180),g=n(175),m=n(164),v=function(){ function t(t){var e=this;this._spec=t;var n=this._spec.mark,a=this._spec.encoding=this._spec.encoding||{},o=this._config=c.mergeDeep(c.duplicate(r.defaultConfig),t.config);u.forEach(this._spec.encoding,function(t,e){i.supportMark(e,this._spec.mark)||(console.warn(e,"dropped as it is incompatible with",this._spec.mark),delete this._spec.encoding[e].field),t.type&&(t.type=l.getFullName(t.type)),e!==i.PATH&&e!==i.ORDER||t.aggregate||t.type!==l.QUANTITATIVE||(t.aggregate=g.AggregateOp.MIN)},this);var m=this._scale=[i.X,i.Y,i.COLOR,i.SHAPE,i.SIZE,i.ROW,i.COLUMN].reduce(function(t,r){if(u.has(a,r)){var l=a[r].scale||{},f=a[r],h=d.scaleType(l,f,r,n);c.contains([i.ROW,i.COLUMN],r)?t[r]=c.extend({type:h,round:o.facet.scale.round,padding:r===i.ROW&&e.has(i.Y)||r===i.COLUMN&&e.has(i.X)?o.facet.scale.padding:0},l):t[r]=c.extend({type:h,round:o.scale.round,padding:o.scale.padding,includeRawDomain:o.scale.includeRawDomain,bandSize:r===i.X&&h===p.ScaleType.ORDINAL&&n===s.TEXT?o.scale.textBandWidth:o.scale.bandSize},l)}return t},{});this._axis=[i.X,i.Y,i.ROW,i.COLUMN].reduce(function(t,e){if(u.has(a,e)){var n=a[e].axis;n!==!1&&(t[e]=c.extend({},e===i.X||e===i.Y?o.axis:o.facet.axis,n===!0?{}:n||{}))}return t},{}),this._legend=[i.COLOR,i.SHAPE,i.SIZE].reduce(function(t,e){if(u.has(a,e)){var n=a[e].legend;n!==!1&&(t[e]=c.extend({},o.legend,n===!0?{}:n||{}))}return t},{}),this._stack=h.compileStackProperties(n,a,m,o),this._config.mark=f.compileMarkConfig(n,a,o,this._stack)}return t.prototype.stack=function(){return this._stack},t.prototype.toSpec=function(t,e){var n,r=c.duplicate(this._spec.encoding);return n={mark:this._spec.mark,encoding:r},t||(n.config=c.duplicate(this._spec.config)),e||(n.data=c.duplicate(this._spec.data)),n},t.prototype.cellWidth=function(){return(this.isFacet()?this.config().facet.cell.width:null)||this.config().cell.width},t.prototype.cellHeight=function(){return(this.isFacet()?this.config().facet.cell.height:null)||this.config().cell.height},t.prototype.mark=function(){return this._spec.mark},t.prototype.spec=function(){return this._spec},t.prototype.has=function(t){return u.has(this._spec.encoding,t)},t.prototype.encoding=function(){return this._spec.encoding},t.prototype.fieldDef=function(t){return this._spec.encoding[t]||{}},t.prototype.field=function(t,e){void 0===e&&(e={});var n=this.fieldDef(t),r=this.scale(t);return n.bin&&(e=c.extend({binSuffix:d.scaleType(r,n,t,this.mark())===p.ScaleType.ORDINAL?"_range":"_start"},e)),o.field(n,e)},t.prototype.channelWithScales=function(){var t=this;return m.CHANNELS.filter(function(e){return!!t.scale(e)})},t.prototype.reduce=function(t,e,n){return u.reduce(this._spec.encoding,t,e,n)},t.prototype.forEach=function(t,e){u.forEach(this._spec.encoding,t,e)},t.prototype.isOrdinalScale=function(t){var e=this.fieldDef(t),n=this.scale(t);return this.has(t)&&d.scaleType(n,e,t,this.mark())===p.ScaleType.ORDINAL},t.prototype.isFacet=function(){return this.has(i.ROW)||this.has(i.COLUMN)},t.prototype.dataTable=function(){return u.isAggregate(this._spec.encoding)?a.SUMMARY:a.SOURCE},t.prototype.data=function(){return this._spec.data},t.prototype.transform=function(){return this._spec.transform||{}},t.prototype.config=function(){return this._config},t.prototype.sort=function(t){return this._spec.encoding[t].sort},t.prototype.scale=function(t){return this._scale[t]},t.prototype.axis=function(t){return this._axis[t]},t.prototype.legend=function(t){return this._legend[t]},t.prototype.scaleName=function(t){var e=this.spec().name;return(e?e+"-":"")+t},t}();e.Model=v},function(t,e,n){"use strict";var r=n(180),i=n(181),a=n(182);e.defaultCellConfig={width:200,height:200},e.defaultFacetCellConfig={stroke:"#ccc",strokeWidth:1};var o={color:"#000000",opacity:.4,offset:0};e.defaultFacetConfig={scale:r.defaultFacetScaleConfig,axis:i.defaultFacetAxisConfig,grid:o,cell:e.defaultFacetCellConfig},function(t){t[t.NORMAL="normal"]="NORMAL",t[t.BOLD="bold"]="BOLD"}(e.FontWeight||(e.FontWeight={}));e.FontWeight;!function(t){t[t.CIRCLE="circle"]="CIRCLE",t[t.SQUARE="square"]="SQUARE",t[t.CROSS="cross"]="CROSS",t[t.DIAMOND="diamond"]="DIAMOND",t[t.TRIANGLEUP="triangle-up"]="TRIANGLEUP",t[t.TRIANGLEDOWN="triangle-down"]="TRIANGLEDOWN"}(e.Shape||(e.Shape={}));e.Shape;!function(t){t[t.LEFT="left"]="LEFT",t[t.RIGHT="right"]="RIGHT",t[t.CENTER="center"]="CENTER"}(e.HorizontalAlign||(e.HorizontalAlign={}));e.HorizontalAlign;!function(t){t[t.TOP="top"]="TOP",t[t.MIDDLE="middle"]="MIDDLE",t[t.BOTTOM="bottom"]="BOTTOM"}(e.VerticalAlign||(e.VerticalAlign={}));var u=e.VerticalAlign;!function(t){t[t.NORMAL="normal"]="NORMAL",t[t.ITALIC="italic"]="ITALIC"}(e.FontStyle||(e.FontStyle={}));e.FontStyle;!function(t){t[t.ZERO="zero"]="ZERO",t[t.CENTER="center"]="CENTER",t[t.NORMALIZE="normalize"]="NORMALIZE",t[t.NONE="none"]="NONE"}(e.StackOffset||(e.StackOffset={}));e.StackOffset;e.defaultMarkConfig={color:"#4682b4",strokeWidth:2,size:30,barThinSize:2,tickThickness:1,fontSize:10,baseline:u.MIDDLE,text:"Abc",shortTimeLabels:!1,applyColorToBackground:!1},e.defaultConfig={numberFormat:"s",timeFormat:"%Y-%m-%d",cell:e.defaultCellConfig,mark:e.defaultMarkConfig,scale:r.defaultScaleConfig,axis:i.defaultAxisConfig,legend:a.defaultLegendConfig,facet:e.defaultFacetConfig}},function(t,e){"use strict";!function(t){t[t.LINEAR="linear"]="LINEAR",t[t.LOG="log"]="LOG",t[t.POW="pow"]="POW",t[t.SQRT="sqrt"]="SQRT",t[t.QUANTILE="quantile"]="QUANTILE",t[t.QUANTIZE="quantize"]="QUANTIZE",t[t.ORDINAL="ordinal"]="ORDINAL",t[t.TIME="time"]="TIME",t[t.UTC="utc"]="UTC"}(e.ScaleType||(e.ScaleType={}));e.ScaleType;!function(t){t[t.SECOND="second"]="SECOND",t[t.MINUTE="minute"]="MINUTE",t[t.HOUR="hour"]="HOUR",t[t.DAY="day"]="DAY",t[t.WEEK="week"]="WEEK",t[t.MONTH="month"]="MONTH",t[t.YEAR="year"]="YEAR"}(e.NiceTime||(e.NiceTime={}));e.NiceTime;e.defaultScaleConfig={round:!0,textBandWidth:90,bandSize:21,padding:1,includeRawDomain:!1,nominalColorRange:"category10",sequentialColorRange:["#AFC6A3","#09622A"],shapeRange:"shapes",fontSizeRange:[8,40]},e.defaultFacetScaleConfig={round:!0,padding:16}},function(t,e){"use strict";!function(t){t[t.TOP="top"]="TOP",t[t.RIGHT="right"]="RIGHT",t[t.LEFT="left"]="LEFT",t[t.BOTTOM="bottom"]="BOTTOM"}(e.AxisOrient||(e.AxisOrient={}));e.AxisOrient;e.defaultAxisConfig={offset:void 0,grid:void 0,labels:!0,labelMaxLength:25,tickSize:void 0,characterWidth:6},e.defaultFacetAxisConfig={axisWidth:0,labels:!0,grid:!1,tickSize:0}},function(t,e){"use strict";e.defaultLegendConfig={orient:void 0,shortTimeLabels:!1}},function(t,e){"use strict";!function(t){t[t.AREA="area"]="AREA",t[t.BAR="bar"]="BAR",t[t.LINE="line"]="LINE",t[t.POINT="point"]="POINT",t[t.TEXT="text"]="TEXT",t[t.TICK="tick"]="TICK",t[t.CIRCLE="circle"]="CIRCLE",t[t.SQUARE="square"]="SQUARE"}(e.Mark||(e.Mark={}));var n=e.Mark;e.AREA=n.AREA,e.BAR=n.BAR,e.LINE=n.LINE,e.POINT=n.POINT,e.TEXT=n.TEXT,e.TICK=n.TICK,e.CIRCLE=n.CIRCLE,e.SQUARE=n.SQUARE},function(t,e,n){"use strict";function r(t,e,n,r){return s.extend(["filled","opacity","orient","align"].reduce(function(l,c){var f=n.mark[c];switch(c){case"filled":void 0===f&&(l[c]=t!==u.POINT&&t!==u.LINE);break;case"opacity":void 0===f&&s.contains([u.POINT,u.TICK,u.CIRCLE,u.SQUARE],t)&&(a.isAggregate(e)&&!a.has(e,i.DETAIL)||(l[c]=.7));break;case"orient":r&&(l[c]=r.groupbyChannel===i.Y?"horizontal":void 0),void 0===f&&(l[c]=o.isMeasure(e[i.X])&&!o.isMeasure(e[i.Y])?"horizontal":void 0);break;case"align":void 0===f&&(l[c]=a.has(e,i.X)?"center":"right")}return l},{}),n.mark)}var i=n(164),a=n(173),o=n(174),u=n(183),s=n(165);e.compileMarkConfig=r},function(t,e,n){"use strict";function r(t,e,n,r){var a=i(t,e,n);if(a.length>0&&d.contains([c.BAR,c.AREA],t)&&r.mark.stacked!==l.StackOffset.NONE&&h.isAggregate(e)){var o=h.has(e,u.X)&&f.isMeasure(e.x),s=h.has(e,u.Y)&&f.isMeasure(e.y);if(o&&!s)return{groupbyChannel:u.Y,fieldChannel:u.X,stackFields:a,offset:r.mark.stacked};if(s&&!o)return{groupbyChannel:u.X,fieldChannel:u.Y,stackFields:a,offset:r.mark.stacked}}return null}function i(t,e,n){return[u.COLOR,u.DETAIL].reduce(function(r,i){var a=e[i];if(h.has(e,i))if(d.isArray(a))a.forEach(function(t){r.push(f.field(t))});else{var o=a;r.push(f.field(o,{binSuffix:g.scaleType(n[i],o,i,t)===s.ScaleType.ORDINAL?"_range":"_start"}))}return r},[])}function a(t){var e=t.stack();return{type:"impute",field:t.field(e.fieldChannel),groupby:e.stackFields,orderby:[t.field(e.groupbyChannel)],method:"value",value:0}}function o(t){var e=t.stack(),n=t.encoding(),r=t.has(u.ORDER)?(d.isArray(n[u.ORDER])?n[u.ORDER]:[n[u.ORDER]]).map(p.sortField):e.stackFields.map(function(t){return"-"+t}),i=t.field(e.fieldChannel),a={type:"stack",groupby:[t.field(e.groupbyChannel)],field:t.field(e.fieldChannel),sortby:r,output:{start:i+"_start",end:i+"_end"}};return e.offset&&(a.offset=e.offset),a}var u=n(164),s=n(180),l=n(179),c=n(183),f=n(174),h=n(173),d=n(165),p=n(186),g=n(189);e.compileStackProperties=r,e.imputeTransform=a,e.stackTransform=o},function(t,e,n){"use strict";function r(t,n){var r=n.config().mark.filled,i=n.fieldDef(c.COLOR);a(t,n,e.FILL_STROKE_CONFIG);var o;n.has(c.COLOR)?o={scale:n.scaleName(c.COLOR),field:n.field(c.COLOR,i.type===d.ORDINAL?{prefn:"rank_"}:{})}:i&&i.value&&(o={value:i.value}),void 0!==o?r?t.fill=o:t.stroke=o:t[r?"fill":"stroke"]=t[r?"fill":"stroke"]||{value:n.config().mark.color}}function i(t,e,n){n.forEach(function(n){var r=e[n];void 0!==r&&(t[n]={value:r})})}function a(t,e,n){i(t,e.config().mark,n)}function o(t,e,n){var r=t.fieldDef(e);if(!g.contains([d.QUANTITATIVE,d.TEMPORAL],r.type))return{};var i={};if(r.type===d.TEMPORAL&&(i.formatType="time"),void 0!==n)i.format=n;else switch(r.type){case d.QUANTITATIVE:i.format=t.config().numberFormat;break;case d.TEMPORAL:i.format=l(t,e)||t.config().timeFormat}if(e===c.TEXT){var a=(i.formatType||"number")+(i.format?":'"+i.format+"'":"");return{text:{template:"{{"+t.field(e,{datum:!0})+" | "+a+"}}"}}}return i}function u(t,e,n){switch(e){case c.ROW:case c.COLUMN:case c.X:case c.Y:return t.axis(e).shortTimeLabels;case c.COLOR:case c.SHAPE:case c.SIZE:return t.legend(e).shortTimeLabels;case c.TEXT:return t.config().mark.shortTimeLabels;case c.LABEL:}return!1}function s(t){return(t.sort===h.SortOrder.DESCENDING?"-":"")+f.field(t)}function l(t,e){var n=t.fieldDef(e);return p.format(n.timeUnit,u(t,e,n))}var c=n(164),f=n(174),h=n(187),d=n(172),p=n(188),g=n(165);e.FILL_STROKE_CONFIG=["fill","fillOpacity","stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","opacity"],e.applyColorAndOpacity=r,e.applyConfig=i,e.applyMarkConfig=a,e.formatMixins=o,e.sortField=s,e.timeFormat=l},function(t,e){"use strict";!function(t){t[t.ASCENDING="ascending"]="ASCENDING",t[t.DESCENDING="descending"]="DESCENDING",t[t.NONE="none"]="NONE"}(e.SortOrder||(e.SortOrder={}));e.SortOrder},function(t,e,n){"use strict";function r(t,e){if(void 0===e&&(e=!1),t){var n=t.toString(),r=[];n.indexOf("year")>-1&&r.push(e?"%y":"%Y"),n.indexOf("month")>-1&&r.push(e?"%b":"%B"),n.indexOf("day")>-1?r.push(e?"%a":"%A"):n.indexOf("date")>-1&&r.push("%d");var i=[];n.indexOf("hours")>-1&&i.push("%H"),n.indexOf("minutes")>-1&&i.push("%M"),n.indexOf("seconds")>-1&&i.push("%S"),n.indexOf("milliseconds")>-1&&i.push("%L");var a=[];return r.length>0&&a.push(r.join("-")),i.length>0&&a.push(i.join(":")),a.length>0?a.join(" "):void 0}}function i(t){return t?t.indexOf("second")>-1?"second":t.indexOf("minute")>-1?"minute":t.indexOf("hour")>-1?"hour":t.indexOf("day")>-1||t.indexOf("date")>-1?"day":t.indexOf("month")>-1?"month":t.indexOf("year")>-1?"year":void 0:void 0}function a(t,e,n){function r(t,r){return void 0===r&&(r=!0),n?e+(r?", ":""):t+"("+e+")"+(r?", ":"")}void 0===n&&(n=!1);var i="datetime(",a=t.toString();return i+=a.indexOf("year")>-1?r("year"):"2006, ",i+=a.indexOf("month")>-1?r("month"):"0, ",i+=a.indexOf("day")>-1?r("day",!1)+"+1, ":a.indexOf("date")>-1?r("date"):"1, ",i+=a.indexOf("hours")>-1?r("hours"):"0, ",i+=a.indexOf("minutes")>-1?r("minutes"):"0, ",i+=a.indexOf("seconds")>-1?r("seconds"):"0, ",i+=a.indexOf("milliseconds")>-1?r("milliseconds",!1):"0",i+")"}function o(t,e){if(u.contains([s.ROW,s.COLUMN,s.SHAPE,s.COLOR],e))return null;switch(t){case l.TimeUnit.SECONDS:return u.range(0,60);case l.TimeUnit.MINUTES:return u.range(0,60);case l.TimeUnit.HOURS:return u.range(0,24);case l.TimeUnit.DAY:return u.range(0,7);case l.TimeUnit.DATE:return u.range(1,32);case l.TimeUnit.MONTH:return u.range(0,12)}return null}var u=n(165),s=n(164),l=n(176);e.format=r,e.smallestUnit=i,e.parseExpression=a,e.rawDomain=o},function(t,e,n){"use strict";function r(t){return t.channelWithScales().reduce(function(e,n){var r=t.fieldDef(n);return n===b.COLOR&&t.legend(b.COLOR)&&(r.type===w.ORDINAL||r.bin||r.timeUnit)&&(e.push(a(t,r)),r.bin&&e.push(o(t,r))),e.push(i(t,r,n)),e},[])}function i(t,n,r){var i=t.scale(r),a=t.sort(r),o={name:t.scaleName(r),type:u(i,n,r,t.mark())};return o.domain=s(i,t,r,o.type),x.extend(o,f(i,t,r,o.type)),a&&"descending"===("string"==typeof a?a:a.order)&&(o.reverse=!0),["round","clamp","nice","exponent","zero","padding","points"].forEach(function(t){var a=e[t](i[t],o.type,r,n);void 0!==a&&(o[t]=a)}),o}function a(t,n){return{name:t.scaleName(e.COLOR_LEGEND),type:"ordinal",domain:{data:t.dataTable(),field:t.field(b.COLOR,n.bin||n.timeUnit?{}:{prefn:"rank_"}),sort:!0},range:{data:t.dataTable(),field:t.field(b.COLOR),sort:!0}}}function o(t,n){return{name:t.scaleName(e.COLOR_LEGEND_LABEL),type:"ordinal",domain:{data:t.dataTable(),field:t.field(b.COLOR,{prefn:"rank_"}),sort:!0},range:{data:t.dataTable(),field:O.field(n,{binSuffix:"_range"}),sort:{field:t.field(b.COLOR,{binSuffix:"_start"}),op:"min"}}}}function u(t,e,n,r){if(!b.hasScale(n))return null;if(x.contains([b.ROW,b.COLUMN,b.SHAPE],n))return S.ScaleType.ORDINAL;if(void 0!==t.type)return t.type;switch(e.type){case w.NOMINAL:return S.ScaleType.ORDINAL;case w.ORDINAL:return n===b.COLOR?S.ScaleType.LINEAR:S.ScaleType.ORDINAL;case w.TEMPORAL:if(n===b.COLOR)return S.ScaleType.TIME;if(e.timeUnit)switch(e.timeUnit){case T.TimeUnit.HOURS:case T.TimeUnit.DAY:case T.TimeUnit.MONTH:return S.ScaleType.ORDINAL;default:return S.ScaleType.TIME}return S.ScaleType.TIME;case w.QUANTITATIVE:return e.bin?x.contains([b.X,b.Y,b.COLOR],n)?S.ScaleType.LINEAR:S.ScaleType.ORDINAL:S.ScaleType.LINEAR}return null}function s(t,e,n,r){var i=e.fieldDef(n);if(t.domain)return t.domain;if(i.type===w.TEMPORAL)return E.rawDomain(i.timeUnit,n)?{data:i.timeUnit,field:"date"}:{data:e.dataTable(),field:e.field(n),sort:{field:e.field(n),op:"min"}};var a=e.stack();if(a&&n===a.fieldChannel)return a.offset===A.StackOffset.NORMALIZE?[0,1]:{data:M.STACKED_SCALE,field:e.field(n,{prefn:"sum_"})};var o=c(t,e,n,r),u=l(e,n,r);return o?{data:M.SOURCE,field:e.field(n,{noAggregate:!0})}:i.bin?r===S.ScaleType.ORDINAL?{data:e.dataTable(),field:e.field(n,{binSuffix:"_range"}),sort:{field:e.field(n,{binSuffix:"_start"}),op:"min"}}:n===b.COLOR?{data:e.dataTable(),field:e.field(n,{binSuffix:"_start"})}:{data:e.dataTable(),field:[e.field(n,{binSuffix:"_start"}),e.field(n,{binSuffix:"_end"})]}:u?{data:u.op?M.SOURCE:e.dataTable(),field:i.type===w.ORDINAL&&n===b.COLOR?e.field(n,{prefn:"rank_"}):e.field(n),sort:u}:{data:e.dataTable(),field:i.type===w.ORDINAL&&n===b.COLOR?e.field(n,{prefn:"rank_"}):e.field(n)}}function l(t,e,n){if(n===S.ScaleType.ORDINAL){var r=t.sort(e);return x.contains(["ascending","descending",void 0],r)?!0:"string"!=typeof r?{op:r.op,field:r.field}:void 0}}function c(t,e,n,r){var i=e.fieldDef(n);return t.includeRawDomain&&i.aggregate&&_.SHARED_DOMAIN_OPS.indexOf(i.aggregate)>=0&&(i.type===w.QUANTITATIVE&&!i.bin||i.type===w.TEMPORAL&&x.contains([S.ScaleType.TIME,S.ScaleType.UTC],r))}function f(t,e,n,r){var i=e.fieldDef(n),a=e.config().scale;if(r===S.ScaleType.ORDINAL&&t.bandSize&&x.contains([b.X,b.Y],n))return{bandSize:t.bandSize};if(t.range&&!x.contains([b.X,b.Y,b.ROW,b.COLUMN],n))return{range:t.range};switch(n){case b.X:return{rangeMin:0,rangeMax:e.cellWidth()};case b.Y:return{rangeMin:e.cellHeight(),rangeMax:0};case b.SIZE:if(e.mark()===k.BAR){if(void 0!==a.barSizeRange)return{range:a.barSizeRange};var o="horizontal"===e.config().mark.orient?b.Y:b.X;return{range:[e.config().mark.barThinSize,e.scale(o).bandSize]}}if(e.mark()===k.TEXT)return{range:a.fontSizeRange};if(void 0!==a.pointSizeRange)return{range:a.pointSizeRange};var u=O.isMeasure(e.encoding().x),s=O.isMeasure(e.encoding().y),l=u!==s?e.scale(u?b.Y:b.X).bandSize:Math.min(e.scale(b.X).bandSize||a.bandSize,e.scale(b.Y).bandSize||a.bandSize);return{range:[9,(l-2)*(l-2)]};case b.SHAPE:return{range:a.shapeRange};case b.COLOR:return i.type===w.NOMINAL?{range:a.nominalColorRange}:{range:a.sequentialColorRange};case b.ROW:return{range:"height"};case b.COLUMN:return{range:"width"}}return{}}function h(t,e){return x.contains([S.ScaleType.LINEAR,S.ScaleType.POW,S.ScaleType.SQRT,S.ScaleType.LOG,S.ScaleType.TIME,S.ScaleType.UTC],e)?t:void 0}function d(t,e){return e===S.ScaleType.POW?t:void 0}function p(t,e,n,r){return x.contains([S.ScaleType.LINEAR,S.ScaleType.POW,S.ScaleType.SQRT,S.ScaleType.LOG,S.ScaleType.TIME,S.ScaleType.UTC,S.ScaleType.QUANTIZE],e)?void 0!==t?t:x.contains([S.ScaleType.TIME,S.ScaleType.UTC],e)?E.smallestUnit(r.timeUnit):x.contains([b.X,b.Y],n):void 0}function g(t,e,n){return e===S.ScaleType.ORDINAL&&x.contains([b.X,b.Y],n)?t:void 0}function m(t,e,n){return e===S.ScaleType.ORDINAL&&x.contains([b.X,b.Y],n)?!0:void 0}function v(t,e,n){return x.contains([b.X,b.Y,b.ROW,b.COLUMN,b.SIZE],n)&&void 0!==t?t:void 0}function y(t,e,n,r){return x.contains([S.ScaleType.TIME,S.ScaleType.UTC,S.ScaleType.ORDINAL],e)?void 0:void 0!==t?t:!r.bin&&x.contains([b.X,b.Y],n)}var x=n(165),_=n(175),b=n(164),M=n(171),w=n(172),k=n(183),E=n(188),S=n(180),A=n(179),T=n(176),O=n(174);e.COLOR_LEGEND="color_legend",e.COLOR_LEGEND_LABEL="color_legend_label",e.compileScales=r,e.scaleType=u,e.domain=s,e.domainSort=l,e.rangeMixins=f,e.clamp=h,e.exponent=d,e.nice=p,e.padding=g,e.points=m,e.round=v,e.zero=y},function(t,e,n){"use strict";function r(t,n){var r=t===p.COLUMN,i=t===p.ROW,a=r?"x":i?"y":t,o={type:a,scale:n.scaleName(t),grid:!0,tickSize:0,properties:{labels:{text:{value:""}},axis:{stroke:{value:"transparent"}}}},u=n.axis(t);return["layer","ticks","values","subdivide"].forEach(function(r){var i,a=(i=e[r])?i(n,t,o):u[r];void 0!==a&&(o[r]=a)}),o}function i(t,n){var r=t===p.COLUMN,i=t===p.ROW,a=r?"x":i?"y":t,o=n.axis(t),u={type:a,scale:n.scaleName(t)};v.extend(u,y.formatMixins(n,t,n.axis(t).format)),["grid","layer","offset","orient","tickSize","ticks","title","tickPadding","tickSize","tickSizeMajor","tickSizeMinor","tickSizeEnd","titleOffset","values","subdivide"].forEach(function(r){var i,a=(i=e[r])?i(n,t,u):o[r];void 0!==a&&(u[r]=a)});var s=n.axis(t).properties||{};return["axis","labels","grid","title","ticks","majorTicks","minorTicks"].forEach(function(e){var r=x[e]?x[e](n,t,s[e]||{},u):s[e];void 0!==r&&(u.properties=u.properties||{},u.properties[e]=r)}),u}function a(t,e){return t.axis(e).offset}function o(t,e){var n=t.axis(e).grid;return void 0!==n?n:!t.isOrdinalScale(e)&&!t.fieldDef(e).bin}function u(t,e){return e!==p.ROW&&e!==p.COLUMN?o(t,e)&&(e===p.Y||e===p.X)&&!(t.has(p.COLUMN)||t.has(p.ROW)):void 0}function s(t,e,n){var r=t.axis(e).layer;return void 0!==r?r:n.grid?"back":void 0}function l(t,e){var n=t.axis(e).orient;return n?n:e===p.COLUMN?d.AxisOrient.TOP:e===p.ROW&&t.has(p.Y)&&t.axis(p.Y).orient!==d.AxisOrient.RIGHT?d.AxisOrient.RIGHT:void 0}function c(t,e){var n=t.axis(e).ticks;return void 0!==n?n:e!==p.X||t.fieldDef(e).bin?void 0:5}function f(t,e){var n=t.axis(e).tickSize;return void 0!==n?n:void 0}function h(t,e){var n=t.axis(e);if(void 0!==n.title)return n.title;var r,i=g.title(t.fieldDef(e));return n.titleMaxLength?r=n.titleMaxLength:e!==p.X||t.isOrdinalScale(p.X)?e!==p.Y||t.isOrdinalScale(p.Y)||(r=t.cellHeight()/t.axis(p.Y).characterWidth):r=t.cellWidth()/t.axis(p.X).characterWidth,r?v.truncate(i,r):i}var d=n(181),p=n(164),g=n(174),m=n(172),v=n(165),y=n(186);e.compileInnerAxis=r,e.compileAxis=i,e.offset=a,e.gridShow=o,e.grid=u,e.layer=s,e.orient=l,e.ticks=c,e.tickSize=f,e.title=h;var x;!function(t){function e(t,e,n,r){var i=t.axis(e);return v.extend(void 0!==i.axisWidth?{strokeWidth:{value:i.axisWidth}}:{},n||{})}function n(t,e,n,r){var i=t.fieldDef(e),a=t.axis(e);return a.labels?(v.contains([m.NOMINAL,m.ORDINAL],i.type)&&a.labelMaxLength&&(n=v.extend({text:{template:"{{ datum.data | truncate:"+a.labelMaxLength+"}}"}},n||{})),void 0!==a.labelAngle?n.angle={value:a.labelAngle}:e!==p.X||!g.isDimension(i)&&i.type!==m.TEMPORAL?e===p.ROW&&t.has(p.X)&&(n.angle={value:"left"===r.orient?270:90}):n.angle={value:270},void 0!==a.labelAlign?n.align={value:a.labelAlign}:n.angle&&(270===n.angle.value?n.align={value:"top"===r.orient?"left":"x"===r.type?"right":"center"}:90===n.angle.value&&(n.align={value:"center"})),void 0!==a.labelBaseline?n.baseline={value:a.labelBaseline}:n.angle&&(270===n.angle.value?n.baseline={value:"x"===r.type?"middle":"bottom"}:90===n.angle.value&&(n.baseline={value:"bottom"})),n||void 0):v.extend({text:""},n)}t.axis=e,t.labels=n}(x=e.properties||(e.properties={}))},function(t,e,n){"use strict";function r(t){var e=[y.def(t)],n=x.def(t);n&&e.push(n),i(e[e.length-1],t),a(e[e.length-1],t);var r=t.stack();return r&&e.push(_.def(t,r)),e.concat(b.defs(t))}function i(t,e){e.has(c.COLOR)&&e.fieldDef(c.COLOR).type===d.ORDINAL&&(t.transform=t.transform.concat([{type:"sort",by:e.field(c.COLOR)},{type:"rank",field:e.field(c.COLOR),output:{rank:e.field(c.COLOR,{prefn:"rank_"})}}]))}function a(t,e){e.forEach(function(n,r){var i=e.scale(r);i&&i.type===s.ScaleType.LOG&&t.transform.push({type:"filter",test:e.field(r,{datum:!0})+" > 0"})})}var o=n(174),u=n(165),s=n(180),l=n(163),c=n(164),f=n(171),h=n(174),d=n(172),p=n(189),g=n(188),m=n(175),v={nominal:!1,ordinal:!1,quantitative:!0,temporal:!0};e.compileData=r;var y;!function(t){function e(t){var e={name:f.SOURCE},i=t.data();if(i)if(i.values&&i.values.length>0)e.values=t.data().values,e.format={type:"json"};else if(i.url){e.url=i.url;var a=/(?:\.([^.]+))?$/.exec(e.url)[1];u.contains(["json","csv","tsv"],a)||(a="json"),e.format={type:t.data().formatType||a}}var o=n(t);return o&&(e.format=e.format||{},e.format.parse=o),e.transform=r(t),e}function n(t){var e,n=(t.transform().calculate||[]).reduce(function(t,e){return t[e.field]=!0,t},{});return t.forEach(function(t){if(t.type===d.TEMPORAL)e=e||{},e[t.field]="date";else if(t.type===d.QUANTITATIVE){if(o.isCount(t)||n[t.field])return;e=e||{},e[t.field]="number"}}),e}function r(t){return m(t).concat(x(t),y(t),a(t),i(t))}function i(t){return t.reduce(function(t,e,n){var r=h.field(e,{nofn:!0,datum:!0});return e.type===d.TEMPORAL&&e.timeUnit&&t.push({type:"formula",field:h.field(e),expr:g.parseExpression(e.timeUnit,r)}),t},[])}function a(t){return t.reduce(function(e,n,r){var i=t.fieldDef(r).bin,a=t.scale(r);if(i){var o=u.extend({type:"bin",field:n.field,output:{start:h.field(n,{binSuffix:"_start"}),mid:h.field(n,{binSuffix:"_mid"}),end:h.field(n,{binSuffix:"_end"})}},"boolean"==typeof i?{}:i);o.maxbins||o.step||(o.maxbins=l.autoMaxBins(r)),e.push(o),p.scaleType(a,n,r,t.mark())!==s.ScaleType.ORDINAL&&r!==c.COLOR||e.push({type:"formula",field:h.field(n,{binSuffix:"_range"}),expr:h.field(n,{datum:!0,binSuffix:"_start"})+" + '-' + "+h.field(n,{datum:!0,binSuffix:"_end"})})}return e},[])}function m(t){var e=t.transform().filterNull,n=u.keys(t.reduce(function(t,n){return(e||void 0===e&&n.field&&"*"!==n.field&&v[n.type])&&(t[n.field]=!0),t},{}));return n.length>0?[{type:"filter",test:n.map(function(t){return"datum."+t+"!==null"}).join(" && ")}]:[]}function y(t){var e=t.transform().filter;return e?[{type:"filter",test:e}]:[]}function x(t){return(t.transform().calculate||[]).reduce(function(t,e){return t.push(u.extend({type:"formula"},e)),t},[])}t.def=e,t.transform=r,t.timeTransform=i,t.binTransform=a,t.nullFilterTransform=m,t.filterTransform=y,t.formulaTransform=x}(y=e.source||(e.source={}));var x;!function(t){function e(t){var e={},n={},r=!1;t.forEach(function(i,a){if(i.aggregate)r=!0,i.aggregate===m.AggregateOp.COUNT?(n["*"]=n["*"]||{},n["*"].count=!0):(n[i.field]=n[i.field]||{},n[i.field][i.aggregate]=!0);else if(i.bin){e[h.field(i,{binSuffix:"_start"})]=h.field(i,{binSuffix:"_start"}),e[h.field(i,{binSuffix:"_mid"})]=h.field(i,{binSuffix:"_mid"}),e[h.field(i,{binSuffix:"_end"})]=h.field(i,{binSuffix:"_end"});var o=t.scale(a);p.scaleType(o,i,a,t.mark())===s.ScaleType.ORDINAL&&(e[h.field(i,{binSuffix:"_range"})]=h.field(i,{binSuffix:"_range"}))}else e[h.field(i)]=h.field(i)});var i=u.vals(e),a=u.reduce(n,function(t,e,n){return t[n]=u.keys(e),t},{});return r?{name:f.SUMMARY,source:f.SOURCE,transform:[{type:"aggregate",groupby:i,summarize:a}]}:null}t.def=e}(x=e.summary||(e.summary={}));var _;!function(t){function e(t,e){var n=e.groupbyChannel,r=e.fieldChannel,i=(t.has(c.COLUMN)?[t.field(c.COLUMN)]:[]).concat(t.has(c.ROW)?[t.field(c.ROW)]:[]),a={name:f.STACKED_SCALE,source:t.dataTable(),transform:[{type:"aggregate",groupby:[t.field(n)].concat(i),summarize:[{ops:["sum"],field:t.field(r)}]}]};return a}t.def=e}(_=e.stack||(e.stack={}));var b;!function(t){function e(t){var e={};return t.reduce(function(t,n,r){if(n.timeUnit){var i=g.rawDomain(n.timeUnit,r);i&&!e[n.timeUnit]&&(e[n.timeUnit]=!0,t.push({name:n.timeUnit,values:i,transform:[{type:"formula",field:"date",expr:g.parseExpression(n.timeUnit,"datum.data",!0)}]}))}return t},[])}t.defs=e}(b=e.dates||(e.dates={})),e.rankTransform=i,e.filterNonPositiveForLog=a},function(t,e,n){"use strict";function r(t){var e=[u.X,u.Y,u.ROW,u.COLUMN].reduce(function(e,n){if(t.has(n)&&t.isOrdinalScale(n)){var r=t.scale(n);r.domain instanceof Array||e.push({field:t.field(n),ops:["distinct"]})}return e},[]),n=a(t,u.X,t.cellWidth()),r=a(t,u.Y,t.cellHeight()),i=t.has(u.COLUMN)||t.has(u.ROW),l=[{type:"formula",field:"cellWidth",expr:n},{type:"formula",field:"cellHeight",expr:r},{type:"formula",field:"width",expr:i?o(t,u.COLUMN,"datum.cellWidth"):n},{type:"formula",field:"height",expr:i?o(t,u.ROW,"datum.cellHeight"):r}];return e.length>0?{name:s.LAYOUT,source:t.dataTable(),transform:[].concat([{type:"aggregate",summarize:e}],l)}:{name:s.LAYOUT,values:[{}],transform:l}}function i(t,e){var n=t.scale(e);if(n.domain instanceof Array)return n.domain.length;var r=t.fieldDef(e).timeUnit,i=r?c.rawDomain(r,e):null;return null!==i?i.length:t.field(e,{datum:!0,prefn:"distinct_"})}function a(t,e,n){if(t.has(e)){if(t.isOrdinalScale(e)){var r=t.scale(e);return"("+i(t,e)+" + "+r.padding+") * "+r.bandSize}return n+""}return t.mark()===l.TEXT&&e===u.X?t.config().scale.textBandWidth+"":t.config().scale.bandSize+""}function o(t,e,n){var r=t.scale(e);if(t.has(e)){var i=r.domain instanceof Array?r.domain.length:t.field(e,{datum:!0,prefn:"distinct_"});return"("+n+" + "+r.padding+") * "+i}return n+" + "+t.config().facet.scale.padding}var u=n(164),s=n(171),l=n(183),c=n(188);e.compileLayoutData=r},function(t,e,n){"use strict";function r(t,e){var n=t.has(p.ROW),r=t.has(p.COLUMN);return t.has(p.ROW)&&!g.isDimension(t.encoding().row)&&h.error("Row encoding should be ordinal."),t.has(p.COLUMN)&&!g.isDimension(t.encoding().column)&&h.error("Col encoding should be ordinal."),{marks:[].concat(u(t),[a(t,e)]),scales:v.compileScales(t),axes:[].concat(n&&t.axis(p.ROW)?[m.compileAxis(p.ROW,t)]:[],r&&t.axis(p.COLUMN)?[m.compileAxis(p.COLUMN,t)]:[])}}function i(t){var e=[];return t.has(p.X)&&t.axis(p.X)&&m.gridShow(t,p.X)&&e.push(m.compileInnerAxis(p.X,t)),t.has(p.Y)&&t.axis(p.Y)&&m.gridShow(t,p.Y)&&e.push(m.compileInnerAxis(p.Y,t)),e}function a(t,e){var n=t.spec().name,r={name:(n?n+"-":"")+"cell",type:"group",from:{data:t.dataTable(),transform:[{type:"facet",groupby:[].concat(t.has(p.ROW)?[t.field(p.ROW)]:[],t.has(p.COLUMN)?[t.field(p.COLUMN)]:[])}]},properties:{update:o(t)},marks:e},a=i(t);return a.length>0&&(r.axes=a),r}function o(t){var e={x:t.has(p.COLUMN)?{scale:t.scaleName(p.COLUMN),field:t.field(p.COLUMN),offset:t.scale(p.COLUMN).padding/2}:{value:t.config().facet.scale.padding/2},y:t.has(p.ROW)?{scale:t.scaleName(p.ROW),field:t.field(p.ROW),offset:t.scale(p.ROW).padding/2}:{value:t.config().facet.scale.padding/2},width:{field:{parent:"cellWidth"}},height:{field:{parent:"cellHeight"}}};return y.applyConfig(e,t.config().cell,y.FILL_STROKE_CONFIG.concat(["clip"])),y.applyConfig(e,t.config().facet.cell,y.FILL_STROKE_CONFIG.concat(["clip"])),e}function u(t){var e=[];return t.has(p.X)?t.axis(p.X)&&e.push(s(t)):t.has(p.ROW)&&e.push.apply(e,c(t)),t.has(p.Y)?t.axis(p.Y)&&e.push(l(t)):t.has(p.COLUMN)&&e.push.apply(e,f(t)),e}function s(t){var e=t.has(p.COLUMN),n=t.spec().name;return d.extend({name:(n?n+"-":"")+"x-axes",type:"group"},e?{from:{data:t.dataTable(),transform:[{type:"aggregate",groupby:[t.field(p.COLUMN)],summarize:{"*":["count"]}}]}}:{},{properties:{update:{width:{field:{parent:"cellWidth"}},height:{field:{group:"height"}},x:e?{scale:t.scaleName(p.COLUMN),field:t.field(p.COLUMN),offset:t.scale(p.COLUMN).padding/2}:{value:t.config().facet.scale.padding/2}}}},t.axis(p.X)?{axes:[m.compileAxis(p.X,t)]}:{})}function l(t){var e=t.has(p.ROW),n=t.spec().name;return d.extend({name:(n?n+"-":"")+"y-axes",type:"group"},e?{from:{data:t.dataTable(),transform:[{type:"aggregate",groupby:[t.field(p.ROW)],summarize:{"*":["count"]}}]}}:{},{properties:{update:{width:{field:{group:"width"}},height:{field:{parent:"cellHeight"}},y:e?{scale:t.scaleName(p.ROW),field:t.field(p.ROW),offset:t.scale(p.ROW).padding/2}:{value:t.config().facet.scale.padding/2}}}},t.axis(p.Y)?{axes:[m.compileAxis(p.Y,t)]}:{})}function c(t){var e=t.spec().name,n=t.config().facet.grid,r={name:(e?e+"-":"")+"row-grid",type:"rule",from:{data:t.dataTable(),transform:[{type:"facet",groupby:[t.field(p.ROW)]}]},properties:{update:{y:{scale:t.scaleName(p.ROW),field:t.field(p.ROW)},x:{value:0,offset:-n.offset},x2:{field:{group:"width"},offset:n.offset},stroke:{value:n.color},strokeOpacity:{value:n.opacity},strokeWidth:{value:.5}}}};return[r,{name:(e?e+"-":"")+"row-grid-end",type:"rule",properties:{update:{y:{field:{group:"height"}},x:{value:0,offset:-n.offset},x2:{field:{group:"width"},offset:n.offset},stroke:{value:n.color},strokeOpacity:{value:n.opacity},strokeWidth:{value:.5}}}}]}function f(t){var e=t.spec().name,n=t.config().facet.grid,r={name:(e?e+"-":"")+"column-grid",type:"rule",from:{data:t.dataTable(),transform:[{type:"facet",groupby:[t.field(p.COLUMN)]}]},properties:{update:{x:{scale:t.scaleName(p.COLUMN),field:t.field(p.COLUMN)},y:{value:0,offset:-n.offset},y2:{field:{group:"height"},offset:n.offset},stroke:{value:n.color},strokeOpacity:{value:n.opacity},strokeWidth:{value:.5}}}};return[r,{name:(e?e+"-":"")+"column-grid-end",type:"rule",properties:{update:{x:{field:{group:"width"}},y:{value:0,offset:-n.offset},y2:{field:{group:"height"},offset:n.offset},stroke:{value:n.color},strokeOpacity:{value:n.opacity},strokeWidth:{value:.5}}}}]}var h=n(165),d=n(165),p=n(164),g=n(174),m=n(190),v=n(189),y=n(186);e.facetMixins=r},function(t,e,n){"use strict";function r(t){var e=[];if(t.has(s.COLOR)&&t.legend(s.COLOR)){var n=t.fieldDef(s.COLOR),r=t.scaleName(u(n)?p.COLOR_LEGEND:s.COLOR),a=t.config().mark.filled?{fill:r}:{stroke:r};e.push(i(t,s.COLOR,a))}return t.has(s.SIZE)&&t.legend(s.SIZE)&&e.push(i(t,s.SIZE,{size:t.scaleName(s.SIZE)})),t.has(s.SHAPE)&&t.legend(s.SHAPE)&&e.push(i(t,s.SHAPE,{shape:t.scaleName(s.SHAPE)})),e}function i(t,e,n){var r=t.fieldDef(e),i=t.legend(e);n.title=a(i,r),f.extend(n,o(i,t,e)),["orient","values"].forEach(function(t){var e=i[t];void 0!==e&&(n[t]=e)});var u="boolean"!=typeof i&&i.properties||{};return["title","symbols","legend","labels"].forEach(function(i){var a=g[i]?g[i](r,u[i],t,e):u[i];void 0!==a&&(n.properties=n.properties||{},n.properties[i]=a)}),n}function a(t,e){return"boolean"!=typeof t&&t.title?t.title:l.title(e)}function o(t,e,n){var r=e.fieldDef(n);return r.bin?{}:h.formatMixins(e,n,"boolean"!=typeof t?t.format:void 0)}function u(t){return t.type===d.ORDINAL||t.bin||t.timeUnit}var s=n(164),l=n(174),c=n(183),f=n(165),h=n(186),d=n(172),p=n(189); e.compileLegends=r,e.compileLegend=i,e.title=a,e.formatMixins=o,e.useColorLegendScale=u;var g;!function(t){function e(t,e,n,r){var i={},a=n.mark();switch(a){case c.BAR:case c.TICK:case c.TEXT:i.shape={value:"square"};break;case c.CIRCLE:case c.SQUARE:i.shape={value:a};break;case c.POINT:case c.LINE:case c.AREA:}var o=n.config().mark.filled;h.applyMarkConfig(i,n,f.without(h.FILL_STROKE_CONFIG,[o?"fill":"stroke"])),o&&(i.strokeWidth={value:0});var l;return n.has(s.COLOR)&&r===s.COLOR?u(t)&&(l={scale:n.scaleName(s.COLOR),field:"data"}):n.fieldDef(s.COLOR).value&&(l={value:n.fieldDef(s.COLOR).value}),void 0!==l?o?i.fill=l:i.stroke=l:r!==s.COLOR&&(i[o?"fill":"stroke"]=i[o?"fill":"stroke"]||{value:n.config().mark.color}),i=f.extend(i,e||{}),f.keys(i).length>0?i:void 0}function n(t,e,n,r){if(r===s.COLOR){if(t.type===d.ORDINAL)return{text:{scale:n.scaleName(p.COLOR_LEGEND),field:"data"}};if(t.bin)return{text:{scale:n.scaleName(p.COLOR_LEGEND_LABEL),field:"data"}};if(t.timeUnit)return{text:{template:"{{ datum.data | time:'"+h.timeFormat(n,r)+"'}}"}}}}t.symbols=e,t.labels=n}(g||(g={}))},function(t,e,n){"use strict";function r(t){return h.contains([c.LINE,c.AREA],t.mark())?i(t):a(t)}function i(t){var e=t.mark(),n=t.spec().name,r=t.has(l.ROW)||t.has(l.COLUMN),i={data:t.dataTable()},a=s(t),d=[h.extend(n?{name:n+"-marks"}:{},{type:_[e].markType(),from:h.extend(r||a.length>0?{}:i,{transform:[{type:"sort",by:u(t)}]}),properties:{update:_[e].properties(t)}})];if(a.length>0){var p={type:"facet",groupby:a},g=e===c.AREA&&t.stack()?[f.imputeTransform(t),f.stackTransform(t),p]:[].concat(p,t.has(l.ORDER)?[{type:"sort",by:o(t)}]:[]);return[{name:(n?n+"-":"")+e+"-facet",type:"group",from:h.extend(r?{}:i,{transform:g}),properties:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:d}]}return d}function a(t){var e=t.mark(),n=t.spec().name,r=t.has(l.ROW)||t.has(l.COLUMN),i={data:t.dataTable()},a=[];if(e===c.TEXT&&t.has(l.COLOR)&&t.config().mark.applyColorToBackground&&!t.has(l.X)&&!t.has(l.Y)&&a.push(h.extend(n?{name:n+"-background"}:{},{type:"rect"},r?{}:{from:i},{properties:{update:v.text.background(t)}})),a.push(h.extend(n?{name:n+"-marks"}:{},{type:_[e].markType()},!r||t.stack()||t.has(l.ORDER)?{from:h.extend(r?{}:i,t.stack()?{transform:[f.stackTransform(t)]}:t.has(l.ORDER)?{transform:[{type:"sort",by:o(t)}]}:{})}:{},{properties:{update:_[e].properties(t)}})),t.has(l.LABEL)&&_[e].labels){var u=_[e].labels(t);void 0!==u&&a.push(h.extend(n?{name:n+"-label"}:{},{type:"text"},r?{}:{from:i},{properties:{update:u}}))}return a}function o(t){if(t.has(l.ORDER)){var e=t.encoding().order;return e instanceof Array?e.map(x.sortField):x.sortField(e)}return null}function u(t){if(t.mark()===c.LINE&&t.has(l.PATH)){var e=t.encoding().path;return e instanceof Array?e.map(x.sortField):x.sortField(e)}return"-"+t.field("horizontal"===t.config().mark.orient?l.Y:l.X)}function s(t){return[l.COLOR,l.DETAIL,l.SHAPE].reduce(function(e,n){return t.has(n)&&!t.fieldDef(n).aggregate&&e.push(t.field(n)),e},[])}var l=n(164),c=n(183),f=n(185),h=n(165),d=n(196),p=n(197),g=n(198),m=n(199),v=n(200),y=n(201),x=n(186),_={area:d.area,bar:p.bar,line:g.line,point:m.point,text:v.text,tick:y.tick,circle:m.circle,square:m.square};e.compileMark=r},function(t,e,n){"use strict";var r,i=n(164),a=n(174),o=n(186);!function(t){function e(){return"area"}function n(t){var e={},n=t.config().mark.orient;void 0!==n&&(e.orient={value:n});var r=t.stack(),u=t.encoding().x;r&&i.X===r.fieldChannel?e.x={scale:t.scaleName(i.X),field:t.field(i.X,{suffix:"_start"})}:a.isMeasure(u)?e.x={scale:t.scaleName(i.X),field:t.field(i.X)}:a.isDimension(u)&&(e.x={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_mid"})}),"horizontal"===n&&(r&&i.X===r.fieldChannel?e.x2={scale:t.scaleName(i.X),field:t.field(i.X,{suffix:"_end"})}:e.x2={scale:t.scaleName(i.X),value:0});var s=t.encoding().y;return r&&i.Y===r.fieldChannel?e.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{suffix:"_start"})}:a.isMeasure(s)?e.y={scale:t.scaleName(i.Y),field:t.field(i.Y)}:a.isDimension(s)&&(e.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_mid"})}),"horizontal"!==n&&(r&&i.Y===r.fieldChannel?e.y2={scale:t.scaleName(i.Y),field:t.field(i.Y,{suffix:"_end"})}:e.y2={scale:t.scaleName(i.Y),value:0}),o.applyColorAndOpacity(e,t),o.applyMarkConfig(e,t,["interpolate","tension"]),e}function r(t){}t.markType=e,t.properties=n,t.labels=r}(r=e.area||(e.area={}))},function(t,e,n){"use strict";var r,i=n(164),a=n(174),o=n(186);!function(t){function e(){return"rect"}function n(t){var e={},n=t.config().mark.orient,u=t.stack(),s=t.encoding().x;u&&i.X===u.fieldChannel?(e.x={scale:t.scaleName(i.X),field:t.field(i.X,{suffix:"_start"})},e.x2={scale:t.scaleName(i.X),field:t.field(i.X,{suffix:"_end"})}):a.isMeasure(s)?"horizontal"===n?(e.x={scale:t.scaleName(i.X),field:t.field(i.X)},e.x2={scale:t.scaleName(i.X),value:0}):(e.xc={scale:t.scaleName(i.X),field:t.field(i.X)},e.width={value:r(t,i.X)}):t.fieldDef(i.X).bin?t.has(i.SIZE)&&"horizontal"!==n?(e.xc={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_mid"})},e.width={scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}):(e.x={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_start"}),offset:1},e.x2={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_end"})}):(t.has(i.X)?e.xc={scale:t.scaleName(i.X),field:t.field(i.X)}:e.x={value:0,offset:2},e.width=t.has(i.SIZE)&&"horizontal"!==n?{scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}:{value:r(t,i.X)});var l=t.encoding().y;return u&&i.Y===u.fieldChannel?(e.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{suffix:"_start"})},e.y2={scale:t.scaleName(i.Y),field:t.field(i.Y,{suffix:"_end"})}):a.isMeasure(l)?"horizontal"!==n?(e.y={scale:t.scaleName(i.Y),field:t.field(i.Y)},e.y2={scale:t.scaleName(i.Y),value:0}):(e.yc={scale:t.scaleName(i.Y),field:t.field(i.Y)},e.height={value:r(t,i.Y)}):t.fieldDef(i.Y).bin?t.has(i.SIZE)&&"horizontal"===n?(e.yc={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_mid"})},e.height={scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}):(e.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_start"})},e.y2={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_end"}),offset:1}):(t.has(i.Y)?e.yc={scale:t.scaleName(i.Y),field:t.field(i.Y)}:e.y2={field:{group:"height"},offset:-1},e.height=t.has(i.SIZE)&&"horizontal"===n?{scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}:{value:r(t,i.Y)}),o.applyColorAndOpacity(e,t),e}function r(t,e){var n=t.fieldDef(i.SIZE);if(n&&void 0!==n.value)return n.value;var r=t.config().mark;return r.barSize?r.barSize:t.isOrdinalScale(e)?t.scale(e).bandSize-1:t.has(e)?r.barThinSize:t.config().scale.bandSize-1}function u(t){}t.markType=e,t.properties=n,t.labels=u}(r=e.bar||(e.bar={}))},function(t,e,n){"use strict";var r,i=n(164),a=n(186);!function(t){function e(){return"line"}function n(t){var e={};return t.has(i.X)?e.x={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_mid"})}:e.x={value:0},t.has(i.Y)?e.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_mid"})}:e.y={field:{group:"height"}},a.applyColorAndOpacity(e,t),a.applyMarkConfig(e,t,["interpolate","tension"]),e}function r(t){}t.markType=e,t.properties=n,t.labels=r}(r=e.line||(e.line={}))},function(t,e,n){"use strict";var r,i=n(164),a=n(186);!function(t){function e(){return"symbol"}function n(t,e){var n={};return t.has(i.X)?n.x={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_mid"})}:n.x={value:t.config().scale.bandSize/2},t.has(i.Y)?n.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_mid"})}:n.y={value:t.config().scale.bandSize/2},t.has(i.SIZE)?n.size={scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}:n.size={value:r(t)},e?n.shape={value:e}:t.has(i.SHAPE)?n.shape={scale:t.scaleName(i.SHAPE),field:t.field(i.SHAPE)}:t.fieldDef(i.SHAPE).value?n.shape={value:t.fieldDef(i.SHAPE).value}:t.config().mark.shape&&(n.shape={value:t.config().mark.shape}),a.applyColorAndOpacity(n,t),n}function r(t){var e=t.fieldDef(i.SIZE);return e&&void 0!==e.value?e.value:t.config().mark.size}function o(t){}t.markType=e,t.properties=n,t.labels=o}(r=e.point||(e.point={}));var o;!function(t){function e(){return"symbol"}function n(t){return r.properties(t,"circle")}function i(t){}t.markType=e,t.properties=n,t.labels=i}(o=e.circle||(e.circle={}));var u;!function(t){function e(){return"symbol"}function n(t){return r.properties(t,"square")}function i(t){}t.markType=e,t.properties=n,t.labels=i}(u=e.square||(e.square={}))},function(t,e,n){"use strict";var r,i=n(164),a=n(186),o=n(165),u=n(172);!function(t){function e(){return"text"}function n(t){return{x:{value:0},y:{value:0},width:{field:{group:"width"}},height:{field:{group:"height"}},fill:{scale:t.scaleName(i.COLOR),field:t.field(i.COLOR,t.fieldDef(i.COLOR).type===u.ORDINAL?{prefn:"rank_"}:{})}}}function r(t){var e={};a.applyMarkConfig(e,t,["angle","align","baseline","dx","dy","font","fontWeight","fontStyle","radius","theta","text"]);var n=t.fieldDef(i.TEXT);if(t.has(i.X)?e.x={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_mid"})}:t.has(i.TEXT)&&t.fieldDef(i.TEXT).type===u.QUANTITATIVE?e.x={field:{group:"width"},offset:-5}:e.x={value:t.config().scale.textBandWidth/2},t.has(i.Y)?e.y={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_mid"})}:e.y={value:t.config().scale.bandSize/2},t.has(i.SIZE)?e.fontSize={scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}:e.fontSize={value:s(t)},!t.config().mark.applyColorToBackground||t.has(i.X)||t.has(i.Y))a.applyColorAndOpacity(e,t);else{e.fill={value:"black"};var r=t.config().mark.opacity;r&&(e.opacity={value:r})}if(t.has(i.TEXT))if(o.contains([u.QUANTITATIVE,u.TEMPORAL],t.fieldDef(i.TEXT).type)){var l=t.config().mark.format;o.extend(e,a.formatMixins(t,i.TEXT,l))}else e.text={field:t.field(i.TEXT)};else n.value&&(e.text={value:n.value});return e}function s(t){var e=t.fieldDef(i.SIZE);return e&&void 0!==e.value?e.value:t.config().mark.fontSize}t.markType=e,t.background=n,t.properties=r}(r=e.text||(e.text={}))},function(t,e,n){"use strict";var r,i=n(164),a=n(186);!function(t){function e(){return"rect"}function n(t){var e={};return t.has(i.X)?e.xc={scale:t.scaleName(i.X),field:t.field(i.X,{binSuffix:"_mid"})}:e.xc={value:t.config().scale.bandSize/2},t.has(i.Y)?e.yc={scale:t.scaleName(i.Y),field:t.field(i.Y,{binSuffix:"_mid"})}:e.yc={value:t.config().scale.bandSize/2},"horizontal"===t.config().mark.orient?(e.width={value:t.config().mark.tickThickness},e.height=t.has(i.SIZE)?{scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}:{value:r(t,i.Y)}):(e.width=t.has(i.SIZE)?{scale:t.scaleName(i.SIZE),field:t.field(i.SIZE)}:{value:r(t,i.X)},e.height={value:t.config().mark.tickThickness}),a.applyColorAndOpacity(e,t),e}function r(t,e){var n=t.fieldDef(i.SIZE);if(n&&void 0!==n.value)return n.value;var r=t.config().scale,a=t.config().mark;if(a.tickSize)return a.tickSize;var o=t.has(e)?t.scale(e).bandSize:r.bandSize;return o/1.5}function o(t){}t.markType=e,t.properties=n,t.labels=o}(r=e.tick||(e.tick={}))},function(t,e,n){"use strict";function r(t){return"mark"+e.ASSIGN+t.mark+e.DELIM+a(t.encoding)}function i(t,n,r){var i=t.split(e.DELIM),a=i.shift().split(e.ASSIGN)[1].trim(),u=o(i.join(e.DELIM)),s={mark:p.Mark[a],encoding:u};return void 0!==n&&(s.data=n),void 0!==r&&(s.config=r),s}function a(t){return d.map(t,function(t,n){return n+e.ASSIGN+u(t)}).join(e.DELIM)}function o(t){return t.split(e.DELIM).reduce(function(t,n){var r=n.split(e.ASSIGN),i=r[0].trim(),a=r[1];return t[i]=l(a),t},{})}function u(t){return(t.aggregate?t.aggregate+e.FUNC:"")+(t.timeUnit?t.timeUnit+e.FUNC:"")+(t.bin?"bin"+e.FUNC:"")+(t.field||"")+e.TYPE+h.SHORT_TYPE[t.type]}function s(t,n){return void 0===n&&(n=e.DELIM),t.map(u).join(n)}function l(t){for(var n=t.split(e.TYPE),r={field:n[0].trim(),type:h.TYPE_FROM_SHORT_TYPE[n[1].trim()]},i=0;i=s||(a.postMessage(n,"*"),setTimeout(i,u),s-=1)}var a=t.open(e),o=1e4,u=250,s=~~(o/u);t.addEventListener("message",r,!1),setTimeout(i,u)}},function(e,n){e.exports=t},function(t,n){t.exports=e}])}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vega/static/index.js.map b/vega/static/index.js.map index 049b240a..fcfe5edd 100644 --- a/vega/static/index.js.map +++ b/vega/static/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///index.js","webpack:///webpack/bootstrap 64c95c891c2f09310695","webpack:///./src/index.js","webpack:///./~/vega-embed/src/embed.js","webpack:///./~/d3/d3.js","webpack:///./~/vega/index.js","webpack:///./~/vega/~/vega-dataflow/src/index.js","webpack:///./~/vega/~/vega-dataflow/src/ChangeSet.js","webpack:///./~/vega/~/vega-dataflow/src/Dependencies.js","webpack:///./~/vega/~/vega-dataflow/src/Collector.js","webpack:///./~/vega/~/vega-logging/index.js","webpack:///./~/vega/~/vega-dataflow/src/Tuple.js","webpack:///./~/vega/~/vega-dataflow/src/Node.js","webpack:///./~/vega/~/vega-dataflow/src/DataSource.js","webpack:///./~/vega/~/datalib/src/index.js","webpack:///./~/vega/~/datalib/src/util.js","webpack:///(webpack)/~/node-libs-browser/~/buffer/index.js","webpack:///(webpack)/~/node-libs-browser/~/buffer/~/base64-js/lib/b64.js","webpack:///(webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js","webpack:///(webpack)/~/node-libs-browser/~/buffer/~/isarray/index.js","webpack:///./~/vega/~/datalib/src/import/load.js","webpack:///./~/vega/~/datalib/src/import/read.js","webpack:///./~/vega/~/datalib/src/import/type.js","webpack:///./~/vega/~/datalib/src/import/formats/index.js","webpack:///./~/vega/~/datalib/src/import/formats/dsv.js","webpack:///./~/vega/~/datalib/~/d3-dsv/build/d3-dsv.js","webpack:///./~/vega/~/datalib/src/import/formats/json.js","webpack:///./~/vega/~/datalib/src/import/formats/topojson.js","webpack:///./~/vega/~/topojson/build/topojson.js","webpack:///./~/vega/~/datalib/src/import/formats/treejson.js","webpack:///./~/vega/~/datalib/src/format.js","webpack:///./~/vega/~/datalib/~/d3-time/build/d3-time.js","webpack:///./~/vega/~/datalib/~/d3-time-format/build/d3-time-format.js","webpack:///./~/vega/~/datalib/~/d3-format/build/d3-format.js","webpack:///./~/vega/~/datalib/src/aggregate/aggregator.js","webpack:///./~/vega/~/datalib/src/aggregate/measures.js","webpack:///./~/vega/~/datalib/src/stats.js","webpack:///./~/vega/~/datalib/src/generate.js","webpack:///./~/vega/~/datalib/src/aggregate/collector.js","webpack:///./~/vega/~/datalib/src/aggregate/groupby.js","webpack:///./~/vega/~/datalib/src/bins/bins.js","webpack:///./~/vega/~/datalib/src/time.js","webpack:///./~/vega/~/datalib/src/bins/histogram.js","webpack:///./~/vega/~/datalib/src/template.js","webpack:///./~/vega/~/datalib/src/accessor.js","webpack:///./~/vega/~/datalib/src/import/readers.js","webpack:///./~/vega/~/datalib/src/format-tables.js","webpack:///./~/vega/~/vega-dataflow/src/Graph.js","webpack:///./~/vega/~/vega-dataflow/src/Heap.js","webpack:///./~/vega/~/vega-dataflow/src/Signal.js","webpack:///./~/vega/src/parse/index.js","webpack:///./~/vega/src/parse/axes.js","webpack:///./~/vega/src/scene/axis.js","webpack:///./~/vega/src/parse/mark.js","webpack:///./~/vega/src/parse/properties.js","webpack:///./~/vega/~/d3/d3.js","webpack:///./~/vega/src/util/index.js","webpack:///./~/vega/src/util/format.js","webpack:///./~/vega/~/vega-scenegraph/src/index.js","webpack:///./~/vega/~/vega-scenegraph/src/path/index.js","webpack:///./~/vega/~/vega-scenegraph/src/path/parse.js","webpack:///./~/vega/~/vega-scenegraph/src/path/render.js","webpack:///./~/vega/~/vega-scenegraph/src/path/arc.js","webpack:///./~/vega/~/vega-scenegraph/src/render/index.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/index.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/CanvasHandler.js","webpack:///./~/vega/~/vega-scenegraph/src/util/dom.js","webpack:///./~/vega/~/vega-scenegraph/src/render/Handler.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/index.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/arc.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/util.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/area.js","webpack:///./~/vega/~/vega-scenegraph/src/util/svg.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/group.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/image.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/line.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/path.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/rect.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/rule.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/symbol.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/marks/text.js","webpack:///./~/vega/~/vega-scenegraph/src/util/Bounds.js","webpack:///./~/vega/~/vega-scenegraph/src/util/bound.js","webpack:///./~/vega/~/vega-scenegraph/src/util/BoundsContext.js","webpack:///./~/vega/~/vega-scenegraph/src/util/canvas.js","webpack:///./~/vega/~/vega-scenegraph/src/util/text.js","webpack:///./~/vega/~/vega-scenegraph/src/render/canvas/CanvasRenderer.js","webpack:///./~/vega/~/vega-scenegraph/src/util/ImageLoader.js","webpack:///./~/vega/~/vega-scenegraph/src/render/Renderer.js","webpack:///./~/vega/~/vega-scenegraph/src/render/svg/index.js","webpack:///./~/vega/~/vega-scenegraph/src/render/svg/SVGHandler.js","webpack:///./~/vega/~/vega-scenegraph/src/render/svg/SVGRenderer.js","webpack:///./~/vega/~/vega-scenegraph/src/render/svg/marks.js","webpack:///./~/vega/~/vega-scenegraph/src/render/svg/SVGStringRenderer.js","webpack:///./~/vega/~/vega-scenegraph/src/util/Item.js","webpack:///./~/vega/~/vega-scenegraph/src/util/Gradient.js","webpack:///./~/vega/~/vega-scenegraph/src/util/scene.js","webpack:///./~/vega/src/parse/background.js","webpack:///./~/vega/src/parse/data.js","webpack:///./~/vega/src/parse/transforms.js","webpack:///./~/vega/src/transforms/index.js","webpack:///./~/vega/src/transforms/Aggregate.js","webpack:///./~/vega/src/transforms/Transform.js","webpack:///./~/vega/src/transforms/Parameter.js","webpack:///./~/vega/src/transforms/Facetor.js","webpack:///./~/vega/src/transforms/Bin.js","webpack:///./~/vega/src/transforms/BatchTransform.js","webpack:///./~/vega/src/transforms/Cross.js","webpack:///./~/vega/src/transforms/CountPattern.js","webpack:///./~/vega/src/transforms/LinkPath.js","webpack:///./~/vega/src/transforms/Facet.js","webpack:///./~/vega/src/transforms/Filter.js","webpack:///./~/vega/src/transforms/Fold.js","webpack:///./~/vega/src/transforms/Force.js","webpack:///./~/vega/src/transforms/screen.js","webpack:///./~/vega/src/transforms/Formula.js","webpack:///./~/vega/src/transforms/Geo.js","webpack:///./~/vega/src/transforms/GeoPath.js","webpack:///./~/vega/src/transforms/Hierarchy.js","webpack:///./~/vega/src/transforms/Impute.js","webpack:///./~/vega/src/transforms/Lookup.js","webpack:///./~/vega/src/transforms/Pie.js","webpack:///./~/vega/src/transforms/Rank.js","webpack:///./~/vega/src/transforms/Sort.js","webpack:///./~/vega/src/transforms/Stack.js","webpack:///./~/vega/src/transforms/Treeify.js","webpack:///./~/vega/src/transforms/Treemap.js","webpack:///./~/vega/src/transforms/Voronoi.js","webpack:///./~/vega/src/transforms/Wordcloud.js","webpack:///./~/vega/~/d3-cloud/index.js","webpack:///./~/vega/~/d3-cloud/~/d3-dispatch/build/d3-dispatch.js","webpack:///./~/vega/src/parse/modify.js","webpack:///./~/vega/~/vega-event-selector/index.js","webpack:///./~/vega/src/parse/expr.js","webpack:///./~/vega/~/vega-expression/src/index.js","webpack:///./~/vega/~/vega-expression/src/parser.js","webpack:///./~/vega/~/vega-expression/src/codegen.js","webpack:///./~/vega/~/vega-expression/src/constants.js","webpack:///./~/vega/~/vega-expression/src/functions.js","webpack:///./~/vega/src/parse/legends.js","webpack:///./~/vega/src/scene/legend.js","webpack:///./~/vega/src/parse/marks.js","webpack:///./~/vega/src/parse/padding.js","webpack:///./~/vega/src/parse/predicates.js","webpack:///./~/vega/src/parse/signals.js","webpack:///./~/vega/src/parse/spec.js","webpack:///./~/vega/src/core/Model.js","webpack:///./~/vega/src/scene/GroupBuilder.js","webpack:///./~/vega/src/scene/Builder.js","webpack:///./~/vega/src/scene/Encoder.js","webpack:///./~/vega/src/scene/Bounder.js","webpack:///./~/vega/src/scene/Scale.js","webpack:///./~/vega/src/scene/visit.js","webpack:///./~/vega/src/core/config.js","webpack:///./~/vega/src/core/View.js","webpack:///./~/vega/src/parse/streams.js","webpack:///./~/vega/src/scene/Transition.js","webpack:///./~/vega/src/core/HeadlessView.js","webpack:///./~/vega/src/core/schema.js","webpack:///./~/vega-lite/src/vl.js","webpack:///./~/vega-lite/src/bin.js","webpack:///./~/vega-lite/src/channel.js","webpack:///./~/vega-lite/src/util.js","webpack:///./~/vega-lite/~/datalib/src/util.js","webpack:///./~/vega-lite/~/datalib/src/generate.js","webpack:///./~/vega-lite/~/datalib/src/bins/bins.js","webpack:///./~/vega-lite/~/datalib/src/time.js","webpack:///./~/vega-lite/~/datalib/~/d3-time/build/d3-time.js","webpack:///./~/vega-lite/src/data.js","webpack:///./~/vega-lite/src/type.js","webpack:///./~/vega-lite/src/encoding.js","webpack:///./~/vega-lite/src/fielddef.js","webpack:///./~/vega-lite/src/aggregate.js","webpack:///./~/vega-lite/src/timeunit.js","webpack:///./~/vega-lite/src/compile/compile.js","webpack:///./~/vega-lite/src/compile/Model.js","webpack:///./~/vega-lite/src/config.js","webpack:///./~/vega-lite/src/scale.js","webpack:///./~/vega-lite/src/axis.js","webpack:///./~/vega-lite/src/legend.js","webpack:///./~/vega-lite/src/mark.js","webpack:///./~/vega-lite/src/compile/config.js","webpack:///./~/vega-lite/src/compile/stack.js","webpack:///./~/vega-lite/src/compile/common.js","webpack:///./~/vega-lite/src/sort.js","webpack:///./~/vega-lite/src/compile/time.js","webpack:///./~/vega-lite/src/compile/scale.js","webpack:///./~/vega-lite/src/compile/axis.js","webpack:///./~/vega-lite/src/compile/data.js","webpack:///./~/vega-lite/src/compile/layout.js","webpack:///./~/vega-lite/src/compile/facet.js","webpack:///./~/vega-lite/src/compile/legend.js","webpack:///./~/vega-lite/src/compile/mark/mark.js","webpack:///./~/vega-lite/src/compile/mark/area.js","webpack:///./~/vega-lite/src/compile/mark/bar.js","webpack:///./~/vega-lite/src/compile/mark/line.js","webpack:///./~/vega-lite/src/compile/mark/point.js","webpack:///./~/vega-lite/src/compile/mark/text.js","webpack:///./~/vega-lite/src/compile/mark/tick.js","webpack:///./~/vega-lite/src/shorthand.js","webpack:///./~/vega-lite/src/spec.js","webpack:///./~/vega-lite/src/validate.js","webpack:///./~/vega-embed/src/parameter.js","webpack:///./~/vega-embed/src/post.js","webpack:///external \"jquery\"","webpack:///external \"base/js/events\""],"names":["define","__WEBPACK_EXTERNAL_MODULE_207__","__WEBPACK_EXTERNAL_MODULE_208__","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","render","selector","spec","type","output_area","el","$","find","embedSpec","mode","embed","error","result","console","log","imageData","view","toImageURL","output","data","image/png","split","metadata","output_type","append_output","load","url","arg","callback","vg","util","err","opt","extend","source","JSON","parse","cb","params","isString","stringify","actions","MODES","vega","PREPROCESSOR","div","d3","select","classed","html","parameters","elp","parameter_el","pdiv","append","attr","map","parameter","init","chart","renderer","undefined","ctrl","ext","text","toUpperCase","name","on","this","href","event","preventDefault","viewSource","editor","post","window","config","editor_url","forEach","bind","update","header","source_header","footer","source_footer","win","open","document","write","title","vl","vega-lite","vgjson","vljson","compile","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","d3_documentElement","node","ownerDocument","documentElement","d3_window","defaultView","d3_ascending","a","b","NaN","d3_number","x","d3_numeric","isNaN","d3_bisector","compare","left","lo","hi","arguments","length","mid","right","d3_transposeLength","d","d3_range_integerScale","k","d3_class","ctor","properties","key","Object","defineProperty","prototype","value","enumerable","d3_Map","_","create","d3_map_escape","d3_map_proto","d3_map_zero","d3_map_unescape","slice","d3_map_has","d3_map_remove","d3_map_keys","keys","push","d3_map_size","size","d3_map_empty","d3_Set","d3_identity","d3_rebind","target","method","apply","d3_vendorSymbol","object","charAt","i","n","d3_vendorPrefixes","prefixName","d3_noop","d3_dispatch","d3_dispatch_event","dispatch","l","z","listeners","listenerByName","listener","get","indexOf","concat","remove","set","d3_eventPreventDefault","d3_eventSource","s","e","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e1","e0","d3_selection","groups","d3_subclass","d3_selectionPrototype","d3_selection_selector","d3_select","d3_selection_selectorAll","d3_selectAll","d3_selection_attr","attrNull","removeAttribute","attrNullNS","removeAttributeNS","space","local","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","ns","qualify","d3_collapse","trim","replace","d3_selection_classedRe","RegExp","requote","d3_selection_classes","d3_selection_classed","classedConstant","classedFunction","d3_selection_classedName","re","classList","add","getAttribute","lastIndex","test","d3_selection_style","priority","styleNull","style","removeProperty","styleConstant","setProperty","styleFunction","d3_selection_property","propertyNull","propertyConstant","propertyFunction","d3_selection_creator","namespace","namespaceURI","d3_nsXhtml","createElement","createElementNS","createNS","d3_selectionRemove","parent","parentNode","removeChild","d3_selection_dataNode","__data__","d3_selection_filter","d3_selectMatches","d3_selection_sortComparator","comparator","d3_selection_each","j","group","d3_selection_enter","selection","d3_selection_enterPrototype","d3_selection_enterInsertBefore","enter","i0","j0","d3_selection_on","capture","onRemove","removeEventListener","onAdd","wrap","d3_array","addEventListener","removeAll","match","d3_selection_onListener","filter","d3_selection_onFilters","d3_selection_onFilter","o","related","relatedTarget","compareDocumentPosition","d3_event_dragSuppress","d3_event_dragId","click","w","d3_event_dragSelect","suppressClick","off","setTimeout","d3_mousePoint","container","changedTouches","svg","ownerSVGElement","createSVGPoint","point","d3_mouse_bug44083","scrollX","scrollY","position","top","margin","padding","border","ctm","getScreenCTM","f","pageX","y","pageY","clientX","clientY","matrixTransform","inverse","rect","getBoundingClientRect","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","d3_sgn","d3_cross2d","d3_acos","π","Math","acos","d3_asin","halfπ","asin","d3_sinh","exp","d3_cosh","d3_tanh","d3_haversin","sin","d3_color","d3_hsl","h","d3_rgb_parse","d3_rgb_hsl","d3_hsl_rgb","v","m1","m2","vv","round","d3_rgb","d3_hcl","d3_lab","d3_lab_hcl","d3_rgb_lab","rgb","r","g","d3_hcl_lab","cos","d3_radians","d3_lab_rgb","d3_lab_xyz","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_xyz_rgb","atan2","d3_degrees","sqrt","d3_xyz_lab","pow","d3_rgbNumber","d3_rgbString","d3_rgb_hex","max","toString","min","format","hsl","color","exec","toLowerCase","parseFloat","d3_rgb_parseNumber","d3_rgb_names","parseInt","d3_rgb_xyz","d3_functor","d3_xhrType","response","mimeType","d3_xhr","respond","status","request","d3_xhrHasResponse","xhr","headers","XMLHttpRequest","responseType","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","send","setRequestHeader","overrideMimeType","beforesend","abort","rebind","d3_xhr_fixCallback","responseText","d3_timer","delay","then","Date","now","time","timer","t","d3_timer_queueTail","d3_timer_queueHead","d3_timer_interval","d3_timer_timeout","clearTimeout","d3_timer_frame","d3_timer_step","d3_timer_mark","d3_timer_sweep","isFinite","t0","t1","Infinity","d3_format_precision","ceil","LN10","d3_formatPrefix","abs","scale","symbol","d3_locale_numberFormat","locale","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","width","substring","reverse","join","specifier","d3_format_re","fill","align","sign","zfill","comma","precision","prefix","suffix","integer","exponent","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","unit","formatPrefix","before","after","lastIndexOf","Array","d3_date_utc","UTC","d3_time_interval","step","number","date","d0","d1","offset","d3_date","range","dt","times","range_utc","utc","floor","d3_time_interval_utc","d3_locale_timeFormat","d3_time_format","template","string","charCodeAt","d3_time_formatPads","d3_time_formats","H","M","S","L","Z","d3_time_parse","localZ","setFullYear","W","getDay","U","setHours","d3_time_parsers","d3_time_parseWeekdayAbbrev","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_parseWeekday","d3_time_dayRe","d3_time_dayLookup","d3_time_parseMonthAbbrev","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_parseMonth","d3_time_monthRe","d3_time_monthLookup","d3_time_parseLocaleFull","d3_time_parseLocaleDate","d3_time_parseLocaleTime","X","d3_time_parseAmPm","d3_time_periodLookup","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","multi","d3_time_formatMulti","d3_time_formatRe","d3_time_formatLookup","A","getMonth","B","d3_time_formatPad","getDate","getHours","I","d3_time","dayOfYear","getMilliseconds","getMinutes","getSeconds","sundayOfYear","mondayOfYear","getFullYear","Y","d3_time_zone","%","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","names","d3_time_numberRe","d3_time_expandYear","getTimezoneOffset","zs","zh","zm","d3_time_percentRe","formats","d3_adder","d3_adderSum","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","hasOwnProperty","d3_geo_streamLine","coordinates","closed","coordinate","lineStart","lineEnd","d3_geo_streamPolygon","polygonStart","polygonEnd","d3_geo_areaRingStart","nextPoint","λ","φ","dλ","λ0","sdλ","adλ","cosφ","sinφ","sinφ0","u","cosφ0","d3_geo_areaRingSum","λ00","φ00","d3_geo_area","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","ε","d3_geo_centroidPoint","d3_geo_centroidPointXYZ","d3_geo_centroidW0","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidLineStart","y0","z0","x0","d3_geo_centroidW1","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroid","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","cx","cy","cz","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_compose","compose","invert","d3_true","d3_geo_clipPolygon","segments","clipStartInside","interpolate","subject","clip","segment","p0","p1","d3_geo_clipPolygonIntersection","sort","d3_geo_clipPolygonLinkCircular","entry","points","start","current","isSubject","array","other","d3_geo_clip","pointVisible","clipLine","clipStart","rotate","pointLine","line","pointRing","ring","ringListener","ringStart","ringEnd","clean","ringSegments","buffer","pop","polygon","polygonStarted","shift","d3_geo_clipSegmentLength1","rotatedClipStart","merge","d3_geo_pointInPolygon","d3_geo_clipSort","sphere","d3_geo_clipBufferListener","lines","rejoin","d3_geo_clipAntimeridianLine","φ0","sλ0","λ1","φ1","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianInterpolate","from","to","direction","meridian","parallel","meridianNormal","polarAngle","winding","reset","point0","antimeridian","τ","arc","intersection","φarc","d3_geo_clipCircle","radius","visible","cr","c0","v0","v00","point2","point1","smallRadius","code","intersect","notHemisphere","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","t2","q","δλ","polar","q1","d3_geo_circleInterpolate","d3_geom_clipLine","x1","y1","ax","ay","bx","by","dx","dy","d3_geo_clipExtent","corner","comparePoints","ca","insidePolygon","wn","a1","linePoint","first","v_","x_","y_","x__","y__","v__","bufferListener","d3_geo_clipExtentMAX","listener_","inside","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","forward","ρ","C","ρ0","ρ0_y","d3_geo_pathAreaRingStart","d3_geo_pathAreaPolygon","x00","y00","d3_geo_pathArea","d3_geo_pathBoundsPoint","d3_geo_pathBoundsX0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY0","d3_geo_pathBoundsY1","d3_geo_pathBuffer","pointCircle","pointLineStart","stream","lineEndPolygon","d3_geo_pathBufferCircle","pointRadius","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroid","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","context","moveTo","lineTo","closePath","d3_geo_resample","project","resample","maxDepth","resampleRecursive","resampleNone","d3_geo_transformPoint","resampleLineTo","a0","b0","ringPoint","a00","b00","c00","b1","depth","d2","δ2","φ2","λ2","x2","y2","dx2","dy2","dz","cosMinDistance","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projection","projectRotate","δx","δy","d3_geo_rotation","δφ","δγ","center","invalidate","valid","projectResample","preclip","d3_geo_clipAntimeridian","postclip","clipAngle","clipExtent","translate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","angle","PI","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","distance","d3_geo_lengthLineStart","cosΔλ","d3_geo_lengthSum","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_conicConformal","F","tan","d3_geo_mercator","d3_geo_conicEquidistant","G","d3_geo_mercatorProjection","clipAuto","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_polygonClosed","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","circle","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiBeachPool","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiBeaches","d3_geom_voronoiRemoveBeach","vertex","previous","P","next","N","disappearing","lArc","unshift","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","R","newArc","insert","lSite","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiCloseCells","extent","cell","iHalfEdge","halfEdges","nHalfEdges","end","cells","d3_geom_voronoiCells","iCell","prepare","splice","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ε2","ha","d3_geom_voronoiCirclePool","d3_geom_voronoiCircles","d3_geom_voronoiFirstCircle","d3_geom_voronoiClipEdges","d3_geom_voronoiEdges","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","rx","ry","fx","fy","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","leaf","nodes","d3_geom_quadtreeVisit","sx","sy","children","d3_geom_quadtreeFind","root","closestPoint","minDistance2","distance2","xm","ym","below","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","bi","d3_interpolate_numberA","d3_interpolate_numberB","index","interpolators","d3_interpolateArray","na","nb","n0","d3_ease_clamp","d3_ease_reverse","d3_ease_reflect","d3_ease_quad","d3_ease_cubic","d3_ease_cubicInOut","t3","d3_ease_poly","d3_ease_sin","d3_ease_exp","d3_ease_circle","d3_ease_elastic","d3_ease_back","d3_ease_bounce","d3_interpolateHcl","hcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","as","d3_interpolateLab","lab","aa","ba","d3_interpolateRound","d3_transform","r0","r1","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","d3_interpolateTransformPop","d3_interpolateTranslate","ta","tb","d3_interpolateRotate","ra","rb","d3_interpolateSkew","wa","wb","d3_interpolateScale","ka","kb","d3_interpolateTransform","transform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","quad","alpha","charges","charge","random","pointCharge","d3_layout_hierarchyRebind","hierarchy","links","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","child","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","d3_layout_stackMaxIndex","d3_layout_stackReduceSum","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","values","d3_layout_histogramBinFixed","LN2","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","bound","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","s1","s2","d3_layout_packUnlink","d3_layout_packTransform","db","da","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","domain","stop","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","i1","d3_scale_niceStep","d3_scale_niceIdentity","d3_scale_polylinear","bisect","d3_scale_linear","clamp","rescale","linear","input","Number","rangeRound","ticks","d3_scale_linearTicks","tickFormat","d3_scale_linearTickFormat","d3_scale_linearNice","copy","d3_scale_linearRebind","d3_scale_linearTickRange","span","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","base","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","ranger","steps","rangeBand","xi","has","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","d3_scale_quantile","thresholds","quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","d3_svg_arcInnerRadius","innerRadius","d3_svg_arcOuterRadius","outerRadius","d3_svg_arcStartAngle","startAngle","d3_svg_arcEndAngle","endAngle","d3_svg_arcPadAngle","padAngle","d3_svg_arcSweep","d3_svg_arcCornerTangents","rc","cw","x01","y01","ox","oy","D","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","tension","defined","d3_svg_lineLinear","interpolateKey","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","path","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineCardinalOpen","d3_svg_lineHermite","d3_svg_lineCardinalTangents","d3_svg_lineCardinalClosed","d3_svg_lineCardinal","tangents","pi","lp","p2","d3_svg_lineBasis","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineMonotone","d3_svg_lineRadial","d3_svg_area","area","points1","interpolateReverse","points0","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","d3_selection_interruptNS","lock","activeId","active","count","interrupt","d3_transition","d3_transitionPrototype","d3_transition_tween","tween","d3_transition_text","textContent","d3_transitionNamespace","d3_transitionNode","inherit","schedule","elapsed","transition","cancelId","cancel","tick","tweens","ease","duration","d3_svg_axisX","d3_svg_axisY","d3_time_formatIsoNative","toISOString","d3_time_scale","methods","tickMethod","d3_time_scaleSteps","year","d3_time_scaleMilliseconds","d3_time_scaleDate","interval","skip","skipped","d3_json","d3_html","d3_document","createRange","selectNode","body","createContextualFragment","version","d3_arraySlice","list","childNodes","nodeType","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","ascending","descending","sum","mean","median","numbers","variance","deviation","d3_bisect","bisectLeft","bisectRight","bisector","shuffle","permute","indexes","permutes","pairs","transpose","matrix","row","zip","entries","arrays","merged","Error","isArray","empty","nest","mapType","rollup","sortValues","keyValue","setter","valuesByKey","sortKey","sortKeys","keyMap","order","behavior","d3_requote_re","__proto__","property","querySelector","querySelectorAll","d3_selectMatcher","matches","Sizzle","matchesSelector","subgroup","subnode","subgroups","selectAll","d3_nsPrefix","xhtml","xlink","xml","xmlns","getAttributeNS","each","contains","getComputedStyle","getPropertyValue","innerHTML","appendChild","insertBefore","groupData","nodeData","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","exit","datum","nextSibling","args","upgroup","mouseenter","mouseleave","mouse","navigator","userAgent","touch","touches","drag","mousedown","touchstart","dragstart","move","moved","position1","dragId","position0","dragged","dragOffset","ended","dragSubject","dragName","dragRestore","that","correspondingElement","origin","τε","SQRT2","ρ2","ρ4","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","zoom","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","location","scaleTo","scaleExtent","translateTo","zoomTo","__chart__","center0","zoomstarted","zooming","zoomed","zoomended","location0","mousemove","mouseup","d3_selection_interrupt","relocate","scale0","locations0","started","touchmove","touchend","targets","changed","touchtime","distance0","l0","l1","distance1","scale1","zoomName","mousewheelTimer","translate0","d3_behavior_zoomDelta","shiftKey","d3_behavior_zoomInfinity","deltaY","deltaMode","wheelDelta","detail","view1","d3_transitionInheritId","d3_hslPrototype","brighter","darker","d3_hclPrototype","d3_lab_K","d3_labPrototype","d3_rgbPrototype","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","functor","dsv","delimiter","typedResponse","formatRow","formatValue","reFormat","delimiterCode","parseRows","Function","token","EOF","eol","EOL","rows","formatRows","fieldSet","fields","field","csv","tsv","flush","d3_formatPrefixes","String","fromCharCode","toPrecision","toExponential","toFixed","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getTime","valueOf","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setUTCFullYear","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","day","years","week","sunday","weeks","weekOfYear","-","0","numberFormat","timeFormat","d3_locale_enUS","geo","d3_adderTemp","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","d3_geo_areaSum","bounds","ranges","normal","equatorial","inflection","λ_","λi","φi","dλSum","λ__","φ__","compareRanges","withinRange","best","centroid","conicEqualArea","raw","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathBounds","contextStream","cacheStream","projectStream","projectionMutator","equirectangular","Δλ","sinΔλ","sinφ1","graticule","X0","DX","X1","Y0","DY","Y1","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","stereographic","transverseMercator","geom","vertices","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","grandpa","uncle","sibling","voronoi","polygons","d3_geom_voronoiClipExtent","triangles","s0","delaunay","quadtree","nx","ny","insertChild","nPoint","xs","ys","x1_","y1_","x2_","y2_","compat","visit","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolateArray","d3_ease_default","d3_ease","poly","cubic","elastic","back","bounce","d3_ease_mode","in","out","in-out","out-in","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","baseVal","consolidate","d3_transformIdentity","interpolateTransform","layout","bundle","paths","chord","relayout","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","di","dj","subindex","sortChords","resort","force","repulse","dw","dn","theta2","chargeDistance2","dragmove","resume","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","d3_layout_forceChargeDistance2","gravity","weight","chargeDistance","theta","dimension","neighbors","candidates","stack","childs","revalue","partition","pie","arcs","d3_layout_pieSortByValue","series","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","inside-out","sums","bottom","tops","bottoms","default","silhouette","wiggle","s3","o0","expand","zero","histogram","bin","bins","valuer","binner","frequency","pack","root0","root1","wrapTree","firstWalk","secondWalk","nodeSize","sizeNode","tx","separation","node1","queue","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","squarify","score","pad","remaining","worst","stickify","rmax","rmin","ratio","stickies","sticky","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","quantize","threshold","circleSegment","rp","ap","padRadius","d3_svg_arcAuto","h1","h0","cornerRadius","rc1","rc0","oc","kc","lc","t30","t12","t03","t21","linear-closed","step-before","step-after","basis","basis-open","basis-closed","cardinal","cardinal-open","cardinal-closed","monotone","radial","equals","curve","self","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","triangle-down","d3_svg_symbolSqrt3","triangle-up","symbolTypes","d3_transitionId","d3_transitionInherit","subnodes","nameNS","attrTween","attrTweenNS","styleString","styleTween","inheritId","id0","id1","axis","tickTransform","tickValues","tickArguments_","tickFormat_","tickEnter","tickExit","tickUpdate","tickSpacing","innerTickSize","tickPadding","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","orient","outerTickSize","d3_svg_axisDefaultOrient","d3_svg_axisOrients","tickSize","tickSubdivide","brush","brushstart","background","resize","resizes","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","xExtent","yExtent","keydown","keyCode","dragging","keyup","brushmove","altKey","resizingX","move1","resizingY","event_","yClamp","xClamp","yExtentDomain","xExtentDomain","brushend","eventTarget","resizing","ex","ey","d3_svg_brushResizes","extent1","extent0","yi","clear","nw","ne","se","sw","d3_time_formatUtc","d3_time_formatIso","iso","second","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","json","responseXML","dataflow","scene","Bounder","Builder","Encoder","GroupBuilder","transforms","Transform","BatchTransform","Parameter","schema","logging","debug","ChangeSet","Collector","DataSource","Dependencies","Graph","Node","Signal","Tuple","cs","reflow","mod","rem","stamp","facet","trans","dirty","DEPS","ALL","deps","graph","Base","_data","router","collector","constructor","evaluate","idFilter","msg","enable","state","prevTime","ts","ingest","_id","tupleID","_prev","idMap","ids","derive","rederive","prev","prev_init","prev_update","nodeID","Flags","Router","Produces","Mutates","Reflows","Batch","_graph","_rank","rank","_qrank","_stamp","_listeners","_ids","_deps","_flags","rerank","cur","qrank","last","_setf","produces","mutates","reflows","batch","dependency","_names","dep","len","addListener","removeListener","idx","disconnect","pulse","reevaluate","prop","_name","_source","_facet","_input","_output","_indexes","_indexFields","_inputNode","_outputNode","_pipeline","_collector","_mutates","DataSourceInput","ds","delta","DataSourceOutput","updateIndices","dl","DataSourceListener","_srcMap","src","tuples","where","func","fire","propagate","pipeline","preprocess","connect","synchronize","getIndex","read","Aggregator","groupby","$bin","print","table","summary","Buffer","strrep","str","truncateOnWord","rev","cnt","tok","truncate_word_re","FNAME","namedfunc","duplicate","obj","equal","vals","toMap","keystr","isObject","isFunction","isNumber","isBoolean","isDate","isValid","isBuffer","field_re","accessor","mutator","$func","op","$valid","$length","$in","cmp","numcmp","stablesort","sortBy","keyFn","indices","sa","sb","pos","padchar","truncate","word","ellipsis","l2","global","typedArraySupport","Bar","arr","Uint8Array","foo","subarray","byteLength","kMaxLength","TYPED_ARRAY_SUPPORT","fromNumber","fromString","fromObject","allocate","checked","encoding","fromBuffer","fromArray","TypeError","ArrayBuffer","fromTypedArray","fromArrayBuffer","fromArrayLike","fromJsonObject","_augment","_isBuffer","fromPool","poolSize","rootParent","RangeError","SlowBuffer","buf","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","binarySlice","base64Slice","utf16leSlice","hexWrite","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","binaryWrite","base64Write","ucs2Write","utf16leToBytes","base64","fromByteArray","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","ret","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","stringtrim","INVALID_BASE64_RE","units","leadSurrogate","byteArray","toByteArray","dst","INSPECT_MAX_BYTES","isEncoding","item","inspect","val","byteOffset","arrayIndexOf","foundIndex","readUInt8","writeUInt8","swap","toJSON","_arr","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","_set","toArrayBuffer","BP","toLocaleString","lookup","decode","elt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","tmp","placeHolders","Arr","uint8ToBase64","uint8","encode","num","tripletToBase64","temp","extraBytes","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","sanitizeUrl","file","fileProtocol","baseURL","protocol_re","startsWith","useXHR","defaultProtocol","domainWhiteList","host","hostname","parts","whiteListed","some","loader","http","xhrHasResponse","async","filename","fs","readFile","readFileSync","getBody","options","gzip","statusCode","searchString","types","cols","parsers","clen","inferAll","pattern","timeF","annotation","TYPES","typeAll","infer","TESTS","PARSERS","boolean","all","topojson","treejson","d3_dsv","delim","fmt","factory","Dsv","objectConverter","columns","customConverter","inferColumns","columnSet","column","convert","reader","objects","mesh","noop","transformAbsolute","transformRelative","topology","feature$1","absolute","geometryType","stitchArcs","ends","dp","fragmentByEnd","fragmentByStart","stitchedArcs","fragments","emptyIndex","fg","gf","meshArcs","geomsByArc","geoms","cartesianTriangleArea","triangle","mergeArcs","register","ring$$","polygonsByArc","components","component","ki","indexesByArc","ij","ik","compareArea","minAreaHeap","up","down","heap","removed","presimplify","triangleArea","relative","maxArea","toTable","parentField","childrenField","localeRef","numberLocale","d3_numberF","numberF","timeLocale","d3_timeF","monthFull","monthAbbr","dayFull","dayAbbr","linearRange","e10","e5","e2","trimZero","rightmostDigit","autoNumberFormat","formatSpecifier","linearNumberFormat","precisionPrefix","precisionRound","precisionFixed","timeAutoFormat","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","utcAutoFormat","utcFormat","utcSecond","utcMinute","utcHour","utcDay","utcMonth","utcWeek","utcYear","monthFormat","abbreviate","tmpDate","dayFormat","numberPrefix","auto","newInterval","floori","offseti","every","weekday","utcWeekday","millisecond","monday","tuesday","wednesday","thursday","friday","saturday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","milliseconds","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","utcMillisecond","utcMilliseconds","utcSeconds","utcMinutes","utcHours","utcDays","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcWeeks","utcMonths","utcYears","d3Time","localDate","utcDate","newYear","locale$1","newFormat","pads","newParse","newDate","parseSpecifier","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","parseLocaleDate","parseLocaleTime","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","formatPeriod","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","formatRe","formatLookup","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekNumberSunday","formatWeekdayNumber","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekNumberSunday","formatUTCWeekdayNumber","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseSeconds","parseWeekNumberSunday","parseWeekdayNumber","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","requoteRe","numberRe","percentRe","formatIsoNative","caES","deCH","deDE","enCA","enGB","esES","fiFI","frCA","frFR","heIL","huHU","itIT","jaJP","koKR","mkMK","nlNL","plPL","ptBR","ruRU","svSE","zhCN","isoSpecifier","formatIso","localeCaEs","localeDeCh","localeDeDe","localeEnCa","localeEnGb","localeEnUs","localeEsEs","localeFiFi","localeFrCa","localeFrFr","localeHeIl","localeHuHu","localeItIt","localeJaJp","localeKoKr","localeMkMk","localeNlNl","localePlPl","localePtBr","localeRuRu","localeSvSe","localeZhCn","isoFormat","formatDecimal","coefficient","formatPrefixAuto","prefixExponent","formatRounded","formatDefault","FormatSpecifier","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","prefixes","","defaultLocale","csCZ","localeCsCz","_cells","_aggr","_stream","summarize_args","ops","Measures","ADD_CELL","MOD_CELL","proto","_key","dims","_dims","summarize","_count","aggr","measures","_assign","*","_cellkey","_cell","_newcell","tuple","_newtuple","flag","aggs","collect","_ingest","_add","_on_add","_rem","_on_rem","_mod","curr","cell0","cell1","_on_mod","_markMod","_rems","changes","_on_drop","_on_keep","execute","_consolidate","measure","resolve","agg","helper","req","ctr","assign","distinct","missing","average","variancep","stdev","stdevp","q3","argmin","argmax","modeskew","ztest1","nullH","nullh","gaussian","gen","mu","stats","SE","cdf","ztestP","diffs","ztest2","meanDiff","unique","results","quartile","geometric","harmonic","M2","avg","med","std","dot","dist","L2","cohensd","covariance","vx","vy","tie","cor","fn","mua","mub","sda","sdb","mat","linearRegression","xy","slope","icept","fit","intercept","rss","bootstrap","ci","smooth","means","samples","icdf","paired","zeros","entropy","counts","mutual","info","profile","sd","__summary__","repeat","uniform","pdf","rds","cd","_last","REM","_get","_ext","_q","q2","level","minstep","eps","maxb","maxbins","logb","EPSILON","date_value","date_index","dmin","dmax","minb","minbins","tempDate","STEPS","toUnitMap","baseDate","utcBaseDate","numerical","categorical","qtype","variable","regex","template_re","template_escaper","template_escapeChar","template_var","strcall","stringCast","formatter","template_format","filters","filter_re","pidx","args_re","template_escapes","format_map","get_format","clearFormatCache","'","\\","\r","\n","
","
","$year","$month","$date","dates","$day","weekdays","$hour","$minute","$second","$utcYear","$utcMonth","$utcDate","$utcDay","$utcHour","$utcMinute","$utcSecond","formatTable","separator","minwidth","maxwidth","lens","FMT","head","tmpl","POS","formatSummary","printCategoricalProfile","printQuantitativeProfile","Heap","Deps","_signals","_requestedIndexes","doNotPropagate","hash","SIGNALS","dataValues","DATA","signalValues","signal","signalRef","ref","requestIndex","ri","reg","buildIndexes","jlen","skipSignals","nplse","tpls","ntpls","isSg","pulses","pq","peek","done","branch","collects","signals","reflowed","run","_siftdown","_siftup","ridx","cidx","retval","pushpop","initialValue","_value","_verbose","_handlers","verbose","handler","axes","events","expr","legends","mark","marks","modify","predicates","streams","parseAxes","model","def","axs","parseAxis","ORIENT","layer","grid","titleOffset","tickFormatType","subdivide","tickSizeMajor","tickSizeMinor","tickSizeEnd","tickCount","majorTickProperties","majorTicks","minorTickProperties","minorTicks","tickLabelProperties","labels","titleProperties","gridLineProperties","domainProperties","defs","enum","items","oneOf","required","additionalProperties","$ref","axisDef","getTicks","major","minor","axisSubdivide","label","titleAutoOffset","titleOffsetAutoMin","titleOffsetAutoMax","titleOffsetAutoMargin","preds","titleStyle","axisBounds","union","fontSize","axis_def","newScale","oldScale","ORDINAL","scaleName","axisScaleRange","gridLines","axisTicks","tickLabels","axisTickLabels","axisDomain","axisTitle","stroke","gridColor","strokeOpacity","gridOpacity","axisTicksExtend","tickMajorSize","tickMinorSize","axisLabelExtend","axisDomainExtend","tickEndSize","axisTitleExtend","gridLineStyle","majorTickStyle","minorTickStyle","tickLabelStyle","domainStyle","interactive","axisUpdate","scales","parseMark","tickFormatString","getTickFormat","tdata","axisOrients","subticks","axisScaleExtent","baseline","axisBaseline","axisAlign","mult","height","ofx","ofy","tickColor","strokeWidth","tickWidth","opacity","tickLabelColor","font","tickLabelFont","tickLabelFontSize","titleFont","titleFontSize","fontWeight","titleFontWeight","titleColor","axisColor","axisWidth","props","parseProperties","acc","hover","anyOf","handleDep","handleNestedRefs","_nRefs","exprs","vars","nested","rule","valueRef","xc","yc","hasPath","encoder","tpl","dependencies","rules","inputs","exprFn","globals","dataSources","predicate","predName","pred","predicateArg","colorRef","sgRef","fRef","sRef","fieldRef","scaleRef","band","xx","yy","zz","scope","fr","valueSchema","modType","valRef","allOf","refs","stringModifiers","numberModifiers","numberValue","stringValue","booleanValue","arrayValue","colorValue","propset","fillOpacity","strokeDash","strokeDashOffset","cursor","shape","fontStyle","inferFormatType","getFormatter","TIME","STRING","logFilter","Item","Bounds","canvas","Gradient","fromJSON","cmdlen","regexp","pathstr","chunks","param","cmd","drawArc","coords","seg","bez","bezier","bezierCurveTo","tempX","tempY","tempControlX","tempControlY","controlX","controlY","beginPath","quadraticCurveTo","large","sweep","rotateX","segmentCache","th","sin_th","cos_th","pl","a01","a10","a11","sfactor_sq","sfactor","th0","th1","th_arc","segs","th2","th3","bezierCache","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","cache","Handler","Renderer","CanvasHandler","_down","_touch","_first","moveEvent","overEvent","outEvent","evt","_active","pickEvent","inactive","DOM","initialize","_canvas","getContext","DOMMouseScroll","dragover","mouseout","dragleave","vegaType","_obj","eventName","_padding","pick","_scene","gx","gy","marktype","doc","tag","tagName","className","cssClass","openTag","closeTag","_el","element","handlers","image","ir","or","halfpi","ea","draw","drawAll","pickPath","drawPathOne","opac","drawPathAll","intersects","pathFunc","drawOne","trueFunc","pixelratio","testPath","filled","lw","isPointInStroke","strokeCap","lineWidth","lineCap","isPointInPath","globalAlpha","fillStyle","strokeStyle","vgLineDash","vgLineDashOffset","gradient","grad","createLinearGradient","stops","addColorStop","pathCache","areaPath","hit","xw","yh","d3_svg","areav","areah","xmlns:xlink","textAlign","textBaseline","middle","styles","styleProperties","axisItems","EMPTY","legendItems","fillRect","strokeRect","save","restore","subscene","hits","interative","loadImage","drawImage","linePath","tan30","sqrt3","fillText","strokeText","textBounds","tempBounds","clone","MAX_VALUE","encloses","alignsWith","g2D","instance","strokeBounds","stokeOpacity","pathBounds","drawPath","ix","iy","xmin","xmax","ymin","ymax","angles","textMark","noRotate","measureText","includeLegends","itemBounds","markBounds","hasi","DUMMY_ITEM","BoundsContext","Canvas","lineDash","retina","_ctx","HTMLElement","pixelRatio","setTransform","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","NOOP","NODASH","setLineDash","dash","lineDashOffset","webkitLineDash","webkitLineDashOffset","mozDash","quote","fontVariant","CanvasRenderer","loadConfig","_loader","ImageLoader","clipToBounds","RETINA","_width","_height","pendingImages","pending","ctx","clearRect","_bgcolor","uri","renderAsync","_async_id","_pending","_config","Config","browser","Image","server","imageURL","firstChild","bgcolor","SVGHandler","_svg","SVGRenderer","_dirtyID","updateGradient","updateClipping","dirtyParents","mdef","__values__","emit","SVG","_root","_defs","clip_id","clipping","class","_dirtyCheck","_dirtyAll","_resetDefs","updateDefs","drawMark","isDirty","_update","isGroup","_recurse","mark_extras","extra","translateItem","SVGStringRenderer","_text","foot","prefixed","escape_text","MARKS","buildDefs","stop-color","attributes","markGroup","hasPropertySet","cousin","iidx","midx","gradient_id","indent","sets","parseBg","parseData","onError","onLoad","datasource","parseTransforms","parseModify","parseDef","aggregate","countpattern","linkpath","fold","formula","geopath","impute","treeify","wordcloud","Aggregate","addParameters","sg","signalDeps","_transform","_fields","_args","_out","_type","TUPLE","_acc","getFields","meas","df","Facetor","VALUE","MULTI","VALID_OPS","accessors","hasGetter","reeval","gby","_mark","$schema","description","_parameters","_accessors","_resolution","arrayType","isData","dataType","isField","fieldType","valType","exprType","sig","isExpr","FIELDS","_facetID","facetID","disconnect_cell","Bin","batchTransform","Cross","with","_lastWith","_cids","_cache","_cid","diag","mids","cid","cids","oadd","fltrd","rids","omod","orem","purge","selfCross","woutput","wdata","CountPattern","case","stopwords","_stop","_stop_re","_pattern","_match","_counts","_changeset","_tuples","_tokenize","LinkPath","sourceX","sourceY","targetX","targetY","ty","cornerX","cornerY","cornerR","tr","sc","ss","tc","sf","diagonalX","diagonalY","diagonalR","mr","shapes","minimum","maximum","Facet","Filter","_skip","Fold","_reset","_tuple","_fn","minItems","uniqueItems","Force","_interactive","_setup","_nodes","_links","_layout","iterations","nodeInput","linkSource","linkInput","configure","tickHandler","lut","maxItems","Formula","Geo","Parameters","lon","lat","d3Projection","proj","_mode","_projection","ll","baseSchema","GeoPath","geojson","Hierarchy","nodesize","PARTITION","SEPARATION","nodesz","Impute","orderby","gb","gv","ob","ov","_imputed","getval","Lookup","onKey","defaultValue","onLast","onData","onF","_lut","_on","Pie","ones","Rank","normalize","klen","norm","Sort","Stack","sortby","Treeify","aggrs","childField","_internal","Treemap","defaultRatio","Voronoi","pathname","Wordcloud","fontScale","spiral","d3_cloud","words","cloudText","cloudFont","cloudFontNormal","cloudFontSize","cloudRotate","cloudPadding","cloudSprite","contextAndRatio","sprite","ch","maxh","cloudRadians","wcr","wsr","hcr","hsr","xoff","yoff","hasText","pixels","getImageData","w32","seen","seenRow","cloudCollide","board","msx","cloudBounds","collideRects","archimedeanSpiral","rectangularSpiral","zeroArray","cloudCanvas","place","dxdy","startX","startY","maxDelta","timeInterval","cloud","tags","clearInterval","setInterval","spirals","archimedean","rectangular","Dispatch","parseType","callbacksByType","applier","callbackValue","callbacks","callbackByName","callback0","otherType","dest","signalName","exprTrigger","isClear","Types","CLEAR","getters","setters","_predicates","INSERT","REMOVE","UPSERT","TOGGLE","peg$subclass","peg$SyntaxError","message","expected","found","captureStackTrace","peg$parse","peg$computePosDetails","details","peg$posDetailsCache","seenCR","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","peg$fail","peg$maxFailPos","peg$currPos","peg$maxFailExpected","peg$buildException","cleanupExpected","buildMessage","stringEscape","hex","expectedDesc","foundDesc","expectedDescs","peg$parsestart","peg$parsemerged","s4","s5","peg$parseordered","peg$FAILED","peg$parsesep","peg$c0","peg$silentFails","peg$c1","peg$savedPos","peg$c2","peg$c3","s6","s7","s8","s9","s10","s11","s12","s13","peg$c4","peg$c5","peg$parsefiltered","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$parsestream","peg$parsefilter","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$parsename","peg$c20","peg$c21","peg$parseeventType","peg$c22","peg$parsemarkType","peg$c23","peg$parsecss","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","peg$c73","peg$c74","peg$c75","peg$c76","peg$c77","peg$c78","peg$c79","peg$c80","peg$c81","peg$c82","peg$c83","peg$c84","peg$parseexpr","peg$c85","peg$c86","peg$c87","peg$c88","peg$c89","peg$c90","peg$c91","peg$c92","peg$c93","peg$c94","peg$c95","peg$c96","peg$result","peg$startRuleFunctions","peg$startRuleFunction","f1","f2","startRule","SyntaxError","scaleGen","codegen","inrange","exclusive","indataGen","indata","dataname","compiler","idWhiteList","fieldVar","globalVar","functions","eventItem","eventGroup","eventX","eventY","iscale","functionDefs","parser","generator","constants","assert","condition","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","Regex","NonAsciiIdentifierStart","isIdentifierPart","NonAsciiIdentifierPart","isFutureReservedWord","isStrictModeReservedWord","isKeyword","strict","skipComment","lineNumber","scanHexEscape","scanUnicodeCodePointEscape","cu1","cu2","throwError","Messages","UnexpectedToken","getEscapedIdentifier","getIdentifier","scanIdentifier","Token","Identifier","Keyword","NullLiteral","BooleanLiteral","scanPunctuator","code2","ch2","ch3","ch4","ch1","tokenize","openParenToken","tokens","openCurlyToken","Punctuator","scanHexLiteral","NumericLiteral","scanOctalLiteral","octal","scanNumericLiteral","scanStringLiteral","unescaped","startLineNumber","startLineStart","StringLiteral","testRegExp","flags","$0","$1","InvalidRegExp","exception","scanRegExpBody","classMarker","terminated","UnterminatedRegExp","literal","scanRegExpFlags","throwErrorTolerant","scanRegExp","lookahead","RegularExpression","collectRegex","loc","isIdentifierName","advanceSlash","prevToken","checkToken","advance","collectToken","TokenName","lex","Position","SourceLocation","WrappingSourceLocation","startToken","WrappingNode","peekLineTerminator","messageFormat","whole","errors","throwUnexpected","UnexpectedEOS","UnexpectedNumber","UnexpectedString","UnexpectedIdentifier","UnexpectedReserved","StrictReservedWord","expect","expectTolerant","matchKeyword","keyword","consumeSemicolon","parseArrayInitialiser","elements","parseAssignmentExpression","finishArrayExpression","parseObjectPropertyKey","StrictOctalLiteral","finishLiteral","finishIdentifier","parseObjectProperty","finishProperty","parseObjectInitialiser","kind","Syntax","PropertyKind","Data","Get","Set","StrictDuplicateProperty","AccessorDataProperty","AccessorGetSet","finishObjectExpression","parseGroupExpression","parenthesisCount","parseExpression","parsePrimaryExpression","legalKeywords","parseArguments","parseNonComputedProperty","parseNonComputedMember","parseComputedMember","parseLeftHandSideExpressionAllowCall","previousAllowIn","allowIn","finishMemberExpression","finishCallExpression","parsePostfixExpression","parseUnaryExpression","finishUnaryExpression","binaryPrecedence","prec","parseBinaryExpression","marker","markers","operator","finishBinaryExpression","parseConditionalExpression","consequent","alternate","finishConditionalExpression","oldParenthesisCount","parseExpressionStatement","finishExpressionStatement","parseStatement","parseSourceElement","parseSourceElements","sourceElement","directive","firstRestricted","sourceElements","expression","Literal","parseProgram","finishProgram","filterTokenLocation","labelSet","inFunctionBody","inIteration","inSwitch","lastCommentStart","tolerant","lexError","program","AssignmentExpression","ArrayExpression","BinaryExpression","CallExpression","ConditionalExpression","ExpressionStatement","LogicalExpression","MemberExpression","ObjectExpression","Program","Property","UnaryExpression","NewlineAfterThrow","InvalidLHSInAssignment","InvalidLHSInForIn","MultipleDefaultsInSwitch","NoCatchOrFinally","UnknownLabel","Redeclaration","IllegalContinue","IllegalBreak","IllegalReturn","StrictModeWith","StrictCatchVariable","StrictVarName","StrictParamName","StrictParamDupe","StrictFunctionName","StrictDelete","StrictLHSAssignment","StrictLHSPostfix","StrictLHSPrefix","finish","finishAssignmentExpression","callee","computed","argument","if","codegen_wrap","ast","CODEGEN_TYPES","idBlackList","memberDepth","FIELD_VAR","GLOBAL_VAR","lookupGlobal","E","LOG2E","LOG10E","SQRT1_2","fncall","cast","DATE","REGEXP","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","indexof","lastindexof","parseLegends","lgnd","parseLegend","legend","labelProperties","legendProperties","symbolProperties","symbols","gradientProperties","legendDef","discrete","ordinalDef","o_legend_def","tickArguments","formatString","symbolSize","spacing","labelStyle","labelFontSize","sz","titles","legendTitle","legendSymbols","vLegendLabels","legendSymbolExtend","symbolStyle","legendStyle","legendPosition","quantDef","q_legend_def","dom","gradientStyle","gradientWidth","layoutSpec","legendGradient","hLegendLabels","gp","gh","hh","tp","LEGEND_ORIENT","ao","lh","_legendPositions","enc","symbolShape","symbolColor","symbolStrokeWidth","labelColor","labelFont","labelAlign","labelBaseline","gradientHeight","gradientStrokeColor","gradientStrokeWidth","parseRootMark","defaults","PROPERTIES","groupMark","visualMark","not","parsePadding","parsePredicates","nullScale","parseSignal","parseOperands","operands","setSignal","setData","decl","parseComparator","parseLogical","parseIn","parseScale","=","==","!=",">",">=","<","<=","and","&&","||","operand","parseSignals","RESERVED","exprVal","_expr","scopedScale","parseSpec","viewport","viewFactory","arglen","argidx","Model","View","opts","cfg","_groups","_node","_builder","_dirty","_groupBuilder","_children","_scaler","_recursor","_scales","recurse","removeTemp","MARK","inline","builder","updateAxis","updateLegend","disconnectChildren","hasMarks","_def","hasAxes","hasLegends","buildMarks","buildAxes","buildLegends","GROUP","_parent","buildGroup","_scaleRefs","SCALES","AXIS","LEGEND","Scale","fullUpdate","_bounder","group_id","inlineDs","_isSuper","_parent_id","_from","_ds","sout","newItem","diff","keyf","keyFunction","_map","Status","EXIT","ENTER","UPDATE","Sentinel","STATUS","CONNECTED","DISCONNECTED","parent_id","inheritFrom","_status","_encoder","disconnectScales","fcs","wasDirty","nestedRefs","guide","update_status","ilen","isGrp","rebound","_updated","quantitative","rng","LINEAR","dataDrivenRange","outer","spatial","dataRef","DataRef","RANGE","DOMAIN","bandSize","bw","invertOrdinal","asc","findAsc","findDsc","QUANTILE","domainMinMax","POWER","isUniques","getRefs","inherits","aggrType","getCache","which","atype","uniques","ck","GROUPBY","COUNT","MIN","MAX","_lastUpdate","addDep","rlen","flen","_values","domainMin","domainMax","LOG","rangeVal","Properties","rangeMin","rangeMax","SQRT","TIME_UTC","QUANTIZE","THRESHOLD","ASC","DESC","rangeDef","autopadInset","labelOffset","_model","__width","__height","_cursor","_autopad","_viewport","_renderer","_handler","_streamer","_skipSignals","_repaint","_renderers","_io","_api","streaming","streamer","api","build","_renderNode","parseStreams","Transition","VIEW_SIGNALS","_strict","autopad","inset","_build","prevHandler","_detach","destroy","built","ren","blob","Blob","URL","createObjectURL","toDataURL","onSignal","offSignal","HeadlessView","extendEvent","vgEvent","registry","invoke","filtered","mergedStream","domEvent","orderedStream","ms","external","internal","EVALUATOR","gk","GATEKEEPER","gatekeeper","trueFn","falseFn","sel","detach","getItem","getGroup","getXY","getX","getY","updates","interp","canvasAsync","wait","propertySets","vlBin","vlChannel","vlData","vlEncoding","vlFieldDef","vlCompile","vlShorthand","vlSpec","vlTimeUnit","vlType","vlValidate","vlUtil","channel","fieldDef","shorthand","timeUnit","validate","autoMaxBins","channel_1","ROW","COLUMN","SIZE","SHAPE","supportMark","getSupportedMark","COLOR","DETAIL","ORDER","bar","TEXT","PATH","getSupportedRole","LABEL","hasScale","util_1","Channel","CHANNELS","without","thisArg","any","mergeDeep","_i","deepMerge_","getbins","dlBin","generate_1","type_1","DataFormat","SUMMARY","SOURCE","STACKED_SCALE","LAYOUT","Type","NOMINAL","QUANTITATIVE","TEMPORAL","getFullName","typeString","TYPE_FROM_SHORT_TYPE","SHORT_TYPE","temporal","nominal","Q","T","O","countRetinal","channels","channelEncoding","isAggregate","fieldDefs","prefn","isCount","nofn","binSuffix","noAggregate","_isFieldDimension","isDimension","isMeasure","aggregate_1","AggregateOp","displayName","COUNT_DISPLAYNAME","cardinality","filterNull","stat","bin_1","timeunit_1","TimeUnit","SECONDS","MINUTES","HOURS","DAY","MONTH","YEAR","yearstat","AGGREGATE_OPS","supportedEnums","supportedTypes","VALUES","VALID","MISSING","DISTINCT","SUM","MEAN","AVERAGE","VARIANCE","VARIANCEP","STDEV","STDEVP","MEDIAN","Q1","Q3","MODESKEW","ARGMIN","ARGMAX","SHARED_DOMAIN_OPS","TIMEUNITS","MILLISECONDS","YEARMONTH","YEARMONTHDAY","YEARMONTHDATE","YEARDAY","YEARDATE","YEARMONTHDAYHOURS","YEARMONTHDAYHOURSMINUTES","YEARMONTHDAYHOURSMINUTESSECONDS","HOURSMINUTES","HOURSMINUTESSECONDS","MINUTESSECONDS","SECONDSMILLISECONDS","Model_1","data_1","compileData","layout_1","compileLayoutData","compileRootGroup","rootGroup","data_2","mark_1","compileMark","facet_1","facetMixins","common_1","applyConfig","FILL_STROKE_CONFIG","scale_1","compileScales","axis_1","compileAxis","legend_1","compileLegends","Model_2","config_1","fielddef_1","config_2","stack_1","scale_2","channel_2","_spec","defaultConfig","warn","_scale","channelScale","channelDef","_scaleType","scaleType","includeRawDomain","ScaleType","textBandWidth","_axis","channelAxis","_legend","channelLegend","_stack","compileStackProperties","compileMarkConfig","toSpec","excludeConfig","excludeData","cellWidth","isFacet","cellHeight","channelWithScales","isOrdinalScale","dataTable","defaultCellConfig","defaultFacetCellConfig","defaultFacetGridConfig","defaultFacetConfig","defaultFacetScaleConfig","defaultFacetAxisConfig","FontWeight","Shape","HorizontalAlign","VerticalAlign","FontStyle","StackOffset","defaultMarkConfig","barThinSize","tickThickness","MIDDLE","shortTimeLabels","applyColorToBackground","defaultScaleConfig","defaultAxisConfig","defaultLegendConfig","NiceTime","nominalColorRange","sequentialColorRange","shapeRange","fontSizeRange","AxisOrient","labelMaxLength","characterWidth","Mark","AREA","BAR","LINE","POINT","TICK","CIRCLE","SQUARE","encoding_1","groupbyChannel","stackFields","getStackFields","stacked","NONE","isXMeasure","isYMeasure","fieldChannel","imputeTransform","stackTransform","sortField","valName","applyColorAndOpacity","applyMarkConfig","propsList","marksProperties","formatMixins","isAbbreviated","orderChannelDef","sort_1","SortOrder","DESCENDING","time_1","abbreviated","timeString","dateComponents","timeComponents","smallestUnit","onlyRef","fun","addComma","rawDomain","colorLegendScale","binColorLegendLabel","mainScale","scaleDef","rangeMixins","COLOR_LEGEND","COLOR_LEGEND_LABEL","NORMALIZE","_includeRawDomain","domainSort","scaleConfig","barSizeRange","pointSizeRange","xIsMeasure","yIsMeasure","POW","__","compileInnerAxis","isCol","isRow","gridShow","TOP","RIGHT","maxLength","fieldTitle","titleMaxLength","axisPropsSpec","labelsSpec","labelAngle","summaryDef","rankTransform","filterNonPositiveForLog","stackDef","DEFAULT_NULL_FILTERS","source_1","defaultExtension","formatParse","calcFieldMap","calculate","fieldMap","nullFilterTransform","formulaTransform","filterTransform","binTransform","timeTransform","binTrans","filteredFields","aggregator","fieldName","hasAggregate","fnDictSet","stackProps","facetFields","alreadyAdded","distinctSummary","cellWidthFormula","scaleWidthFormula","cellHeightFormula","formulas","facetScaleWidthFormula","cardinalityFormula","timeUnitDomain","nonOrdinalSize","innerWidth","hasRow","hasCol","getFacetGuideGroups","getFacetGroup","getCellAxes","cellAxes","facetGroup","getFacetGroupProperties","facetGroupProperties","rootAxesGroups","getXAxesGroup","getRowGridGroups","getYAxesGroup","getColumnGridGroups","facetGridConfig","rowGrid","columnGrid","useColorLegendScale","compileLegend","symbolsSpec","compilePathMark","compileNonPathMark","hasParentData","dataFrom","detailFields","pathMarks","markCompiler","markType","sortPathBy","facetTransform","text_1","area_1","bar_1","line_1","point_1","tick_1","xFieldDef","yFieldDef","sizeValue","markConfig","barSize","fixedShape","shorten","ASSIGN","DELIM","shortenEncoding","parseEncoding","shortenFieldDef","encodingShorthand","enctype","fieldDefShorthand","parseFieldDef","FUNC","TYPE","shortenFieldDefs","tu","alwaysNoOcclusion","getCleanSpec","isStack","oldenc","getEncodingMappingError","requiredChannelMap","supportedChannelMap","DEFAULT_REQUIRED_CHANNEL_MAP","DEFAULT_SUPPORTED_CHANNEL_TYPE","requiredChannels","supportedChannels","rewrite","handle","form","checkbox","radio","sl","selectedIndex","rg","option","rn","lbl","__vega__","listen","postMessage"],"mappings":"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","file":"index.js","sourcesContent":["define([\"jquery\",\"base/js/events\"], function(__WEBPACK_EXTERNAL_MODULE_207__, __WEBPACK_EXTERNAL_MODULE_208__) { return /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// require('./embed.css');\n\t\n\tvar embed = __webpack_require__(1);\n\tvar $ = __webpack_require__(207);\n\tvar events = __webpack_require__(208);\n\t\n\tfunction render(selector, spec, type, output_area) {\n\t var el = $.find(selector);\n\t if (type) {\n\t var embedSpec = {\n\t mode: type,\n\t spec: spec\n\t }\n\t\n\t embed(el[0], embedSpec, function(error, result) {\n\t console.log(error, result);\n\t var imageData = result.view.toImageURL();\n\t var output = {\n\t data: {\n\t \"image/png\": imageData.split(\",\")[1]\n\t },\n\t metadata: {},\n\t output_type: \"display_data\"\n\t };\n\t output_area.append_output(output);\n\t });\n\t }\n\t}\n\t\n\texports.render = render;\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(2),\n\t vg = __webpack_require__(3),\n\t vl = __webpack_require__(162),\n\t parameter = __webpack_require__(205),\n\t post = __webpack_require__(206);\n\t\n\tvar config = {\n\t // URL for loading specs into editor\n\t editor_url: 'http://vega.github.io/vega-editor/',\n\t\n\t // HTML to inject within view source head element\n\t source_header: '',\n\t\n\t // HTML to inject before view source closing body tag\n\t source_footer: ''\n\t};\n\t\n\tvar MODES = {\n\t 'vega': 'vega',\n\t 'vega-lite': 'vega-lite'\n\t};\n\t\n\tvar PREPROCESSOR = {\n\t 'vega': function(vgjson) { return vgjson; },\n\t 'vega-lite': function(vljson) { return vl.compile(vljson).spec; }\n\t};\n\t\n\tfunction load(url, arg, el, callback) {\n\t vg.util.load({url: url}, function(err, data) {\n\t if (err || !data) {\n\t console.error(err || ('No data found at ' + url));\n\t } else {\n\t // marshal embedding spec and restart\n\t var opt = !arg ? JSON.parse(data) : vg.util.extend({source: data}, arg);\n\t embed(el, opt, callback);\n\t }\n\t });\n\t}\n\t\n\t// Embed a Vega visualization component in a web page.\n\t// el: DOM element in which to place component (DOM node or CSS selector)\n\t// opt: Embedding specification (parsed JSON or URL string)\n\t// callback: invoked with the generated Vega View instance\n\tfunction embed(el, opt, callback) {\n\t var cb = callback || function(){},\n\t params = [], source, spec, mode;\n\t\n\t try {\n\t if (vg.util.isString(opt)) {\n\t return load(opt, null, el, callback);\n\t } else if (opt.source) {\n\t source = opt.source;\n\t spec = JSON.parse(source);\n\t } else if (opt.spec) {\n\t spec = opt.spec;\n\t source = JSON.stringify(spec, null, 2);\n\t } else if (opt.url) {\n\t return load(opt.url, opt, el, callback);\n\t } else {\n\t spec = opt;\n\t source = JSON.stringify(spec, null, 2);\n\t opt = {spec: spec, actions: false};\n\t }\n\t mode = MODES[opt.mode] || MODES.vega;\n\t spec = PREPROCESSOR[mode](spec);\n\t\n\t // ensure container div has class 'vega-embed'\n\t var div = d3.select(el)\n\t .classed('vega-embed', true)\n\t .html(''); // clear container\n\t\n\t // handle parameters\n\t if (opt.parameters) {\n\t var elp = opt.parameter_el ? d3.select(opt.parameter_el) : div;\n\t var pdiv = elp.append('div')\n\t .attr('class', 'vega-params');\n\t params = opt.parameters.map(function(p) {\n\t return parameter.init(pdiv, p, spec);\n\t });\n\t }\n\t } catch (err) { cb(err); }\n\t\n\t vg.parse.spec(spec, function(error, chart) {\n\t if (error) { cb(error); return; }\n\t try {\n\t var renderer = opt.renderer || 'canvas',\n\t actions = opt.actions || {};\n\t\n\t var view = chart({\n\t el: el,\n\t data: opt.data || undefined,\n\t renderer: renderer\n\t });\n\t\n\t if (opt.actions !== false) {\n\t // add child div to house action links\n\t var ctrl = div.append('div')\n\t .attr('class', 'vega-actions');\n\t\n\t // add 'Export' action\n\t if (actions.export !== false) {\n\t var ext = (renderer==='canvas' ? 'png' : 'svg');\n\t ctrl.append('a')\n\t .text('Export as ' + ext.toUpperCase())\n\t .attr('href', '#')\n\t .attr('target', '_blank')\n\t .attr('download', (spec.name || 'vega') + '.' + ext)\n\t .on('mousedown', function() {\n\t this.href = view.toImageURL(ext);\n\t d3.event.preventDefault();\n\t });\n\t }\n\t\n\t // add 'View Source' action\n\t if (actions.source !== false) {\n\t ctrl.append('a')\n\t .text('View Source')\n\t .attr('href', '#')\n\t .on('click', function() {\n\t viewSource(source);\n\t d3.event.preventDefault();\n\t });\n\t }\n\t\n\t // add 'Open in Vega Editor' action\n\t if (actions.editor !== false) {\n\t ctrl.append('a')\n\t .text('Open in Vega Editor')\n\t .attr('href', '#')\n\t .on('click', function() {\n\t post(window, embed.config.editor_url, {spec: source, mode: mode});\n\t d3.event.preventDefault();\n\t });\n\t }\n\t }\n\t\n\t // bind all parameter elements\n\t params.forEach(function(p) { parameter.bind(p, view); });\n\t\n\t // initialize and return visualization\n\t view.update();\n\t cb(null, {view: view, spec: spec});\n\t } catch (err) { cb(err); }\n\t });\n\t}\n\t\n\tfunction viewSource(source) {\n\t var header = '' + config.source_header + '' + '
';\n\t  var footer = '
' + config.source_footer + '';\n\t var win = window.open('');\n\t win.document.write(header + source + footer);\n\t win.document.title = 'Vega JSON Source';\n\t}\n\t\n\t// make config externally visible\n\tembed.config = config;\n\t\n\tmodule.exports = embed;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n\t var d3 = {\n\t version: \"3.5.17\"\n\t };\n\t var d3_arraySlice = [].slice, d3_array = function(list) {\n\t return d3_arraySlice.call(list);\n\t };\n\t var d3_document = this.document;\n\t function d3_documentElement(node) {\n\t return node && (node.ownerDocument || node.document || node).documentElement;\n\t }\n\t function d3_window(node) {\n\t return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n\t }\n\t if (d3_document) {\n\t try {\n\t d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n\t } catch (e) {\n\t d3_array = function(list) {\n\t var i = list.length, array = new Array(i);\n\t while (i--) array[i] = list[i];\n\t return array;\n\t };\n\t }\n\t }\n\t if (!Date.now) Date.now = function() {\n\t return +new Date();\n\t };\n\t if (d3_document) {\n\t try {\n\t d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n\t } catch (error) {\n\t var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n\t d3_element_prototype.setAttribute = function(name, value) {\n\t d3_element_setAttribute.call(this, name, value + \"\");\n\t };\n\t d3_element_prototype.setAttributeNS = function(space, local, value) {\n\t d3_element_setAttributeNS.call(this, space, local, value + \"\");\n\t };\n\t d3_style_prototype.setProperty = function(name, value, priority) {\n\t d3_style_setProperty.call(this, name, value + \"\", priority);\n\t };\n\t }\n\t }\n\t d3.ascending = d3_ascending;\n\t function d3_ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t d3.descending = function(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t };\n\t d3.min = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n\t }\n\t return a;\n\t };\n\t d3.max = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n\t }\n\t return a;\n\t };\n\t d3.extent = function(array, f) {\n\t var i = -1, n = array.length, a, b, c;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t return [ a, c ];\n\t };\n\t function d3_number(x) {\n\t return x === null ? NaN : +x;\n\t }\n\t function d3_numeric(x) {\n\t return !isNaN(x);\n\t }\n\t d3.sum = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n\t }\n\t return s;\n\t };\n\t d3.mean = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1, j = n;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n\t }\n\t if (j) return s / j;\n\t };\n\t d3.quantile = function(values, p) {\n\t var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n\t return e ? v + e * (values[h] - v) : v;\n\t };\n\t d3.median = function(array, f) {\n\t var numbers = [], n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n\t }\n\t if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n\t };\n\t d3.variance = function(array, f) {\n\t var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n\t if (arguments.length === 1) {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(array[i]))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t } else {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t if (j > 1) return s / (j - 1);\n\t };\n\t d3.deviation = function() {\n\t var v = d3.variance.apply(this, arguments);\n\t return v ? Math.sqrt(v) : v;\n\t };\n\t function d3_bisector(compare) {\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t }\n\t var d3_bisect = d3_bisector(d3_ascending);\n\t d3.bisectLeft = d3_bisect.left;\n\t d3.bisect = d3.bisectRight = d3_bisect.right;\n\t d3.bisector = function(f) {\n\t return d3_bisector(f.length === 1 ? function(d, x) {\n\t return d3_ascending(f(d), x);\n\t } : f);\n\t };\n\t d3.shuffle = function(array, i0, i1) {\n\t if ((m = arguments.length) < 3) {\n\t i1 = array.length;\n\t if (m < 2) i0 = 0;\n\t }\n\t var m = i1 - i0, t, i;\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n\t }\n\t return array;\n\t };\n\t d3.permute = function(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t };\n\t d3.pairs = function(array) {\n\t var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n\t return pairs;\n\t };\n\t d3.transpose = function(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t };\n\t function d3_transposeLength(d) {\n\t return d.length;\n\t }\n\t d3.zip = function() {\n\t return d3.transpose(arguments);\n\t };\n\t d3.keys = function(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t };\n\t d3.values = function(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t };\n\t d3.entries = function(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({\n\t key: key,\n\t value: map[key]\n\t });\n\t return entries;\n\t };\n\t d3.merge = function(arrays) {\n\t var n = arrays.length, m, i = -1, j = 0, merged, array;\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t return merged;\n\t };\n\t var abs = Math.abs;\n\t d3.range = function(start, stop, step) {\n\t if (arguments.length < 3) {\n\t step = 1;\n\t if (arguments.length < 2) {\n\t stop = start;\n\t start = 0;\n\t }\n\t }\n\t if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n\t var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n\t start *= k, stop *= k, step *= k;\n\t if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n\t return range;\n\t };\n\t function d3_range_integerScale(x) {\n\t var k = 1;\n\t while (x * k % 1) k *= 10;\n\t return k;\n\t }\n\t function d3_class(ctor, properties) {\n\t for (var key in properties) {\n\t Object.defineProperty(ctor.prototype, key, {\n\t value: properties[key],\n\t enumerable: false\n\t });\n\t }\n\t }\n\t d3.map = function(object, f) {\n\t var map = new d3_Map();\n\t if (object instanceof d3_Map) {\n\t object.forEach(function(key, value) {\n\t map.set(key, value);\n\t });\n\t } else if (Array.isArray(object)) {\n\t var i = -1, n = object.length, o;\n\t if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n\t } else {\n\t for (var key in object) map.set(key, object[key]);\n\t }\n\t return map;\n\t };\n\t function d3_Map() {\n\t this._ = Object.create(null);\n\t }\n\t var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n\t d3_class(d3_Map, {\n\t has: d3_map_has,\n\t get: function(key) {\n\t return this._[d3_map_escape(key)];\n\t },\n\t set: function(key, value) {\n\t return this._[d3_map_escape(key)] = value;\n\t },\n\t remove: d3_map_remove,\n\t keys: d3_map_keys,\n\t values: function() {\n\t var values = [];\n\t for (var key in this._) values.push(this._[key]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var key in this._) entries.push({\n\t key: d3_map_unescape(key),\n\t value: this._[key]\n\t });\n\t return entries;\n\t },\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n\t }\n\t });\n\t function d3_map_escape(key) {\n\t return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n\t }\n\t function d3_map_unescape(key) {\n\t return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n\t }\n\t function d3_map_has(key) {\n\t return d3_map_escape(key) in this._;\n\t }\n\t function d3_map_remove(key) {\n\t return (key = d3_map_escape(key)) in this._ && delete this._[key];\n\t }\n\t function d3_map_keys() {\n\t var keys = [];\n\t for (var key in this._) keys.push(d3_map_unescape(key));\n\t return keys;\n\t }\n\t function d3_map_size() {\n\t var size = 0;\n\t for (var key in this._) ++size;\n\t return size;\n\t }\n\t function d3_map_empty() {\n\t for (var key in this._) return false;\n\t return true;\n\t }\n\t d3.nest = function() {\n\t var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n\t function map(mapType, array, depth) {\n\t if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n\t var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n\t values.push(object);\n\t } else {\n\t valuesByKey.set(keyValue, [ object ]);\n\t }\n\t }\n\t if (mapType) {\n\t object = mapType();\n\t setter = function(keyValue, values) {\n\t object.set(keyValue, map(mapType, values, depth));\n\t };\n\t } else {\n\t object = {};\n\t setter = function(keyValue, values) {\n\t object[keyValue] = map(mapType, values, depth);\n\t };\n\t }\n\t valuesByKey.forEach(setter);\n\t return object;\n\t }\n\t function entries(map, depth) {\n\t if (depth >= keys.length) return map;\n\t var array = [], sortKey = sortKeys[depth++];\n\t map.forEach(function(key, keyMap) {\n\t array.push({\n\t key: key,\n\t values: entries(keyMap, depth)\n\t });\n\t });\n\t return sortKey ? array.sort(function(a, b) {\n\t return sortKey(a.key, b.key);\n\t }) : array;\n\t }\n\t nest.map = function(array, mapType) {\n\t return map(mapType, array, 0);\n\t };\n\t nest.entries = function(array) {\n\t return entries(map(d3.map, array, 0), 0);\n\t };\n\t nest.key = function(d) {\n\t keys.push(d);\n\t return nest;\n\t };\n\t nest.sortKeys = function(order) {\n\t sortKeys[keys.length - 1] = order;\n\t return nest;\n\t };\n\t nest.sortValues = function(order) {\n\t sortValues = order;\n\t return nest;\n\t };\n\t nest.rollup = function(f) {\n\t rollup = f;\n\t return nest;\n\t };\n\t return nest;\n\t };\n\t d3.set = function(array) {\n\t var set = new d3_Set();\n\t if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n\t return set;\n\t };\n\t function d3_Set() {\n\t this._ = Object.create(null);\n\t }\n\t d3_class(d3_Set, {\n\t has: d3_map_has,\n\t add: function(key) {\n\t this._[d3_map_escape(key += \"\")] = true;\n\t return key;\n\t },\n\t remove: d3_map_remove,\n\t values: d3_map_keys,\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key));\n\t }\n\t });\n\t d3.behavior = {};\n\t function d3_identity(d) {\n\t return d;\n\t }\n\t d3.rebind = function(target, source) {\n\t var i = 1, n = arguments.length, method;\n\t while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n\t return target;\n\t };\n\t function d3_rebind(target, source, method) {\n\t return function() {\n\t var value = method.apply(source, arguments);\n\t return value === source ? target : value;\n\t };\n\t }\n\t function d3_vendorSymbol(object, name) {\n\t if (name in object) return name;\n\t name = name.charAt(0).toUpperCase() + name.slice(1);\n\t for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n\t var prefixName = d3_vendorPrefixes[i] + name;\n\t if (prefixName in object) return prefixName;\n\t }\n\t }\n\t var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n\t function d3_noop() {}\n\t d3.dispatch = function() {\n\t var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t return dispatch;\n\t };\n\t function d3_dispatch() {}\n\t d3_dispatch.prototype.on = function(type, listener) {\n\t var i = type.indexOf(\".\"), name = \"\";\n\t if (i >= 0) {\n\t name = type.slice(i + 1);\n\t type = type.slice(0, i);\n\t }\n\t if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n\t if (arguments.length === 2) {\n\t if (listener == null) for (type in this) {\n\t if (this.hasOwnProperty(type)) this[type].on(name, null);\n\t }\n\t return this;\n\t }\n\t };\n\t function d3_dispatch_event(dispatch) {\n\t var listeners = [], listenerByName = new d3_Map();\n\t function event() {\n\t var z = listeners, i = -1, n = z.length, l;\n\t while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n\t return dispatch;\n\t }\n\t event.on = function(name, listener) {\n\t var l = listenerByName.get(name), i;\n\t if (arguments.length < 2) return l && l.on;\n\t if (l) {\n\t l.on = null;\n\t listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n\t listenerByName.remove(name);\n\t }\n\t if (listener) listeners.push(listenerByName.set(name, {\n\t on: listener\n\t }));\n\t return dispatch;\n\t };\n\t return event;\n\t }\n\t d3.event = null;\n\t function d3_eventPreventDefault() {\n\t d3.event.preventDefault();\n\t }\n\t function d3_eventSource() {\n\t var e = d3.event, s;\n\t while (s = e.sourceEvent) e = s;\n\t return e;\n\t }\n\t function d3_eventDispatch(target) {\n\t var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t dispatch.of = function(thiz, argumentz) {\n\t return function(e1) {\n\t try {\n\t var e0 = e1.sourceEvent = d3.event;\n\t e1.target = target;\n\t d3.event = e1;\n\t dispatch[e1.type].apply(thiz, argumentz);\n\t } finally {\n\t d3.event = e0;\n\t }\n\t };\n\t };\n\t return dispatch;\n\t }\n\t d3.requote = function(s) {\n\t return s.replace(d3_requote_re, \"\\\\$&\");\n\t };\n\t var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t var d3_subclass = {}.__proto__ ? function(object, prototype) {\n\t object.__proto__ = prototype;\n\t } : function(object, prototype) {\n\t for (var property in prototype) object[property] = prototype[property];\n\t };\n\t function d3_selection(groups) {\n\t d3_subclass(groups, d3_selectionPrototype);\n\t return groups;\n\t }\n\t var d3_select = function(s, n) {\n\t return n.querySelector(s);\n\t }, d3_selectAll = function(s, n) {\n\t return n.querySelectorAll(s);\n\t }, d3_selectMatches = function(n, s) {\n\t var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n\t d3_selectMatches = function(n, s) {\n\t return d3_selectMatcher.call(n, s);\n\t };\n\t return d3_selectMatches(n, s);\n\t };\n\t if (typeof Sizzle === \"function\") {\n\t d3_select = function(s, n) {\n\t return Sizzle(s, n)[0] || null;\n\t };\n\t d3_selectAll = Sizzle;\n\t d3_selectMatches = Sizzle.matchesSelector;\n\t }\n\t d3.selection = function() {\n\t return d3.select(d3_document.documentElement);\n\t };\n\t var d3_selectionPrototype = d3.selection.prototype = [];\n\t d3_selectionPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, group, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n\t if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selector(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_select(selector, this);\n\t };\n\t }\n\t d3_selectionPrototype.selectAll = function(selector) {\n\t var subgroups = [], subgroup, node;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n\t subgroup.parentNode = node;\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selectorAll(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_selectAll(selector, this);\n\t };\n\t }\n\t var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n\t var d3_nsPrefix = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: d3_nsXhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t };\n\t d3.ns = {\n\t prefix: d3_nsPrefix,\n\t qualify: function(name) {\n\t var i = name.indexOf(\":\"), prefix = name;\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return d3_nsPrefix.hasOwnProperty(prefix) ? {\n\t space: d3_nsPrefix[prefix],\n\t local: name\n\t } : name;\n\t }\n\t };\n\t d3_selectionPrototype.attr = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node();\n\t name = d3.ns.qualify(name);\n\t return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n\t }\n\t for (value in name) this.each(d3_selection_attr(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_attr(name, value));\n\t };\n\t function d3_selection_attr(name, value) {\n\t name = d3.ns.qualify(name);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrConstant() {\n\t this.setAttribute(name, value);\n\t }\n\t function attrConstantNS() {\n\t this.setAttributeNS(name.space, name.local, value);\n\t }\n\t function attrFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n\t }\n\t function attrFunctionNS() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n\t }\n\t return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n\t }\n\t function d3_collapse(s) {\n\t return s.trim().replace(/\\s+/g, \" \");\n\t }\n\t d3_selectionPrototype.classed = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n\t if (value = node.classList) {\n\t while (++i < n) if (!value.contains(name[i])) return false;\n\t } else {\n\t value = node.getAttribute(\"class\");\n\t while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n\t }\n\t return true;\n\t }\n\t for (value in name) this.each(d3_selection_classed(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_classed(name, value));\n\t };\n\t function d3_selection_classedRe(name) {\n\t return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n\t }\n\t function d3_selection_classes(name) {\n\t return (name + \"\").trim().split(/^|\\s+/);\n\t }\n\t function d3_selection_classed(name, value) {\n\t name = d3_selection_classes(name).map(d3_selection_classedName);\n\t var n = name.length;\n\t function classedConstant() {\n\t var i = -1;\n\t while (++i < n) name[i](this, value);\n\t }\n\t function classedFunction() {\n\t var i = -1, x = value.apply(this, arguments);\n\t while (++i < n) name[i](this, x);\n\t }\n\t return typeof value === \"function\" ? classedFunction : classedConstant;\n\t }\n\t function d3_selection_classedName(name) {\n\t var re = d3_selection_classedRe(name);\n\t return function(node, value) {\n\t if (c = node.classList) return value ? c.add(name) : c.remove(name);\n\t var c = node.getAttribute(\"class\") || \"\";\n\t if (value) {\n\t re.lastIndex = 0;\n\t if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n\t } else {\n\t node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n\t }\n\t };\n\t }\n\t d3_selectionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n\t return this;\n\t }\n\t if (n < 2) {\n\t var node = this.node();\n\t return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n\t }\n\t priority = \"\";\n\t }\n\t return this.each(d3_selection_style(name, value, priority));\n\t };\n\t function d3_selection_style(name, value, priority) {\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleConstant() {\n\t this.style.setProperty(name, value, priority);\n\t }\n\t function styleFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n\t }\n\t return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n\t }\n\t d3_selectionPrototype.property = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") return this.node()[name];\n\t for (value in name) this.each(d3_selection_property(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_property(name, value));\n\t };\n\t function d3_selection_property(name, value) {\n\t function propertyNull() {\n\t delete this[name];\n\t }\n\t function propertyConstant() {\n\t this[name] = value;\n\t }\n\t function propertyFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) delete this[name]; else this[name] = x;\n\t }\n\t return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n\t }\n\t d3_selectionPrototype.text = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.textContent = \"\";\n\t } : function() {\n\t this.textContent = value;\n\t }) : this.node().textContent;\n\t };\n\t d3_selectionPrototype.html = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.innerHTML = \"\";\n\t } : function() {\n\t this.innerHTML = value;\n\t }) : this.node().innerHTML;\n\t };\n\t d3_selectionPrototype.append = function(name) {\n\t name = d3_selection_creator(name);\n\t return this.select(function() {\n\t return this.appendChild(name.apply(this, arguments));\n\t });\n\t };\n\t function d3_selection_creator(name) {\n\t function create() {\n\t var document = this.ownerDocument, namespace = this.namespaceURI;\n\t return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n\t }\n\t function createNS() {\n\t return this.ownerDocument.createElementNS(name.space, name.local);\n\t }\n\t return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n\t }\n\t d3_selectionPrototype.insert = function(name, before) {\n\t name = d3_selection_creator(name);\n\t before = d3_selection_selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n\t });\n\t };\n\t d3_selectionPrototype.remove = function() {\n\t return this.each(d3_selectionRemove);\n\t };\n\t function d3_selectionRemove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t }\n\t d3_selectionPrototype.data = function(value, key) {\n\t var i = -1, n = this.length, group, node;\n\t if (!arguments.length) {\n\t value = new Array(n = (group = this[0]).length);\n\t while (++i < n) {\n\t if (node = group[i]) {\n\t value[i] = node.__data__;\n\t }\n\t }\n\t return value;\n\t }\n\t function bind(group, groupData) {\n\t var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n\t if (key) {\n\t var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n\t for (i = -1; ++i < n; ) {\n\t if (node = group[i]) {\n\t if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n\t exitNodes[i] = node;\n\t } else {\n\t nodeByKeyValue.set(keyValue, node);\n\t }\n\t keyValues[i] = keyValue;\n\t }\n\t }\n\t for (i = -1; ++i < m; ) {\n\t if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t } else if (node !== true) {\n\t updateNodes[i] = node;\n\t node.__data__ = nodeData;\n\t }\n\t nodeByKeyValue.set(keyValue, true);\n\t }\n\t for (i = -1; ++i < n; ) {\n\t if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t } else {\n\t for (i = -1; ++i < n0; ) {\n\t node = group[i];\n\t nodeData = groupData[i];\n\t if (node) {\n\t node.__data__ = nodeData;\n\t updateNodes[i] = node;\n\t } else {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t }\n\t }\n\t for (;i < m; ++i) {\n\t enterNodes[i] = d3_selection_dataNode(groupData[i]);\n\t }\n\t for (;i < n; ++i) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t enterNodes.update = updateNodes;\n\t enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n\t enter.push(enterNodes);\n\t update.push(updateNodes);\n\t exit.push(exitNodes);\n\t }\n\t var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n\t if (typeof value === \"function\") {\n\t while (++i < n) {\n\t bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n\t }\n\t } else {\n\t while (++i < n) {\n\t bind(group = this[i], value);\n\t }\n\t }\n\t update.enter = function() {\n\t return enter;\n\t };\n\t update.exit = function() {\n\t return exit;\n\t };\n\t return update;\n\t };\n\t function d3_selection_dataNode(data) {\n\t return {\n\t __data__: data\n\t };\n\t }\n\t d3_selectionPrototype.datum = function(value) {\n\t return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n\t };\n\t d3_selectionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_filter(selector) {\n\t return function() {\n\t return d3_selectMatches(this, selector);\n\t };\n\t }\n\t d3_selectionPrototype.order = function() {\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t return this;\n\t };\n\t d3_selectionPrototype.sort = function(comparator) {\n\t comparator = d3_selection_sortComparator.apply(this, arguments);\n\t for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n\t return this.order();\n\t };\n\t function d3_selection_sortComparator(comparator) {\n\t if (!arguments.length) comparator = d3_ascending;\n\t return function(a, b) {\n\t return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n\t };\n\t }\n\t d3_selectionPrototype.each = function(callback) {\n\t return d3_selection_each(this, function(node, i, j) {\n\t callback.call(node, node.__data__, i, j);\n\t });\n\t };\n\t function d3_selection_each(groups, callback) {\n\t for (var j = 0, m = groups.length; j < m; j++) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n\t if (node = group[i]) callback(node, i, j);\n\t }\n\t }\n\t return groups;\n\t }\n\t d3_selectionPrototype.call = function(callback) {\n\t var args = d3_array(arguments);\n\t callback.apply(args[0] = this, args);\n\t return this;\n\t };\n\t d3_selectionPrototype.empty = function() {\n\t return !this.node();\n\t };\n\t d3_selectionPrototype.node = function() {\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t return null;\n\t };\n\t d3_selectionPrototype.size = function() {\n\t var n = 0;\n\t d3_selection_each(this, function() {\n\t ++n;\n\t });\n\t return n;\n\t };\n\t function d3_selection_enter(selection) {\n\t d3_subclass(selection, d3_selection_enterPrototype);\n\t return selection;\n\t }\n\t var d3_selection_enterPrototype = [];\n\t d3.selection.enter = d3_selection_enter;\n\t d3.selection.enter.prototype = d3_selection_enterPrototype;\n\t d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n\t d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n\t d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n\t d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n\t d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n\t d3_selection_enterPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, upgroup, group, node;\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t upgroup = (group = this[j]).update;\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = group.parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n\t subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t d3_selection_enterPrototype.insert = function(name, before) {\n\t if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n\t return d3_selectionPrototype.insert.call(this, name, before);\n\t };\n\t function d3_selection_enterInsertBefore(enter) {\n\t var i0, j0;\n\t return function(d, i, j) {\n\t var group = enter[j].update, n = group.length, node;\n\t if (j != j0) j0 = j, i0 = 0;\n\t if (i >= i0) i0 = i + 1;\n\t while (!(node = group[i0]) && ++i0 < n) ;\n\t return node;\n\t };\n\t }\n\t d3.select = function(node) {\n\t var group;\n\t if (typeof node === \"string\") {\n\t group = [ d3_select(node, d3_document) ];\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = [ node ];\n\t group.parentNode = d3_documentElement(node);\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3.selectAll = function(nodes) {\n\t var group;\n\t if (typeof nodes === \"string\") {\n\t group = d3_array(d3_selectAll(nodes, d3_document));\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = d3_array(nodes);\n\t group.parentNode = null;\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3_selectionPrototype.on = function(type, listener, capture) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof type !== \"string\") {\n\t if (n < 2) listener = false;\n\t for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n\t return this;\n\t }\n\t if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n\t capture = false;\n\t }\n\t return this.each(d3_selection_on(type, listener, capture));\n\t };\n\t function d3_selection_on(type, listener, capture) {\n\t var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n\t if (i > 0) type = type.slice(0, i);\n\t var filter = d3_selection_onFilters.get(type);\n\t if (filter) type = filter, wrap = d3_selection_onFilter;\n\t function onRemove() {\n\t var l = this[name];\n\t if (l) {\n\t this.removeEventListener(type, l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t function onAdd() {\n\t var l = wrap(listener, d3_array(arguments));\n\t onRemove.call(this);\n\t this.addEventListener(type, this[name] = l, l.$ = capture);\n\t l._ = listener;\n\t }\n\t function removeAll() {\n\t var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n\t for (var name in this) {\n\t if (match = name.match(re)) {\n\t var l = this[name];\n\t this.removeEventListener(match[1], l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t }\n\t return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n\t }\n\t var d3_selection_onFilters = d3.map({\n\t mouseenter: \"mouseover\",\n\t mouseleave: \"mouseout\"\n\t });\n\t if (d3_document) {\n\t d3_selection_onFilters.forEach(function(k) {\n\t if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n\t });\n\t }\n\t function d3_selection_onListener(listener, argumentz) {\n\t return function(e) {\n\t var o = d3.event;\n\t d3.event = e;\n\t argumentz[0] = this.__data__;\n\t try {\n\t listener.apply(this, argumentz);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t }\n\t function d3_selection_onFilter(listener, argumentz) {\n\t var l = d3_selection_onListener(listener, argumentz);\n\t return function(e) {\n\t var target = this, related = e.relatedTarget;\n\t if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n\t l.call(target, e);\n\t }\n\t };\n\t }\n\t var d3_event_dragSelect, d3_event_dragId = 0;\n\t function d3_event_dragSuppress(node) {\n\t var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n\t if (d3_event_dragSelect == null) {\n\t d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n\t }\n\t if (d3_event_dragSelect) {\n\t var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n\t style[d3_event_dragSelect] = \"none\";\n\t }\n\t return function(suppressClick) {\n\t w.on(name, null);\n\t if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n\t if (suppressClick) {\n\t var off = function() {\n\t w.on(click, null);\n\t };\n\t w.on(click, function() {\n\t d3_eventPreventDefault();\n\t off();\n\t }, true);\n\t setTimeout(off, 0);\n\t }\n\t };\n\t }\n\t d3.mouse = function(container) {\n\t return d3_mousePoint(container, d3_eventSource());\n\t };\n\t var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n\t function d3_mousePoint(container, e) {\n\t if (e.changedTouches) e = e.changedTouches[0];\n\t var svg = container.ownerSVGElement || container;\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t if (d3_mouse_bug44083 < 0) {\n\t var window = d3_window(container);\n\t if (window.scrollX || window.scrollY) {\n\t svg = d3.select(\"body\").append(\"svg\").style({\n\t position: \"absolute\",\n\t top: 0,\n\t left: 0,\n\t margin: 0,\n\t padding: 0,\n\t border: \"none\"\n\t }, \"important\");\n\t var ctm = svg[0][0].getScreenCTM();\n\t d3_mouse_bug44083 = !(ctm.f || ctm.e);\n\t svg.remove();\n\t }\n\t }\n\t if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n\t point.y = e.clientY;\n\t point = point.matrixTransform(container.getScreenCTM().inverse());\n\t return [ point.x, point.y ];\n\t }\n\t var rect = container.getBoundingClientRect();\n\t return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n\t }\n\t d3.touch = function(container, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n\t if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return d3_mousePoint(container, touch);\n\t }\n\t }\n\t };\n\t d3.behavior.drag = function() {\n\t var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n\t function drag() {\n\t this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n\t }\n\t function dragstart(id, position, subject, move, end) {\n\t return function() {\n\t var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n\t if (origin) {\n\t dragOffset = origin.apply(that, arguments);\n\t dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n\t } else {\n\t dragOffset = [ 0, 0 ];\n\t }\n\t dispatch({\n\t type: \"dragstart\"\n\t });\n\t function moved() {\n\t var position1 = position(parent, dragId), dx, dy;\n\t if (!position1) return;\n\t dx = position1[0] - position0[0];\n\t dy = position1[1] - position0[1];\n\t dragged |= dx | dy;\n\t position0 = position1;\n\t dispatch({\n\t type: \"drag\",\n\t x: position1[0] + dragOffset[0],\n\t y: position1[1] + dragOffset[1],\n\t dx: dx,\n\t dy: dy\n\t });\n\t }\n\t function ended() {\n\t if (!position(parent, dragId)) return;\n\t dragSubject.on(move + dragName, null).on(end + dragName, null);\n\t dragRestore(dragged);\n\t dispatch({\n\t type: \"dragend\"\n\t });\n\t }\n\t };\n\t }\n\t drag.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return drag;\n\t };\n\t return d3.rebind(drag, event, \"on\");\n\t };\n\t function d3_behavior_dragTouchId() {\n\t return d3.event.changedTouches[0].identifier;\n\t }\n\t d3.touches = function(container, touches) {\n\t if (arguments.length < 2) touches = d3_eventSource().touches;\n\t return touches ? d3_array(touches).map(function(touch) {\n\t var point = d3_mousePoint(container, touch);\n\t point.identifier = touch.identifier;\n\t return point;\n\t }) : [];\n\t };\n\t var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n\t function d3_sgn(x) {\n\t return x > 0 ? 1 : x < 0 ? -1 : 0;\n\t }\n\t function d3_cross2d(a, b, c) {\n\t return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n\t }\n\t function d3_acos(x) {\n\t return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n\t }\n\t function d3_asin(x) {\n\t return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n\t }\n\t function d3_sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t }\n\t function d3_cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t }\n\t function d3_tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t }\n\t function d3_haversin(x) {\n\t return (x = Math.sin(x / 2)) * x;\n\t }\n\t var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n\t d3.interpolateZoom = function(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n\t if (d2 < ε2) {\n\t S = Math.log(w1 / w0) / ρ;\n\t i = function(t) {\n\t return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n\t };\n\t } else {\n\t var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / ρ;\n\t i = function(t) {\n\t var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n\t return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n\t };\n\t }\n\t i.duration = S * 1e3;\n\t return i;\n\t };\n\t d3.behavior.zoom = function() {\n\t var view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n\t if (!d3_behavior_zoomWheel) {\n\t d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n\t }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return d3.event.wheelDelta;\n\t }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n\t return -d3.event.detail;\n\t }, \"MozMousePixelScroll\");\n\t }\n\t function zoom(g) {\n\t g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n\t }\n\t zoom.event = function(g) {\n\t g.each(function() {\n\t var dispatch = event.of(this, arguments), view1 = view;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.zoom\", function() {\n\t view = this.__chart__ || {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t zoomstarted(dispatch);\n\t }).tween(\"zoom:zoom\", function() {\n\t var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n\t return function(t) {\n\t var l = i(t), k = dx / l[2];\n\t this.__chart__ = view = {\n\t x: cx - l[0] * k,\n\t y: cy - l[1] * k,\n\t k: k\n\t };\n\t zoomed(dispatch);\n\t };\n\t }).each(\"interrupt.zoom\", function() {\n\t zoomended(dispatch);\n\t }).each(\"end.zoom\", function() {\n\t zoomended(dispatch);\n\t });\n\t } else {\n\t this.__chart__ = view;\n\t zoomstarted(dispatch);\n\t zoomed(dispatch);\n\t zoomended(dispatch);\n\t }\n\t });\n\t };\n\t zoom.translate = function(_) {\n\t if (!arguments.length) return [ view.x, view.y ];\n\t view = {\n\t x: +_[0],\n\t y: +_[1],\n\t k: view.k\n\t };\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scale = function(_) {\n\t if (!arguments.length) return view.k;\n\t view = {\n\t x: view.x,\n\t y: view.y,\n\t k: null\n\t };\n\t scaleTo(+_);\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scaleExtent = function(_) {\n\t if (!arguments.length) return scaleExtent;\n\t scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.center = function(_) {\n\t if (!arguments.length) return center;\n\t center = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.duration = function(_) {\n\t if (!arguments.length) return duration;\n\t duration = +_;\n\t return zoom;\n\t };\n\t zoom.x = function(z) {\n\t if (!arguments.length) return x1;\n\t x1 = z;\n\t x0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t zoom.y = function(z) {\n\t if (!arguments.length) return y1;\n\t y1 = z;\n\t y0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t function location(p) {\n\t return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n\t }\n\t function point(l) {\n\t return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n\t }\n\t function scaleTo(s) {\n\t view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n\t }\n\t function translateTo(p, l) {\n\t l = point(l);\n\t view.x += p[0] - l[0];\n\t view.y += p[1] - l[1];\n\t }\n\t function zoomTo(that, p, l, k) {\n\t that.__chart__ = {\n\t x: view.x,\n\t y: view.y,\n\t k: view.k\n\t };\n\t scaleTo(Math.pow(2, k));\n\t translateTo(center0 = p, l);\n\t that = d3.select(that);\n\t if (duration > 0) that = that.transition().duration(duration);\n\t that.call(zoom.event);\n\t }\n\t function rescale() {\n\t if (x1) x1.domain(x0.range().map(function(x) {\n\t return (x - view.x) / view.k;\n\t }).map(x0.invert));\n\t if (y1) y1.domain(y0.range().map(function(y) {\n\t return (y - view.y) / view.k;\n\t }).map(y0.invert));\n\t }\n\t function zoomstarted(dispatch) {\n\t if (!zooming++) dispatch({\n\t type: \"zoomstart\"\n\t });\n\t }\n\t function zoomed(dispatch) {\n\t rescale();\n\t dispatch({\n\t type: \"zoom\",\n\t scale: view.k,\n\t translate: [ view.x, view.y ]\n\t });\n\t }\n\t function zoomended(dispatch) {\n\t if (!--zooming) dispatch({\n\t type: \"zoomend\"\n\t }), center0 = null;\n\t }\n\t function mousedowned() {\n\t var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n\t d3_selection_interrupt.call(that);\n\t zoomstarted(dispatch);\n\t function moved() {\n\t dragged = 1;\n\t translateTo(d3.mouse(that), location0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t subject.on(mousemove, null).on(mouseup, null);\n\t dragRestore(dragged);\n\t zoomended(dispatch);\n\t }\n\t }\n\t function touchstarted() {\n\t var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n\t started();\n\t zoomstarted(dispatch);\n\t subject.on(mousedown, null).on(touchstart, started);\n\t function relocate() {\n\t var touches = d3.touches(that);\n\t scale0 = view.k;\n\t touches.forEach(function(t) {\n\t if (t.identifier in locations0) locations0[t.identifier] = location(t);\n\t });\n\t return touches;\n\t }\n\t function started() {\n\t var target = d3.event.target;\n\t d3.select(target).on(touchmove, moved).on(touchend, ended);\n\t targets.push(target);\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t locations0[changed[i].identifier] = null;\n\t }\n\t var touches = relocate(), now = Date.now();\n\t if (touches.length === 1) {\n\t if (now - touchtime < 500) {\n\t var p = touches[0];\n\t zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n\t d3_eventPreventDefault();\n\t }\n\t touchtime = now;\n\t } else if (touches.length > 1) {\n\t var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n\t distance0 = dx * dx + dy * dy;\n\t }\n\t }\n\t function moved() {\n\t var touches = d3.touches(that), p0, l0, p1, l1;\n\t d3_selection_interrupt.call(that);\n\t for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n\t p1 = touches[i];\n\t if (l1 = locations0[p1.identifier]) {\n\t if (l0) break;\n\t p0 = p1, l0 = l1;\n\t }\n\t }\n\t if (l1) {\n\t var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n\t p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n\t l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n\t scaleTo(scale1 * scale0);\n\t }\n\t touchtime = null;\n\t translateTo(p0, l0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t if (d3.event.touches.length) {\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t delete locations0[changed[i].identifier];\n\t }\n\t for (var identifier in locations0) {\n\t return void relocate();\n\t }\n\t }\n\t d3.selectAll(targets).on(zoomName, null);\n\t subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n\t dragRestore();\n\t zoomended(dispatch);\n\t }\n\t }\n\t function mousewheeled() {\n\t var dispatch = event.of(this, arguments);\n\t if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n\t translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n\t mousewheelTimer = setTimeout(function() {\n\t mousewheelTimer = null;\n\t zoomended(dispatch);\n\t }, 50);\n\t d3_eventPreventDefault();\n\t scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n\t translateTo(center0, translate0);\n\t zoomed(dispatch);\n\t }\n\t function dblclicked() {\n\t var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n\t zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n\t }\n\t return d3.rebind(zoom, event, \"on\");\n\t };\n\t var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n\t d3.color = d3_color;\n\t function d3_color() {}\n\t d3_color.prototype.toString = function() {\n\t return this.rgb() + \"\";\n\t };\n\t d3.hsl = d3_hsl;\n\t function d3_hsl(h, s, l) {\n\t return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n\t }\n\t var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n\t d3_hslPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, this.l / k);\n\t };\n\t d3_hslPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, k * this.l);\n\t };\n\t d3_hslPrototype.rgb = function() {\n\t return d3_hsl_rgb(this.h, this.s, this.l);\n\t };\n\t function d3_hsl_rgb(h, s, l) {\n\t var m1, m2;\n\t h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n\t s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n\t l = l < 0 ? 0 : l > 1 ? 1 : l;\n\t m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n\t m1 = 2 * l - m2;\n\t function v(h) {\n\t if (h > 360) h -= 360; else if (h < 0) h += 360;\n\t if (h < 60) return m1 + (m2 - m1) * h / 60;\n\t if (h < 180) return m2;\n\t if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n\t return m1;\n\t }\n\t function vv(h) {\n\t return Math.round(v(h) * 255);\n\t }\n\t return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n\t }\n\t d3.hcl = d3_hcl;\n\t function d3_hcl(h, c, l) {\n\t return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n\t }\n\t var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n\t d3_hclPrototype.brighter = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.darker = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.rgb = function() {\n\t return d3_hcl_lab(this.h, this.c, this.l).rgb();\n\t };\n\t function d3_hcl_lab(h, c, l) {\n\t if (isNaN(h)) h = 0;\n\t if (isNaN(c)) c = 0;\n\t return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n\t }\n\t d3.lab = d3_lab;\n\t function d3_lab(l, a, b) {\n\t return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n\t }\n\t var d3_lab_K = 18;\n\t var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n\t var d3_labPrototype = d3_lab.prototype = new d3_color();\n\t d3_labPrototype.brighter = function(k) {\n\t return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.darker = function(k) {\n\t return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.rgb = function() {\n\t return d3_lab_rgb(this.l, this.a, this.b);\n\t };\n\t function d3_lab_rgb(l, a, b) {\n\t var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n\t x = d3_lab_xyz(x) * d3_lab_X;\n\t y = d3_lab_xyz(y) * d3_lab_Y;\n\t z = d3_lab_xyz(z) * d3_lab_Z;\n\t return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n\t }\n\t function d3_lab_hcl(l, a, b) {\n\t return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n\t }\n\t function d3_lab_xyz(x) {\n\t return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n\t }\n\t function d3_xyz_lab(x) {\n\t return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n\t }\n\t function d3_xyz_rgb(r) {\n\t return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n\t }\n\t d3.rgb = d3_rgb;\n\t function d3_rgb(r, g, b) {\n\t return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n\t }\n\t function d3_rgbNumber(value) {\n\t return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n\t }\n\t function d3_rgbString(value) {\n\t return d3_rgbNumber(value) + \"\";\n\t }\n\t var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n\t d3_rgbPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t var r = this.r, g = this.g, b = this.b, i = 30;\n\t if (!r && !g && !b) return new d3_rgb(i, i, i);\n\t if (r && r < i) r = i;\n\t if (g && g < i) g = i;\n\t if (b && b < i) b = i;\n\t return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n\t };\n\t d3_rgbPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_rgb(k * this.r, k * this.g, k * this.b);\n\t };\n\t d3_rgbPrototype.hsl = function() {\n\t return d3_rgb_hsl(this.r, this.g, this.b);\n\t };\n\t d3_rgbPrototype.toString = function() {\n\t return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n\t };\n\t function d3_rgb_hex(v) {\n\t return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n\t }\n\t function d3_rgb_parse(format, rgb, hsl) {\n\t var r = 0, g = 0, b = 0, m1, m2, color;\n\t m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n\t if (m1) {\n\t m2 = m1[2].split(\",\");\n\t switch (m1[1]) {\n\t case \"hsl\":\n\t {\n\t return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n\t }\n\t\n\t case \"rgb\":\n\t {\n\t return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n\t }\n\t }\n\t }\n\t if (color = d3_rgb_names.get(format)) {\n\t return rgb(color.r, color.g, color.b);\n\t }\n\t if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n\t if (format.length === 4) {\n\t r = (color & 3840) >> 4;\n\t r = r >> 4 | r;\n\t g = color & 240;\n\t g = g >> 4 | g;\n\t b = color & 15;\n\t b = b << 4 | b;\n\t } else if (format.length === 7) {\n\t r = (color & 16711680) >> 16;\n\t g = (color & 65280) >> 8;\n\t b = color & 255;\n\t }\n\t }\n\t return rgb(r, g, b);\n\t }\n\t function d3_rgb_hsl(r, g, b) {\n\t var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n\t if (d) {\n\t s = l < .5 ? d / (max + min) : d / (2 - max - min);\n\t if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n\t h *= 60;\n\t } else {\n\t h = NaN;\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new d3_hsl(h, s, l);\n\t }\n\t function d3_rgb_lab(r, g, b) {\n\t r = d3_rgb_xyz(r);\n\t g = d3_rgb_xyz(g);\n\t b = d3_rgb_xyz(b);\n\t var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n\t return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n\t }\n\t function d3_rgb_xyz(r) {\n\t return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n\t }\n\t function d3_rgb_parseNumber(c) {\n\t var f = parseFloat(c);\n\t return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n\t }\n\t var d3_rgb_names = d3.map({\n\t aliceblue: 15792383,\n\t antiquewhite: 16444375,\n\t aqua: 65535,\n\t aquamarine: 8388564,\n\t azure: 15794175,\n\t beige: 16119260,\n\t bisque: 16770244,\n\t black: 0,\n\t blanchedalmond: 16772045,\n\t blue: 255,\n\t blueviolet: 9055202,\n\t brown: 10824234,\n\t burlywood: 14596231,\n\t cadetblue: 6266528,\n\t chartreuse: 8388352,\n\t chocolate: 13789470,\n\t coral: 16744272,\n\t cornflowerblue: 6591981,\n\t cornsilk: 16775388,\n\t crimson: 14423100,\n\t cyan: 65535,\n\t darkblue: 139,\n\t darkcyan: 35723,\n\t darkgoldenrod: 12092939,\n\t darkgray: 11119017,\n\t darkgreen: 25600,\n\t darkgrey: 11119017,\n\t darkkhaki: 12433259,\n\t darkmagenta: 9109643,\n\t darkolivegreen: 5597999,\n\t darkorange: 16747520,\n\t darkorchid: 10040012,\n\t darkred: 9109504,\n\t darksalmon: 15308410,\n\t darkseagreen: 9419919,\n\t darkslateblue: 4734347,\n\t darkslategray: 3100495,\n\t darkslategrey: 3100495,\n\t darkturquoise: 52945,\n\t darkviolet: 9699539,\n\t deeppink: 16716947,\n\t deepskyblue: 49151,\n\t dimgray: 6908265,\n\t dimgrey: 6908265,\n\t dodgerblue: 2003199,\n\t firebrick: 11674146,\n\t floralwhite: 16775920,\n\t forestgreen: 2263842,\n\t fuchsia: 16711935,\n\t gainsboro: 14474460,\n\t ghostwhite: 16316671,\n\t gold: 16766720,\n\t goldenrod: 14329120,\n\t gray: 8421504,\n\t green: 32768,\n\t greenyellow: 11403055,\n\t grey: 8421504,\n\t honeydew: 15794160,\n\t hotpink: 16738740,\n\t indianred: 13458524,\n\t indigo: 4915330,\n\t ivory: 16777200,\n\t khaki: 15787660,\n\t lavender: 15132410,\n\t lavenderblush: 16773365,\n\t lawngreen: 8190976,\n\t lemonchiffon: 16775885,\n\t lightblue: 11393254,\n\t lightcoral: 15761536,\n\t lightcyan: 14745599,\n\t lightgoldenrodyellow: 16448210,\n\t lightgray: 13882323,\n\t lightgreen: 9498256,\n\t lightgrey: 13882323,\n\t lightpink: 16758465,\n\t lightsalmon: 16752762,\n\t lightseagreen: 2142890,\n\t lightskyblue: 8900346,\n\t lightslategray: 7833753,\n\t lightslategrey: 7833753,\n\t lightsteelblue: 11584734,\n\t lightyellow: 16777184,\n\t lime: 65280,\n\t limegreen: 3329330,\n\t linen: 16445670,\n\t magenta: 16711935,\n\t maroon: 8388608,\n\t mediumaquamarine: 6737322,\n\t mediumblue: 205,\n\t mediumorchid: 12211667,\n\t mediumpurple: 9662683,\n\t mediumseagreen: 3978097,\n\t mediumslateblue: 8087790,\n\t mediumspringgreen: 64154,\n\t mediumturquoise: 4772300,\n\t mediumvioletred: 13047173,\n\t midnightblue: 1644912,\n\t mintcream: 16121850,\n\t mistyrose: 16770273,\n\t moccasin: 16770229,\n\t navajowhite: 16768685,\n\t navy: 128,\n\t oldlace: 16643558,\n\t olive: 8421376,\n\t olivedrab: 7048739,\n\t orange: 16753920,\n\t orangered: 16729344,\n\t orchid: 14315734,\n\t palegoldenrod: 15657130,\n\t palegreen: 10025880,\n\t paleturquoise: 11529966,\n\t palevioletred: 14381203,\n\t papayawhip: 16773077,\n\t peachpuff: 16767673,\n\t peru: 13468991,\n\t pink: 16761035,\n\t plum: 14524637,\n\t powderblue: 11591910,\n\t purple: 8388736,\n\t rebeccapurple: 6697881,\n\t red: 16711680,\n\t rosybrown: 12357519,\n\t royalblue: 4286945,\n\t saddlebrown: 9127187,\n\t salmon: 16416882,\n\t sandybrown: 16032864,\n\t seagreen: 3050327,\n\t seashell: 16774638,\n\t sienna: 10506797,\n\t silver: 12632256,\n\t skyblue: 8900331,\n\t slateblue: 6970061,\n\t slategray: 7372944,\n\t slategrey: 7372944,\n\t snow: 16775930,\n\t springgreen: 65407,\n\t steelblue: 4620980,\n\t tan: 13808780,\n\t teal: 32896,\n\t thistle: 14204888,\n\t tomato: 16737095,\n\t turquoise: 4251856,\n\t violet: 15631086,\n\t wheat: 16113331,\n\t white: 16777215,\n\t whitesmoke: 16119285,\n\t yellow: 16776960,\n\t yellowgreen: 10145074\n\t });\n\t d3_rgb_names.forEach(function(key, value) {\n\t d3_rgb_names.set(key, d3_rgbNumber(value));\n\t });\n\t function d3_functor(v) {\n\t return typeof v === \"function\" ? v : function() {\n\t return v;\n\t };\n\t }\n\t d3.functor = d3_functor;\n\t d3.xhr = d3_xhrType(d3_identity);\n\t function d3_xhrType(response) {\n\t return function(url, mimeType, callback) {\n\t if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n\t mimeType = null;\n\t return d3_xhr(url, mimeType, response, callback);\n\t };\n\t }\n\t function d3_xhr(url, mimeType, response, callback) {\n\t var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n\t if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\t \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n\t request.readyState > 3 && respond();\n\t };\n\t function respond() {\n\t var status = request.status, result;\n\t if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n\t try {\n\t result = response.call(xhr, request);\n\t } catch (e) {\n\t dispatch.error.call(xhr, e);\n\t return;\n\t }\n\t dispatch.load.call(xhr, result);\n\t } else {\n\t dispatch.error.call(xhr, request);\n\t }\n\t }\n\t request.onprogress = function(event) {\n\t var o = d3.event;\n\t d3.event = event;\n\t try {\n\t dispatch.progress.call(xhr, request);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t xhr.header = function(name, value) {\n\t name = (name + \"\").toLowerCase();\n\t if (arguments.length < 2) return headers[name];\n\t if (value == null) delete headers[name]; else headers[name] = value + \"\";\n\t return xhr;\n\t };\n\t xhr.mimeType = function(value) {\n\t if (!arguments.length) return mimeType;\n\t mimeType = value == null ? null : value + \"\";\n\t return xhr;\n\t };\n\t xhr.responseType = function(value) {\n\t if (!arguments.length) return responseType;\n\t responseType = value;\n\t return xhr;\n\t };\n\t xhr.response = function(value) {\n\t response = value;\n\t return xhr;\n\t };\n\t [ \"get\", \"post\" ].forEach(function(method) {\n\t xhr[method] = function() {\n\t return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n\t };\n\t });\n\t xhr.send = function(method, data, callback) {\n\t if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n\t request.open(method, url, true);\n\t if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n\t if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n\t if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n\t if (responseType != null) request.responseType = responseType;\n\t if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n\t callback(null, request);\n\t });\n\t dispatch.beforesend.call(xhr, request);\n\t request.send(data == null ? null : data);\n\t return xhr;\n\t };\n\t xhr.abort = function() {\n\t request.abort();\n\t return xhr;\n\t };\n\t d3.rebind(xhr, dispatch, \"on\");\n\t return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n\t }\n\t function d3_xhr_fixCallback(callback) {\n\t return callback.length === 1 ? function(error, request) {\n\t callback(error == null ? request : null);\n\t } : callback;\n\t }\n\t function d3_xhrHasResponse(request) {\n\t var type = request.responseType;\n\t return type && type !== \"text\" ? request.response : request.responseText;\n\t }\n\t d3.dsv = function(delimiter, mimeType) {\n\t var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n\t function dsv(url, row, callback) {\n\t if (arguments.length < 3) callback = row, row = null;\n\t var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n\t xhr.row = function(_) {\n\t return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n\t };\n\t return xhr;\n\t }\n\t function response(request) {\n\t return dsv.parse(request.responseText);\n\t }\n\t function typedResponse(f) {\n\t return function(request) {\n\t return dsv.parse(request.responseText, f);\n\t };\n\t }\n\t dsv.parse = function(text, f) {\n\t var o;\n\t return dsv.parseRows(text, function(row, i) {\n\t if (o) return o(row, i - 1);\n\t var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n\t return JSON.stringify(name) + \": d[\" + i + \"]\";\n\t }).join(\",\") + \"}\");\n\t o = f ? function(row, i) {\n\t return f(a(row), i);\n\t } : a;\n\t });\n\t };\n\t dsv.parseRows = function(text, f) {\n\t var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n\t function token() {\n\t if (I >= N) return EOF;\n\t if (eol) return eol = false, EOL;\n\t var j = I;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t var c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n\t }\n\t while (I < N) {\n\t var c = text.charCodeAt(I++), k = 1;\n\t if (c === 10) eol = true; else if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(I) === 10) ++I, ++k;\n\t } else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t return text.slice(j);\n\t }\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t return rows;\n\t };\n\t dsv.format = function(rows) {\n\t if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n\t var fieldSet = new d3_Set(), fields = [];\n\t rows.forEach(function(row) {\n\t for (var field in row) {\n\t if (!fieldSet.has(field)) {\n\t fields.push(fieldSet.add(field));\n\t }\n\t }\n\t });\n\t return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n\t return fields.map(function(field) {\n\t return formatValue(row[field]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t };\n\t dsv.formatRows = function(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t };\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t function formatValue(text) {\n\t return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n\t }\n\t return dsv;\n\t };\n\t d3.csv = d3.dsv(\",\", \"text/csv\");\n\t d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n\t var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n\t setTimeout(callback, 17);\n\t };\n\t d3.timer = function() {\n\t d3_timer.apply(this, arguments);\n\t };\n\t function d3_timer(callback, delay, then) {\n\t var n = arguments.length;\n\t if (n < 2) delay = 0;\n\t if (n < 3) then = Date.now();\n\t var time = then + delay, timer = {\n\t c: callback,\n\t t: time,\n\t n: null\n\t };\n\t if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n\t d3_timer_queueTail = timer;\n\t if (!d3_timer_interval) {\n\t d3_timer_timeout = clearTimeout(d3_timer_timeout);\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t return timer;\n\t }\n\t function d3_timer_step() {\n\t var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n\t if (delay > 24) {\n\t if (isFinite(delay)) {\n\t clearTimeout(d3_timer_timeout);\n\t d3_timer_timeout = setTimeout(d3_timer_step, delay);\n\t }\n\t d3_timer_interval = 0;\n\t } else {\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t }\n\t d3.timer.flush = function() {\n\t d3_timer_mark();\n\t d3_timer_sweep();\n\t };\n\t function d3_timer_mark() {\n\t var now = Date.now(), timer = d3_timer_queueHead;\n\t while (timer) {\n\t if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n\t timer = timer.n;\n\t }\n\t return now;\n\t }\n\t function d3_timer_sweep() {\n\t var t0, t1 = d3_timer_queueHead, time = Infinity;\n\t while (t1) {\n\t if (t1.c) {\n\t if (t1.t < time) time = t1.t;\n\t t1 = (t0 = t1).n;\n\t } else {\n\t t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n\t }\n\t }\n\t d3_timer_queueTail = t0;\n\t return time;\n\t }\n\t function d3_format_precision(x, p) {\n\t return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n\t }\n\t d3.round = function(x, n) {\n\t return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n\t };\n\t var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n\t d3.formatPrefix = function(value, precision) {\n\t var i = 0;\n\t if (value = +value) {\n\t if (value < 0) value *= -1;\n\t if (precision) value = d3.round(value, d3_format_precision(value, precision));\n\t i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n\t i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n\t }\n\t return d3_formatPrefixes[8 + i / 3];\n\t };\n\t function d3_formatPrefix(d, i) {\n\t var k = Math.pow(10, abs(8 - i) * 3);\n\t return {\n\t scale: i > 8 ? function(d) {\n\t return d / k;\n\t } : function(d) {\n\t return d * k;\n\t },\n\t symbol: d\n\t };\n\t }\n\t function d3_locale_numberFormat(locale) {\n\t var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n\t var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = locale_grouping[j = (j + 1) % locale_grouping.length];\n\t }\n\t return t.reverse().join(locale_thousands);\n\t } : d3_identity;\n\t return function(specifier) {\n\t var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n\t if (precision) precision = +precision.substring(1);\n\t if (zfill || fill === \"0\" && align === \"=\") {\n\t zfill = fill = \"0\";\n\t align = \"=\";\n\t }\n\t switch (type) {\n\t case \"n\":\n\t comma = true;\n\t type = \"g\";\n\t break;\n\t\n\t case \"%\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"f\";\n\t break;\n\t\n\t case \"p\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"r\";\n\t break;\n\t\n\t case \"b\":\n\t case \"o\":\n\t case \"x\":\n\t case \"X\":\n\t if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\t\n\t case \"c\":\n\t exponent = false;\n\t\n\t case \"d\":\n\t integer = true;\n\t precision = 0;\n\t break;\n\t\n\t case \"s\":\n\t scale = -1;\n\t type = \"r\";\n\t break;\n\t }\n\t if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n\t if (type == \"r\" && !precision) type = \"g\";\n\t if (precision != null) {\n\t if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n\t }\n\t type = d3_format_types.get(type) || d3_format_typeDefault;\n\t var zcomma = zfill && comma;\n\t return function(value) {\n\t var fullSuffix = suffix;\n\t if (integer && value % 1) return \"\";\n\t var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n\t if (scale < 0) {\n\t var unit = d3.formatPrefix(value, precision);\n\t value = unit.scale(value);\n\t fullSuffix = unit.symbol + suffix;\n\t } else {\n\t value *= scale;\n\t }\n\t value = type(value, precision);\n\t var i = value.lastIndexOf(\".\"), before, after;\n\t if (i < 0) {\n\t var j = exponent ? value.lastIndexOf(\"e\") : -1;\n\t if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n\t } else {\n\t before = value.substring(0, i);\n\t after = locale_decimal + value.substring(i + 1);\n\t }\n\t if (!zfill && comma) before = formatGroup(before, Infinity);\n\t var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n\t if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n\t negative += prefix;\n\t value = before + after;\n\t return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n\t };\n\t };\n\t }\n\t var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n\t var d3_format_types = d3.map({\n\t b: function(x) {\n\t return x.toString(2);\n\t },\n\t c: function(x) {\n\t return String.fromCharCode(x);\n\t },\n\t o: function(x) {\n\t return x.toString(8);\n\t },\n\t x: function(x) {\n\t return x.toString(16);\n\t },\n\t X: function(x) {\n\t return x.toString(16).toUpperCase();\n\t },\n\t g: function(x, p) {\n\t return x.toPrecision(p);\n\t },\n\t e: function(x, p) {\n\t return x.toExponential(p);\n\t },\n\t f: function(x, p) {\n\t return x.toFixed(p);\n\t },\n\t r: function(x, p) {\n\t return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n\t }\n\t });\n\t function d3_format_typeDefault(x) {\n\t return x + \"\";\n\t }\n\t var d3_time = d3.time = {}, d3_date = Date;\n\t function d3_date_utc() {\n\t this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n\t }\n\t d3_date_utc.prototype = {\n\t getDate: function() {\n\t return this._.getUTCDate();\n\t },\n\t getDay: function() {\n\t return this._.getUTCDay();\n\t },\n\t getFullYear: function() {\n\t return this._.getUTCFullYear();\n\t },\n\t getHours: function() {\n\t return this._.getUTCHours();\n\t },\n\t getMilliseconds: function() {\n\t return this._.getUTCMilliseconds();\n\t },\n\t getMinutes: function() {\n\t return this._.getUTCMinutes();\n\t },\n\t getMonth: function() {\n\t return this._.getUTCMonth();\n\t },\n\t getSeconds: function() {\n\t return this._.getUTCSeconds();\n\t },\n\t getTime: function() {\n\t return this._.getTime();\n\t },\n\t getTimezoneOffset: function() {\n\t return 0;\n\t },\n\t valueOf: function() {\n\t return this._.valueOf();\n\t },\n\t setDate: function() {\n\t d3_time_prototype.setUTCDate.apply(this._, arguments);\n\t },\n\t setDay: function() {\n\t d3_time_prototype.setUTCDay.apply(this._, arguments);\n\t },\n\t setFullYear: function() {\n\t d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n\t },\n\t setHours: function() {\n\t d3_time_prototype.setUTCHours.apply(this._, arguments);\n\t },\n\t setMilliseconds: function() {\n\t d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n\t },\n\t setMinutes: function() {\n\t d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n\t },\n\t setMonth: function() {\n\t d3_time_prototype.setUTCMonth.apply(this._, arguments);\n\t },\n\t setSeconds: function() {\n\t d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n\t },\n\t setTime: function() {\n\t d3_time_prototype.setTime.apply(this._, arguments);\n\t }\n\t };\n\t var d3_time_prototype = Date.prototype;\n\t function d3_time_interval(local, step, number) {\n\t function round(date) {\n\t var d0 = local(date), d1 = offset(d0, 1);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t }\n\t function ceil(date) {\n\t step(date = local(new d3_date(date - 1)), 1);\n\t return date;\n\t }\n\t function offset(date, k) {\n\t step(date = new d3_date(+date), k);\n\t return date;\n\t }\n\t function range(t0, t1, dt) {\n\t var time = ceil(t0), times = [];\n\t if (dt > 1) {\n\t while (time < t1) {\n\t if (!(number(time) % dt)) times.push(new Date(+time));\n\t step(time, 1);\n\t }\n\t } else {\n\t while (time < t1) times.push(new Date(+time)), step(time, 1);\n\t }\n\t return times;\n\t }\n\t function range_utc(t0, t1, dt) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = t0;\n\t return range(utc, t1, dt);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t local.floor = local;\n\t local.round = round;\n\t local.ceil = ceil;\n\t local.offset = offset;\n\t local.range = range;\n\t var utc = local.utc = d3_time_interval_utc(local);\n\t utc.floor = utc;\n\t utc.round = d3_time_interval_utc(round);\n\t utc.ceil = d3_time_interval_utc(ceil);\n\t utc.offset = d3_time_interval_utc(offset);\n\t utc.range = range_utc;\n\t return local;\n\t }\n\t function d3_time_interval_utc(method) {\n\t return function(date, k) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = date;\n\t return method(utc, k)._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t }\n\t d3_time.year = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setMonth(0, 1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setFullYear(date.getFullYear() + offset);\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t d3_time.years = d3_time.year.range;\n\t d3_time.years.utc = d3_time.year.utc.range;\n\t d3_time.day = d3_time_interval(function(date) {\n\t var day = new d3_date(2e3, 0);\n\t day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n\t return day;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + offset);\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t d3_time.days = d3_time.day.range;\n\t d3_time.days.utc = d3_time.day.utc.range;\n\t d3_time.dayOfYear = function(date) {\n\t var year = d3_time.year(date);\n\t return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n\t };\n\t [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n\t i = 7 - i;\n\t var interval = d3_time[day] = d3_time_interval(function(date) {\n\t (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n\t return date;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + Math.floor(offset) * 7);\n\t }, function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n\t });\n\t d3_time[day + \"s\"] = interval.range;\n\t d3_time[day + \"s\"].utc = interval.utc.range;\n\t d3_time[day + \"OfYear\"] = function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n\t };\n\t });\n\t d3_time.week = d3_time.sunday;\n\t d3_time.weeks = d3_time.sunday.range;\n\t d3_time.weeks.utc = d3_time.sunday.utc.range;\n\t d3_time.weekOfYear = d3_time.sundayOfYear;\n\t function d3_locale_timeFormat(locale) {\n\t var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n\t function d3_time_format(template) {\n\t var n = template.length;\n\t function format(date) {\n\t var string = [], i = -1, j = 0, c, p, f;\n\t while (++i < n) {\n\t if (template.charCodeAt(i) === 37) {\n\t string.push(template.slice(j, i));\n\t if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n\t if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t string.push(template.slice(j, i));\n\t return string.join(\"\");\n\t }\n\t format.parse = function(string) {\n\t var d = {\n\t y: 1900,\n\t m: 0,\n\t d: 1,\n\t H: 0,\n\t M: 0,\n\t S: 0,\n\t L: 0,\n\t Z: null\n\t }, i = d3_time_parse(d, template, string, 0);\n\t if (i != string.length) return null;\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n\t if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t date.setFullYear(d.y, 0, 1);\n\t date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n\t } else date.setFullYear(d.y, d.m, d.d);\n\t date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n\t return localZ ? date._ : date;\n\t };\n\t format.toString = function() {\n\t return template;\n\t };\n\t return format;\n\t }\n\t function d3_time_parse(date, template, string, j) {\n\t var c, p, t, i = 0, n = template.length, m = string.length;\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = template.charCodeAt(i++);\n\t if (c === 37) {\n\t t = template.charAt(i++);\n\t p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n\t if (!p || (j = p(date, string, j)) < 0) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t return j;\n\t }\n\t d3_time_format.utc = function(template) {\n\t var local = d3_time_format(template);\n\t function format(date) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date();\n\t utc._ = date;\n\t return local(utc);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t format.parse = function(string) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var date = local.parse(string);\n\t return date && date._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t format.toString = local.toString;\n\t return format;\n\t };\n\t d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n\t var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n\t locale_periods.forEach(function(p, i) {\n\t d3_time_periodLookup.set(p.toLowerCase(), i);\n\t });\n\t var d3_time_formats = {\n\t a: function(d) {\n\t return locale_shortDays[d.getDay()];\n\t },\n\t A: function(d) {\n\t return locale_days[d.getDay()];\n\t },\n\t b: function(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t },\n\t B: function(d) {\n\t return locale_months[d.getMonth()];\n\t },\n\t c: d3_time_format(locale_dateTime),\n\t d: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t e: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t H: function(d, p) {\n\t return d3_time_formatPad(d.getHours(), p, 2);\n\t },\n\t I: function(d, p) {\n\t return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n\t },\n\t j: function(d, p) {\n\t return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n\t },\n\t L: function(d, p) {\n\t return d3_time_formatPad(d.getMilliseconds(), p, 3);\n\t },\n\t m: function(d, p) {\n\t return d3_time_formatPad(d.getMonth() + 1, p, 2);\n\t },\n\t M: function(d, p) {\n\t return d3_time_formatPad(d.getMinutes(), p, 2);\n\t },\n\t p: function(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t },\n\t S: function(d, p) {\n\t return d3_time_formatPad(d.getSeconds(), p, 2);\n\t },\n\t U: function(d, p) {\n\t return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n\t },\n\t w: function(d) {\n\t return d.getDay();\n\t },\n\t W: function(d, p) {\n\t return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n\t },\n\t x: d3_time_format(locale_date),\n\t X: d3_time_format(locale_time),\n\t y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n\t },\n\t Y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n\t },\n\t Z: d3_time_zone,\n\t \"%\": function() {\n\t return \"%\";\n\t }\n\t };\n\t var d3_time_parsers = {\n\t a: d3_time_parseWeekdayAbbrev,\n\t A: d3_time_parseWeekday,\n\t b: d3_time_parseMonthAbbrev,\n\t B: d3_time_parseMonth,\n\t c: d3_time_parseLocaleFull,\n\t d: d3_time_parseDay,\n\t e: d3_time_parseDay,\n\t H: d3_time_parseHour24,\n\t I: d3_time_parseHour24,\n\t j: d3_time_parseDayOfYear,\n\t L: d3_time_parseMilliseconds,\n\t m: d3_time_parseMonthNumber,\n\t M: d3_time_parseMinutes,\n\t p: d3_time_parseAmPm,\n\t S: d3_time_parseSeconds,\n\t U: d3_time_parseWeekNumberSunday,\n\t w: d3_time_parseWeekdayNumber,\n\t W: d3_time_parseWeekNumberMonday,\n\t x: d3_time_parseLocaleDate,\n\t X: d3_time_parseLocaleTime,\n\t y: d3_time_parseYear,\n\t Y: d3_time_parseFullYear,\n\t Z: d3_time_parseZone,\n\t \"%\": d3_time_parseLiteralPercent\n\t };\n\t function d3_time_parseWeekdayAbbrev(date, string, i) {\n\t d3_time_dayAbbrevRe.lastIndex = 0;\n\t var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekday(date, string, i) {\n\t d3_time_dayRe.lastIndex = 0;\n\t var n = d3_time_dayRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonthAbbrev(date, string, i) {\n\t d3_time_monthAbbrevRe.lastIndex = 0;\n\t var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonth(date, string, i) {\n\t d3_time_monthRe.lastIndex = 0;\n\t var n = d3_time_monthRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseLocaleFull(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleDate(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleTime(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n\t }\n\t function d3_time_parseAmPm(date, string, i) {\n\t var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n\t return n == null ? -1 : (date.p = n, i);\n\t }\n\t return d3_time_format;\n\t }\n\t var d3_time_formatPads = {\n\t \"-\": \"\",\n\t _: \" \",\n\t \"0\": \"0\"\n\t }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n\t function d3_time_formatPad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t function d3_time_formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n\t }\n\t function d3_time_formatLookup(names) {\n\t var map = new d3_Map(), i = -1, n = names.length;\n\t while (++i < n) map.set(names[i].toLowerCase(), i);\n\t return map;\n\t }\n\t function d3_time_parseWeekdayNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n\t return n ? (date.w = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberSunday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.U = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberMonday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.W = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseFullYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n\t return n ? (date.y = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseZone(date, string, i) {\n\t return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n\t i + 5) : -1;\n\t }\n\t function d3_time_expandYear(d) {\n\t return d + (d > 68 ? 1900 : 2e3);\n\t }\n\t function d3_time_parseMonthNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDay(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.d = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDayOfYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.j = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseHour24(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.H = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMinutes(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.M = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseSeconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.S = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMilliseconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.L = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_zone(d) {\n\t var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n\t return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n\t }\n\t function d3_time_parseLiteralPercent(date, string, i) {\n\t d3_time_percentRe.lastIndex = 0;\n\t var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t function d3_time_formatMulti(formats) {\n\t var n = formats.length, i = -1;\n\t while (++i < n) formats[i][0] = this(formats[i][0]);\n\t return function(date) {\n\t var i = 0, f = formats[i];\n\t while (!f[1](date)) f = formats[++i];\n\t return f[0](date);\n\t };\n\t }\n\t d3.locale = function(locale) {\n\t return {\n\t numberFormat: d3_locale_numberFormat(locale),\n\t timeFormat: d3_locale_timeFormat(locale)\n\t };\n\t };\n\t var d3_locale_enUS = d3.locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [ 3 ],\n\t currency: [ \"$\", \"\" ],\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%m/%d/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [ \"AM\", \"PM\" ],\n\t days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n\t shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n\t });\n\t d3.format = d3_locale_enUS.numberFormat;\n\t d3.geo = {};\n\t function d3_adder() {}\n\t d3_adder.prototype = {\n\t s: 0,\n\t t: 0,\n\t add: function(y) {\n\t d3_adderSum(y, this.t, d3_adderTemp);\n\t d3_adderSum(d3_adderTemp.s, this.s, this);\n\t if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n\t },\n\t reset: function() {\n\t this.s = this.t = 0;\n\t },\n\t valueOf: function() {\n\t return this.s;\n\t }\n\t };\n\t var d3_adderTemp = new d3_adder();\n\t function d3_adderSum(a, b, o) {\n\t var x = o.s = a + b, bv = x - a, av = x - bv;\n\t o.t = a - av + (b - bv);\n\t }\n\t d3.geo.stream = function(object, listener) {\n\t if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n\t d3_geo_streamObjectType[object.type](object, listener);\n\t } else {\n\t d3_geo_streamGeometry(object, listener);\n\t }\n\t };\n\t function d3_geo_streamGeometry(geometry, listener) {\n\t if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n\t d3_geo_streamGeometryType[geometry.type](geometry, listener);\n\t }\n\t }\n\t var d3_geo_streamObjectType = {\n\t Feature: function(feature, listener) {\n\t d3_geo_streamGeometry(feature.geometry, listener);\n\t },\n\t FeatureCollection: function(object, listener) {\n\t var features = object.features, i = -1, n = features.length;\n\t while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n\t }\n\t };\n\t var d3_geo_streamGeometryType = {\n\t Sphere: function(object, listener) {\n\t listener.sphere();\n\t },\n\t Point: function(object, listener) {\n\t object = object.coordinates;\n\t listener.point(object[0], object[1], object[2]);\n\t },\n\t MultiPoint: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n\t },\n\t LineString: function(object, listener) {\n\t d3_geo_streamLine(object.coordinates, listener, 0);\n\t },\n\t MultiLineString: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n\t },\n\t Polygon: function(object, listener) {\n\t d3_geo_streamPolygon(object.coordinates, listener);\n\t },\n\t MultiPolygon: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n\t },\n\t GeometryCollection: function(object, listener) {\n\t var geometries = object.geometries, i = -1, n = geometries.length;\n\t while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n\t }\n\t };\n\t function d3_geo_streamLine(coordinates, listener, closed) {\n\t var i = -1, n = coordinates.length - closed, coordinate;\n\t listener.lineStart();\n\t while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n\t listener.lineEnd();\n\t }\n\t function d3_geo_streamPolygon(coordinates, listener) {\n\t var i = -1, n = coordinates.length;\n\t listener.polygonStart();\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n\t listener.polygonEnd();\n\t }\n\t d3.geo.area = function(object) {\n\t d3_geo_areaSum = 0;\n\t d3.geo.stream(object, d3_geo_area);\n\t return d3_geo_areaSum;\n\t };\n\t var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n\t var d3_geo_area = {\n\t sphere: function() {\n\t d3_geo_areaSum += 4 * π;\n\t },\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_areaRingSum.reset();\n\t d3_geo_area.lineStart = d3_geo_areaRingStart;\n\t },\n\t polygonEnd: function() {\n\t var area = 2 * d3_geo_areaRingSum;\n\t d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n\t d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n\t }\n\t };\n\t function d3_geo_areaRingStart() {\n\t var λ00, φ00, λ0, cosφ0, sinφ0;\n\t d3_geo_area.point = function(λ, φ) {\n\t d3_geo_area.point = nextPoint;\n\t λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n\t sinφ0 = Math.sin(φ);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t φ = φ * d3_radians / 2 + π / 4;\n\t var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n\t d3_geo_areaRingSum.add(Math.atan2(v, u));\n\t λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n\t }\n\t d3_geo_area.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t };\n\t }\n\t function d3_geo_cartesian(spherical) {\n\t var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n\t return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n\t }\n\t function d3_geo_cartesianDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t }\n\t function d3_geo_cartesianCross(a, b) {\n\t return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n\t }\n\t function d3_geo_cartesianAdd(a, b) {\n\t a[0] += b[0];\n\t a[1] += b[1];\n\t a[2] += b[2];\n\t }\n\t function d3_geo_cartesianScale(vector, k) {\n\t return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n\t }\n\t function d3_geo_cartesianNormalize(d) {\n\t var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n\t d[0] /= l;\n\t d[1] /= l;\n\t d[2] /= l;\n\t }\n\t function d3_geo_spherical(cartesian) {\n\t return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n\t }\n\t function d3_geo_sphericalEqual(a, b) {\n\t return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n\t }\n\t d3.geo.bounds = function() {\n\t var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n\t var bound = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t bound.point = ringPoint;\n\t bound.lineStart = ringStart;\n\t bound.lineEnd = ringEnd;\n\t dλSum = 0;\n\t d3_geo_area.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t d3_geo_area.polygonEnd();\n\t bound.point = point;\n\t bound.lineStart = lineStart;\n\t bound.lineEnd = lineEnd;\n\t if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n\t range[0] = λ0, range[1] = λ1;\n\t }\n\t };\n\t function point(λ, φ) {\n\t ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t function linePoint(λ, φ) {\n\t var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n\t if (p0) {\n\t var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n\t d3_geo_cartesianNormalize(inflection);\n\t inflection = d3_geo_spherical(inflection);\n\t var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n\t if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = inflection[1] * d3_degrees;\n\t if (φi > φ1) φ1 = φi;\n\t } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = -inflection[1] * d3_degrees;\n\t if (φi < φ0) φ0 = φi;\n\t } else {\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t if (antimeridian) {\n\t if (λ < λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t } else {\n\t if (λ1 >= λ0) {\n\t if (λ < λ0) λ0 = λ;\n\t if (λ > λ1) λ1 = λ;\n\t } else {\n\t if (λ > λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t }\n\t }\n\t } else {\n\t point(λ, φ);\n\t }\n\t p0 = p, λ_ = λ;\n\t }\n\t function lineStart() {\n\t bound.point = linePoint;\n\t }\n\t function lineEnd() {\n\t range[0] = λ0, range[1] = λ1;\n\t bound.point = point;\n\t p0 = null;\n\t }\n\t function ringPoint(λ, φ) {\n\t if (p0) {\n\t var dλ = λ - λ_;\n\t dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n\t } else λ__ = λ, φ__ = φ;\n\t d3_geo_area.point(λ, φ);\n\t linePoint(λ, φ);\n\t }\n\t function ringStart() {\n\t d3_geo_area.lineStart();\n\t }\n\t function ringEnd() {\n\t ringPoint(λ__, φ__);\n\t d3_geo_area.lineEnd();\n\t if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n\t range[0] = λ0, range[1] = λ1;\n\t p0 = null;\n\t }\n\t function angle(λ0, λ1) {\n\t return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n\t }\n\t function compareRanges(a, b) {\n\t return a[0] - b[0];\n\t }\n\t function withinRange(x, range) {\n\t return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n\t }\n\t return function(feature) {\n\t φ1 = λ1 = -(λ0 = φ0 = Infinity);\n\t ranges = [];\n\t d3.geo.stream(feature, bound);\n\t var n = ranges.length;\n\t if (n) {\n\t ranges.sort(compareRanges);\n\t for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n\t b = ranges[i];\n\t if (withinRange(b[0], a) || withinRange(b[1], a)) {\n\t if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n\t if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n\t } else {\n\t merged.push(a = b);\n\t }\n\t }\n\t var best = -Infinity, dλ;\n\t for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n\t b = merged[i];\n\t if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n\t }\n\t }\n\t ranges = range = null;\n\t return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n\t };\n\t }();\n\t d3.geo.centroid = function(object) {\n\t d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, d3_geo_centroid);\n\t var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n\t if (m < ε2) {\n\t x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n\t if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n\t m = x * x + y * y + z * z;\n\t if (m < ε2) return [ NaN, NaN ];\n\t }\n\t return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n\t };\n\t var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n\t var d3_geo_centroid = {\n\t sphere: d3_noop,\n\t point: d3_geo_centroidPoint,\n\t lineStart: d3_geo_centroidLineStart,\n\t lineEnd: d3_geo_centroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n\t }\n\t };\n\t function d3_geo_centroidPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n\t }\n\t function d3_geo_centroidPointXYZ(x, y, z) {\n\t ++d3_geo_centroidW0;\n\t d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n\t d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n\t d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n\t }\n\t function d3_geo_centroidLineStart() {\n\t var x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroid.point = nextPoint;\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_centroidLineEnd() {\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t }\n\t function d3_geo_centroidRingStart() {\n\t var λ00, φ00, x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ00 = λ, φ00 = φ;\n\t d3_geo_centroid.point = nextPoint;\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t d3_geo_centroid.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n\t d3_geo_centroidX2 += v * cx;\n\t d3_geo_centroidY2 += v * cy;\n\t d3_geo_centroidZ2 += v * cz;\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_compose(a, b) {\n\t function compose(x, y) {\n\t return x = a(x, y), b(x[0], x[1]);\n\t }\n\t if (a.invert && b.invert) compose.invert = function(x, y) {\n\t return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n\t };\n\t return compose;\n\t }\n\t function d3_true() {\n\t return true;\n\t }\n\t function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n\t var subject = [], clip = [];\n\t segments.forEach(function(segment) {\n\t if ((n = segment.length - 1) <= 0) return;\n\t var n, p0 = segment[0], p1 = segment[n];\n\t if (d3_geo_sphericalEqual(p0, p1)) {\n\t listener.lineStart();\n\t for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n\t listener.lineEnd();\n\t return;\n\t }\n\t var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n\t b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t });\n\t clip.sort(compare);\n\t d3_geo_clipPolygonLinkCircular(subject);\n\t d3_geo_clipPolygonLinkCircular(clip);\n\t if (!subject.length) return;\n\t for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n\t clip[i].e = entry = !entry;\n\t }\n\t var start = subject[0], points, point;\n\t while (1) {\n\t var current = start, isSubject = true;\n\t while (current.v) if ((current = current.n) === start) return;\n\t points = current.z;\n\t listener.lineStart();\n\t do {\n\t current.v = current.o.v = true;\n\t if (current.e) {\n\t if (isSubject) {\n\t for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.n.x, 1, listener);\n\t }\n\t current = current.n;\n\t } else {\n\t if (isSubject) {\n\t points = current.p.z;\n\t for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.p.x, -1, listener);\n\t }\n\t current = current.p;\n\t }\n\t current = current.o;\n\t points = current.z;\n\t isSubject = !isSubject;\n\t } while (!current.v);\n\t listener.lineEnd();\n\t }\n\t }\n\t function d3_geo_clipPolygonLinkCircular(array) {\n\t if (!(n = array.length)) return;\n\t var n, i = 0, a = array[0], b;\n\t while (++i < n) {\n\t a.n = b = array[i];\n\t b.p = a;\n\t a = b;\n\t }\n\t a.n = b = array[0];\n\t b.p = a;\n\t }\n\t function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n\t this.x = point;\n\t this.z = points;\n\t this.o = other;\n\t this.e = entry;\n\t this.v = false;\n\t this.n = this.p = null;\n\t }\n\t function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n\t return function(rotate, listener) {\n\t var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t clip.point = pointRing;\n\t clip.lineStart = ringStart;\n\t clip.lineEnd = ringEnd;\n\t segments = [];\n\t polygon = [];\n\t },\n\t polygonEnd: function() {\n\t clip.point = point;\n\t clip.lineStart = lineStart;\n\t clip.lineEnd = lineEnd;\n\t segments = d3.merge(segments);\n\t var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n\t if (segments.length) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n\t } else if (clipStartInside) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n\t segments = polygon = null;\n\t },\n\t sphere: function() {\n\t listener.polygonStart();\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t listener.polygonEnd();\n\t }\n\t };\n\t function point(λ, φ) {\n\t var point = rotate(λ, φ);\n\t if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n\t }\n\t function pointLine(λ, φ) {\n\t var point = rotate(λ, φ);\n\t line.point(point[0], point[1]);\n\t }\n\t function lineStart() {\n\t clip.point = pointLine;\n\t line.lineStart();\n\t }\n\t function lineEnd() {\n\t clip.point = point;\n\t line.lineEnd();\n\t }\n\t var segments;\n\t var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n\t function pointRing(λ, φ) {\n\t ring.push([ λ, φ ]);\n\t var point = rotate(λ, φ);\n\t ringListener.point(point[0], point[1]);\n\t }\n\t function ringStart() {\n\t ringListener.lineStart();\n\t ring = [];\n\t }\n\t function ringEnd() {\n\t pointRing(ring[0][0], ring[0][1]);\n\t ringListener.lineEnd();\n\t var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n\t ring.pop();\n\t polygon.push(ring);\n\t ring = null;\n\t if (!n) return;\n\t if (clean & 1) {\n\t segment = ringSegments[0];\n\t var n = segment.length - 1, i = -1, point;\n\t if (n > 0) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t while (++i < n) listener.point((point = segment[i])[0], point[1]);\n\t listener.lineEnd();\n\t }\n\t return;\n\t }\n\t if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\t segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n\t }\n\t return clip;\n\t };\n\t }\n\t function d3_geo_clipSegmentLength1(segment) {\n\t return segment.length > 1;\n\t }\n\t function d3_geo_clipBufferListener() {\n\t var lines = [], line;\n\t return {\n\t lineStart: function() {\n\t lines.push(line = []);\n\t },\n\t point: function(λ, φ) {\n\t line.push([ λ, φ ]);\n\t },\n\t lineEnd: d3_noop,\n\t buffer: function() {\n\t var buffer = lines;\n\t lines = [];\n\t line = null;\n\t return buffer;\n\t },\n\t rejoin: function() {\n\t if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n\t }\n\t };\n\t }\n\t function d3_geo_clipSort(a, b) {\n\t return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n\t }\n\t var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n\t function d3_geo_clipAntimeridianLine(listener) {\n\t var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n\t return {\n\t lineStart: function() {\n\t listener.lineStart();\n\t clean = 1;\n\t },\n\t point: function(λ1, φ1) {\n\t var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n\t if (abs(dλ - π) < ε) {\n\t listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t listener.point(λ1, φ0);\n\t clean = 0;\n\t } else if (sλ0 !== sλ1 && dλ >= π) {\n\t if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n\t if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n\t φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t clean = 0;\n\t }\n\t listener.point(λ0 = λ1, φ0 = φ1);\n\t sλ0 = sλ1;\n\t },\n\t lineEnd: function() {\n\t listener.lineEnd();\n\t λ0 = φ0 = NaN;\n\t },\n\t clean: function() {\n\t return 2 - clean;\n\t }\n\t };\n\t }\n\t function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n\t var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n\t return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n\t }\n\t function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n\t var φ;\n\t if (from == null) {\n\t φ = direction * halfπ;\n\t listener.point(-π, φ);\n\t listener.point(0, φ);\n\t listener.point(π, φ);\n\t listener.point(π, 0);\n\t listener.point(π, -φ);\n\t listener.point(0, -φ);\n\t listener.point(-π, -φ);\n\t listener.point(-π, 0);\n\t listener.point(-π, φ);\n\t } else if (abs(from[0] - to[0]) > ε) {\n\t var s = from[0] < to[0] ? π : -π;\n\t φ = direction * s / 2;\n\t listener.point(-s, φ);\n\t listener.point(0, φ);\n\t listener.point(s, φ);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function d3_geo_pointInPolygon(point, polygon) {\n\t var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n\t d3_geo_areaRingSum.reset();\n\t for (var i = 0, n = polygon.length; i < n; ++i) {\n\t var ring = polygon[i], m = ring.length;\n\t if (!m) continue;\n\t var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n\t while (true) {\n\t if (j === m) j = 0;\n\t point = ring[j];\n\t var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n\t d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n\t polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n\t if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n\t var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n\t d3_geo_cartesianNormalize(arc);\n\t var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n\t d3_geo_cartesianNormalize(intersection);\n\t var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n\t if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n\t winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n\t }\n\t }\n\t if (!j++) break;\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n\t }\n\t }\n\t return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n\t }\n\t function d3_geo_clipCircle(radius) {\n\t var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n\t return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n\t function visible(λ, φ) {\n\t return Math.cos(λ) * Math.cos(φ) > cr;\n\t }\n\t function clipLine(listener) {\n\t var point0, c0, v0, v00, clean;\n\t return {\n\t lineStart: function() {\n\t v00 = v0 = false;\n\t clean = 1;\n\t },\n\t point: function(λ, φ) {\n\t var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n\t if (!point0 && (v00 = v0 = v)) listener.lineStart();\n\t if (v !== v0) {\n\t point2 = intersect(point0, point1);\n\t if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n\t point1[0] += ε;\n\t point1[1] += ε;\n\t v = visible(point1[0], point1[1]);\n\t }\n\t }\n\t if (v !== v0) {\n\t clean = 0;\n\t if (v) {\n\t listener.lineStart();\n\t point2 = intersect(point1, point0);\n\t listener.point(point2[0], point2[1]);\n\t } else {\n\t point2 = intersect(point0, point1);\n\t listener.point(point2[0], point2[1]);\n\t listener.lineEnd();\n\t }\n\t point0 = point2;\n\t } else if (notHemisphere && point0 && smallRadius ^ v) {\n\t var t;\n\t if (!(c & c0) && (t = intersect(point1, point0, true))) {\n\t clean = 0;\n\t if (smallRadius) {\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t } else {\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t }\n\t }\n\t }\n\t if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n\t listener.point(point1[0], point1[1]);\n\t }\n\t point0 = point1, v0 = v, c0 = c;\n\t },\n\t lineEnd: function() {\n\t if (v0) listener.lineEnd();\n\t point0 = null;\n\t },\n\t clean: function() {\n\t return clean | (v00 && v0) << 1;\n\t }\n\t };\n\t }\n\t function intersect(a, b, two) {\n\t var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n\t var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n\t if (!determinant) return !two && a;\n\t var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n\t d3_geo_cartesianAdd(A, B);\n\t var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n\t if (t2 < 0) return;\n\t var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n\t d3_geo_cartesianAdd(q, A);\n\t q = d3_geo_spherical(q);\n\t if (!two) return q;\n\t var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n\t if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n\t var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n\t if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n\t if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n\t var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n\t d3_geo_cartesianAdd(q1, A);\n\t return [ q, d3_geo_spherical(q1) ];\n\t }\n\t }\n\t function code(λ, φ) {\n\t var r = smallRadius ? radius : π - radius, code = 0;\n\t if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n\t if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n\t return code;\n\t }\n\t }\n\t function d3_geom_clipLine(x0, y0, x1, y1) {\n\t return function(line) {\n\t var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n\t r = x0 - ax;\n\t if (!dx && r > 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dx > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = x1 - ax;\n\t if (!dx && r < 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dx > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t r = y0 - ay;\n\t if (!dy && r > 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dy > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = y1 - ay;\n\t if (!dy && r < 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dy > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t if (t0 > 0) line.a = {\n\t x: ax + t0 * dx,\n\t y: ay + t0 * dy\n\t };\n\t if (t1 < 1) line.b = {\n\t x: ax + t1 * dx,\n\t y: ay + t1 * dy\n\t };\n\t return line;\n\t };\n\t }\n\t var d3_geo_clipExtentMAX = 1e9;\n\t d3.geo.clipExtent = function() {\n\t var x0, y0, x1, y1, stream, clip, clipExtent = {\n\t stream: function(output) {\n\t if (stream) stream.valid = false;\n\t stream = clip(output);\n\t stream.valid = true;\n\t return stream;\n\t },\n\t extent: function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n\t if (stream) stream.valid = false, stream = null;\n\t return clipExtent;\n\t }\n\t };\n\t return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n\t };\n\t function d3_geo_clipExtent(x0, y0, x1, y1) {\n\t return function(listener) {\n\t var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t listener = bufferListener;\n\t segments = [];\n\t polygon = [];\n\t clean = true;\n\t },\n\t polygonEnd: function() {\n\t listener = listener_;\n\t segments = d3.merge(segments);\n\t var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n\t if (inside || visible) {\n\t listener.polygonStart();\n\t if (inside) {\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (visible) {\n\t d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n\t }\n\t listener.polygonEnd();\n\t }\n\t segments = polygon = ring = null;\n\t }\n\t };\n\t function insidePolygon(p) {\n\t var wn = 0, n = polygon.length, y = p[1];\n\t for (var i = 0; i < n; ++i) {\n\t for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n\t b = v[j];\n\t if (a[1] <= y) {\n\t if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n\t } else {\n\t if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n\t }\n\t a = b;\n\t }\n\t }\n\t return wn !== 0;\n\t }\n\t function interpolate(from, to, direction, listener) {\n\t var a = 0, a1 = 0;\n\t if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n\t do {\n\t listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n\t } while ((a = (a + direction + 4) % 4) !== a1);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function pointVisible(x, y) {\n\t return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n\t }\n\t function point(x, y) {\n\t if (pointVisible(x, y)) listener.point(x, y);\n\t }\n\t var x__, y__, v__, x_, y_, v_, first, clean;\n\t function lineStart() {\n\t clip.point = linePoint;\n\t if (polygon) polygon.push(ring = []);\n\t first = true;\n\t v_ = false;\n\t x_ = y_ = NaN;\n\t }\n\t function lineEnd() {\n\t if (segments) {\n\t linePoint(x__, y__);\n\t if (v__ && v_) bufferListener.rejoin();\n\t segments.push(bufferListener.buffer());\n\t }\n\t clip.point = point;\n\t if (v_) listener.lineEnd();\n\t }\n\t function linePoint(x, y) {\n\t x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n\t y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n\t var v = pointVisible(x, y);\n\t if (polygon) ring.push([ x, y ]);\n\t if (first) {\n\t x__ = x, y__ = y, v__ = v;\n\t first = false;\n\t if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t }\n\t } else {\n\t if (v && v_) listener.point(x, y); else {\n\t var l = {\n\t a: {\n\t x: x_,\n\t y: y_\n\t },\n\t b: {\n\t x: x,\n\t y: y\n\t }\n\t };\n\t if (clipLine(l)) {\n\t if (!v_) {\n\t listener.lineStart();\n\t listener.point(l.a.x, l.a.y);\n\t }\n\t listener.point(l.b.x, l.b.y);\n\t if (!v) listener.lineEnd();\n\t clean = false;\n\t } else if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t clean = false;\n\t }\n\t }\n\t }\n\t x_ = x, y_ = y, v_ = v;\n\t }\n\t return clip;\n\t };\n\t function corner(p, direction) {\n\t return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n\t }\n\t function compare(a, b) {\n\t return comparePoints(a.x, b.x);\n\t }\n\t function comparePoints(a, b) {\n\t var ca = corner(a, 1), cb = corner(b, 1);\n\t return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n\t }\n\t }\n\t function d3_geo_conic(projectAt) {\n\t var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n\t p.parallels = function(_) {\n\t if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n\t return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n\t };\n\t return p;\n\t }\n\t function d3_geo_conicEqualArea(φ0, φ1) {\n\t var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n\t function forward(λ, φ) {\n\t var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n\t return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = ρ0 - y;\n\t return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEqualArea = function() {\n\t return d3_geo_conic(d3_geo_conicEqualArea);\n\t }).raw = d3_geo_conicEqualArea;\n\t d3.geo.albers = function() {\n\t return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n\t };\n\t d3.geo.albersUsa = function() {\n\t var lower48 = d3.geo.albers();\n\t var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n\t var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n\t var point, pointStream = {\n\t point: function(x, y) {\n\t point = [ x, y ];\n\t }\n\t }, lower48Point, alaskaPoint, hawaiiPoint;\n\t function albersUsa(coordinates) {\n\t var x = coordinates[0], y = coordinates[1];\n\t point = null;\n\t (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n\t return point;\n\t }\n\t albersUsa.invert = function(coordinates) {\n\t var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n\t return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n\t };\n\t albersUsa.stream = function(stream) {\n\t var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n\t return {\n\t point: function(x, y) {\n\t lower48Stream.point(x, y);\n\t alaskaStream.point(x, y);\n\t hawaiiStream.point(x, y);\n\t },\n\t sphere: function() {\n\t lower48Stream.sphere();\n\t alaskaStream.sphere();\n\t hawaiiStream.sphere();\n\t },\n\t lineStart: function() {\n\t lower48Stream.lineStart();\n\t alaskaStream.lineStart();\n\t hawaiiStream.lineStart();\n\t },\n\t lineEnd: function() {\n\t lower48Stream.lineEnd();\n\t alaskaStream.lineEnd();\n\t hawaiiStream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t lower48Stream.polygonStart();\n\t alaskaStream.polygonStart();\n\t hawaiiStream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t lower48Stream.polygonEnd();\n\t alaskaStream.polygonEnd();\n\t hawaiiStream.polygonEnd();\n\t }\n\t };\n\t };\n\t albersUsa.precision = function(_) {\n\t if (!arguments.length) return lower48.precision();\n\t lower48.precision(_);\n\t alaska.precision(_);\n\t hawaii.precision(_);\n\t return albersUsa;\n\t };\n\t albersUsa.scale = function(_) {\n\t if (!arguments.length) return lower48.scale();\n\t lower48.scale(_);\n\t alaska.scale(_ * .35);\n\t hawaii.scale(_);\n\t return albersUsa.translate(lower48.translate());\n\t };\n\t albersUsa.translate = function(_) {\n\t if (!arguments.length) return lower48.translate();\n\t var k = lower48.scale(), x = +_[0], y = +_[1];\n\t lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n\t alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t return albersUsa;\n\t };\n\t return albersUsa.scale(1070);\n\t };\n\t var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_pathAreaPolygon = 0;\n\t d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n\t d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n\t }\n\t };\n\t function d3_geo_pathAreaRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathArea.point = function(x, y) {\n\t d3_geo_pathArea.point = nextPoint;\n\t x00 = x0 = x, y00 = y0 = y;\n\t };\n\t function nextPoint(x, y) {\n\t d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n\t x0 = x, y0 = y;\n\t }\n\t d3_geo_pathArea.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n\t var d3_geo_pathBounds = {\n\t point: d3_geo_pathBoundsPoint,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_pathBoundsPoint(x, y) {\n\t if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n\t if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n\t if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n\t if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n\t }\n\t function d3_geo_pathBuffer() {\n\t var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointCircle = d3_geo_pathBufferCircle(_);\n\t return stream;\n\t },\n\t result: function() {\n\t if (buffer.length) {\n\t var result = buffer.join(\"\");\n\t buffer = [];\n\t return result;\n\t }\n\t }\n\t };\n\t function point(x, y) {\n\t buffer.push(\"M\", x, \",\", y, pointCircle);\n\t }\n\t function pointLineStart(x, y) {\n\t buffer.push(\"M\", x, \",\", y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t buffer.push(\"L\", x, \",\", y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t buffer.push(\"Z\");\n\t }\n\t return stream;\n\t }\n\t function d3_geo_pathBufferCircle(radius) {\n\t return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n\t }\n\t var d3_geo_pathCentroid = {\n\t point: d3_geo_pathCentroidPoint,\n\t lineStart: d3_geo_pathCentroidLineStart,\n\t lineEnd: d3_geo_pathCentroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n\t d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n\t }\n\t };\n\t function d3_geo_pathCentroidPoint(x, y) {\n\t d3_geo_centroidX0 += x;\n\t d3_geo_centroidY0 += y;\n\t ++d3_geo_centroidZ0;\n\t }\n\t function d3_geo_pathCentroidLineStart() {\n\t var x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t }\n\t function d3_geo_pathCentroidLineEnd() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t }\n\t function d3_geo_pathCentroidRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t z = y0 * x - x0 * y;\n\t d3_geo_centroidX2 += z * (x0 + x);\n\t d3_geo_centroidY2 += z * (y0 + y);\n\t d3_geo_centroidZ2 += z * 3;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t d3_geo_pathCentroid.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t function d3_geo_pathContext(context) {\n\t var pointRadius = 4.5;\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointRadius = _;\n\t return stream;\n\t },\n\t result: d3_noop\n\t };\n\t function point(x, y) {\n\t context.moveTo(x + pointRadius, y);\n\t context.arc(x, y, pointRadius, 0, τ);\n\t }\n\t function pointLineStart(x, y) {\n\t context.moveTo(x, y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t context.lineTo(x, y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t context.closePath();\n\t }\n\t return stream;\n\t }\n\t function d3_geo_resample(project) {\n\t var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n\t function resample(stream) {\n\t return (maxDepth ? resampleRecursive : resampleNone)(stream);\n\t }\n\t function resampleNone(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t });\n\t }\n\t function resampleRecursive(stream) {\n\t var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n\t var resample = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t resample.lineStart = ringStart;\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t resample.lineStart = lineStart;\n\t }\n\t };\n\t function point(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t }\n\t function lineStart() {\n\t x0 = NaN;\n\t resample.point = linePoint;\n\t stream.lineStart();\n\t }\n\t function linePoint(λ, φ) {\n\t var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n\t stream.point(x0, y0);\n\t }\n\t function lineEnd() {\n\t resample.point = point;\n\t stream.lineEnd();\n\t }\n\t function ringStart() {\n\t lineStart();\n\t resample.point = ringPoint;\n\t resample.lineEnd = ringEnd;\n\t }\n\t function ringPoint(λ, φ) {\n\t linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n\t resample.point = linePoint;\n\t }\n\t function ringEnd() {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n\t resample.lineEnd = lineEnd;\n\t lineEnd();\n\t }\n\t return resample;\n\t }\n\t function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n\t var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n\t if (d2 > 4 * δ2 && depth--) {\n\t var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n\t if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n\t stream.point(x2, y2);\n\t resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n\t }\n\t }\n\t }\n\t resample.precision = function(_) {\n\t if (!arguments.length) return Math.sqrt(δ2);\n\t maxDepth = (δ2 = _ * _) > 0 && 16;\n\t return resample;\n\t };\n\t return resample;\n\t }\n\t d3.geo.path = function() {\n\t var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n\t function path(object) {\n\t if (object) {\n\t if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n\t if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n\t d3.geo.stream(object, cacheStream);\n\t }\n\t return contextStream.result();\n\t }\n\t path.area = function(object) {\n\t d3_geo_pathAreaSum = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathArea));\n\t return d3_geo_pathAreaSum;\n\t };\n\t path.centroid = function(object) {\n\t d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n\t return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n\t };\n\t path.bounds = function(object) {\n\t d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n\t d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n\t return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n\t };\n\t path.projection = function(_) {\n\t if (!arguments.length) return projection;\n\t projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n\t return reset();\n\t };\n\t path.context = function(_) {\n\t if (!arguments.length) return context;\n\t contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n\t if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n\t return reset();\n\t };\n\t path.pointRadius = function(_) {\n\t if (!arguments.length) return pointRadius;\n\t pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n\t return path;\n\t };\n\t function reset() {\n\t cacheStream = null;\n\t return path;\n\t }\n\t return path.projection(d3.geo.albersUsa()).context(null);\n\t };\n\t function d3_geo_pathProjectStream(project) {\n\t var resample = d3_geo_resample(function(x, y) {\n\t return project([ x * d3_degrees, y * d3_degrees ]);\n\t });\n\t return function(stream) {\n\t return d3_geo_projectionRadians(resample(stream));\n\t };\n\t }\n\t d3.geo.transform = function(methods) {\n\t return {\n\t stream: function(stream) {\n\t var transform = new d3_geo_transform(stream);\n\t for (var k in methods) transform[k] = methods[k];\n\t return transform;\n\t }\n\t };\n\t };\n\t function d3_geo_transform(stream) {\n\t this.stream = stream;\n\t }\n\t d3_geo_transform.prototype = {\n\t point: function(x, y) {\n\t this.stream.point(x, y);\n\t },\n\t sphere: function() {\n\t this.stream.sphere();\n\t },\n\t lineStart: function() {\n\t this.stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t this.stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t this.stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t this.stream.polygonEnd();\n\t }\n\t };\n\t function d3_geo_transformPoint(stream, point) {\n\t return {\n\t point: point,\n\t sphere: function() {\n\t stream.sphere();\n\t },\n\t lineStart: function() {\n\t stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t }\n\t };\n\t }\n\t d3.geo.projection = d3_geo_projection;\n\t d3.geo.projectionMutator = d3_geo_projectionMutator;\n\t function d3_geo_projection(project) {\n\t return d3_geo_projectionMutator(function() {\n\t return project;\n\t })();\n\t }\n\t function d3_geo_projectionMutator(projectAt) {\n\t var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n\t x = project(x, y);\n\t return [ x[0] * k + δx, δy - x[1] * k ];\n\t }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n\t function projection(point) {\n\t point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n\t return [ point[0] * k + δx, δy - point[1] * k ];\n\t }\n\t function invert(point) {\n\t point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n\t return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n\t }\n\t projection.stream = function(output) {\n\t if (stream) stream.valid = false;\n\t stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n\t stream.valid = true;\n\t return stream;\n\t };\n\t projection.clipAngle = function(_) {\n\t if (!arguments.length) return clipAngle;\n\t preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n\t return invalidate();\n\t };\n\t projection.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent;\n\t clipExtent = _;\n\t postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n\t return invalidate();\n\t };\n\t projection.scale = function(_) {\n\t if (!arguments.length) return k;\n\t k = +_;\n\t return reset();\n\t };\n\t projection.translate = function(_) {\n\t if (!arguments.length) return [ x, y ];\n\t x = +_[0];\n\t y = +_[1];\n\t return reset();\n\t };\n\t projection.center = function(_) {\n\t if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n\t λ = _[0] % 360 * d3_radians;\n\t φ = _[1] % 360 * d3_radians;\n\t return reset();\n\t };\n\t projection.rotate = function(_) {\n\t if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n\t δλ = _[0] % 360 * d3_radians;\n\t δφ = _[1] % 360 * d3_radians;\n\t δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n\t return reset();\n\t };\n\t d3.rebind(projection, projectResample, \"precision\");\n\t function reset() {\n\t projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n\t var center = project(λ, φ);\n\t δx = x - center[0] * k;\n\t δy = y + center[1] * k;\n\t return invalidate();\n\t }\n\t function invalidate() {\n\t if (stream) stream.valid = false, stream = null;\n\t return projection;\n\t }\n\t return function() {\n\t project = projectAt.apply(this, arguments);\n\t projection.invert = project.invert && invert;\n\t return reset();\n\t };\n\t }\n\t function d3_geo_projectionRadians(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t stream.point(x * d3_radians, y * d3_radians);\n\t });\n\t }\n\t function d3_geo_equirectangular(λ, φ) {\n\t return [ λ, φ ];\n\t }\n\t (d3.geo.equirectangular = function() {\n\t return d3_geo_projection(d3_geo_equirectangular);\n\t }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n\t d3.geo.rotation = function(rotate) {\n\t rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n\t function forward(coordinates) {\n\t coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t }\n\t forward.invert = function(coordinates) {\n\t coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t };\n\t return forward;\n\t };\n\t function d3_geo_identityRotation(λ, φ) {\n\t return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t }\n\t d3_geo_identityRotation.invert = d3_geo_equirectangular;\n\t function d3_geo_rotation(δλ, δφ, δγ) {\n\t return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n\t }\n\t function d3_geo_forwardRotationλ(δλ) {\n\t return function(λ, φ) {\n\t return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t };\n\t }\n\t function d3_geo_rotationλ(δλ) {\n\t var rotation = d3_geo_forwardRotationλ(δλ);\n\t rotation.invert = d3_geo_forwardRotationλ(-δλ);\n\t return rotation;\n\t }\n\t function d3_geo_rotationφγ(δφ, δγ) {\n\t var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n\t function rotation(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n\t return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n\t }\n\t rotation.invert = function(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n\t return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n\t };\n\t return rotation;\n\t }\n\t d3.geo.circle = function() {\n\t var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n\t function circle() {\n\t var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n\t interpolate(null, null, 1, {\n\t point: function(x, y) {\n\t ring.push(x = rotate(x, y));\n\t x[0] *= d3_degrees, x[1] *= d3_degrees;\n\t }\n\t });\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ ring ]\n\t };\n\t }\n\t circle.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return circle;\n\t };\n\t circle.angle = function(x) {\n\t if (!arguments.length) return angle;\n\t interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n\t return circle;\n\t };\n\t circle.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n\t return circle;\n\t };\n\t return circle.angle(90);\n\t };\n\t function d3_geo_circleInterpolate(radius, precision) {\n\t var cr = Math.cos(radius), sr = Math.sin(radius);\n\t return function(from, to, direction, listener) {\n\t var step = direction * precision;\n\t if (from != null) {\n\t from = d3_geo_circleAngle(cr, from);\n\t to = d3_geo_circleAngle(cr, to);\n\t if (direction > 0 ? from < to : from > to) from += direction * τ;\n\t } else {\n\t from = radius + direction * τ;\n\t to = radius - .5 * step;\n\t }\n\t for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n\t listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n\t }\n\t };\n\t }\n\t function d3_geo_circleAngle(cr, point) {\n\t var a = d3_geo_cartesian(point);\n\t a[0] -= cr;\n\t d3_geo_cartesianNormalize(a);\n\t var angle = d3_acos(-a[1]);\n\t return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n\t }\n\t d3.geo.distance = function(a, b) {\n\t var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n\t return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n\t };\n\t d3.geo.graticule = function() {\n\t var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n\t function graticule() {\n\t return {\n\t type: \"MultiLineString\",\n\t coordinates: lines()\n\t };\n\t }\n\t function lines() {\n\t return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n\t return abs(x % DX) > ε;\n\t }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n\t return abs(y % DY) > ε;\n\t }).map(y));\n\t }\n\t graticule.lines = function() {\n\t return lines().map(function(coordinates) {\n\t return {\n\t type: \"LineString\",\n\t coordinates: coordinates\n\t };\n\t });\n\t };\n\t graticule.outline = function() {\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n\t };\n\t };\n\t graticule.extent = function(_) {\n\t if (!arguments.length) return graticule.minorExtent();\n\t return graticule.majorExtent(_).minorExtent(_);\n\t };\n\t graticule.majorExtent = function(_) {\n\t if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n\t X0 = +_[0][0], X1 = +_[1][0];\n\t Y0 = +_[0][1], Y1 = +_[1][1];\n\t if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n\t if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.minorExtent = function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t x0 = +_[0][0], x1 = +_[1][0];\n\t y0 = +_[0][1], y1 = +_[1][1];\n\t if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n\t if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.step = function(_) {\n\t if (!arguments.length) return graticule.minorStep();\n\t return graticule.majorStep(_).minorStep(_);\n\t };\n\t graticule.majorStep = function(_) {\n\t if (!arguments.length) return [ DX, DY ];\n\t DX = +_[0], DY = +_[1];\n\t return graticule;\n\t };\n\t graticule.minorStep = function(_) {\n\t if (!arguments.length) return [ dx, dy ];\n\t dx = +_[0], dy = +_[1];\n\t return graticule;\n\t };\n\t graticule.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t precision = +_;\n\t x = d3_geo_graticuleX(y0, y1, 90);\n\t y = d3_geo_graticuleY(x0, x1, precision);\n\t X = d3_geo_graticuleX(Y0, Y1, 90);\n\t Y = d3_geo_graticuleY(X0, X1, precision);\n\t return graticule;\n\t };\n\t return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n\t };\n\t function d3_geo_graticuleX(y0, y1, dy) {\n\t var y = d3.range(y0, y1 - ε, dy).concat(y1);\n\t return function(x) {\n\t return y.map(function(y) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_geo_graticuleY(x0, x1, dx) {\n\t var x = d3.range(x0, x1 - ε, dx).concat(x1);\n\t return function(y) {\n\t return x.map(function(x) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_source(d) {\n\t return d.source;\n\t }\n\t function d3_target(d) {\n\t return d.target;\n\t }\n\t d3.geo.greatArc = function() {\n\t var source = d3_source, source_, target = d3_target, target_;\n\t function greatArc() {\n\t return {\n\t type: \"LineString\",\n\t coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n\t };\n\t }\n\t greatArc.distance = function() {\n\t return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n\t };\n\t greatArc.source = function(_) {\n\t if (!arguments.length) return source;\n\t source = _, source_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.target = function(_) {\n\t if (!arguments.length) return target;\n\t target = _, target_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.precision = function() {\n\t return arguments.length ? greatArc : 0;\n\t };\n\t return greatArc;\n\t };\n\t d3.geo.interpolate = function(source, target) {\n\t return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n\t };\n\t function d3_geo_interpolate(x0, y0, x1, y1) {\n\t var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n\t var interpolate = d ? function(t) {\n\t var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n\t return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n\t } : function() {\n\t return [ x0 * d3_degrees, y0 * d3_degrees ];\n\t };\n\t interpolate.distance = d;\n\t return interpolate;\n\t }\n\t d3.geo.length = function(object) {\n\t d3_geo_lengthSum = 0;\n\t d3.geo.stream(object, d3_geo_length);\n\t return d3_geo_lengthSum;\n\t };\n\t var d3_geo_lengthSum;\n\t var d3_geo_length = {\n\t sphere: d3_noop,\n\t point: d3_noop,\n\t lineStart: d3_geo_lengthLineStart,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_lengthLineStart() {\n\t var λ0, sinφ0, cosφ0;\n\t d3_geo_length.point = function(λ, φ) {\n\t λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n\t d3_geo_length.point = nextPoint;\n\t };\n\t d3_geo_length.lineEnd = function() {\n\t d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n\t };\n\t function nextPoint(λ, φ) {\n\t var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n\t d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n\t }\n\t }\n\t function d3_geo_azimuthal(scale, angle) {\n\t function azimuthal(λ, φ) {\n\t var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n\t return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n\t }\n\t azimuthal.invert = function(x, y) {\n\t var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n\t return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n\t };\n\t return azimuthal;\n\t }\n\t var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n\t return Math.sqrt(2 / (1 + cosλcosφ));\n\t }, function(ρ) {\n\t return 2 * Math.asin(ρ / 2);\n\t });\n\t (d3.geo.azimuthalEqualArea = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEqualArea);\n\t }).raw = d3_geo_azimuthalEqualArea;\n\t var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n\t var c = Math.acos(cosλcosφ);\n\t return c && c / Math.sin(c);\n\t }, d3_identity);\n\t (d3.geo.azimuthalEquidistant = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEquidistant);\n\t }).raw = d3_geo_azimuthalEquidistant;\n\t function d3_geo_conicConformal(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), t = function(φ) {\n\t return Math.tan(π / 4 + φ / 2);\n\t }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n\t if (!n) return d3_geo_mercator;\n\t function forward(λ, φ) {\n\t if (F > 0) {\n\t if (φ < -halfπ + ε) φ = -halfπ + ε;\n\t } else {\n\t if (φ > halfπ - ε) φ = halfπ - ε;\n\t }\n\t var ρ = F / Math.pow(t(φ), n);\n\t return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n\t return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicConformal = function() {\n\t return d3_geo_conic(d3_geo_conicConformal);\n\t }).raw = d3_geo_conicConformal;\n\t function d3_geo_conicEquidistant(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n\t if (abs(n) < ε) return d3_geo_equirectangular;\n\t function forward(λ, φ) {\n\t var ρ = G - φ;\n\t return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = G - y;\n\t return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEquidistant = function() {\n\t return d3_geo_conic(d3_geo_conicEquidistant);\n\t }).raw = d3_geo_conicEquidistant;\n\t var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / cosλcosφ;\n\t }, Math.atan);\n\t (d3.geo.gnomonic = function() {\n\t return d3_geo_projection(d3_geo_gnomonic);\n\t }).raw = d3_geo_gnomonic;\n\t function d3_geo_mercator(λ, φ) {\n\t return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n\t }\n\t d3_geo_mercator.invert = function(x, y) {\n\t return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n\t };\n\t function d3_geo_mercatorProjection(project) {\n\t var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n\t m.scale = function() {\n\t var v = scale.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.translate = function() {\n\t var v = translate.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.clipExtent = function(_) {\n\t var v = clipExtent.apply(m, arguments);\n\t if (v === m) {\n\t if (clipAuto = _ == null) {\n\t var k = π * scale(), t = translate();\n\t clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n\t }\n\t } else if (clipAuto) {\n\t v = null;\n\t }\n\t return v;\n\t };\n\t return m.clipExtent(null);\n\t }\n\t (d3.geo.mercator = function() {\n\t return d3_geo_mercatorProjection(d3_geo_mercator);\n\t }).raw = d3_geo_mercator;\n\t var d3_geo_orthographic = d3_geo_azimuthal(function() {\n\t return 1;\n\t }, Math.asin);\n\t (d3.geo.orthographic = function() {\n\t return d3_geo_projection(d3_geo_orthographic);\n\t }).raw = d3_geo_orthographic;\n\t var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / (1 + cosλcosφ);\n\t }, function(ρ) {\n\t return 2 * Math.atan(ρ);\n\t });\n\t (d3.geo.stereographic = function() {\n\t return d3_geo_projection(d3_geo_stereographic);\n\t }).raw = d3_geo_stereographic;\n\t function d3_geo_transverseMercator(λ, φ) {\n\t return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n\t }\n\t d3_geo_transverseMercator.invert = function(x, y) {\n\t return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n\t };\n\t (d3.geo.transverseMercator = function() {\n\t var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n\t projection.center = function(_) {\n\t return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n\t };\n\t projection.rotate = function(_) {\n\t return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n\t [ _[0], _[1], _[2] - 90 ]);\n\t };\n\t return rotate([ 0, 0, 90 ]);\n\t }).raw = d3_geo_transverseMercator;\n\t d3.geom = {};\n\t function d3_geom_pointX(d) {\n\t return d[0];\n\t }\n\t function d3_geom_pointY(d) {\n\t return d[1];\n\t }\n\t d3.geom.hull = function(vertices) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY;\n\t if (arguments.length) return hull(vertices);\n\t function hull(data) {\n\t if (data.length < 3) return [];\n\t var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n\t for (i = 0; i < n; i++) {\n\t points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n\t }\n\t points.sort(d3_geom_hullOrder);\n\t for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n\t var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n\t var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n\t for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n\t for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n\t return polygon;\n\t }\n\t hull.x = function(_) {\n\t return arguments.length ? (x = _, hull) : x;\n\t };\n\t hull.y = function(_) {\n\t return arguments.length ? (y = _, hull) : y;\n\t };\n\t return hull;\n\t };\n\t function d3_geom_hullUpper(points) {\n\t var n = points.length, hull = [ 0, 1 ], hs = 2;\n\t for (var i = 2; i < n; i++) {\n\t while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n\t hull[hs++] = i;\n\t }\n\t return hull.slice(0, hs);\n\t }\n\t function d3_geom_hullOrder(a, b) {\n\t return a[0] - b[0] || a[1] - b[1];\n\t }\n\t d3.geom.polygon = function(coordinates) {\n\t d3_subclass(coordinates, d3_geom_polygonPrototype);\n\t return coordinates;\n\t };\n\t var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n\t d3_geom_polygonPrototype.area = function() {\n\t var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t area += a[1] * b[0] - a[0] * b[1];\n\t }\n\t return area * .5;\n\t };\n\t d3_geom_polygonPrototype.centroid = function(k) {\n\t var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n\t if (!arguments.length) k = -1 / (6 * this.area());\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t c = a[0] * b[1] - b[0] * a[1];\n\t x += (a[0] + b[0]) * c;\n\t y += (a[1] + b[1]) * c;\n\t }\n\t return [ x * k, y * k ];\n\t };\n\t d3_geom_polygonPrototype.clip = function(subject) {\n\t var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n\t while (++i < n) {\n\t input = subject.slice();\n\t subject.length = 0;\n\t b = this[i];\n\t c = input[(m = input.length - closed) - 1];\n\t j = -1;\n\t while (++j < m) {\n\t d = input[j];\n\t if (d3_geom_polygonInside(d, a, b)) {\n\t if (!d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t subject.push(d);\n\t } else if (d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t c = d;\n\t }\n\t if (closed) subject.push(subject[0]);\n\t a = b;\n\t }\n\t return subject;\n\t };\n\t function d3_geom_polygonInside(p, a, b) {\n\t return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n\t }\n\t function d3_geom_polygonIntersect(c, d, a, b) {\n\t var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n\t return [ x1 + ua * x21, y1 + ua * y21 ];\n\t }\n\t function d3_geom_polygonClosed(coordinates) {\n\t var a = coordinates[0], b = coordinates[coordinates.length - 1];\n\t return !(a[0] - b[0] || a[1] - b[1]);\n\t }\n\t var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n\t function d3_geom_voronoiBeach() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.edge = this.site = this.circle = null;\n\t }\n\t function d3_geom_voronoiCreateBeach(site) {\n\t var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n\t beach.site = site;\n\t return beach;\n\t }\n\t function d3_geom_voronoiDetachBeach(beach) {\n\t d3_geom_voronoiDetachCircle(beach);\n\t d3_geom_voronoiBeaches.remove(beach);\n\t d3_geom_voronoiBeachPool.push(beach);\n\t d3_geom_voronoiRedBlackNode(beach);\n\t }\n\t function d3_geom_voronoiRemoveBeach(beach) {\n\t var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n\t x: x,\n\t y: y\n\t }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n\t d3_geom_voronoiDetachBeach(beach);\n\t var lArc = previous;\n\t while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n\t previous = lArc.P;\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachBeach(lArc);\n\t lArc = previous;\n\t }\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachCircle(lArc);\n\t var rArc = next;\n\t while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n\t next = rArc.N;\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachBeach(rArc);\n\t rArc = next;\n\t }\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var nArcs = disappearing.length, iArc;\n\t for (iArc = 1; iArc < nArcs; ++iArc) {\n\t rArc = disappearing[iArc];\n\t lArc = disappearing[iArc - 1];\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n\t }\n\t lArc = disappearing[0];\n\t rArc = disappearing[nArcs - 1];\n\t rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiAddBeach(site) {\n\t var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n\t while (node) {\n\t dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n\t if (dxl > ε) node = node.L; else {\n\t dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n\t if (dxr > ε) {\n\t if (!node.R) {\n\t lArc = node;\n\t break;\n\t }\n\t node = node.R;\n\t } else {\n\t if (dxl > -ε) {\n\t lArc = node.P;\n\t rArc = node;\n\t } else if (dxr > -ε) {\n\t lArc = node;\n\t rArc = node.N;\n\t } else {\n\t lArc = rArc = node;\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t var newArc = d3_geom_voronoiCreateBeach(site);\n\t d3_geom_voronoiBeaches.insert(lArc, newArc);\n\t if (!lArc && !rArc) return;\n\t if (lArc === rArc) {\n\t d3_geom_voronoiDetachCircle(lArc);\n\t rArc = d3_geom_voronoiCreateBeach(lArc.site);\n\t d3_geom_voronoiBeaches.insert(newArc, rArc);\n\t newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t return;\n\t }\n\t if (!rArc) {\n\t newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t return;\n\t }\n\t d3_geom_voronoiDetachCircle(lArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n\t x: (cy * hb - by * hc) / d + ax,\n\t y: (bx * hc - cx * hb) / d + ay\n\t };\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n\t newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n\t rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n\t var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n\t if (!pby2) return rfocx;\n\t var lArc = arc.P;\n\t if (!lArc) return -Infinity;\n\t site = lArc.site;\n\t var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n\t if (!plby2) return lfocx;\n\t var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n\t if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\t return (rfocx + lfocx) / 2;\n\t }\n\t function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n\t var rArc = arc.N;\n\t if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n\t var site = arc.site;\n\t return site.y === directrix ? site.x : Infinity;\n\t }\n\t function d3_geom_voronoiCell(site) {\n\t this.site = site;\n\t this.edges = [];\n\t }\n\t d3_geom_voronoiCell.prototype.prepare = function() {\n\t var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n\t while (iHalfEdge--) {\n\t edge = halfEdges[iHalfEdge].edge;\n\t if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n\t }\n\t halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n\t return halfEdges.length;\n\t };\n\t function d3_geom_voronoiCloseCells(extent) {\n\t var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n\t while (iCell--) {\n\t cell = cells[iCell];\n\t if (!cell || !cell.prepare()) continue;\n\t halfEdges = cell.edges;\n\t nHalfEdges = halfEdges.length;\n\t iHalfEdge = 0;\n\t while (iHalfEdge < nHalfEdges) {\n\t end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n\t start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n\t if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n\t halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n\t x: x0,\n\t y: abs(x2 - x0) < ε ? y2 : y1\n\t } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n\t x: abs(y2 - y1) < ε ? x2 : x1,\n\t y: y1\n\t } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n\t x: x1,\n\t y: abs(x2 - x1) < ε ? y2 : y0\n\t } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n\t x: abs(y2 - y0) < ε ? x2 : x0,\n\t y: y0\n\t } : null), cell.site, null));\n\t ++nHalfEdges;\n\t }\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdgeOrder(a, b) {\n\t return b.angle - a.angle;\n\t }\n\t function d3_geom_voronoiCircle() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.x = this.y = this.arc = this.site = this.cy = null;\n\t }\n\t function d3_geom_voronoiAttachCircle(arc) {\n\t var lArc = arc.P, rArc = arc.N;\n\t if (!lArc || !rArc) return;\n\t var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n\t if (lSite === rSite) return;\n\t var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n\t var d = 2 * (ax * cy - ay * cx);\n\t if (d >= -ε2) return;\n\t var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n\t var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n\t circle.arc = arc;\n\t circle.site = cSite;\n\t circle.x = x + bx;\n\t circle.y = cy + Math.sqrt(x * x + y * y);\n\t circle.cy = cy;\n\t arc.circle = circle;\n\t var before = null, node = d3_geom_voronoiCircles._;\n\t while (node) {\n\t if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n\t if (node.L) node = node.L; else {\n\t before = node.P;\n\t break;\n\t }\n\t } else {\n\t if (node.R) node = node.R; else {\n\t before = node;\n\t break;\n\t }\n\t }\n\t }\n\t d3_geom_voronoiCircles.insert(before, circle);\n\t if (!before) d3_geom_voronoiFirstCircle = circle;\n\t }\n\t function d3_geom_voronoiDetachCircle(arc) {\n\t var circle = arc.circle;\n\t if (circle) {\n\t if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n\t d3_geom_voronoiCircles.remove(circle);\n\t d3_geom_voronoiCirclePool.push(circle);\n\t d3_geom_voronoiRedBlackNode(circle);\n\t arc.circle = null;\n\t }\n\t }\n\t function d3_geom_voronoiClipEdges(extent) {\n\t var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n\t while (i--) {\n\t e = edges[i];\n\t if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n\t e.a = e.b = null;\n\t edges.splice(i, 1);\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiConnectEdge(edge, extent) {\n\t var vb = edge.b;\n\t if (vb) return true;\n\t var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n\t if (ry === ly) {\n\t if (fx < x0 || fx >= x1) return;\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: fx,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: fx,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: fx,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: fx,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t fm = (lx - rx) / (ry - ly);\n\t fb = fy - fm * fx;\n\t if (fm < -1 || fm > 1) {\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t if (ly < ry) {\n\t if (!va) va = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t }; else if (va.x >= x1) return;\n\t vb = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t }; else if (va.x < x0) return;\n\t vb = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t };\n\t }\n\t }\n\t }\n\t edge.a = va;\n\t edge.b = vb;\n\t return true;\n\t }\n\t function d3_geom_voronoiEdge(lSite, rSite) {\n\t this.l = lSite;\n\t this.r = rSite;\n\t this.a = this.b = null;\n\t }\n\t function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, rSite);\n\t d3_geom_voronoiEdges.push(edge);\n\t if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n\t if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n\t d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n\t d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n\t return edge;\n\t }\n\t function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, null);\n\t edge.a = va;\n\t edge.b = vb;\n\t d3_geom_voronoiEdges.push(edge);\n\t return edge;\n\t }\n\t function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n\t if (!edge.a && !edge.b) {\n\t edge.a = vertex;\n\t edge.l = lSite;\n\t edge.r = rSite;\n\t } else if (edge.l === rSite) {\n\t edge.b = vertex;\n\t } else {\n\t edge.a = vertex;\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n\t var va = edge.a, vb = edge.b;\n\t this.edge = edge;\n\t this.site = lSite;\n\t this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n\t }\n\t d3_geom_voronoiHalfEdge.prototype = {\n\t start: function() {\n\t return this.edge.l === this.site ? this.edge.a : this.edge.b;\n\t },\n\t end: function() {\n\t return this.edge.l === this.site ? this.edge.b : this.edge.a;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackTree() {\n\t this._ = null;\n\t }\n\t function d3_geom_voronoiRedBlackNode(node) {\n\t node.U = node.C = node.L = node.R = node.P = node.N = null;\n\t }\n\t d3_geom_voronoiRedBlackTree.prototype = {\n\t insert: function(after, node) {\n\t var parent, grandpa, uncle;\n\t if (after) {\n\t node.P = after;\n\t node.N = after.N;\n\t if (after.N) after.N.P = node;\n\t after.N = node;\n\t if (after.R) {\n\t after = after.R;\n\t while (after.L) after = after.L;\n\t after.L = node;\n\t } else {\n\t after.R = node;\n\t }\n\t parent = after;\n\t } else if (this._) {\n\t after = d3_geom_voronoiRedBlackFirst(this._);\n\t node.P = null;\n\t node.N = after;\n\t after.P = after.L = node;\n\t parent = after;\n\t } else {\n\t node.P = node.N = null;\n\t this._ = node;\n\t parent = null;\n\t }\n\t node.L = node.R = null;\n\t node.U = parent;\n\t node.C = true;\n\t after = node;\n\t while (parent && parent.C) {\n\t grandpa = parent.U;\n\t if (parent === grandpa.L) {\n\t uncle = grandpa.R;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.R) {\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n\t }\n\t } else {\n\t uncle = grandpa.L;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.L) {\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n\t }\n\t }\n\t parent = after.U;\n\t }\n\t this._.C = false;\n\t },\n\t remove: function(node) {\n\t if (node.N) node.N.P = node.P;\n\t if (node.P) node.P.N = node.N;\n\t node.N = node.P = null;\n\t var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n\t if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n\t if (parent) {\n\t if (parent.L === node) parent.L = next; else parent.R = next;\n\t } else {\n\t this._ = next;\n\t }\n\t if (left && right) {\n\t red = next.C;\n\t next.C = node.C;\n\t next.L = left;\n\t left.U = next;\n\t if (next !== right) {\n\t parent = next.U;\n\t next.U = node.U;\n\t node = next.R;\n\t parent.L = node;\n\t next.R = right;\n\t right.U = next;\n\t } else {\n\t next.U = parent;\n\t parent = next;\n\t node = next.R;\n\t }\n\t } else {\n\t red = node.C;\n\t node = next;\n\t }\n\t if (node) node.U = parent;\n\t if (red) return;\n\t if (node && node.C) {\n\t node.C = false;\n\t return;\n\t }\n\t do {\n\t if (node === this._) break;\n\t if (node === parent.L) {\n\t sibling = parent.R;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t sibling = parent.R;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.R || !sibling.R.C) {\n\t sibling.L.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, sibling);\n\t sibling = parent.R;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.R.C = false;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t } else {\n\t sibling = parent.L;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t sibling = parent.L;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.L || !sibling.L.C) {\n\t sibling.R.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n\t sibling = parent.L;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.L.C = false;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t }\n\t sibling.C = true;\n\t node = parent;\n\t parent = parent.U;\n\t } while (!node.C);\n\t if (node) node.C = false;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n\t var p = node, q = node.R, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.R = q.L;\n\t if (p.R) p.R.U = p;\n\t q.L = p;\n\t }\n\t function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n\t var p = node, q = node.L, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.L = q.R;\n\t if (p.L) p.L.U = p;\n\t q.R = p;\n\t }\n\t function d3_geom_voronoiRedBlackFirst(node) {\n\t while (node.L) node = node.L;\n\t return node;\n\t }\n\t function d3_geom_voronoi(sites, bbox) {\n\t var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n\t d3_geom_voronoiEdges = [];\n\t d3_geom_voronoiCells = new Array(sites.length);\n\t d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n\t d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n\t while (true) {\n\t circle = d3_geom_voronoiFirstCircle;\n\t if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n\t if (site.x !== x0 || site.y !== y0) {\n\t d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n\t d3_geom_voronoiAddBeach(site);\n\t x0 = site.x, y0 = site.y;\n\t }\n\t site = sites.pop();\n\t } else if (circle) {\n\t d3_geom_voronoiRemoveBeach(circle.arc);\n\t } else {\n\t break;\n\t }\n\t }\n\t if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n\t var diagram = {\n\t cells: d3_geom_voronoiCells,\n\t edges: d3_geom_voronoiEdges\n\t };\n\t d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n\t return diagram;\n\t }\n\t function d3_geom_voronoiVertexOrder(a, b) {\n\t return b.y - a.y || b.x - a.x;\n\t }\n\t d3.geom.voronoi = function(points) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n\t if (points) return voronoi(points);\n\t function voronoi(data) {\n\t var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n\t d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n\t var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n\t var s = e.start();\n\t return [ s.x, s.y ];\n\t }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n\t polygon.point = data[i];\n\t });\n\t return polygons;\n\t }\n\t function sites(data) {\n\t return data.map(function(d, i) {\n\t return {\n\t x: Math.round(fx(d, i) / ε) * ε,\n\t y: Math.round(fy(d, i) / ε) * ε,\n\t i: i\n\t };\n\t });\n\t }\n\t voronoi.links = function(data) {\n\t return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n\t return edge.l && edge.r;\n\t }).map(function(edge) {\n\t return {\n\t source: data[edge.l.i],\n\t target: data[edge.r.i]\n\t };\n\t });\n\t };\n\t voronoi.triangles = function(data) {\n\t var triangles = [];\n\t d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n\t var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n\t while (++j < m) {\n\t e0 = e1;\n\t s0 = s1;\n\t e1 = edges[j].edge;\n\t s1 = e1.l === site ? e1.r : e1.l;\n\t if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n\t triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n\t }\n\t }\n\t });\n\t return triangles;\n\t };\n\t voronoi.x = function(_) {\n\t return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n\t };\n\t voronoi.y = function(_) {\n\t return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n\t };\n\t voronoi.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n\t clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n\t return voronoi;\n\t };\n\t voronoi.size = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n\t return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n\t };\n\t return voronoi;\n\t };\n\t var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n\t function d3_geom_voronoiTriangleArea(a, b, c) {\n\t return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n\t }\n\t d3.geom.delaunay = function(vertices) {\n\t return d3.geom.voronoi().triangles(vertices);\n\t };\n\t d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n\t if (compat = arguments.length) {\n\t x = d3_geom_quadtreeCompatX;\n\t y = d3_geom_quadtreeCompatY;\n\t if (compat === 3) {\n\t y2 = y1;\n\t x2 = x1;\n\t y1 = x1 = 0;\n\t }\n\t return quadtree(points);\n\t }\n\t function quadtree(data) {\n\t var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n\t if (x1 != null) {\n\t x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n\t } else {\n\t x2_ = y2_ = -(x1_ = y1_ = Infinity);\n\t xs = [], ys = [];\n\t n = data.length;\n\t if (compat) for (i = 0; i < n; ++i) {\n\t d = data[i];\n\t if (d.x < x1_) x1_ = d.x;\n\t if (d.y < y1_) y1_ = d.y;\n\t if (d.x > x2_) x2_ = d.x;\n\t if (d.y > y2_) y2_ = d.y;\n\t xs.push(d.x);\n\t ys.push(d.y);\n\t } else for (i = 0; i < n; ++i) {\n\t var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n\t if (x_ < x1_) x1_ = x_;\n\t if (y_ < y1_) y1_ = y_;\n\t if (x_ > x2_) x2_ = x_;\n\t if (y_ > y2_) y2_ = y_;\n\t xs.push(x_);\n\t ys.push(y_);\n\t }\n\t }\n\t var dx = x2_ - x1_, dy = y2_ - y1_;\n\t if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n\t function insert(n, d, x, y, x1, y1, x2, y2) {\n\t if (isNaN(x) || isNaN(y)) return;\n\t if (n.leaf) {\n\t var nx = n.x, ny = n.y;\n\t if (nx != null) {\n\t if (abs(nx - x) + abs(ny - y) < .01) {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t } else {\n\t var nPoint = n.point;\n\t n.x = n.y = n.point = null;\n\t insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t } else {\n\t n.x = x, n.y = y, n.point = d;\n\t }\n\t } else {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t }\n\t function insertChild(n, d, x, y, x1, y1, x2, y2) {\n\t var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n\t n.leaf = false;\n\t n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n\t if (right) x1 = xm; else x2 = xm;\n\t if (below) y1 = ym; else y2 = ym;\n\t insert(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t var root = d3_geom_quadtreeNode();\n\t root.add = function(d) {\n\t insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n\t };\n\t root.visit = function(f) {\n\t d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n\t };\n\t root.find = function(point) {\n\t return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n\t };\n\t i = -1;\n\t if (x1 == null) {\n\t while (++i < n) {\n\t insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n\t }\n\t --i;\n\t } else data.forEach(root.add);\n\t xs = ys = data = d = null;\n\t return root;\n\t }\n\t quadtree.x = function(_) {\n\t return arguments.length ? (x = _, quadtree) : x;\n\t };\n\t quadtree.y = function(_) {\n\t return arguments.length ? (y = _, quadtree) : y;\n\t };\n\t quadtree.extent = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n\t y2 = +_[1][1];\n\t return quadtree;\n\t };\n\t quadtree.size = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n\t return quadtree;\n\t };\n\t return quadtree;\n\t };\n\t function d3_geom_quadtreeCompatX(d) {\n\t return d.x;\n\t }\n\t function d3_geom_quadtreeCompatY(d) {\n\t return d.y;\n\t }\n\t function d3_geom_quadtreeNode() {\n\t return {\n\t leaf: true,\n\t nodes: [],\n\t point: null,\n\t x: null,\n\t y: null\n\t };\n\t }\n\t function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n\t if (!f(node, x1, y1, x2, y2)) {\n\t var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n\t if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n\t if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n\t if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n\t if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n\t }\n\t }\n\t function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n\t var minDistance2 = Infinity, closestPoint;\n\t (function find(node, x1, y1, x2, y2) {\n\t if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n\t if (point = node.point) {\n\t var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n\t if (distance2 < minDistance2) {\n\t var distance = Math.sqrt(minDistance2 = distance2);\n\t x0 = x - distance, y0 = y - distance;\n\t x3 = x + distance, y3 = y + distance;\n\t closestPoint = point;\n\t }\n\t }\n\t var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n\t for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n\t if (node = children[i & 3]) switch (i & 3) {\n\t case 0:\n\t find(node, x1, y1, xm, ym);\n\t break;\n\t\n\t case 1:\n\t find(node, xm, y1, x2, ym);\n\t break;\n\t\n\t case 2:\n\t find(node, x1, ym, xm, y2);\n\t break;\n\t\n\t case 3:\n\t find(node, xm, ym, x2, y2);\n\t break;\n\t }\n\t }\n\t })(root, x0, y0, x3, y3);\n\t return closestPoint;\n\t }\n\t d3.interpolateRgb = d3_interpolateRgb;\n\t function d3_interpolateRgb(a, b) {\n\t a = d3.rgb(a);\n\t b = d3.rgb(b);\n\t var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n\t return function(t) {\n\t return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n\t };\n\t }\n\t d3.interpolateObject = d3_interpolateObject;\n\t function d3_interpolateObject(a, b) {\n\t var i = {}, c = {}, k;\n\t for (k in a) {\n\t if (k in b) {\n\t i[k] = d3_interpolate(a[k], b[k]);\n\t } else {\n\t c[k] = a[k];\n\t }\n\t }\n\t for (k in b) {\n\t if (!(k in a)) {\n\t c[k] = b[k];\n\t }\n\t }\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t }\n\t d3.interpolateNumber = d3_interpolateNumber;\n\t function d3_interpolateNumber(a, b) {\n\t a = +a, b = +b;\n\t return function(t) {\n\t return a * (1 - t) + b * t;\n\t };\n\t }\n\t d3.interpolateString = d3_interpolateString;\n\t function d3_interpolateString(a, b) {\n\t var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n\t a = a + \"\", b = b + \"\";\n\t while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n\t if ((bs = bm.index) > bi) {\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) {\n\t if (s[i]) s[i] += bm; else s[++i] = bm;\n\t } else {\n\t s[++i] = null;\n\t q.push({\n\t i: i,\n\t x: d3_interpolateNumber(am, bm)\n\t });\n\t }\n\t bi = d3_interpolate_numberB.lastIndex;\n\t }\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n\t return b(t) + \"\";\n\t }) : function() {\n\t return b;\n\t } : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t }\n\t var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n\t d3.interpolate = d3_interpolate;\n\t function d3_interpolate(a, b) {\n\t var i = d3.interpolators.length, f;\n\t while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n\t return f;\n\t }\n\t d3.interpolators = [ function(a, b) {\n\t var t = typeof b;\n\t return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n\t } ];\n\t d3.interpolateArray = d3_interpolateArray;\n\t function d3_interpolateArray(a, b) {\n\t var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n\t for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n\t for (;i < na; ++i) c[i] = a[i];\n\t for (;i < nb; ++i) c[i] = b[i];\n\t return function(t) {\n\t for (i = 0; i < n0; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t }\n\t var d3_ease_default = function() {\n\t return d3_identity;\n\t };\n\t var d3_ease = d3.map({\n\t linear: d3_ease_default,\n\t poly: d3_ease_poly,\n\t quad: function() {\n\t return d3_ease_quad;\n\t },\n\t cubic: function() {\n\t return d3_ease_cubic;\n\t },\n\t sin: function() {\n\t return d3_ease_sin;\n\t },\n\t exp: function() {\n\t return d3_ease_exp;\n\t },\n\t circle: function() {\n\t return d3_ease_circle;\n\t },\n\t elastic: d3_ease_elastic,\n\t back: d3_ease_back,\n\t bounce: function() {\n\t return d3_ease_bounce;\n\t }\n\t });\n\t var d3_ease_mode = d3.map({\n\t \"in\": d3_identity,\n\t out: d3_ease_reverse,\n\t \"in-out\": d3_ease_reflect,\n\t \"out-in\": function(f) {\n\t return d3_ease_reflect(d3_ease_reverse(f));\n\t }\n\t });\n\t d3.ease = function(name) {\n\t var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n\t t = d3_ease.get(t) || d3_ease_default;\n\t m = d3_ease_mode.get(m) || d3_identity;\n\t return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n\t };\n\t function d3_ease_clamp(f) {\n\t return function(t) {\n\t return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n\t };\n\t }\n\t function d3_ease_reverse(f) {\n\t return function(t) {\n\t return 1 - f(1 - t);\n\t };\n\t }\n\t function d3_ease_reflect(f) {\n\t return function(t) {\n\t return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n\t };\n\t }\n\t function d3_ease_quad(t) {\n\t return t * t;\n\t }\n\t function d3_ease_cubic(t) {\n\t return t * t * t;\n\t }\n\t function d3_ease_cubicInOut(t) {\n\t if (t <= 0) return 0;\n\t if (t >= 1) return 1;\n\t var t2 = t * t, t3 = t2 * t;\n\t return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n\t }\n\t function d3_ease_poly(e) {\n\t return function(t) {\n\t return Math.pow(t, e);\n\t };\n\t }\n\t function d3_ease_sin(t) {\n\t return 1 - Math.cos(t * halfπ);\n\t }\n\t function d3_ease_exp(t) {\n\t return Math.pow(2, 10 * (t - 1));\n\t }\n\t function d3_ease_circle(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t }\n\t function d3_ease_elastic(a, p) {\n\t var s;\n\t if (arguments.length < 2) p = .45;\n\t if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n\t return function(t) {\n\t return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n\t };\n\t }\n\t function d3_ease_back(s) {\n\t if (!s) s = 1.70158;\n\t return function(t) {\n\t return t * t * ((s + 1) * t - s);\n\t };\n\t }\n\t function d3_ease_bounce(t) {\n\t return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n\t }\n\t d3.interpolateHcl = d3_interpolateHcl;\n\t function d3_interpolateHcl(a, b) {\n\t a = d3.hcl(a);\n\t b = d3.hcl(b);\n\t var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n\t if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateHsl = d3_interpolateHsl;\n\t function d3_interpolateHsl(a, b) {\n\t a = d3.hsl(a);\n\t b = d3.hsl(b);\n\t var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n\t if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateLab = d3_interpolateLab;\n\t function d3_interpolateLab(a, b) {\n\t a = d3.lab(a);\n\t b = d3.lab(b);\n\t var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n\t return function(t) {\n\t return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n\t };\n\t }\n\t d3.interpolateRound = d3_interpolateRound;\n\t function d3_interpolateRound(a, b) {\n\t b -= a;\n\t return function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t }\n\t d3.transform = function(string) {\n\t var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n\t return (d3.transform = function(string) {\n\t if (string != null) {\n\t g.setAttribute(\"transform\", string);\n\t var t = g.transform.baseVal.consolidate();\n\t }\n\t return new d3_transform(t ? t.matrix : d3_transformIdentity);\n\t })(string);\n\t };\n\t function d3_transform(m) {\n\t var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n\t if (r0[0] * r1[1] < r1[0] * r0[1]) {\n\t r0[0] *= -1;\n\t r0[1] *= -1;\n\t kx *= -1;\n\t kz *= -1;\n\t }\n\t this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n\t this.translate = [ m.e, m.f ];\n\t this.scale = [ kx, ky ];\n\t this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n\t }\n\t d3_transform.prototype.toString = function() {\n\t return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n\t };\n\t function d3_transformDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1];\n\t }\n\t function d3_transformNormalize(a) {\n\t var k = Math.sqrt(d3_transformDot(a, a));\n\t if (k) {\n\t a[0] /= k;\n\t a[1] /= k;\n\t }\n\t return k;\n\t }\n\t function d3_transformCombine(a, b, k) {\n\t a[0] += k * b[0];\n\t a[1] += k * b[1];\n\t return a;\n\t }\n\t var d3_transformIdentity = {\n\t a: 1,\n\t b: 0,\n\t c: 0,\n\t d: 1,\n\t e: 0,\n\t f: 0\n\t };\n\t d3.interpolateTransform = d3_interpolateTransform;\n\t function d3_interpolateTransformPop(s) {\n\t return s.length ? s.pop() + \",\" : \"\";\n\t }\n\t function d3_interpolateTranslate(ta, tb, s, q) {\n\t if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n\t var i = s.push(\"translate(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ta[0], tb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ta[1], tb[1])\n\t });\n\t } else if (tb[0] || tb[1]) {\n\t s.push(\"translate(\" + tb + \")\");\n\t }\n\t }\n\t function d3_interpolateRotate(ra, rb, s, q) {\n\t if (ra !== rb) {\n\t if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(ra, rb)\n\t });\n\t } else if (rb) {\n\t s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n\t }\n\t }\n\t function d3_interpolateSkew(wa, wb, s, q) {\n\t if (wa !== wb) {\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(wa, wb)\n\t });\n\t } else if (wb) {\n\t s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n\t }\n\t }\n\t function d3_interpolateScale(ka, kb, s, q) {\n\t if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n\t var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ka[0], kb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ka[1], kb[1])\n\t });\n\t } else if (kb[0] !== 1 || kb[1] !== 1) {\n\t s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n\t }\n\t }\n\t function d3_interpolateTransform(a, b) {\n\t var s = [], q = [];\n\t a = d3.transform(a), b = d3.transform(b);\n\t d3_interpolateTranslate(a.translate, b.translate, s, q);\n\t d3_interpolateRotate(a.rotate, b.rotate, s, q);\n\t d3_interpolateSkew(a.skew, b.skew, s, q);\n\t d3_interpolateScale(a.scale, b.scale, s, q);\n\t a = b = null;\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t }\n\t function d3_uninterpolateNumber(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return (x - a) / b;\n\t };\n\t }\n\t function d3_uninterpolateClamp(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return Math.max(0, Math.min(1, (x - a) / b));\n\t };\n\t }\n\t d3.layout = {};\n\t d3.layout.bundle = function() {\n\t return function(links) {\n\t var paths = [], i = -1, n = links.length;\n\t while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n\t return paths;\n\t };\n\t };\n\t function d3_layout_bundlePath(link) {\n\t var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n\t while (start !== lca) {\n\t start = start.parent;\n\t points.push(start);\n\t }\n\t var k = points.length;\n\t while (end !== lca) {\n\t points.splice(k, 0, end);\n\t end = end.parent;\n\t }\n\t return points;\n\t }\n\t function d3_layout_bundleAncestors(node) {\n\t var ancestors = [], parent = node.parent;\n\t while (parent != null) {\n\t ancestors.push(node);\n\t node = parent;\n\t parent = parent.parent;\n\t }\n\t ancestors.push(node);\n\t return ancestors;\n\t }\n\t function d3_layout_bundleLeastCommonAncestor(a, b) {\n\t if (a === b) return a;\n\t var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n\t while (aNode === bNode) {\n\t sharedNode = aNode;\n\t aNode = aNodes.pop();\n\t bNode = bNodes.pop();\n\t }\n\t return sharedNode;\n\t }\n\t d3.layout.chord = function() {\n\t var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n\t function relayout() {\n\t var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n\t chords = [];\n\t groups = [];\n\t k = 0, i = -1;\n\t while (++i < n) {\n\t x = 0, j = -1;\n\t while (++j < n) {\n\t x += matrix[i][j];\n\t }\n\t groupSums.push(x);\n\t subgroupIndex.push(d3.range(n));\n\t k += x;\n\t }\n\t if (sortGroups) {\n\t groupIndex.sort(function(a, b) {\n\t return sortGroups(groupSums[a], groupSums[b]);\n\t });\n\t }\n\t if (sortSubgroups) {\n\t subgroupIndex.forEach(function(d, i) {\n\t d.sort(function(a, b) {\n\t return sortSubgroups(matrix[i][a], matrix[i][b]);\n\t });\n\t });\n\t }\n\t k = (τ - padding * n) / k;\n\t x = 0, i = -1;\n\t while (++i < n) {\n\t x0 = x, j = -1;\n\t while (++j < n) {\n\t var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n\t subgroups[di + \"-\" + dj] = {\n\t index: di,\n\t subindex: dj,\n\t startAngle: a0,\n\t endAngle: a1,\n\t value: v\n\t };\n\t }\n\t groups[di] = {\n\t index: di,\n\t startAngle: x0,\n\t endAngle: x,\n\t value: groupSums[di]\n\t };\n\t x += padding;\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t j = i - 1;\n\t while (++j < n) {\n\t var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n\t if (source.value || target.value) {\n\t chords.push(source.value < target.value ? {\n\t source: target,\n\t target: source\n\t } : {\n\t source: source,\n\t target: target\n\t });\n\t }\n\t }\n\t }\n\t if (sortChords) resort();\n\t }\n\t function resort() {\n\t chords.sort(function(a, b) {\n\t return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n\t });\n\t }\n\t chord.matrix = function(x) {\n\t if (!arguments.length) return matrix;\n\t n = (matrix = x) && matrix.length;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t padding = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortGroups = function(x) {\n\t if (!arguments.length) return sortGroups;\n\t sortGroups = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortSubgroups = function(x) {\n\t if (!arguments.length) return sortSubgroups;\n\t sortSubgroups = x;\n\t chords = null;\n\t return chord;\n\t };\n\t chord.sortChords = function(x) {\n\t if (!arguments.length) return sortChords;\n\t sortChords = x;\n\t if (chords) resort();\n\t return chord;\n\t };\n\t chord.chords = function() {\n\t if (!chords) relayout();\n\t return chords;\n\t };\n\t chord.groups = function() {\n\t if (!groups) relayout();\n\t return groups;\n\t };\n\t return chord;\n\t };\n\t d3.layout.force = function() {\n\t var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n\t function repulse(node) {\n\t return function(quad, x1, _, x2) {\n\t if (quad.point !== node) {\n\t var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n\t if (dw * dw / theta2 < dn) {\n\t if (dn < chargeDistance2) {\n\t var k = quad.charge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t return true;\n\t }\n\t if (quad.point && dn && dn < chargeDistance2) {\n\t var k = quad.pointCharge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t }\n\t return !quad.charge;\n\t };\n\t }\n\t force.tick = function() {\n\t if ((alpha *= .99) < .005) {\n\t timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t return true;\n\t }\n\t var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t s = o.source;\n\t t = o.target;\n\t x = t.x - s.x;\n\t y = t.y - s.y;\n\t if (l = x * x + y * y) {\n\t l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n\t x *= l;\n\t y *= l;\n\t t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n\t t.y -= y * k;\n\t s.x += x * (k = 1 - k);\n\t s.y += y * k;\n\t }\n\t }\n\t if (k = alpha * gravity) {\n\t x = size[0] / 2;\n\t y = size[1] / 2;\n\t i = -1;\n\t if (k) while (++i < n) {\n\t o = nodes[i];\n\t o.x += (x - o.x) * k;\n\t o.y += (y - o.y) * k;\n\t }\n\t }\n\t if (charge) {\n\t d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n\t i = -1;\n\t while (++i < n) {\n\t if (!(o = nodes[i]).fixed) {\n\t q.visit(repulse(o));\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t o = nodes[i];\n\t if (o.fixed) {\n\t o.x = o.px;\n\t o.y = o.py;\n\t } else {\n\t o.x -= (o.px - (o.px = o.x)) * friction;\n\t o.y -= (o.py - (o.py = o.y)) * friction;\n\t }\n\t }\n\t event.tick({\n\t type: \"tick\",\n\t alpha: alpha\n\t });\n\t };\n\t force.nodes = function(x) {\n\t if (!arguments.length) return nodes;\n\t nodes = x;\n\t return force;\n\t };\n\t force.links = function(x) {\n\t if (!arguments.length) return links;\n\t links = x;\n\t return force;\n\t };\n\t force.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return force;\n\t };\n\t force.linkDistance = function(x) {\n\t if (!arguments.length) return linkDistance;\n\t linkDistance = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.distance = force.linkDistance;\n\t force.linkStrength = function(x) {\n\t if (!arguments.length) return linkStrength;\n\t linkStrength = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.friction = function(x) {\n\t if (!arguments.length) return friction;\n\t friction = +x;\n\t return force;\n\t };\n\t force.charge = function(x) {\n\t if (!arguments.length) return charge;\n\t charge = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.chargeDistance = function(x) {\n\t if (!arguments.length) return Math.sqrt(chargeDistance2);\n\t chargeDistance2 = x * x;\n\t return force;\n\t };\n\t force.gravity = function(x) {\n\t if (!arguments.length) return gravity;\n\t gravity = +x;\n\t return force;\n\t };\n\t force.theta = function(x) {\n\t if (!arguments.length) return Math.sqrt(theta2);\n\t theta2 = x * x;\n\t return force;\n\t };\n\t force.alpha = function(x) {\n\t if (!arguments.length) return alpha;\n\t x = +x;\n\t if (alpha) {\n\t if (x > 0) {\n\t alpha = x;\n\t } else {\n\t timer.c = null, timer.t = NaN, timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t }\n\t } else if (x > 0) {\n\t event.start({\n\t type: \"start\",\n\t alpha: alpha = x\n\t });\n\t timer = d3_timer(force.tick);\n\t }\n\t return force;\n\t };\n\t force.start = function() {\n\t var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n\t for (i = 0; i < n; ++i) {\n\t (o = nodes[i]).index = i;\n\t o.weight = 0;\n\t }\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t if (typeof o.source == \"number\") o.source = nodes[o.source];\n\t if (typeof o.target == \"number\") o.target = nodes[o.target];\n\t ++o.source.weight;\n\t ++o.target.weight;\n\t }\n\t for (i = 0; i < n; ++i) {\n\t o = nodes[i];\n\t if (isNaN(o.x)) o.x = position(\"x\", w);\n\t if (isNaN(o.y)) o.y = position(\"y\", h);\n\t if (isNaN(o.px)) o.px = o.x;\n\t if (isNaN(o.py)) o.py = o.y;\n\t }\n\t distances = [];\n\t if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n\t strengths = [];\n\t if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n\t charges = [];\n\t if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n\t function position(dimension, size) {\n\t if (!neighbors) {\n\t neighbors = new Array(n);\n\t for (j = 0; j < n; ++j) {\n\t neighbors[j] = [];\n\t }\n\t for (j = 0; j < m; ++j) {\n\t var o = links[j];\n\t neighbors[o.source.index].push(o.target);\n\t neighbors[o.target.index].push(o.source);\n\t }\n\t }\n\t var candidates = neighbors[i], j = -1, l = candidates.length, x;\n\t while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n\t return Math.random() * size;\n\t }\n\t return force.resume();\n\t };\n\t force.resume = function() {\n\t return force.alpha(.1);\n\t };\n\t force.stop = function() {\n\t return force.alpha(0);\n\t };\n\t force.drag = function() {\n\t if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n\t if (!arguments.length) return drag;\n\t this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n\t };\n\t function dragmove(d) {\n\t d.px = d3.event.x, d.py = d3.event.y;\n\t force.resume();\n\t }\n\t return d3.rebind(force, event, \"on\");\n\t };\n\t function d3_layout_forceDragstart(d) {\n\t d.fixed |= 2;\n\t }\n\t function d3_layout_forceDragend(d) {\n\t d.fixed &= ~6;\n\t }\n\t function d3_layout_forceMouseover(d) {\n\t d.fixed |= 4;\n\t d.px = d.x, d.py = d.y;\n\t }\n\t function d3_layout_forceMouseout(d) {\n\t d.fixed &= ~4;\n\t }\n\t function d3_layout_forceAccumulate(quad, alpha, charges) {\n\t var cx = 0, cy = 0;\n\t quad.charge = 0;\n\t if (!quad.leaf) {\n\t var nodes = quad.nodes, n = nodes.length, i = -1, c;\n\t while (++i < n) {\n\t c = nodes[i];\n\t if (c == null) continue;\n\t d3_layout_forceAccumulate(c, alpha, charges);\n\t quad.charge += c.charge;\n\t cx += c.charge * c.cx;\n\t cy += c.charge * c.cy;\n\t }\n\t }\n\t if (quad.point) {\n\t if (!quad.leaf) {\n\t quad.point.x += Math.random() - .5;\n\t quad.point.y += Math.random() - .5;\n\t }\n\t var k = alpha * charges[quad.point.index];\n\t quad.charge += quad.pointCharge = k;\n\t cx += k * quad.point.x;\n\t cy += k * quad.point.y;\n\t }\n\t quad.cx = cx / quad.charge;\n\t quad.cy = cy / quad.charge;\n\t }\n\t var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n\t d3.layout.hierarchy = function() {\n\t var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n\t function hierarchy(root) {\n\t var stack = [ root ], nodes = [], node;\n\t root.depth = 0;\n\t while ((node = stack.pop()) != null) {\n\t nodes.push(node);\n\t if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n\t var n, childs, child;\n\t while (--n >= 0) {\n\t stack.push(child = childs[n]);\n\t child.parent = node;\n\t child.depth = node.depth + 1;\n\t }\n\t if (value) node.value = 0;\n\t node.children = childs;\n\t } else {\n\t if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t delete node.children;\n\t }\n\t }\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var childs, parent;\n\t if (sort && (childs = node.children)) childs.sort(sort);\n\t if (value && (parent = node.parent)) parent.value += node.value;\n\t });\n\t return nodes;\n\t }\n\t hierarchy.sort = function(x) {\n\t if (!arguments.length) return sort;\n\t sort = x;\n\t return hierarchy;\n\t };\n\t hierarchy.children = function(x) {\n\t if (!arguments.length) return children;\n\t children = x;\n\t return hierarchy;\n\t };\n\t hierarchy.value = function(x) {\n\t if (!arguments.length) return value;\n\t value = x;\n\t return hierarchy;\n\t };\n\t hierarchy.revalue = function(root) {\n\t if (value) {\n\t d3_layout_hierarchyVisitBefore(root, function(node) {\n\t if (node.children) node.value = 0;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var parent;\n\t if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t if (parent = node.parent) parent.value += node.value;\n\t });\n\t }\n\t return root;\n\t };\n\t return hierarchy;\n\t };\n\t function d3_layout_hierarchyRebind(object, hierarchy) {\n\t d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n\t object.nodes = object;\n\t object.links = d3_layout_hierarchyLinks;\n\t return object;\n\t }\n\t function d3_layout_hierarchyVisitBefore(node, callback) {\n\t var nodes = [ node ];\n\t while ((node = nodes.pop()) != null) {\n\t callback(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var n, children;\n\t while (--n >= 0) nodes.push(children[n]);\n\t }\n\t }\n\t }\n\t function d3_layout_hierarchyVisitAfter(node, callback) {\n\t var nodes = [ node ], nodes2 = [];\n\t while ((node = nodes.pop()) != null) {\n\t nodes2.push(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var i = -1, n, children;\n\t while (++i < n) nodes.push(children[i]);\n\t }\n\t }\n\t while ((node = nodes2.pop()) != null) {\n\t callback(node);\n\t }\n\t }\n\t function d3_layout_hierarchyChildren(d) {\n\t return d.children;\n\t }\n\t function d3_layout_hierarchyValue(d) {\n\t return d.value;\n\t }\n\t function d3_layout_hierarchySort(a, b) {\n\t return b.value - a.value;\n\t }\n\t function d3_layout_hierarchyLinks(nodes) {\n\t return d3.merge(nodes.map(function(parent) {\n\t return (parent.children || []).map(function(child) {\n\t return {\n\t source: parent,\n\t target: child\n\t };\n\t });\n\t }));\n\t }\n\t d3.layout.partition = function() {\n\t var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n\t function position(node, x, dx, dy) {\n\t var children = node.children;\n\t node.x = x;\n\t node.y = node.depth * dy;\n\t node.dx = dx;\n\t node.dy = dy;\n\t if (children && (n = children.length)) {\n\t var i = -1, n, c, d;\n\t dx = node.value ? dx / node.value : 0;\n\t while (++i < n) {\n\t position(c = children[i], x, d = c.value * dx, dy);\n\t x += d;\n\t }\n\t }\n\t }\n\t function depth(node) {\n\t var children = node.children, d = 0;\n\t if (children && (n = children.length)) {\n\t var i = -1, n;\n\t while (++i < n) d = Math.max(d, depth(children[i]));\n\t }\n\t return 1 + d;\n\t }\n\t function partition(d, i) {\n\t var nodes = hierarchy.call(this, d, i);\n\t position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n\t return nodes;\n\t }\n\t partition.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return partition;\n\t };\n\t return d3_layout_hierarchyRebind(partition, hierarchy);\n\t };\n\t d3.layout.pie = function() {\n\t var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n\t function pie(data) {\n\t var n = data.length, values = data.map(function(d, i) {\n\t return +value.call(pie, d, i);\n\t }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n\t if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n\t return values[j] - values[i];\n\t } : function(i, j) {\n\t return sort(data[i], data[j]);\n\t });\n\t index.forEach(function(i) {\n\t arcs[i] = {\n\t data: data[i],\n\t value: v = values[i],\n\t startAngle: a,\n\t endAngle: a += v * k + pa,\n\t padAngle: p\n\t };\n\t });\n\t return arcs;\n\t }\n\t pie.value = function(_) {\n\t if (!arguments.length) return value;\n\t value = _;\n\t return pie;\n\t };\n\t pie.sort = function(_) {\n\t if (!arguments.length) return sort;\n\t sort = _;\n\t return pie;\n\t };\n\t pie.startAngle = function(_) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = _;\n\t return pie;\n\t };\n\t pie.endAngle = function(_) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = _;\n\t return pie;\n\t };\n\t pie.padAngle = function(_) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = _;\n\t return pie;\n\t };\n\t return pie;\n\t };\n\t var d3_layout_pieSortByValue = {};\n\t d3.layout.stack = function() {\n\t var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n\t function stack(data, index) {\n\t if (!(n = data.length)) return data;\n\t var series = data.map(function(d, i) {\n\t return values.call(stack, d, i);\n\t });\n\t var points = series.map(function(d) {\n\t return d.map(function(v, i) {\n\t return [ x.call(stack, v, i), y.call(stack, v, i) ];\n\t });\n\t });\n\t var orders = order.call(stack, points, index);\n\t series = d3.permute(series, orders);\n\t points = d3.permute(points, orders);\n\t var offsets = offset.call(stack, points, index);\n\t var m = series[0].length, n, i, j, o;\n\t for (j = 0; j < m; ++j) {\n\t out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n\t for (i = 1; i < n; ++i) {\n\t out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n\t }\n\t }\n\t return data;\n\t }\n\t stack.values = function(x) {\n\t if (!arguments.length) return values;\n\t values = x;\n\t return stack;\n\t };\n\t stack.order = function(x) {\n\t if (!arguments.length) return order;\n\t order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n\t return stack;\n\t };\n\t stack.offset = function(x) {\n\t if (!arguments.length) return offset;\n\t offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n\t return stack;\n\t };\n\t stack.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t return stack;\n\t };\n\t stack.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t return stack;\n\t };\n\t stack.out = function(z) {\n\t if (!arguments.length) return out;\n\t out = z;\n\t return stack;\n\t };\n\t return stack;\n\t };\n\t function d3_layout_stackX(d) {\n\t return d.x;\n\t }\n\t function d3_layout_stackY(d) {\n\t return d.y;\n\t }\n\t function d3_layout_stackOut(d, y0, y) {\n\t d.y0 = y0;\n\t d.y = y;\n\t }\n\t var d3_layout_stackOrders = d3.map({\n\t \"inside-out\": function(data) {\n\t var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n\t return max[a] - max[b];\n\t }), top = 0, bottom = 0, tops = [], bottoms = [];\n\t for (i = 0; i < n; ++i) {\n\t j = index[i];\n\t if (top < bottom) {\n\t top += sums[j];\n\t tops.push(j);\n\t } else {\n\t bottom += sums[j];\n\t bottoms.push(j);\n\t }\n\t }\n\t return bottoms.reverse().concat(tops);\n\t },\n\t reverse: function(data) {\n\t return d3.range(data.length).reverse();\n\t },\n\t \"default\": d3_layout_stackOrderDefault\n\t });\n\t var d3_layout_stackOffsets = d3.map({\n\t silhouette: function(data) {\n\t var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o > max) max = o;\n\t sums.push(o);\n\t }\n\t for (j = 0; j < m; ++j) {\n\t y0[j] = (max - sums[j]) / 2;\n\t }\n\t return y0;\n\t },\n\t wiggle: function(data) {\n\t var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n\t y0[0] = o = o0 = 0;\n\t for (j = 1; j < m; ++j) {\n\t for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n\t for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n\t for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n\t s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n\t }\n\t s2 += s3 * data[i][j][1];\n\t }\n\t y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n\t if (o < o0) o0 = o;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] -= o0;\n\t return y0;\n\t },\n\t expand: function(data) {\n\t var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] = 0;\n\t return y0;\n\t },\n\t zero: d3_layout_stackOffsetZero\n\t });\n\t function d3_layout_stackOrderDefault(data) {\n\t return d3.range(data.length);\n\t }\n\t function d3_layout_stackOffsetZero(data) {\n\t var j = -1, m = data[0].length, y0 = [];\n\t while (++j < m) y0[j] = 0;\n\t return y0;\n\t }\n\t function d3_layout_stackMaxIndex(array) {\n\t var i = 1, j = 0, v = array[0][1], k, n = array.length;\n\t for (;i < n; ++i) {\n\t if ((k = array[i][1]) > v) {\n\t j = i;\n\t v = k;\n\t }\n\t }\n\t return j;\n\t }\n\t function d3_layout_stackReduceSum(d) {\n\t return d.reduce(d3_layout_stackSum, 0);\n\t }\n\t function d3_layout_stackSum(p, d) {\n\t return p + d[1];\n\t }\n\t d3.layout.histogram = function() {\n\t var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n\t function histogram(data, i) {\n\t var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n\t while (++i < m) {\n\t bin = bins[i] = [];\n\t bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n\t bin.y = 0;\n\t }\n\t if (m > 0) {\n\t i = -1;\n\t while (++i < n) {\n\t x = values[i];\n\t if (x >= range[0] && x <= range[1]) {\n\t bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n\t bin.y += k;\n\t bin.push(data[i]);\n\t }\n\t }\n\t }\n\t return bins;\n\t }\n\t histogram.value = function(x) {\n\t if (!arguments.length) return valuer;\n\t valuer = x;\n\t return histogram;\n\t };\n\t histogram.range = function(x) {\n\t if (!arguments.length) return ranger;\n\t ranger = d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.bins = function(x) {\n\t if (!arguments.length) return binner;\n\t binner = typeof x === \"number\" ? function(range) {\n\t return d3_layout_histogramBinFixed(range, x);\n\t } : d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.frequency = function(x) {\n\t if (!arguments.length) return frequency;\n\t frequency = !!x;\n\t return histogram;\n\t };\n\t return histogram;\n\t };\n\t function d3_layout_histogramBinSturges(range, values) {\n\t return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n\t }\n\t function d3_layout_histogramBinFixed(range, n) {\n\t var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n\t while (++x <= n) f[x] = m * x + b;\n\t return f;\n\t }\n\t function d3_layout_histogramRange(values) {\n\t return [ d3.min(values), d3.max(values) ];\n\t }\n\t d3.layout.pack = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n\t function pack(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n\t return radius;\n\t };\n\t root.x = root.y = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r = +r(d.value);\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t if (padding) {\n\t var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r += dr;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r -= dr;\n\t });\n\t }\n\t d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n\t return nodes;\n\t }\n\t pack.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _;\n\t return pack;\n\t };\n\t pack.radius = function(_) {\n\t if (!arguments.length) return radius;\n\t radius = _ == null || typeof _ === \"function\" ? _ : +_;\n\t return pack;\n\t };\n\t pack.padding = function(_) {\n\t if (!arguments.length) return padding;\n\t padding = +_;\n\t return pack;\n\t };\n\t return d3_layout_hierarchyRebind(pack, hierarchy);\n\t };\n\t function d3_layout_packSort(a, b) {\n\t return a.value - b.value;\n\t }\n\t function d3_layout_packInsert(a, b) {\n\t var c = a._pack_next;\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t b._pack_next = c;\n\t c._pack_prev = b;\n\t }\n\t function d3_layout_packSplice(a, b) {\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t }\n\t function d3_layout_packIntersects(a, b) {\n\t var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n\t return .999 * dr * dr > dx * dx + dy * dy;\n\t }\n\t function d3_layout_packSiblings(node) {\n\t if (!(nodes = node.children) || !(n = nodes.length)) return;\n\t var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n\t function bound(node) {\n\t xMin = Math.min(node.x - node.r, xMin);\n\t xMax = Math.max(node.x + node.r, xMax);\n\t yMin = Math.min(node.y - node.r, yMin);\n\t yMax = Math.max(node.y + node.r, yMax);\n\t }\n\t nodes.forEach(d3_layout_packLink);\n\t a = nodes[0];\n\t a.x = -a.r;\n\t a.y = 0;\n\t bound(a);\n\t if (n > 1) {\n\t b = nodes[1];\n\t b.x = b.r;\n\t b.y = 0;\n\t bound(b);\n\t if (n > 2) {\n\t c = nodes[2];\n\t d3_layout_packPlace(a, b, c);\n\t bound(c);\n\t d3_layout_packInsert(a, c);\n\t a._pack_prev = c;\n\t d3_layout_packInsert(c, b);\n\t b = a._pack_next;\n\t for (i = 3; i < n; i++) {\n\t d3_layout_packPlace(a, b, c = nodes[i]);\n\t var isect = 0, s1 = 1, s2 = 1;\n\t for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n\t if (d3_layout_packIntersects(j, c)) {\n\t isect = 1;\n\t break;\n\t }\n\t }\n\t if (isect == 1) {\n\t for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n\t if (d3_layout_packIntersects(k, c)) {\n\t break;\n\t }\n\t }\n\t }\n\t if (isect) {\n\t if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n\t i--;\n\t } else {\n\t d3_layout_packInsert(a, c);\n\t b = c;\n\t bound(c);\n\t }\n\t }\n\t }\n\t }\n\t var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n\t for (i = 0; i < n; i++) {\n\t c = nodes[i];\n\t c.x -= cx;\n\t c.y -= cy;\n\t cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n\t }\n\t node.r = cr;\n\t nodes.forEach(d3_layout_packUnlink);\n\t }\n\t function d3_layout_packLink(node) {\n\t node._pack_next = node._pack_prev = node;\n\t }\n\t function d3_layout_packUnlink(node) {\n\t delete node._pack_next;\n\t delete node._pack_prev;\n\t }\n\t function d3_layout_packTransform(node, x, y, k) {\n\t var children = node.children;\n\t node.x = x += k * node.x;\n\t node.y = y += k * node.y;\n\t node.r *= k;\n\t if (children) {\n\t var i = -1, n = children.length;\n\t while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n\t }\n\t }\n\t function d3_layout_packPlace(a, b, c) {\n\t var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n\t if (db && (dx || dy)) {\n\t var da = b.r + c.r, dc = dx * dx + dy * dy;\n\t da *= da;\n\t db *= db;\n\t var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n\t c.x = a.x + x * dx + y * dy;\n\t c.y = a.y + x * dy - y * dx;\n\t } else {\n\t c.x = a.x + db;\n\t c.y = a.y;\n\t }\n\t }\n\t d3.layout.tree = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n\t function tree(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n\t d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n\t d3_layout_hierarchyVisitBefore(root1, secondWalk);\n\t if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n\t var left = root0, right = root0, bottom = root0;\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t if (node.x < left.x) left = node;\n\t if (node.x > right.x) right = node;\n\t if (node.depth > bottom.depth) bottom = node;\n\t });\n\t var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t node.x = (node.x + tx) * kx;\n\t node.y = node.depth * ky;\n\t });\n\t }\n\t return nodes;\n\t }\n\t function wrapTree(root0) {\n\t var root1 = {\n\t A: null,\n\t children: [ root0 ]\n\t }, queue = [ root1 ], node1;\n\t while ((node1 = queue.pop()) != null) {\n\t for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n\t queue.push((children[i] = child = {\n\t _: children[i],\n\t parent: node1,\n\t children: (child = children[i].children) && child.slice() || [],\n\t A: null,\n\t a: null,\n\t z: 0,\n\t m: 0,\n\t c: 0,\n\t s: 0,\n\t t: null,\n\t i: i\n\t }).a = child);\n\t }\n\t }\n\t return root1.children[0];\n\t }\n\t function firstWalk(v) {\n\t var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n\t if (children.length) {\n\t d3_layout_treeShift(v);\n\t var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n\t if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t v.m = v.z - midpoint;\n\t } else {\n\t v.z = midpoint;\n\t }\n\t } else if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t }\n\t v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n\t }\n\t function secondWalk(v) {\n\t v._.x = v.z + v.parent.m;\n\t v.m += v.parent.m;\n\t }\n\t function apportion(v, w, ancestor) {\n\t if (w) {\n\t var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n\t while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n\t vom = d3_layout_treeLeft(vom);\n\t vop = d3_layout_treeRight(vop);\n\t vop.a = v;\n\t shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n\t if (shift > 0) {\n\t d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n\t sip += shift;\n\t sop += shift;\n\t }\n\t sim += vim.m;\n\t sip += vip.m;\n\t som += vom.m;\n\t sop += vop.m;\n\t }\n\t if (vim && !d3_layout_treeRight(vop)) {\n\t vop.t = vim;\n\t vop.m += sim - sop;\n\t }\n\t if (vip && !d3_layout_treeLeft(vom)) {\n\t vom.t = vip;\n\t vom.m += sip - som;\n\t ancestor = v;\n\t }\n\t }\n\t return ancestor;\n\t }\n\t function sizeNode(node) {\n\t node.x *= size[0];\n\t node.y = node.depth * size[1];\n\t }\n\t tree.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return tree;\n\t };\n\t tree.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null ? sizeNode : null;\n\t return tree;\n\t };\n\t tree.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) == null ? null : sizeNode;\n\t return tree;\n\t };\n\t return d3_layout_hierarchyRebind(tree, hierarchy);\n\t };\n\t function d3_layout_treeSeparation(a, b) {\n\t return a.parent == b.parent ? 1 : 2;\n\t }\n\t function d3_layout_treeLeft(v) {\n\t var children = v.children;\n\t return children.length ? children[0] : v.t;\n\t }\n\t function d3_layout_treeRight(v) {\n\t var children = v.children, n;\n\t return (n = children.length) ? children[n - 1] : v.t;\n\t }\n\t function d3_layout_treeMove(wm, wp, shift) {\n\t var change = shift / (wp.i - wm.i);\n\t wp.c -= change;\n\t wp.s += shift;\n\t wm.c += change;\n\t wp.z += shift;\n\t wp.m += shift;\n\t }\n\t function d3_layout_treeShift(v) {\n\t var shift = 0, change = 0, children = v.children, i = children.length, w;\n\t while (--i >= 0) {\n\t w = children[i];\n\t w.z += shift;\n\t w.m += shift;\n\t shift += w.s + (change += w.c);\n\t }\n\t }\n\t function d3_layout_treeAncestor(vim, v, ancestor) {\n\t return vim.a.parent === v.parent ? vim.a : ancestor;\n\t }\n\t d3.layout.cluster = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n\t function cluster(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t node.x = d3_layout_clusterX(children);\n\t node.y = d3_layout_clusterY(children);\n\t } else {\n\t node.x = previousNode ? x += separation(node, previousNode) : 0;\n\t node.y = 0;\n\t previousNode = node;\n\t }\n\t });\n\t var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n\t d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n\t node.x = (node.x - root.x) * size[0];\n\t node.y = (root.y - node.y) * size[1];\n\t } : function(node) {\n\t node.x = (node.x - x0) / (x1 - x0) * size[0];\n\t node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n\t });\n\t return nodes;\n\t }\n\t cluster.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return cluster;\n\t };\n\t cluster.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null;\n\t return cluster;\n\t };\n\t cluster.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) != null;\n\t return cluster;\n\t };\n\t return d3_layout_hierarchyRebind(cluster, hierarchy);\n\t };\n\t function d3_layout_clusterY(children) {\n\t return 1 + d3.max(children, function(child) {\n\t return child.y;\n\t });\n\t }\n\t function d3_layout_clusterX(children) {\n\t return children.reduce(function(x, child) {\n\t return x + child.x;\n\t }, 0) / children.length;\n\t }\n\t function d3_layout_clusterLeft(node) {\n\t var children = node.children;\n\t return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n\t }\n\t function d3_layout_clusterRight(node) {\n\t var children = node.children, n;\n\t return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n\t }\n\t d3.layout.treemap = function() {\n\t var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n\t function scale(children, k) {\n\t var i = -1, n = children.length, child, area;\n\t while (++i < n) {\n\t area = (child = children[i]).value * (k < 0 ? 0 : k);\n\t child.area = isNaN(area) || area <= 0 ? 0 : area;\n\t }\n\t }\n\t function squarify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while ((n = remaining.length) > 0) {\n\t row.push(child = remaining[n - 1]);\n\t row.area += child.area;\n\t if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n\t remaining.pop();\n\t best = score;\n\t } else {\n\t row.area -= row.pop().area;\n\t position(row, u, rect, false);\n\t u = Math.min(rect.dx, rect.dy);\n\t row.length = row.area = 0;\n\t best = Infinity;\n\t }\n\t }\n\t if (row.length) {\n\t position(row, u, rect, true);\n\t row.length = row.area = 0;\n\t }\n\t children.forEach(squarify);\n\t }\n\t }\n\t function stickify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), remaining = children.slice(), child, row = [];\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while (child = remaining.pop()) {\n\t row.push(child);\n\t row.area += child.area;\n\t if (child.z != null) {\n\t position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n\t row.length = row.area = 0;\n\t }\n\t }\n\t children.forEach(stickify);\n\t }\n\t }\n\t function worst(row, u) {\n\t var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n\t while (++i < n) {\n\t if (!(r = row[i].area)) continue;\n\t if (r < rmin) rmin = r;\n\t if (r > rmax) rmax = r;\n\t }\n\t s *= s;\n\t u *= u;\n\t return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n\t }\n\t function position(row, u, rect, flush) {\n\t var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n\t if (u == rect.dx) {\n\t if (flush || v > rect.dy) v = rect.dy;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dy = v;\n\t x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n\t }\n\t o.z = true;\n\t o.dx += rect.x + rect.dx - x;\n\t rect.y += v;\n\t rect.dy -= v;\n\t } else {\n\t if (flush || v > rect.dx) v = rect.dx;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dx = v;\n\t y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n\t }\n\t o.z = false;\n\t o.dy += rect.y + rect.dy - y;\n\t rect.x += v;\n\t rect.dx -= v;\n\t }\n\t }\n\t function treemap(d) {\n\t var nodes = stickies || hierarchy(d), root = nodes[0];\n\t root.x = root.y = 0;\n\t if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n\t if (stickies) hierarchy.revalue(root);\n\t scale([ root ], root.dx * root.dy / root.value);\n\t (stickies ? stickify : squarify)(root);\n\t if (sticky) stickies = nodes;\n\t return nodes;\n\t }\n\t treemap.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return treemap;\n\t };\n\t treemap.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t function padFunction(node) {\n\t var p = x.call(treemap, node, node.depth);\n\t return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n\t }\n\t function padConstant(node) {\n\t return d3_layout_treemapPad(node, x);\n\t }\n\t var type;\n\t pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n\t padConstant) : padConstant;\n\t return treemap;\n\t };\n\t treemap.round = function(x) {\n\t if (!arguments.length) return round != Number;\n\t round = x ? Math.round : Number;\n\t return treemap;\n\t };\n\t treemap.sticky = function(x) {\n\t if (!arguments.length) return sticky;\n\t sticky = x;\n\t stickies = null;\n\t return treemap;\n\t };\n\t treemap.ratio = function(x) {\n\t if (!arguments.length) return ratio;\n\t ratio = x;\n\t return treemap;\n\t };\n\t treemap.mode = function(x) {\n\t if (!arguments.length) return mode;\n\t mode = x + \"\";\n\t return treemap;\n\t };\n\t return d3_layout_hierarchyRebind(treemap, hierarchy);\n\t };\n\t function d3_layout_treemapPadNull(node) {\n\t return {\n\t x: node.x,\n\t y: node.y,\n\t dx: node.dx,\n\t dy: node.dy\n\t };\n\t }\n\t function d3_layout_treemapPad(node, padding) {\n\t var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n\t if (dx < 0) {\n\t x += dx / 2;\n\t dx = 0;\n\t }\n\t if (dy < 0) {\n\t y += dy / 2;\n\t dy = 0;\n\t }\n\t return {\n\t x: x,\n\t y: y,\n\t dx: dx,\n\t dy: dy\n\t };\n\t }\n\t d3.random = {\n\t normal: function(µ, σ) {\n\t var n = arguments.length;\n\t if (n < 2) σ = 1;\n\t if (n < 1) µ = 0;\n\t return function() {\n\t var x, y, r;\n\t do {\n\t x = Math.random() * 2 - 1;\n\t y = Math.random() * 2 - 1;\n\t r = x * x + y * y;\n\t } while (!r || r > 1);\n\t return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n\t };\n\t },\n\t logNormal: function() {\n\t var random = d3.random.normal.apply(d3, arguments);\n\t return function() {\n\t return Math.exp(random());\n\t };\n\t },\n\t bates: function(m) {\n\t var random = d3.random.irwinHall(m);\n\t return function() {\n\t return random() / m;\n\t };\n\t },\n\t irwinHall: function(m) {\n\t return function() {\n\t for (var s = 0, j = 0; j < m; j++) s += Math.random();\n\t return s;\n\t };\n\t }\n\t };\n\t d3.scale = {};\n\t function d3_scaleExtent(domain) {\n\t var start = domain[0], stop = domain[domain.length - 1];\n\t return start < stop ? [ start, stop ] : [ stop, start ];\n\t }\n\t function d3_scaleRange(scale) {\n\t return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n\t }\n\t function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n\t var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n\t return function(x) {\n\t return i(u(x));\n\t };\n\t }\n\t function d3_scale_nice(domain, nice) {\n\t var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n\t if (x1 < x0) {\n\t dx = i0, i0 = i1, i1 = dx;\n\t dx = x0, x0 = x1, x1 = dx;\n\t }\n\t domain[i0] = nice.floor(x0);\n\t domain[i1] = nice.ceil(x1);\n\t return domain;\n\t }\n\t function d3_scale_niceStep(step) {\n\t return step ? {\n\t floor: function(x) {\n\t return Math.floor(x / step) * step;\n\t },\n\t ceil: function(x) {\n\t return Math.ceil(x / step) * step;\n\t }\n\t } : d3_scale_niceIdentity;\n\t }\n\t var d3_scale_niceIdentity = {\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n\t var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n\t if (domain[k] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range = range.slice().reverse();\n\t }\n\t while (++j <= k) {\n\t u.push(uninterpolate(domain[j - 1], domain[j]));\n\t i.push(interpolate(range[j - 1], range[j]));\n\t }\n\t return function(x) {\n\t var j = d3.bisect(domain, x, 1, k) - 1;\n\t return i[j](u[j](x));\n\t };\n\t }\n\t d3.scale.linear = function() {\n\t return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n\t };\n\t function d3_scale_linear(domain, range, interpolate, clamp) {\n\t var output, input;\n\t function rescale() {\n\t var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n\t output = linear(domain, range, uninterpolate, interpolate);\n\t input = linear(range, domain, uninterpolate, d3_interpolate);\n\t return scale;\n\t }\n\t function scale(x) {\n\t return output(x);\n\t }\n\t scale.invert = function(y) {\n\t return input(y);\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(Number);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.rangeRound = function(x) {\n\t return scale.range(x).interpolate(d3_interpolateRound);\n\t };\n\t scale.clamp = function(x) {\n\t if (!arguments.length) return clamp;\n\t clamp = x;\n\t return rescale();\n\t };\n\t scale.interpolate = function(x) {\n\t if (!arguments.length) return interpolate;\n\t interpolate = x;\n\t return rescale();\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t d3_scale_linearNice(domain, m);\n\t return rescale();\n\t };\n\t scale.copy = function() {\n\t return d3_scale_linear(domain, range, interpolate, clamp);\n\t };\n\t return rescale();\n\t }\n\t function d3_scale_linearRebind(scale, linear) {\n\t return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n\t }\n\t function d3_scale_linearNice(domain, m) {\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t return domain;\n\t }\n\t function d3_scale_linearTickRange(domain, m) {\n\t if (m == null) m = 10;\n\t var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n\t if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n\t extent[0] = Math.ceil(extent[0] / step) * step;\n\t extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n\t extent[2] = step;\n\t return extent;\n\t }\n\t function d3_scale_linearTicks(domain, m) {\n\t return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n\t }\n\t function d3_scale_linearTickFormat(domain, m, format) {\n\t var range = d3_scale_linearTickRange(domain, m);\n\t if (format) {\n\t var match = d3_format_re.exec(format);\n\t match.shift();\n\t if (match[8] === \"s\") {\n\t var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n\t match[8] = \"f\";\n\t format = d3.format(match.join(\"\"));\n\t return function(d) {\n\t return format(prefix.scale(d)) + prefix.symbol;\n\t };\n\t }\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n\t format = match.join(\"\");\n\t } else {\n\t format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n\t }\n\t return d3.format(format);\n\t }\n\t var d3_scale_linearFormatSignificant = {\n\t s: 1,\n\t g: 1,\n\t p: 1,\n\t r: 1,\n\t e: 1\n\t };\n\t function d3_scale_linearPrecision(value) {\n\t return -Math.floor(Math.log(value) / Math.LN10 + .01);\n\t }\n\t function d3_scale_linearFormatPrecision(type, range) {\n\t var p = d3_scale_linearPrecision(range[2]);\n\t return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n\t }\n\t d3.scale.log = function() {\n\t return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n\t };\n\t function d3_scale_log(linear, base, positive, domain) {\n\t function log(x) {\n\t return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n\t }\n\t function pow(x) {\n\t return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n\t }\n\t function scale(x) {\n\t return linear(log(x));\n\t }\n\t scale.invert = function(x) {\n\t return pow(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t positive = x[0] >= 0;\n\t linear.domain((domain = x.map(Number)).map(log));\n\t return scale;\n\t };\n\t scale.base = function(_) {\n\t if (!arguments.length) return base;\n\t base = +_;\n\t linear.domain(domain.map(log));\n\t return scale;\n\t };\n\t scale.nice = function() {\n\t var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n\t linear.domain(niced);\n\t domain = niced.map(pow);\n\t return scale;\n\t };\n\t scale.ticks = function() {\n\t var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n\t if (isFinite(j - i)) {\n\t if (positive) {\n\t for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n\t ticks.push(pow(i));\n\t } else {\n\t ticks.push(pow(i));\n\t for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n\t }\n\t for (i = 0; ticks[i] < u; i++) {}\n\t for (j = ticks.length; ticks[j - 1] > v; j--) {}\n\t ticks = ticks.slice(i, j);\n\t }\n\t return ticks;\n\t };\n\t scale.tickFormat = function(n, format) {\n\t if (!arguments.length) return d3_scale_logFormat;\n\t if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n\t var k = Math.max(1, base * n / scale.ticks().length);\n\t return function(d) {\n\t var i = d / pow(Math.round(log(d)));\n\t if (i * base < base - .5) i *= base;\n\t return i <= k ? format(d) : \"\";\n\t };\n\t };\n\t scale.copy = function() {\n\t return d3_scale_log(linear.copy(), base, positive, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n\t floor: function(x) {\n\t return -Math.ceil(-x);\n\t },\n\t ceil: function(x) {\n\t return -Math.floor(-x);\n\t }\n\t };\n\t d3.scale.pow = function() {\n\t return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_pow(linear, exponent, domain) {\n\t var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n\t function scale(x) {\n\t return linear(powp(x));\n\t }\n\t scale.invert = function(x) {\n\t return powb(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t linear.domain((domain = x.map(Number)).map(powp));\n\t return scale;\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t return scale.domain(d3_scale_linearNice(domain, m));\n\t };\n\t scale.exponent = function(x) {\n\t if (!arguments.length) return exponent;\n\t powp = d3_scale_powPow(exponent = x);\n\t powb = d3_scale_powPow(1 / exponent);\n\t linear.domain(domain.map(powp));\n\t return scale;\n\t };\n\t scale.copy = function() {\n\t return d3_scale_pow(linear.copy(), exponent, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_scale_powPow(e) {\n\t return function(x) {\n\t return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n\t };\n\t }\n\t d3.scale.sqrt = function() {\n\t return d3.scale.pow().exponent(.5);\n\t };\n\t d3.scale.ordinal = function() {\n\t return d3_scale_ordinal([], {\n\t t: \"range\",\n\t a: [ [] ]\n\t });\n\t };\n\t function d3_scale_ordinal(domain, ranger) {\n\t var index, range, rangeBand;\n\t function scale(x) {\n\t return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n\t }\n\t function steps(start, step) {\n\t return d3.range(domain.length).map(function(i) {\n\t return start + step * i;\n\t });\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = [];\n\t index = new d3_Map();\n\t var i = -1, n = x.length, xi;\n\t while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n\t return scale[ranger.t].apply(scale, ranger.a);\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"range\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangePoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n\t 0) : (stop - start) / (domain.length - 1 + padding);\n\t range = steps(start + step * padding / 2, step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangePoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundPoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n\t 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n\t range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangeRoundPoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n\t range = steps(start + step * outerPadding, step);\n\t if (reverse) range.reverse();\n\t rangeBand = step * (1 - padding);\n\t ranger = {\n\t t: \"rangeBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n\t range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n\t if (reverse) range.reverse();\n\t rangeBand = Math.round(step * (1 - padding));\n\t ranger = {\n\t t: \"rangeRoundBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBand = function() {\n\t return rangeBand;\n\t };\n\t scale.rangeExtent = function() {\n\t return d3_scaleExtent(ranger.a[0]);\n\t };\n\t scale.copy = function() {\n\t return d3_scale_ordinal(domain, ranger);\n\t };\n\t return scale.domain(domain);\n\t }\n\t d3.scale.category10 = function() {\n\t return d3.scale.ordinal().range(d3_category10);\n\t };\n\t d3.scale.category20 = function() {\n\t return d3.scale.ordinal().range(d3_category20);\n\t };\n\t d3.scale.category20b = function() {\n\t return d3.scale.ordinal().range(d3_category20b);\n\t };\n\t d3.scale.category20c = function() {\n\t return d3.scale.ordinal().range(d3_category20c);\n\t };\n\t var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n\t var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n\t var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n\t var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n\t d3.scale.quantile = function() {\n\t return d3_scale_quantile([], []);\n\t };\n\t function d3_scale_quantile(domain, range) {\n\t var thresholds;\n\t function rescale() {\n\t var k = 0, q = range.length;\n\t thresholds = [];\n\t while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n\t return scale;\n\t }\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.quantiles = function() {\n\t return thresholds;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantile(domain, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.quantize = function() {\n\t return d3_scale_quantize(0, 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_quantize(x0, x1, range) {\n\t var kx, i;\n\t function scale(x) {\n\t return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n\t }\n\t function rescale() {\n\t kx = range.length / (x1 - x0);\n\t i = range.length - 1;\n\t return scale;\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return [ x0, x1 ];\n\t x0 = +x[0];\n\t x1 = +x[x.length - 1];\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t y = y < 0 ? NaN : y / kx + x0;\n\t return [ y, y + 1 / kx ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantize(x0, x1, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.threshold = function() {\n\t return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n\t };\n\t function d3_scale_threshold(domain, range) {\n\t function scale(x) {\n\t if (x <= x) return range[d3.bisect(domain, x)];\n\t }\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain;\n\t domain = _;\n\t return scale;\n\t };\n\t scale.range = function(_) {\n\t if (!arguments.length) return range;\n\t range = _;\n\t return scale;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return [ domain[y - 1], domain[y] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_threshold(domain, range);\n\t };\n\t return scale;\n\t }\n\t d3.scale.identity = function() {\n\t return d3_scale_identity([ 0, 1 ]);\n\t };\n\t function d3_scale_identity(domain) {\n\t function identity(x) {\n\t return +x;\n\t }\n\t identity.invert = identity;\n\t identity.domain = identity.range = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(identity);\n\t return identity;\n\t };\n\t identity.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t identity.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t identity.copy = function() {\n\t return d3_scale_identity(domain);\n\t };\n\t return identity;\n\t }\n\t d3.svg = {};\n\t function d3_zero() {\n\t return 0;\n\t }\n\t d3.svg.arc = function() {\n\t var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n\t function arc() {\n\t var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n\t if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n\t if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n\t var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n\t if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n\t rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n\t if (!cw) p1 *= -1;\n\t if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n\t if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n\t }\n\t if (r1) {\n\t x0 = r1 * Math.cos(a0 + p1);\n\t y0 = r1 * Math.sin(a0 + p1);\n\t x1 = r1 * Math.cos(a1 - p1);\n\t y1 = r1 * Math.sin(a1 - p1);\n\t var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n\t if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n\t var h1 = (a0 + a1) / 2;\n\t x0 = r1 * Math.cos(h1);\n\t y0 = r1 * Math.sin(h1);\n\t x1 = y1 = null;\n\t }\n\t } else {\n\t x0 = y0 = 0;\n\t }\n\t if (r0) {\n\t x2 = r0 * Math.cos(a1 - p0);\n\t y2 = r0 * Math.sin(a1 - p0);\n\t x3 = r0 * Math.cos(a0 + p0);\n\t y3 = r0 * Math.sin(a0 + p0);\n\t var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n\t if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n\t var h0 = (a0 + a1) / 2;\n\t x2 = r0 * Math.cos(h0);\n\t y2 = r0 * Math.sin(h0);\n\t x3 = y3 = null;\n\t }\n\t } else {\n\t x2 = y2 = 0;\n\t }\n\t if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n\t cr = r0 < r1 ^ cw ? 0 : 1;\n\t var rc1 = rc, rc0 = rc;\n\t if (da < π) {\n\t var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\t rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n\t rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n\t }\n\t if (x1 != null) {\n\t var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n\t if (rc === rc1) {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n\t } else {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t }\n\t if (x3 != null) {\n\t var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n\t if (rc === rc0) {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t } else {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t }\n\t } else {\n\t path.push(\"L\", x2, \",\", y2);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n\t path.push(\"L\", x2, \",\", y2);\n\t if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n\t }\n\t path.push(\"Z\");\n\t return path.join(\"\");\n\t }\n\t function circleSegment(r1, cw) {\n\t return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n\t }\n\t arc.innerRadius = function(v) {\n\t if (!arguments.length) return innerRadius;\n\t innerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.outerRadius = function(v) {\n\t if (!arguments.length) return outerRadius;\n\t outerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.cornerRadius = function(v) {\n\t if (!arguments.length) return cornerRadius;\n\t cornerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padRadius = function(v) {\n\t if (!arguments.length) return padRadius;\n\t padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n\t return arc;\n\t };\n\t arc.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padAngle = function(v) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.centroid = function() {\n\t var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n\t return [ Math.cos(a) * r, Math.sin(a) * r ];\n\t };\n\t return arc;\n\t };\n\t var d3_svg_arcAuto = \"auto\";\n\t function d3_svg_arcInnerRadius(d) {\n\t return d.innerRadius;\n\t }\n\t function d3_svg_arcOuterRadius(d) {\n\t return d.outerRadius;\n\t }\n\t function d3_svg_arcStartAngle(d) {\n\t return d.startAngle;\n\t }\n\t function d3_svg_arcEndAngle(d) {\n\t return d.endAngle;\n\t }\n\t function d3_svg_arcPadAngle(d) {\n\t return d && d.padAngle;\n\t }\n\t function d3_svg_arcSweep(x0, y0, x1, y1) {\n\t return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n\t }\n\t function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n\t var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n\t if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\t return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n\t }\n\t function d3_svg_line(projection) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n\t function line(data) {\n\t var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points), tension));\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n\t } else if (points.length) {\n\t segment();\n\t points = [];\n\t }\n\t }\n\t if (points.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t line.x = function(_) {\n\t if (!arguments.length) return x;\n\t x = _;\n\t return line;\n\t };\n\t line.y = function(_) {\n\t if (!arguments.length) return y;\n\t y = _;\n\t return line;\n\t };\n\t line.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return line;\n\t };\n\t line.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t return line;\n\t };\n\t line.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return line;\n\t };\n\t return line;\n\t }\n\t d3.svg.line = function() {\n\t return d3_svg_line(d3_identity);\n\t };\n\t var d3_svg_lineInterpolators = d3.map({\n\t linear: d3_svg_lineLinear,\n\t \"linear-closed\": d3_svg_lineLinearClosed,\n\t step: d3_svg_lineStep,\n\t \"step-before\": d3_svg_lineStepBefore,\n\t \"step-after\": d3_svg_lineStepAfter,\n\t basis: d3_svg_lineBasis,\n\t \"basis-open\": d3_svg_lineBasisOpen,\n\t \"basis-closed\": d3_svg_lineBasisClosed,\n\t bundle: d3_svg_lineBundle,\n\t cardinal: d3_svg_lineCardinal,\n\t \"cardinal-open\": d3_svg_lineCardinalOpen,\n\t \"cardinal-closed\": d3_svg_lineCardinalClosed,\n\t monotone: d3_svg_lineMonotone\n\t });\n\t d3_svg_lineInterpolators.forEach(function(key, value) {\n\t value.key = key;\n\t value.closed = /-closed$/.test(key);\n\t });\n\t function d3_svg_lineLinear(points) {\n\t return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n\t }\n\t function d3_svg_lineLinearClosed(points) {\n\t return points.join(\"L\") + \"Z\";\n\t }\n\t function d3_svg_lineStep(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n\t if (n > 1) path.push(\"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepBefore(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepAfter(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineCardinalOpen(points, tension) {\n\t return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineCardinalClosed(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n\t points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n\t }\n\t function d3_svg_lineCardinal(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineHermite(points, tangents) {\n\t if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n\t return d3_svg_lineLinear(points);\n\t }\n\t var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n\t if (quad) {\n\t path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n\t p0 = points[1];\n\t pi = 2;\n\t }\n\t if (tangents.length > 1) {\n\t t = tangents[1];\n\t p = points[pi];\n\t pi++;\n\t path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t for (var i = 2; i < tangents.length; i++, pi++) {\n\t p = points[pi];\n\t t = tangents[i];\n\t path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t }\n\t }\n\t if (quad) {\n\t var lp = points[pi];\n\t path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n\t }\n\t return path;\n\t }\n\t function d3_svg_lineCardinalTangents(points, tension) {\n\t var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n\t while (++i < n) {\n\t p0 = p1;\n\t p1 = p2;\n\t p2 = points[i];\n\t tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineBasis(points) {\n\t if (points.length < 3) return d3_svg_lineLinear(points);\n\t var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t points.push(points[n - 1]);\n\t while (++i <= n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t points.pop();\n\t path.push(\"L\", pi);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisOpen(points) {\n\t if (points.length < 4) return d3_svg_lineLinear(points);\n\t var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n\t while (++i < 3) {\n\t pi = points[i];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n\t --i;\n\t while (++i < n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisClosed(points) {\n\t var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n\t while (++i < 4) {\n\t pi = points[i % n];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t --i;\n\t while (++i < m) {\n\t pi = points[i % n];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBundle(points, tension) {\n\t var n = points.length - 1;\n\t if (n) {\n\t var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n\t while (++i <= n) {\n\t p = points[i];\n\t t = i / n;\n\t p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n\t p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n\t }\n\t }\n\t return d3_svg_lineBasis(points);\n\t }\n\t function d3_svg_lineDot4(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t }\n\t var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n\t function d3_svg_lineBasisBezier(path, x, y) {\n\t path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n\t }\n\t function d3_svg_lineSlope(p0, p1) {\n\t return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n\t }\n\t function d3_svg_lineFiniteDifferences(points) {\n\t var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n\t while (++i < j) {\n\t m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n\t }\n\t m[i] = d;\n\t return m;\n\t }\n\t function d3_svg_lineMonotoneTangents(points) {\n\t var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n\t while (++i < j) {\n\t d = d3_svg_lineSlope(points[i], points[i + 1]);\n\t if (abs(d) < ε) {\n\t m[i] = m[i + 1] = 0;\n\t } else {\n\t a = m[i] / d;\n\t b = m[i + 1] / d;\n\t s = a * a + b * b;\n\t if (s > 9) {\n\t s = d * 3 / Math.sqrt(s);\n\t m[i] = s * a;\n\t m[i + 1] = s * b;\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i <= j) {\n\t s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n\t tangents.push([ s || 0, m[i] * s || 0 ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineMonotone(points) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n\t }\n\t d3.svg.line.radial = function() {\n\t var line = d3_svg_line(d3_svg_lineRadial);\n\t line.radius = line.x, delete line.x;\n\t line.angle = line.y, delete line.y;\n\t return line;\n\t };\n\t function d3_svg_lineRadial(points) {\n\t var point, i = -1, n = points.length, r, a;\n\t while (++i < n) {\n\t point = points[i];\n\t r = point[0];\n\t a = point[1] - halfπ;\n\t point[0] = r * Math.cos(a);\n\t point[1] = r * Math.sin(a);\n\t }\n\t return points;\n\t }\n\t function d3_svg_area(projection) {\n\t var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n\t function area(data) {\n\t var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n\t return x;\n\t } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n\t return y;\n\t } : d3_functor(y1), x, y;\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n\t points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n\t } else if (points0.length) {\n\t segment();\n\t points0 = [];\n\t points1 = [];\n\t }\n\t }\n\t if (points0.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t area.x = function(_) {\n\t if (!arguments.length) return x1;\n\t x0 = x1 = _;\n\t return area;\n\t };\n\t area.x0 = function(_) {\n\t if (!arguments.length) return x0;\n\t x0 = _;\n\t return area;\n\t };\n\t area.x1 = function(_) {\n\t if (!arguments.length) return x1;\n\t x1 = _;\n\t return area;\n\t };\n\t area.y = function(_) {\n\t if (!arguments.length) return y1;\n\t y0 = y1 = _;\n\t return area;\n\t };\n\t area.y0 = function(_) {\n\t if (!arguments.length) return y0;\n\t y0 = _;\n\t return area;\n\t };\n\t area.y1 = function(_) {\n\t if (!arguments.length) return y1;\n\t y1 = _;\n\t return area;\n\t };\n\t area.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return area;\n\t };\n\t area.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t interpolateReverse = interpolate.reverse || interpolate;\n\t L = interpolate.closed ? \"M\" : \"L\";\n\t return area;\n\t };\n\t area.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return area;\n\t };\n\t return area;\n\t }\n\t d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n\t d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n\t d3.svg.area = function() {\n\t return d3_svg_area(d3_identity);\n\t };\n\t d3.svg.area.radial = function() {\n\t var area = d3_svg_area(d3_svg_lineRadial);\n\t area.radius = area.x, delete area.x;\n\t area.innerRadius = area.x0, delete area.x0;\n\t area.outerRadius = area.x1, delete area.x1;\n\t area.angle = area.y, delete area.y;\n\t area.startAngle = area.y0, delete area.y0;\n\t area.endAngle = area.y1, delete area.y1;\n\t return area;\n\t };\n\t d3.svg.chord = function() {\n\t var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n\t function chord(d, i) {\n\t var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n\t return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n\t }\n\t function subgroup(self, f, d, i) {\n\t var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n\t return {\n\t r: r,\n\t a0: a0,\n\t a1: a1,\n\t p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n\t p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n\t };\n\t }\n\t function equals(a, b) {\n\t return a.a0 == b.a0 && a.a1 == b.a1;\n\t }\n\t function arc(r, p, a) {\n\t return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n\t }\n\t function curve(r0, p0, r1, p1) {\n\t return \"Q 0,0 \" + p1;\n\t }\n\t chord.radius = function(v) {\n\t if (!arguments.length) return radius;\n\t radius = d3_functor(v);\n\t return chord;\n\t };\n\t chord.source = function(v) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(v);\n\t return chord;\n\t };\n\t chord.target = function(v) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(v);\n\t return chord;\n\t };\n\t chord.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return chord;\n\t };\n\t chord.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return chord;\n\t };\n\t return chord;\n\t };\n\t function d3_svg_chordRadius(d) {\n\t return d.radius;\n\t }\n\t d3.svg.diagonal = function() {\n\t var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n\t function diagonal(d, i) {\n\t var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n\t x: p0.x,\n\t y: m\n\t }, {\n\t x: p3.x,\n\t y: m\n\t }, p3 ];\n\t p = p.map(projection);\n\t return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n\t }\n\t diagonal.source = function(x) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.target = function(x) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.projection = function(x) {\n\t if (!arguments.length) return projection;\n\t projection = x;\n\t return diagonal;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalProjection(d) {\n\t return [ d.x, d.y ];\n\t }\n\t d3.svg.diagonal.radial = function() {\n\t var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n\t diagonal.projection = function(x) {\n\t return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalRadialProjection(projection) {\n\t return function() {\n\t var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n\t return [ r * Math.cos(a), r * Math.sin(a) ];\n\t };\n\t }\n\t d3.svg.symbol = function() {\n\t var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n\t function symbol(d, i) {\n\t return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n\t }\n\t symbol.type = function(x) {\n\t if (!arguments.length) return type;\n\t type = d3_functor(x);\n\t return symbol;\n\t };\n\t symbol.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = d3_functor(x);\n\t return symbol;\n\t };\n\t return symbol;\n\t };\n\t function d3_svg_symbolSize() {\n\t return 64;\n\t }\n\t function d3_svg_symbolType() {\n\t return \"circle\";\n\t }\n\t function d3_svg_symbolCircle(size) {\n\t var r = Math.sqrt(size / π);\n\t return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n\t }\n\t var d3_svg_symbols = d3.map({\n\t circle: d3_svg_symbolCircle,\n\t cross: function(size) {\n\t var r = Math.sqrt(size / 5) / 2;\n\t return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n\t },\n\t diamond: function(size) {\n\t var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n\t return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n\t },\n\t square: function(size) {\n\t var r = Math.sqrt(size) / 2;\n\t return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n\t },\n\t \"triangle-down\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n\t },\n\t \"triangle-up\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n\t }\n\t });\n\t d3.svg.symbolTypes = d3_svg_symbols.keys();\n\t var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n\t d3_selectionPrototype.transition = function(name) {\n\t var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n\t time: Date.now(),\n\t ease: d3_ease_cubicInOut,\n\t delay: 0,\n\t duration: 250\n\t };\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_selectionPrototype.interrupt = function(name) {\n\t return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n\t };\n\t var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n\t function d3_selection_interruptNS(ns) {\n\t return function() {\n\t var lock, activeId, active;\n\t if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t if (--lock.count) delete lock[activeId]; else delete this[ns];\n\t lock.active += .5;\n\t active.event && active.event.interrupt.call(this, this.__data__, active.index);\n\t }\n\t };\n\t }\n\t function d3_transition(groups, ns, id) {\n\t d3_subclass(groups, d3_transitionPrototype);\n\t groups.namespace = ns;\n\t groups.id = id;\n\t return groups;\n\t }\n\t var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n\t d3_transitionPrototype.call = d3_selectionPrototype.call;\n\t d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n\t d3_transitionPrototype.node = d3_selectionPrototype.node;\n\t d3_transitionPrototype.size = d3_selectionPrototype.size;\n\t d3.transition = function(selection, name) {\n\t return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n\t };\n\t d3.transition.prototype = d3_transitionPrototype;\n\t d3_transitionPrototype.select = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n\t subgroup.push(subnode);\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.selectAll = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t transition = node[ns][id];\n\t subnodes = selector.call(node, node.__data__, i, j);\n\t subgroups.push(subgroup = []);\n\t for (var k = -1, o = subnodes.length; ++k < o; ) {\n\t if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n\t subgroup.push(subnode);\n\t }\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, this.namespace, this.id);\n\t };\n\t d3_transitionPrototype.tween = function(name, tween) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n\t return d3_selection_each(this, tween == null ? function(node) {\n\t node[ns][id].tween.remove(name);\n\t } : function(node) {\n\t node[ns][id].tween.set(name, tween);\n\t });\n\t };\n\t function d3_transition_tween(groups, name, value, tween) {\n\t var id = groups.id, ns = groups.namespace;\n\t return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n\t } : (value = tween(value), function(node) {\n\t node[ns][id].tween.set(name, value);\n\t }));\n\t }\n\t d3_transitionPrototype.attr = function(nameNS, value) {\n\t if (arguments.length < 2) {\n\t for (value in nameNS) this.attr(value, nameNS[value]);\n\t return this;\n\t }\n\t var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrTween(b) {\n\t return b == null ? attrNull : (b += \"\", function() {\n\t var a = this.getAttribute(name), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttribute(name, i(t));\n\t });\n\t });\n\t }\n\t function attrTweenNS(b) {\n\t return b == null ? attrNullNS : (b += \"\", function() {\n\t var a = this.getAttributeNS(name.space, name.local), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttributeNS(name.space, name.local, i(t));\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.attrTween = function(nameNS, tween) {\n\t var name = d3.ns.qualify(nameNS);\n\t function attrTween(d, i) {\n\t var f = tween.call(this, d, i, this.getAttribute(name));\n\t return f && function(t) {\n\t this.setAttribute(name, f(t));\n\t };\n\t }\n\t function attrTweenNS(d, i) {\n\t var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n\t return f && function(t) {\n\t this.setAttributeNS(name.space, name.local, f(t));\n\t };\n\t }\n\t return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.style(priority, name[priority], value);\n\t return this;\n\t }\n\t priority = \"\";\n\t }\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleString(b) {\n\t return b == null ? styleNull : (b += \"\", function() {\n\t var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n\t return a !== b && (i = d3_interpolate(a, b), function(t) {\n\t this.style.setProperty(name, i(t), priority);\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"style.\" + name, value, styleString);\n\t };\n\t d3_transitionPrototype.styleTween = function(name, tween, priority) {\n\t if (arguments.length < 3) priority = \"\";\n\t function styleTween(d, i) {\n\t var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n\t return f && function(t) {\n\t this.style.setProperty(name, f(t), priority);\n\t };\n\t }\n\t return this.tween(\"style.\" + name, styleTween);\n\t };\n\t d3_transitionPrototype.text = function(value) {\n\t return d3_transition_tween(this, \"text\", value, d3_transition_text);\n\t };\n\t function d3_transition_text(b) {\n\t if (b == null) b = \"\";\n\t return function() {\n\t this.textContent = b;\n\t };\n\t }\n\t d3_transitionPrototype.remove = function() {\n\t var ns = this.namespace;\n\t return this.each(\"end.transition\", function() {\n\t var p;\n\t if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n\t });\n\t };\n\t d3_transitionPrototype.ease = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].ease;\n\t if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n\t return d3_selection_each(this, function(node) {\n\t node[ns][id].ease = value;\n\t });\n\t };\n\t d3_transitionPrototype.delay = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].delay;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].delay = +value.call(node, node.__data__, i, j);\n\t } : (value = +value, function(node) {\n\t node[ns][id].delay = value;\n\t }));\n\t };\n\t d3_transitionPrototype.duration = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].duration;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n\t } : (value = Math.max(1, value), function(node) {\n\t node[ns][id].duration = value;\n\t }));\n\t };\n\t d3_transitionPrototype.each = function(type, listener) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) {\n\t var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n\t try {\n\t d3_transitionInheritId = id;\n\t d3_selection_each(this, function(node, i, j) {\n\t d3_transitionInherit = node[ns][id];\n\t type.call(node, node.__data__, i, j);\n\t });\n\t } finally {\n\t d3_transitionInherit = inherit;\n\t d3_transitionInheritId = inheritId;\n\t }\n\t } else {\n\t d3_selection_each(this, function(node) {\n\t var transition = node[ns][id];\n\t (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n\t });\n\t }\n\t return this;\n\t };\n\t d3_transitionPrototype.transition = function() {\n\t var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if (node = group[i]) {\n\t transition = node[ns][id0];\n\t d3_transitionNode(node, i, ns, id1, {\n\t time: transition.time,\n\t ease: transition.ease,\n\t delay: transition.delay + transition.duration,\n\t duration: transition.duration\n\t });\n\t }\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id1);\n\t };\n\t function d3_transitionNamespace(name) {\n\t return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n\t }\n\t function d3_transitionNode(node, i, ns, id, inherit) {\n\t var lock = node[ns] || (node[ns] = {\n\t active: 0,\n\t count: 0\n\t }), transition = lock[id], time, timer, duration, ease, tweens;\n\t function schedule(elapsed) {\n\t var delay = transition.delay;\n\t timer.t = delay + time;\n\t if (delay <= elapsed) return start(elapsed - delay);\n\t timer.c = start;\n\t }\n\t function start(elapsed) {\n\t var activeId = lock.active, active = lock[activeId];\n\t if (active) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t --lock.count;\n\t delete lock[activeId];\n\t active.event && active.event.interrupt.call(node, node.__data__, active.index);\n\t }\n\t for (var cancelId in lock) {\n\t if (+cancelId < id) {\n\t var cancel = lock[cancelId];\n\t cancel.timer.c = null;\n\t cancel.timer.t = NaN;\n\t --lock.count;\n\t delete lock[cancelId];\n\t }\n\t }\n\t timer.c = tick;\n\t d3_timer(function() {\n\t if (timer.c && tick(elapsed || 1)) {\n\t timer.c = null;\n\t timer.t = NaN;\n\t }\n\t return 1;\n\t }, 0, time);\n\t lock.active = id;\n\t transition.event && transition.event.start.call(node, node.__data__, i);\n\t tweens = [];\n\t transition.tween.forEach(function(key, value) {\n\t if (value = value.call(node, node.__data__, i)) {\n\t tweens.push(value);\n\t }\n\t });\n\t ease = transition.ease;\n\t duration = transition.duration;\n\t }\n\t function tick(elapsed) {\n\t var t = elapsed / duration, e = ease(t), n = tweens.length;\n\t while (n > 0) {\n\t tweens[--n].call(node, e);\n\t }\n\t if (t >= 1) {\n\t transition.event && transition.event.end.call(node, node.__data__, i);\n\t if (--lock.count) delete lock[id]; else delete node[ns];\n\t return 1;\n\t }\n\t }\n\t if (!transition) {\n\t time = inherit.time;\n\t timer = d3_timer(schedule, 0, time);\n\t transition = lock[id] = {\n\t tween: new d3_Map(),\n\t time: time,\n\t timer: timer,\n\t delay: inherit.delay,\n\t duration: inherit.duration,\n\t ease: inherit.ease,\n\t index: i\n\t };\n\t inherit = null;\n\t ++lock.count;\n\t }\n\t }\n\t d3.svg.axis = function() {\n\t var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n\t function axis(g) {\n\t g.each(function() {\n\t var g = d3.select(this);\n\t var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n\t var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n\t var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n\t d3.transition(path));\n\t tickEnter.append(\"line\");\n\t tickEnter.append(\"text\");\n\t var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n\t if (orient === \"bottom\" || orient === \"top\") {\n\t tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n\t text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n\t pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n\t } else {\n\t tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n\t text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n\t pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n\t }\n\t lineEnter.attr(y2, sign * innerTickSize);\n\t textEnter.attr(y1, sign * tickSpacing);\n\t lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n\t textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n\t if (scale1.rangeBand) {\n\t var x = scale1, dx = x.rangeBand() / 2;\n\t scale0 = scale1 = function(d) {\n\t return x(d) + dx;\n\t };\n\t } else if (scale0.rangeBand) {\n\t scale0 = scale1;\n\t } else {\n\t tickExit.call(tickTransform, scale1, scale0);\n\t }\n\t tickEnter.call(tickTransform, scale0, scale1);\n\t tickUpdate.call(tickTransform, scale1, scale1);\n\t });\n\t }\n\t axis.scale = function(x) {\n\t if (!arguments.length) return scale;\n\t scale = x;\n\t return axis;\n\t };\n\t axis.orient = function(x) {\n\t if (!arguments.length) return orient;\n\t orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n\t return axis;\n\t };\n\t axis.ticks = function() {\n\t if (!arguments.length) return tickArguments_;\n\t tickArguments_ = d3_array(arguments);\n\t return axis;\n\t };\n\t axis.tickValues = function(x) {\n\t if (!arguments.length) return tickValues;\n\t tickValues = x;\n\t return axis;\n\t };\n\t axis.tickFormat = function(x) {\n\t if (!arguments.length) return tickFormat_;\n\t tickFormat_ = x;\n\t return axis;\n\t };\n\t axis.tickSize = function(x) {\n\t var n = arguments.length;\n\t if (!n) return innerTickSize;\n\t innerTickSize = +x;\n\t outerTickSize = +arguments[n - 1];\n\t return axis;\n\t };\n\t axis.innerTickSize = function(x) {\n\t if (!arguments.length) return innerTickSize;\n\t innerTickSize = +x;\n\t return axis;\n\t };\n\t axis.outerTickSize = function(x) {\n\t if (!arguments.length) return outerTickSize;\n\t outerTickSize = +x;\n\t return axis;\n\t };\n\t axis.tickPadding = function(x) {\n\t if (!arguments.length) return tickPadding;\n\t tickPadding = +x;\n\t return axis;\n\t };\n\t axis.tickSubdivide = function() {\n\t return arguments.length && axis;\n\t };\n\t return axis;\n\t };\n\t var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n\t top: 1,\n\t right: 1,\n\t bottom: 1,\n\t left: 1\n\t };\n\t function d3_svg_axisX(selection, x0, x1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = x0(d);\n\t return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n\t });\n\t }\n\t function d3_svg_axisY(selection, y0, y1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = y0(d);\n\t return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n\t });\n\t }\n\t d3.svg.brush = function() {\n\t var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n\t function brush(g) {\n\t g.each(function() {\n\t var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n\t var background = g.selectAll(\".background\").data([ 0 ]);\n\t background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n\t g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n\t var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n\t resize.exit().remove();\n\t resize.enter().append(\"g\").attr(\"class\", function(d) {\n\t return \"resize \" + d;\n\t }).style(\"cursor\", function(d) {\n\t return d3_svg_brushCursor[d];\n\t }).append(\"rect\").attr(\"x\", function(d) {\n\t return /[ew]$/.test(d) ? -3 : null;\n\t }).attr(\"y\", function(d) {\n\t return /^[ns]/.test(d) ? -3 : null;\n\t }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n\t resize.style(\"display\", brush.empty() ? \"none\" : null);\n\t var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n\t if (x) {\n\t range = d3_scaleRange(x);\n\t backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n\t redrawX(gUpdate);\n\t }\n\t if (y) {\n\t range = d3_scaleRange(y);\n\t backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n\t redrawY(gUpdate);\n\t }\n\t redraw(gUpdate);\n\t });\n\t }\n\t brush.event = function(g) {\n\t g.each(function() {\n\t var event_ = event.of(this, arguments), extent1 = {\n\t x: xExtent,\n\t y: yExtent,\n\t i: xExtentDomain,\n\t j: yExtentDomain\n\t }, extent0 = this.__chart__ || extent1;\n\t this.__chart__ = extent1;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.brush\", function() {\n\t xExtentDomain = extent0.i;\n\t yExtentDomain = extent0.j;\n\t xExtent = extent0.x;\n\t yExtent = extent0.y;\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t }).tween(\"brush:brush\", function() {\n\t var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n\t xExtentDomain = yExtentDomain = null;\n\t return function(t) {\n\t xExtent = extent1.x = xi(t);\n\t yExtent = extent1.y = yi(t);\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t };\n\t }).each(\"end.brush\", function() {\n\t xExtentDomain = extent1.i;\n\t yExtentDomain = extent1.j;\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t });\n\t } else {\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t });\n\t };\n\t function redraw(g) {\n\t g.selectAll(\".resize\").attr(\"transform\", function(d) {\n\t return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n\t });\n\t }\n\t function redrawX(g) {\n\t g.select(\".extent\").attr(\"x\", xExtent[0]);\n\t g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n\t }\n\t function redrawY(g) {\n\t g.select(\".extent\").attr(\"y\", yExtent[0]);\n\t g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n\t }\n\t function brushstart() {\n\t var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n\t var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n\t if (d3.event.changedTouches) {\n\t w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n\t } else {\n\t w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n\t }\n\t g.interrupt().selectAll(\"*\").interrupt();\n\t if (dragging) {\n\t origin[0] = xExtent[0] - origin[0];\n\t origin[1] = yExtent[0] - origin[1];\n\t } else if (resizing) {\n\t var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n\t offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n\t origin[0] = xExtent[ex];\n\t origin[1] = yExtent[ey];\n\t } else if (d3.event.altKey) center = origin.slice();\n\t g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n\t d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t brushmove();\n\t function keydown() {\n\t if (d3.event.keyCode == 32) {\n\t if (!dragging) {\n\t center = null;\n\t origin[0] -= xExtent[1];\n\t origin[1] -= yExtent[1];\n\t dragging = 2;\n\t }\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function keyup() {\n\t if (d3.event.keyCode == 32 && dragging == 2) {\n\t origin[0] += xExtent[1];\n\t origin[1] += yExtent[1];\n\t dragging = 0;\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function brushmove() {\n\t var point = d3.mouse(target), moved = false;\n\t if (offset) {\n\t point[0] += offset[0];\n\t point[1] += offset[1];\n\t }\n\t if (!dragging) {\n\t if (d3.event.altKey) {\n\t if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n\t origin[0] = xExtent[+(point[0] < center[0])];\n\t origin[1] = yExtent[+(point[1] < center[1])];\n\t } else center = null;\n\t }\n\t if (resizingX && move1(point, x, 0)) {\n\t redrawX(g);\n\t moved = true;\n\t }\n\t if (resizingY && move1(point, y, 1)) {\n\t redrawY(g);\n\t moved = true;\n\t }\n\t if (moved) {\n\t redraw(g);\n\t event_({\n\t type: \"brush\",\n\t mode: dragging ? \"move\" : \"resize\"\n\t });\n\t }\n\t }\n\t function move1(point, scale, i) {\n\t var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n\t if (dragging) {\n\t r0 -= position;\n\t r1 -= size + position;\n\t }\n\t min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n\t if (dragging) {\n\t max = (min += position) + size;\n\t } else {\n\t if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n\t if (position < min) {\n\t max = min;\n\t min = position;\n\t } else {\n\t max = position;\n\t }\n\t }\n\t if (extent[0] != min || extent[1] != max) {\n\t if (i) yExtentDomain = null; else xExtentDomain = null;\n\t extent[0] = min;\n\t extent[1] = max;\n\t return true;\n\t }\n\t }\n\t function brushend() {\n\t brushmove();\n\t g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n\t d3.select(\"body\").style(\"cursor\", null);\n\t w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n\t dragRestore();\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t }\n\t brush.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.clamp = function(z) {\n\t if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n\t if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n\t return brush;\n\t };\n\t brush.extent = function(z) {\n\t var x0, x1, y0, y1, t;\n\t if (!arguments.length) {\n\t if (x) {\n\t if (xExtentDomain) {\n\t x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n\t } else {\n\t x0 = xExtent[0], x1 = xExtent[1];\n\t if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t }\n\t }\n\t if (y) {\n\t if (yExtentDomain) {\n\t y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n\t } else {\n\t y0 = yExtent[0], y1 = yExtent[1];\n\t if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t }\n\t }\n\t return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n\t }\n\t if (x) {\n\t x0 = z[0], x1 = z[1];\n\t if (y) x0 = x0[0], x1 = x1[0];\n\t xExtentDomain = [ x0, x1 ];\n\t if (x.invert) x0 = x(x0), x1 = x(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n\t }\n\t if (y) {\n\t y0 = z[0], y1 = z[1];\n\t if (x) y0 = y0[1], y1 = y1[1];\n\t yExtentDomain = [ y0, y1 ];\n\t if (y.invert) y0 = y(y0), y1 = y(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n\t }\n\t return brush;\n\t };\n\t brush.clear = function() {\n\t if (!brush.empty()) {\n\t xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n\t xExtentDomain = yExtentDomain = null;\n\t }\n\t return brush;\n\t };\n\t brush.empty = function() {\n\t return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n\t };\n\t return d3.rebind(brush, event, \"on\");\n\t };\n\t var d3_svg_brushCursor = {\n\t n: \"ns-resize\",\n\t e: \"ew-resize\",\n\t s: \"ns-resize\",\n\t w: \"ew-resize\",\n\t nw: \"nwse-resize\",\n\t ne: \"nesw-resize\",\n\t se: \"nwse-resize\",\n\t sw: \"nesw-resize\"\n\t };\n\t var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n\t var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n\t var d3_time_formatUtc = d3_time_format.utc;\n\t var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n\t d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n\t function d3_time_formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t d3_time_formatIsoNative.parse = function(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t };\n\t d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n\t d3_time.second = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 1e3) * 1e3);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t d3_time.seconds = d3_time.second.range;\n\t d3_time.seconds.utc = d3_time.second.utc.range;\n\t d3_time.minute = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 6e4) * 6e4);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t d3_time.minutes = d3_time.minute.range;\n\t d3_time.minutes.utc = d3_time.minute.utc.range;\n\t d3_time.hour = d3_time_interval(function(date) {\n\t var timezone = date.getTimezoneOffset() / 60;\n\t return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t d3_time.hours = d3_time.hour.range;\n\t d3_time.hours.utc = d3_time.hour.utc.range;\n\t d3_time.month = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setDate(1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setMonth(date.getMonth() + offset);\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t d3_time.months = d3_time.month.range;\n\t d3_time.months.utc = d3_time.month.utc.range;\n\t function d3_time_scale(linear, methods, format) {\n\t function scale(x) {\n\t return linear(x);\n\t }\n\t scale.invert = function(x) {\n\t return d3_time_scaleDate(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n\t linear.domain(x);\n\t return scale;\n\t };\n\t function tickMethod(extent, count) {\n\t var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n\t return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n\t return d / 31536e6;\n\t }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n\t }\n\t scale.nice = function(interval, skip) {\n\t var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n\t if (method) interval = method[0], skip = method[1];\n\t function skipped(date) {\n\t return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n\t }\n\t return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n\t floor: function(date) {\n\t while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n\t return date;\n\t },\n\t ceil: function(date) {\n\t while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n\t return date;\n\t }\n\t } : interval));\n\t };\n\t scale.ticks = function(interval, skip) {\n\t var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n\t range: interval\n\t }, skip ];\n\t if (method) interval = method[0], skip = method[1];\n\t return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n\t };\n\t scale.tickFormat = function() {\n\t return format;\n\t };\n\t scale.copy = function() {\n\t return d3_time_scale(linear.copy(), methods, format);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_time_scaleDate(t) {\n\t return new Date(t);\n\t }\n\t var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n\t var d3_time_scaleLocalMethods = [ [ 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 ] ];\n\t var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n\t return d.getMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getDay() && d.getDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t var d3_time_scaleMilliseconds = {\n\t range: function(start, stop, step) {\n\t return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n\t },\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t d3_time_scaleLocalMethods.year = d3_time.year;\n\t d3_time.scale = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n\t };\n\t var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n\t return [ m[0].utc, m[1] ];\n\t });\n\t var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n\t return d.getUTCMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getUTCSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getUTCMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getUTCHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getUTCDay() && d.getUTCDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getUTCDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getUTCMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t d3_time_scaleUtcMethods.year = d3_time.year.utc;\n\t d3_time.scale.utc = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n\t };\n\t d3.text = d3_xhrType(function(request) {\n\t return request.responseText;\n\t });\n\t d3.json = function(url, callback) {\n\t return d3_xhr(url, \"application/json\", d3_json, callback);\n\t };\n\t function d3_json(request) {\n\t return JSON.parse(request.responseText);\n\t }\n\t d3.html = function(url, callback) {\n\t return d3_xhr(url, \"text/html\", d3_html, callback);\n\t };\n\t function d3_html(request) {\n\t var range = d3_document.createRange();\n\t range.selectNode(d3_document.body);\n\t return range.createContextualFragment(request.responseText);\n\t }\n\t d3.xml = d3_xhrType(function(request) {\n\t return request.responseXML;\n\t });\n\t if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n\t}();\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t version: '__VERSION__',\n\t dataflow: __webpack_require__(4),\n\t parse: __webpack_require__(52),\n\t scene: {\n\t Bounder: __webpack_require__(153),\n\t Builder: __webpack_require__(151),\n\t Encoder: __webpack_require__(152),\n\t GroupBuilder: __webpack_require__(150),\n\t visit: __webpack_require__(155)\n\t },\n\t transforms: __webpack_require__(103),\n\t Transform: __webpack_require__(105),\n\t BatchTransform: __webpack_require__(109),\n\t Parameter: __webpack_require__(106),\n\t schema: __webpack_require__(161),\n\t config: __webpack_require__(156),\n\t util: __webpack_require__(58),\n\t logging: __webpack_require__(8),\n\t debug: __webpack_require__(8).debug\n\t};\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t ChangeSet: __webpack_require__(5),\n\t Collector: __webpack_require__(7),\n\t DataSource: __webpack_require__(11),\n\t Dependencies: __webpack_require__(6),\n\t Graph: __webpack_require__(49),\n\t Node: __webpack_require__(10),\n\t Signal: __webpack_require__(51),\n\t Tuple: __webpack_require__(9),\n\t debug: __webpack_require__(8).debug\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar DEPS = __webpack_require__(6).ALL;\n\t\n\tfunction create(cs, reflow) {\n\t var out = {};\n\t copy(cs, out);\n\t\n\t out.add = [];\n\t out.mod = [];\n\t out.rem = [];\n\t\n\t out.reflow = reflow;\n\t\n\t return out;\n\t}\n\t\n\tfunction copy(a, b) {\n\t b.stamp = a ? a.stamp : 0;\n\t b.sort = a ? a.sort : null;\n\t b.facet = a ? a.facet : null;\n\t b.trans = a ? a.trans : null;\n\t b.dirty = a ? a.dirty : [];\n\t b.request = a ? a.request : null;\n\t for (var d, i=0, n=DEPS.length; i0;) {\n\t idMap(arguments[i], ids);\n\t }\n\t return data.filter(function(x) { return !ids[x._id]; });\n\t }\n\t};\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar DEPS = __webpack_require__(6).ALL,\n\t nodeID = 0;\n\t\n\tfunction Node(graph) {\n\t if (graph) this.init(graph);\n\t}\n\t\n\tvar Flags = Node.Flags = {\n\t Router: 0x01, // Responsible for propagating tuples, cannot be skipped.\n\t Collector: 0x02, // Holds a materialized dataset, pulse node to reflow.\n\t Produces: 0x04, // Produces new tuples. \n\t Mutates: 0x08, // Sets properties of incoming tuples.\n\t Reflows: 0x10, // Forwards a reflow pulse.\n\t Batch: 0x20 // Performs batch data processing, needs collector.\n\t};\n\t\n\tvar prototype = Node.prototype;\n\t\n\tprototype.init = function(graph) {\n\t this._id = ++nodeID;\n\t this._graph = graph;\n\t this._rank = graph.rank(); // Topological sort by rank\n\t this._qrank = null; // Rank when enqueued for propagation\n\t this._stamp = 0; // Last stamp seen\n\t\n\t this._listeners = [];\n\t this._listeners._ids = {}; // To prevent duplicate listeners\n\t\n\t // Initialize dependencies.\n\t this._deps = {};\n\t for (var i=0, n=DEPS.length; i l._rank) {\n\t l.rerank();\n\t }\n\t\n\t return this;\n\t};\n\t\n\tprototype.removeListener = function(l) {\n\t if (!this._listeners._ids[l._id]) return false;\n\t \n\t var idx = this._listeners.indexOf(l),\n\t b = idx >= 0;\n\t\n\t if (b) {\n\t this._listeners.splice(idx, 1);\n\t this._listeners._ids[l._id] = null;\n\t }\n\t return b;\n\t};\n\t\n\tprototype.disconnect = function() {\n\t this._listeners = [];\n\t this._listeners._ids = {};\n\t};\n\t\n\t// Evaluate this dataflow node for the current pulse.\n\t// Subclasses should override to perform custom processing.\n\tprototype.evaluate = function(pulse) {\n\t return pulse;\n\t};\n\t\n\t// Should this node be re-evaluated for the current pulse?\n\t// Searches pulse to see if any dependencies have updated.\n\tprototype.reevaluate = function(pulse) {\n\t var prop, dep, i, n, j, m;\n\t\n\t for (i=0, n=DEPS.length; i 1 ?\n\t function(x, v) {\n\t for (var i=0; i y) return sign[i];\n\t }\n\t return 0;\n\t };\n\t};\n\t\n\tu.cmp = function(a, b) {\n\t if (a < b) {\n\t return -1;\n\t } else if (a > b) {\n\t return 1;\n\t } else if (a >= b) {\n\t return 0;\n\t } else if (a === null) {\n\t return -1;\n\t } else if (b === null) {\n\t return 1;\n\t }\n\t return NaN;\n\t};\n\t\n\tu.numcmp = function(a, b) { return a - b; };\n\t\n\tu.stablesort = function(array, sortBy, keyFn) {\n\t var indices = array.reduce(function(idx, v, i) {\n\t return (idx[keyFn(v)] = i, idx);\n\t }, {});\n\t\n\t array.sort(function(a, b) {\n\t var sa = sortBy(a),\n\t sb = sortBy(b);\n\t return sa < sb ? -1 : sa > sb ? 1\n\t : (indices[keyFn(a)] - indices[keyFn(b)]);\n\t });\n\t\n\t return array;\n\t};\n\t\n\t\n\t// string functions\n\t\n\tu.pad = function(s, length, pos, padchar) {\n\t padchar = padchar || \" \";\n\t var d = length - s.length;\n\t if (d <= 0) return s;\n\t switch (pos) {\n\t case 'left':\n\t return strrep(d, padchar) + s;\n\t case 'middle':\n\t case 'center':\n\t return strrep(Math.floor(d/2), padchar) +\n\t s + strrep(Math.ceil(d/2), padchar);\n\t default:\n\t return s + strrep(d, padchar);\n\t }\n\t};\n\t\n\tfunction strrep(n, str) {\n\t var s = \"\", i;\n\t for (i=0; i \n\t * @license MIT\n\t */\n\t/* eslint-disable no-proto */\n\t\n\t'use strict'\n\t\n\tvar base64 = __webpack_require__(15)\n\tvar ieee754 = __webpack_require__(16)\n\tvar isArray = __webpack_require__(17)\n\t\n\texports.Buffer = Buffer\n\texports.SlowBuffer = SlowBuffer\n\texports.INSPECT_MAX_BYTES = 50\n\tBuffer.poolSize = 8192 // not used by this implementation\n\t\n\tvar rootParent = {}\n\t\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Use Object implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * Due to various browser bugs, sometimes the Object implementation will be used even\n\t * when the browser supports typed arrays.\n\t *\n\t * Note:\n\t *\n\t * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n\t * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n\t *\n\t * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n\t * on objects.\n\t *\n\t * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n\t *\n\t * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n\t * incorrect length in some situations.\n\t\n\t * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n\t * get the Object implementation, which is slower but behaves correctly.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n\t ? global.TYPED_ARRAY_SUPPORT\n\t : typedArraySupport()\n\t\n\tfunction typedArraySupport () {\n\t function Bar () {}\n\t try {\n\t var arr = new Uint8Array(1)\n\t arr.foo = function () { return 42 }\n\t arr.constructor = Bar\n\t return arr.foo() === 42 && // typed array instances can be augmented\n\t arr.constructor === Bar && // constructor can be set\n\t typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n\t arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\t\n\tfunction kMaxLength () {\n\t return Buffer.TYPED_ARRAY_SUPPORT\n\t ? 0x7fffffff\n\t : 0x3fffffff\n\t}\n\t\n\t/**\n\t * Class: Buffer\n\t * =============\n\t *\n\t * The Buffer constructor returns instances of `Uint8Array` that are augmented\n\t * with function properties for all the node `Buffer` API functions. We use\n\t * `Uint8Array` so that square bracket notation works as expected -- it returns\n\t * a single octet.\n\t *\n\t * By augmenting the instances, we can avoid modifying the `Uint8Array`\n\t * prototype.\n\t */\n\tfunction Buffer (arg) {\n\t if (!(this instanceof Buffer)) {\n\t // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n\t if (arguments.length > 1) return new Buffer(arg, arguments[1])\n\t return new Buffer(arg)\n\t }\n\t\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t this.length = 0\n\t this.parent = undefined\n\t }\n\t\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t return fromNumber(this, arg)\n\t }\n\t\n\t // Slightly less common case.\n\t if (typeof arg === 'string') {\n\t return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n\t }\n\t\n\t // Unusual.\n\t return fromObject(this, arg)\n\t}\n\t\n\tfunction fromNumber (that, length) {\n\t that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < length; i++) {\n\t that[i] = 0\n\t }\n\t }\n\t return that\n\t}\n\t\n\tfunction fromString (that, string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\t\n\t // Assumption: byteLength() return value is always < kMaxLength.\n\t var length = byteLength(string, encoding) | 0\n\t that = allocate(that, length)\n\t\n\t that.write(string, encoding)\n\t return that\n\t}\n\t\n\tfunction fromObject (that, object) {\n\t if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\t\n\t if (isArray(object)) return fromArray(that, object)\n\t\n\t if (object == null) {\n\t throw new TypeError('must start with number, buffer, array or string')\n\t }\n\t\n\t if (typeof ArrayBuffer !== 'undefined') {\n\t if (object.buffer instanceof ArrayBuffer) {\n\t return fromTypedArray(that, object)\n\t }\n\t if (object instanceof ArrayBuffer) {\n\t return fromArrayBuffer(that, object)\n\t }\n\t }\n\t\n\t if (object.length) return fromArrayLike(that, object)\n\t\n\t return fromJsonObject(that, object)\n\t}\n\t\n\tfunction fromBuffer (that, buffer) {\n\t var length = checked(buffer.length) | 0\n\t that = allocate(that, length)\n\t buffer.copy(that, 0, 0, length)\n\t return that\n\t}\n\t\n\tfunction fromArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\t// Duplicate of fromArray() to keep fromArray() monomorphic.\n\tfunction fromTypedArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t // Truncating the elements is probably not what people expect from typed\n\t // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n\t // of the old Buffer constructor.\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\tfunction fromArrayBuffer (that, array) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t array.byteLength\n\t that = Buffer._augment(new Uint8Array(array))\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that = fromTypedArray(that, new Uint8Array(array))\n\t }\n\t return that\n\t}\n\t\n\tfunction fromArrayLike (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\t// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n\t// Returns a zero-length buffer for inputs that don't conform to the spec.\n\tfunction fromJsonObject (that, object) {\n\t var array\n\t var length = 0\n\t\n\t if (object.type === 'Buffer' && isArray(object.data)) {\n\t array = object.data\n\t length = checked(array.length) | 0\n\t }\n\t that = allocate(that, length)\n\t\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t Buffer.prototype.__proto__ = Uint8Array.prototype\n\t Buffer.__proto__ = Uint8Array\n\t} else {\n\t // pre-set for values that may exist in the future\n\t Buffer.prototype.length = undefined\n\t Buffer.prototype.parent = undefined\n\t}\n\t\n\tfunction allocate (that, length) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t that = Buffer._augment(new Uint8Array(length))\n\t that.__proto__ = Buffer.prototype\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that.length = length\n\t that._isBuffer = true\n\t }\n\t\n\t var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n\t if (fromPool) that.parent = rootParent\n\t\n\t return that\n\t}\n\t\n\tfunction checked (length) {\n\t // Note: cannot use `length < kMaxLength` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= kMaxLength()) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\t\n\tfunction SlowBuffer (subject, encoding) {\n\t if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\t\n\t var buf = new Buffer(subject, encoding)\n\t delete buf.parent\n\t return buf\n\t}\n\t\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t}\n\t\n\tBuffer.compare = function compare (a, b) {\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError('Arguments must be Buffers')\n\t }\n\t\n\t if (a === b) return 0\n\t\n\t var x = a.length\n\t var y = b.length\n\t\n\t var i = 0\n\t var len = Math.min(x, y)\n\t while (i < len) {\n\t if (a[i] !== b[i]) break\n\t\n\t ++i\n\t }\n\t\n\t if (i !== len) {\n\t x = a[i]\n\t y = b[i]\n\t }\n\t\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t}\n\t\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'binary':\n\t case 'base64':\n\t case 'raw':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t}\n\t\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\t\n\t if (list.length === 0) {\n\t return new Buffer(0)\n\t }\n\t\n\t var i\n\t if (length === undefined) {\n\t length = 0\n\t for (i = 0; i < list.length; i++) {\n\t length += list[i].length\n\t }\n\t }\n\t\n\t var buf = new Buffer(length)\n\t var pos = 0\n\t for (i = 0; i < list.length; i++) {\n\t var item = list[i]\n\t item.copy(buf, pos)\n\t pos += item.length\n\t }\n\t return buf\n\t}\n\t\n\tfunction byteLength (string, encoding) {\n\t if (typeof string !== 'string') string = '' + string\n\t\n\t var len = string.length\n\t if (len === 0) return 0\n\t\n\t // Use a for loop to avoid recursion\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'binary':\n\t // Deprecated\n\t case 'raw':\n\t case 'raws':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) return utf8ToBytes(string).length // assume utf8\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength\n\t\n\tfunction slowToString (encoding, start, end) {\n\t var loweredCase = false\n\t\n\t start = start | 0\n\t end = end === undefined || end === Infinity ? this.length : end | 0\n\t\n\t if (!encoding) encoding = 'utf8'\n\t if (start < 0) start = 0\n\t if (end > this.length) end = this.length\n\t if (end <= start) return ''\n\t\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\t\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\t\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\t\n\t case 'binary':\n\t return binarySlice(this, start, end)\n\t\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\t\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\t\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\t\n\tBuffer.prototype.toString = function toString () {\n\t var length = this.length | 0\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t}\n\t\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t}\n\t\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = ''\n\t var max = exports.INSPECT_MAX_BYTES\n\t if (this.length > 0) {\n\t str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n\t if (this.length > max) str += ' ... '\n\t }\n\t return ''\n\t}\n\t\n\tBuffer.prototype.compare = function compare (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return 0\n\t return Buffer.compare(this, b)\n\t}\n\t\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n\t if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n\t else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n\t byteOffset >>= 0\n\t\n\t if (this.length === 0) return -1\n\t if (byteOffset >= this.length) return -1\n\t\n\t // Negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\t\n\t if (typeof val === 'string') {\n\t if (val.length === 0) return -1 // special case: looking for empty string always fails\n\t return String.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t if (Buffer.isBuffer(val)) {\n\t return arrayIndexOf(this, val, byteOffset)\n\t }\n\t if (typeof val === 'number') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n\t return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t return arrayIndexOf(this, [ val ], byteOffset)\n\t }\n\t\n\t function arrayIndexOf (arr, val, byteOffset) {\n\t var foundIndex = -1\n\t for (var i = 0; byteOffset + i < arr.length; i++) {\n\t if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n\t if (foundIndex === -1) foundIndex = i\n\t if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n\t } else {\n\t foundIndex = -1\n\t }\n\t }\n\t return -1\n\t }\n\t\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\t\n\t// `get` is deprecated\n\tBuffer.prototype.get = function get (offset) {\n\t console.log('.get() is deprecated. Access using array indexes instead.')\n\t return this.readUInt8(offset)\n\t}\n\t\n\t// `set` is deprecated\n\tBuffer.prototype.set = function set (v, offset) {\n\t console.log('.set() is deprecated. Access using array indexes instead.')\n\t return this.writeUInt8(v, offset)\n\t}\n\t\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0\n\t var remaining = buf.length - offset\n\t if (!length) {\n\t length = remaining\n\t } else {\n\t length = Number(length)\n\t if (length > remaining) {\n\t length = remaining\n\t }\n\t }\n\t\n\t // must be an even number of digits\n\t var strLen = string.length\n\t if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\t\n\t if (length > strLen / 2) {\n\t length = strLen / 2\n\t }\n\t for (var i = 0; i < length; i++) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16)\n\t if (isNaN(parsed)) throw new Error('Invalid hex string')\n\t buf[offset + i] = parsed\n\t }\n\t return i\n\t}\n\t\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\t\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\t\n\tfunction binaryWrite (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\t\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\t\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\t\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8'\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0\n\t if (isFinite(length)) {\n\t length = length | 0\n\t if (encoding === undefined) encoding = 'utf8'\n\t } else {\n\t encoding = length\n\t length = undefined\n\t }\n\t // legacy write(string, encoding, offset, length) - remove in v0.13\n\t } else {\n\t var swap = encoding\n\t encoding = offset\n\t offset = length | 0\n\t length = swap\n\t }\n\t\n\t var remaining = this.length - offset\n\t if (length === undefined || length > remaining) length = remaining\n\t\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('attempt to write outside buffer bounds')\n\t }\n\t\n\t if (!encoding) encoding = 'utf8'\n\t\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\t\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\t\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\t\n\t case 'binary':\n\t return binaryWrite(this, string, offset, length)\n\t\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\t\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\t\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\t\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t}\n\t\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\t\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end)\n\t var res = []\n\t\n\t var i = start\n\t while (i < end) {\n\t var firstByte = buf[i]\n\t var codePoint = null\n\t var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t : (firstByte > 0xDF) ? 3\n\t : (firstByte > 0xBF) ? 2\n\t : 1\n\t\n\t if (i + bytesPerSequence <= end) {\n\t var secondByte, thirdByte, fourthByte, tempCodePoint\n\t\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1]\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t fourthByte = buf[i + 3]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD\n\t bytesPerSequence = 1\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n\t codePoint = 0xDC00 | codePoint & 0x3FF\n\t }\n\t\n\t res.push(codePoint)\n\t i += bytesPerSequence\n\t }\n\t\n\t return decodeCodePointsArray(res)\n\t}\n\t\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000\n\t\n\tfunction decodeCodePointsArray (codePoints) {\n\t var len = codePoints.length\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\t\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t var res = ''\n\t var i = 0\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t )\n\t }\n\t return res\n\t}\n\t\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\t\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i] & 0x7F)\n\t }\n\t return ret\n\t}\n\t\n\tfunction binarySlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\t\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i])\n\t }\n\t return ret\n\t}\n\t\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length\n\t\n\t if (!start || start < 0) start = 0\n\t if (!end || end < 0 || end > len) end = len\n\t\n\t var out = ''\n\t for (var i = start; i < end; i++) {\n\t out += toHex(buf[i])\n\t }\n\t return out\n\t}\n\t\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end)\n\t var res = ''\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n\t }\n\t return res\n\t}\n\t\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length\n\t start = ~~start\n\t end = end === undefined ? len : ~~end\n\t\n\t if (start < 0) {\n\t start += len\n\t if (start < 0) start = 0\n\t } else if (start > len) {\n\t start = len\n\t }\n\t\n\t if (end < 0) {\n\t end += len\n\t if (end < 0) end = 0\n\t } else if (end > len) {\n\t end = len\n\t }\n\t\n\t if (end < start) end = start\n\t\n\t var newBuf\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = Buffer._augment(this.subarray(start, end))\n\t } else {\n\t var sliceLen = end - start\n\t newBuf = new Buffer(sliceLen, undefined)\n\t for (var i = 0; i < sliceLen; i++) {\n\t newBuf[i] = this[i + start]\n\t }\n\t }\n\t\n\t if (newBuf.length) newBuf.parent = this.parent || this\n\t\n\t return newBuf\n\t}\n\t\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\t\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length)\n\t }\n\t\n\t var val = this[offset + --byteLength]\n\t var mul = 1\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul\n\t }\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t return this[offset]\n\t}\n\t\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return this[offset] | (this[offset + 1] << 8)\n\t}\n\t\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return (this[offset] << 8) | this[offset + 1]\n\t}\n\t\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t}\n\t\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t}\n\t\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t mul *= 0x80\n\t\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var i = byteLength\n\t var mul = 1\n\t var val = this[offset + --i]\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul\n\t }\n\t mul *= 0x80\n\t\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t}\n\t\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset] | (this[offset + 1] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\t\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset + 1] | (this[offset] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\t\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t}\n\t\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t}\n\t\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, true, 23, 4)\n\t}\n\t\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, false, 23, 4)\n\t}\n\t\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, true, 52, 8)\n\t}\n\t\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, false, 52, 8)\n\t}\n\t\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t}\n\t\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\t\n\t var mul = 1\n\t var i = 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\t\n\t var i = byteLength - 1\n\t var mul = 1\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\t\n\tfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n\t buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n\t (littleEndian ? i : 1 - i) * 8\n\t }\n\t}\n\t\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\t\n\tfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffffffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n\t buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n\t }\n\t}\n\t\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset + 3] = (value >>> 24)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\t\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\t\n\t var i = 0\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\t\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\t\n\t var i = byteLength - 1\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t if (value < 0) value = 0xff + value + 1\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\t\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 3] = (value >>> 24)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (value < 0) value = 0xffffffff + value + 1\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\t\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t if (offset < 0) throw new RangeError('index out of range')\n\t}\n\t\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4)\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t}\n\t\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t}\n\t\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8)\n\t return offset + 8\n\t}\n\t\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t}\n\t\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t}\n\t\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0\n\t if (!end && end !== 0) end = this.length\n\t if (targetStart >= target.length) targetStart = target.length\n\t if (!targetStart) targetStart = 0\n\t if (end > 0 && end < start) end = start\n\t\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\t\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\t\n\t // Are we oob?\n\t if (end > this.length) end = this.length\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start\n\t }\n\t\n\t var len = end - start\n\t var i\n\t\n\t if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (i = len - 1; i >= 0; i--) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t // ascending copy from start\n\t for (i = 0; i < len; i++) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else {\n\t target._set(this.subarray(start, start + len), targetStart)\n\t }\n\t\n\t return len\n\t}\n\t\n\t// fill(value, start=0, end=buffer.length)\n\tBuffer.prototype.fill = function fill (value, start, end) {\n\t if (!value) value = 0\n\t if (!start) start = 0\n\t if (!end) end = this.length\n\t\n\t if (end < start) throw new RangeError('end < start')\n\t\n\t // Fill 0 bytes; we're done\n\t if (end === start) return\n\t if (this.length === 0) return\n\t\n\t if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n\t if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\t\n\t var i\n\t if (typeof value === 'number') {\n\t for (i = start; i < end; i++) {\n\t this[i] = value\n\t }\n\t } else {\n\t var bytes = utf8ToBytes(value.toString())\n\t var len = bytes.length\n\t for (i = start; i < end; i++) {\n\t this[i] = bytes[i % len]\n\t }\n\t }\n\t\n\t return this\n\t}\n\t\n\t/**\n\t * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n\t * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n\t */\n\tBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n\t if (typeof Uint8Array !== 'undefined') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t return (new Buffer(this)).buffer\n\t } else {\n\t var buf = new Uint8Array(this.length)\n\t for (var i = 0, len = buf.length; i < len; i += 1) {\n\t buf[i] = this[i]\n\t }\n\t return buf.buffer\n\t }\n\t } else {\n\t throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n\t }\n\t}\n\t\n\t// HELPER FUNCTIONS\n\t// ================\n\t\n\tvar BP = Buffer.prototype\n\t\n\t/**\n\t * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n\t */\n\tBuffer._augment = function _augment (arr) {\n\t arr.constructor = Buffer\n\t arr._isBuffer = true\n\t\n\t // save reference to original Uint8Array set method before overwriting\n\t arr._set = arr.set\n\t\n\t // deprecated\n\t arr.get = BP.get\n\t arr.set = BP.set\n\t\n\t arr.write = BP.write\n\t arr.toString = BP.toString\n\t arr.toLocaleString = BP.toString\n\t arr.toJSON = BP.toJSON\n\t arr.equals = BP.equals\n\t arr.compare = BP.compare\n\t arr.indexOf = BP.indexOf\n\t arr.copy = BP.copy\n\t arr.slice = BP.slice\n\t arr.readUIntLE = BP.readUIntLE\n\t arr.readUIntBE = BP.readUIntBE\n\t arr.readUInt8 = BP.readUInt8\n\t arr.readUInt16LE = BP.readUInt16LE\n\t arr.readUInt16BE = BP.readUInt16BE\n\t arr.readUInt32LE = BP.readUInt32LE\n\t arr.readUInt32BE = BP.readUInt32BE\n\t arr.readIntLE = BP.readIntLE\n\t arr.readIntBE = BP.readIntBE\n\t arr.readInt8 = BP.readInt8\n\t arr.readInt16LE = BP.readInt16LE\n\t arr.readInt16BE = BP.readInt16BE\n\t arr.readInt32LE = BP.readInt32LE\n\t arr.readInt32BE = BP.readInt32BE\n\t arr.readFloatLE = BP.readFloatLE\n\t arr.readFloatBE = BP.readFloatBE\n\t arr.readDoubleLE = BP.readDoubleLE\n\t arr.readDoubleBE = BP.readDoubleBE\n\t arr.writeUInt8 = BP.writeUInt8\n\t arr.writeUIntLE = BP.writeUIntLE\n\t arr.writeUIntBE = BP.writeUIntBE\n\t arr.writeUInt16LE = BP.writeUInt16LE\n\t arr.writeUInt16BE = BP.writeUInt16BE\n\t arr.writeUInt32LE = BP.writeUInt32LE\n\t arr.writeUInt32BE = BP.writeUInt32BE\n\t arr.writeIntLE = BP.writeIntLE\n\t arr.writeIntBE = BP.writeIntBE\n\t arr.writeInt8 = BP.writeInt8\n\t arr.writeInt16LE = BP.writeInt16LE\n\t arr.writeInt16BE = BP.writeInt16BE\n\t arr.writeInt32LE = BP.writeInt32LE\n\t arr.writeInt32BE = BP.writeInt32BE\n\t arr.writeFloatLE = BP.writeFloatLE\n\t arr.writeFloatBE = BP.writeFloatBE\n\t arr.writeDoubleLE = BP.writeDoubleLE\n\t arr.writeDoubleBE = BP.writeDoubleBE\n\t arr.fill = BP.fill\n\t arr.inspect = BP.inspect\n\t arr.toArrayBuffer = BP.toArrayBuffer\n\t\n\t return arr\n\t}\n\t\n\tvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\t\n\tfunction base64clean (str) {\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '='\n\t }\n\t return str\n\t}\n\t\n\tfunction stringtrim (str) {\n\t if (str.trim) return str.trim()\n\t return str.replace(/^\\s+|\\s+$/g, '')\n\t}\n\t\n\tfunction toHex (n) {\n\t if (n < 16) return '0' + n.toString(16)\n\t return n.toString(16)\n\t}\n\t\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity\n\t var codePoint\n\t var length = string.length\n\t var leadSurrogate = null\n\t var bytes = []\n\t\n\t for (var i = 0; i < length; i++) {\n\t codePoint = string.charCodeAt(i)\n\t\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t }\n\t\n\t // valid lead\n\t leadSurrogate = codePoint\n\t\n\t continue\n\t }\n\t\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t leadSurrogate = codePoint\n\t continue\n\t }\n\t\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t }\n\t\n\t leadSurrogate = null\n\t\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint)\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\t\n\t return bytes\n\t}\n\t\n\tfunction asciiToBytes (str) {\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF)\n\t }\n\t return byteArray\n\t}\n\t\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t if ((units -= 2) < 0) break\n\t\n\t c = str.charCodeAt(i)\n\t hi = c >> 8\n\t lo = c % 256\n\t byteArray.push(lo)\n\t byteArray.push(hi)\n\t }\n\t\n\t return byteArray\n\t}\n\t\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\t\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; i++) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i]\n\t }\n\t return i\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14).Buffer, (function() { return this; }())))\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t\n\t;(function (exports) {\n\t\t'use strict';\n\t\n\t var Arr = (typeof Uint8Array !== 'undefined')\n\t ? Uint8Array\n\t : Array\n\t\n\t\tvar PLUS = '+'.charCodeAt(0)\n\t\tvar SLASH = '/'.charCodeAt(0)\n\t\tvar NUMBER = '0'.charCodeAt(0)\n\t\tvar LOWER = 'a'.charCodeAt(0)\n\t\tvar UPPER = 'A'.charCodeAt(0)\n\t\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\t\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\t\n\t\tfunction decode (elt) {\n\t\t\tvar code = elt.charCodeAt(0)\n\t\t\tif (code === PLUS ||\n\t\t\t code === PLUS_URL_SAFE)\n\t\t\t\treturn 62 // '+'\n\t\t\tif (code === SLASH ||\n\t\t\t code === SLASH_URL_SAFE)\n\t\t\t\treturn 63 // '/'\n\t\t\tif (code < NUMBER)\n\t\t\t\treturn -1 //no match\n\t\t\tif (code < NUMBER + 10)\n\t\t\t\treturn code - NUMBER + 26 + 26\n\t\t\tif (code < UPPER + 26)\n\t\t\t\treturn code - UPPER\n\t\t\tif (code < LOWER + 26)\n\t\t\t\treturn code - LOWER + 26\n\t\t}\n\t\n\t\tfunction b64ToByteArray (b64) {\n\t\t\tvar i, j, l, tmp, placeHolders, arr\n\t\n\t\t\tif (b64.length % 4 > 0) {\n\t\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t\t}\n\t\n\t\t\t// the number of equal signs (place holders)\n\t\t\t// if there are two placeholders, than the two characters before it\n\t\t\t// represent one byte\n\t\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t\t// this is just a cheap hack to not do indexOf twice\n\t\t\tvar len = b64.length\n\t\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\t\n\t\t\t// base64 is 4/3 + up to two characters of the original data\n\t\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\t\n\t\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\t\n\t\t\tvar L = 0\n\t\n\t\t\tfunction push (v) {\n\t\t\t\tarr[L++] = v\n\t\t\t}\n\t\n\t\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t}\n\t\n\t\t\tif (placeHolders === 2) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t} else if (placeHolders === 1) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t}\n\t\n\t\t\treturn arr\n\t\t}\n\t\n\t\tfunction uint8ToBase64 (uint8) {\n\t\t\tvar i,\n\t\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\t\toutput = \"\",\n\t\t\t\ttemp, length\n\t\n\t\t\tfunction encode (num) {\n\t\t\t\treturn lookup.charAt(num)\n\t\t\t}\n\t\n\t\t\tfunction tripletToBase64 (num) {\n\t\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t\t}\n\t\n\t\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\t\toutput += tripletToBase64(temp)\n\t\t\t}\n\t\n\t\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\t\tswitch (extraBytes) {\n\t\t\t\tcase 1:\n\t\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\t\toutput += '=='\n\t\t\t\t\tbreak\n\t\t\t\tcase 2:\n\t\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\t\toutput += '='\n\t\t\t\t\tbreak\n\t\t\t}\n\t\n\t\t\treturn output\n\t\t}\n\t\n\t\texports.toByteArray = b64ToByteArray\n\t\texports.fromByteArray = uint8ToBase64\n\t}( false ? (this.base64js = {}) : exports))\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var nBits = -7\n\t var i = isLE ? (nBytes - 1) : 0\n\t var d = isLE ? -1 : 1\n\t var s = buffer[offset + i]\n\t\n\t i += d\n\t\n\t e = s & ((1 << (-nBits)) - 1)\n\t s >>= (-nBits)\n\t nBits += eLen\n\t for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\t\n\t m = e & ((1 << (-nBits)) - 1)\n\t e >>= (-nBits)\n\t nBits += mLen\n\t for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\t\n\t if (e === 0) {\n\t e = 1 - eBias\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen)\n\t e = e - eBias\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t}\n\t\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n\t var i = isLE ? 0 : (nBytes - 1)\n\t var d = isLE ? 1 : -1\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\t\n\t value = Math.abs(value)\n\t\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0\n\t e = eMax\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2)\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--\n\t c *= 2\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias)\n\t }\n\t if (value * c >= 2) {\n\t e++\n\t c /= 2\n\t }\n\t\n\t if (e + eBias >= eMax) {\n\t m = 0\n\t e = eMax\n\t } else if (e + eBias >= 1) {\n\t m = (value * c - 1) * Math.pow(2, mLen)\n\t e = e + eBias\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n\t e = 0\n\t }\n\t }\n\t\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\t\n\t e = (e << mLen) | m\n\t eLen += mLen\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\t\n\t buffer[offset + i - d] |= s * 128\n\t}\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = Array.isArray || function (arr) {\n\t return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\t\n\t// Matches absolute URLs with optional protocol\n\t// https://... file://... //...\n\tvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\t\n\t// Special treatment in node.js for the file: protocol\n\tvar fileProtocol = 'file://';\n\t\n\t// Validate and cleanup URL to ensure that it is allowed to be accessed\n\t// Returns cleaned up URL, or false if access is not allowed\n\tfunction sanitizeUrl(opt) {\n\t var url = opt.url;\n\t if (!url && opt.file) { return fileProtocol + opt.file; }\n\t\n\t // In case this is a relative url (has no host), prepend opt.baseURL\n\t if (opt.baseURL && !protocol_re.test(url)) {\n\t if (!startsWith(url, '/') && opt.baseURL[opt.baseURL.length-1] !== '/') {\n\t url = '/' + url; // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n\t }\n\t url = opt.baseURL + url;\n\t }\n\t // relative protocol, starts with '//'\n\t if (!load.useXHR && startsWith(url, '//')) {\n\t url = (opt.defaultProtocol || 'http') + ':' + url;\n\t }\n\t // If opt.domainWhiteList is set, only allows url, whose hostname\n\t // * Is the same as the origin (window.location.hostname)\n\t // * Equals one of the values in the whitelist\n\t // * Is a proper subdomain of one of the values in the whitelist\n\t if (opt.domainWhiteList) {\n\t var domain, origin;\n\t if (load.useXHR) {\n\t var a = document.createElement('a');\n\t a.href = url;\n\t // From http://stackoverflow.com/questions/736513/how-do-i-parse-a-url-into-hostname-and-path-in-javascript\n\t // IE doesn't populate all link properties when setting .href with a relative URL,\n\t // however .href will return an absolute URL which then can be used on itself\n\t // to populate these additional fields.\n\t if (a.host === '') {\n\t a.href = a.href;\n\t }\n\t domain = a.hostname.toLowerCase();\n\t origin = window.location.hostname;\n\t } else {\n\t // relative protocol is broken: https://github.com/defunctzombie/node-url/issues/5\n\t var parts = __webpack_require__(19).parse(url);\n\t domain = parts.hostname;\n\t origin = null;\n\t }\n\t\n\t if (origin !== domain) {\n\t var whiteListed = opt.domainWhiteList.some(function(d) {\n\t var idx = domain.length - d.length;\n\t return d === domain ||\n\t (idx > 1 && domain[idx-1] === '.' && domain.lastIndexOf(d) === idx);\n\t });\n\t if (!whiteListed) {\n\t throw 'URL is not whitelisted: ' + url;\n\t }\n\t }\n\t }\n\t return url;\n\t}\n\t\n\tfunction load(opt, callback) {\n\t return load.loader(opt, callback);\n\t}\n\t\n\tfunction loader(opt, callback) {\n\t var error = callback || function(e) { throw e; }, url;\n\t\n\t try {\n\t url = load.sanitizeUrl(opt); // enable override\n\t } catch (err) {\n\t error(err);\n\t return;\n\t }\n\t\n\t if (!url) {\n\t error('Invalid URL: ' + opt.url);\n\t } else if (load.useXHR) {\n\t // on client, use xhr\n\t return load.xhr(url, opt, callback);\n\t } else if (startsWith(url, fileProtocol)) {\n\t // on server, if url starts with 'file://', strip it and load from file\n\t return load.file(url.slice(fileProtocol.length), opt, callback);\n\t } else if (url.indexOf('://') < 0) { // TODO better protocol check?\n\t // on server, if no protocol assume file\n\t return load.file(url, opt, callback);\n\t } else {\n\t // for regular URLs on server\n\t return load.http(url, opt, callback);\n\t }\n\t}\n\t\n\tfunction xhrHasResponse(request) {\n\t var type = request.responseType;\n\t return type && type !== 'text' ?\n\t request.response : // null on error\n\t request.responseText; // '' on error\n\t}\n\t\n\tfunction xhr(url, opt, callback) {\n\t var async = !!callback;\n\t var request = new XMLHttpRequest();\n\t // If IE does not support CORS, use XDomainRequest (copied from d3.xhr)\n\t if (typeof XDomainRequest !== 'undefined' &&\n\t !('withCredentials' in request) &&\n\t /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\t\n\t function respond() {\n\t var status = request.status;\n\t if (!status && xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n\t callback(null, request.responseText);\n\t } else {\n\t callback(request, null);\n\t }\n\t }\n\t\n\t if (async) {\n\t if ('onload' in request) {\n\t request.onload = request.onerror = respond;\n\t } else {\n\t request.onreadystatechange = function() {\n\t if (request.readyState > 3) respond();\n\t };\n\t }\n\t }\n\t\n\t request.open('GET', url, async);\n\t /* istanbul ignore else */\n\t if (request.setRequestHeader) {\n\t var headers = util.extend({}, load.headers, opt.headers);\n\t for (var name in headers) {\n\t request.setRequestHeader(name, headers[name]);\n\t }\n\t }\n\t request.send();\n\t\n\t if (!async && xhrHasResponse(request)) {\n\t return request.responseText;\n\t }\n\t}\n\t\n\tfunction file(filename, opt, callback) {\n\t var fs = __webpack_require__(20);\n\t if (!callback) {\n\t return fs.readFileSync(filename, 'utf8');\n\t }\n\t fs.readFile(filename, callback);\n\t}\n\t\n\tfunction http(url, opt, callback) {\n\t var headers = util.extend({}, load.headers, opt.headers);\n\t\n\t if (!callback) {\n\t return __webpack_require__(21)('GET', url, {headers: headers}).getBody();\n\t }\n\t\n\t var options = {url: url, encoding: null, gzip: true, headers: headers};\n\t __webpack_require__(22)(options, function(error, response, body) {\n\t if (!error && response.statusCode === 200) {\n\t callback(null, body);\n\t } else {\n\t error = error ||\n\t 'Load failed with response code ' + response.statusCode + '.';\n\t callback(error, null);\n\t }\n\t });\n\t}\n\t\n\tfunction startsWith(string, searchString) {\n\t return string == null ? false : string.lastIndexOf(searchString, 0) === 0;\n\t}\n\t\n\t// Allow these functions to be overriden by the user of the library\n\tload.loader = loader;\n\tload.sanitizeUrl = sanitizeUrl;\n\tload.xhr = xhr;\n\tload.file = file;\n\tload.http = http;\n\t\n\t// Default settings\n\tload.useXHR = (typeof XMLHttpRequest !== 'undefined');\n\tload.headers = {};\n\t\n\tmodule.exports = load;\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t type = __webpack_require__(24),\n\t formats = __webpack_require__(25),\n\t timeF = __webpack_require__(32).time;\n\t\n\tfunction read(data, format) {\n\t var type = (format && format.type) || 'json';\n\t data = formats[type](data, format);\n\t if (format && format.parse) parse(data, format.parse);\n\t return data;\n\t}\n\t\n\tfunction parse(data, types) {\n\t var cols, parsers, d, i, j, clen, len = data.length;\n\t\n\t types = (types==='auto') ? type.inferAll(data) : util.duplicate(types);\n\t cols = util.keys(types);\n\t parsers = cols.map(function(c) {\n\t var t = types[c];\n\t if (t && t.indexOf('date:') === 0) {\n\t var parts = t.split(':', 2),\n\t pattern = parts[1];\n\t if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n\t (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n\t pattern = pattern.slice(1, -1);\n\t } else {\n\t throw Error('Format pattern must be quoted: ' + pattern);\n\t }\n\t pattern = timeF(pattern);\n\t return function(v) { return pattern.parse(v); };\n\t }\n\t if (!type.parsers[t]) {\n\t throw Error('Illegal format pattern: ' + c + ':' + t);\n\t }\n\t return type.parsers[t];\n\t });\n\t\n\t for (i=0, clen=cols.length; i= N) return EOF; // special case: end of file\n\t if (eol) return eol = false, EOL; // special case: end of line\n\t\n\t // special case: quotes\n\t var j = I, c;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, \"\\\"\");\n\t }\n\t\n\t // common case: find next delimiter or newline\n\t while (I < N) {\n\t var k = 1;\n\t c = text.charCodeAt(I++);\n\t if (c === 10) eol = true; // \\n\n\t else if (c === 13) { eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } // \\r|\\r\\n\n\t else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t\n\t // special case: last token before EOF\n\t return text.slice(j);\n\t }\n\t\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t\n\t return rows;\n\t }\n\t\n\t this.format = function(rows, columns) {\n\t if (columns == null) columns = inferColumns(rows);\n\t return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n\t return columns.map(function(column) {\n\t return formatValue(row[column]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t };\n\t\n\t this.formatRows = function(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t };\n\t\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t\n\t function formatValue(text) {\n\t return reFormat.test(text) ? \"\\\"\" + text.replace(/\\\"/g, \"\\\"\\\"\") + \"\\\"\" : text;\n\t }\n\t }\n\t\n\t dsv.prototype = Dsv.prototype;\n\t\n\t var csv = dsv(\",\");\n\t var tsv = dsv(\"\\t\");\n\t\n\t var version = \"0.1.14\";\n\t\n\t exports.version = version;\n\t exports.dsv = dsv;\n\t exports.csv = csv;\n\t exports.tsv = tsv;\n\t\n\t}));\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\t\n\tmodule.exports = function(data, format) {\n\t var d = util.isObject(data) && !util.isBuffer(data) ?\n\t data : JSON.parse(data);\n\t if (format && format.property) {\n\t d = util.accessor(format.property)(d);\n\t }\n\t return d;\n\t};\n\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar json = __webpack_require__(28);\n\t\n\tvar reader = function(data, format) {\n\t var topojson = reader.topojson;\n\t if (topojson == null) { throw Error('TopoJSON library not loaded.'); }\n\t\n\t var t = json(data, format), obj;\n\t\n\t if (format && format.feature) {\n\t if ((obj = t.objects[format.feature])) {\n\t return topojson.feature(t, obj).features;\n\t } else {\n\t throw Error('Invalid TopoJSON object: ' + format.feature);\n\t }\n\t } else if (format && format.mesh) {\n\t if ((obj = t.objects[format.mesh])) {\n\t return [topojson.mesh(t, t.objects[format.mesh])];\n\t } else {\n\t throw Error('Invalid TopoJSON object: ' + format.mesh);\n\t }\n\t } else {\n\t throw Error('Missing TopoJSON feature or mesh parameter.');\n\t }\n\t};\n\t\n\treader.topojson = __webpack_require__(30);\n\tmodule.exports = reader;\n\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.topojson = global.topojson || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t function noop() {}\n\t\n\t function transformAbsolute(transform) {\n\t if (!transform) return noop;\n\t var x0,\n\t y0,\n\t kx = transform.scale[0],\n\t ky = transform.scale[1],\n\t dx = transform.translate[0],\n\t dy = transform.translate[1];\n\t return function(point, i) {\n\t if (!i) x0 = y0 = 0;\n\t point[0] = (x0 += point[0]) * kx + dx;\n\t point[1] = (y0 += point[1]) * ky + dy;\n\t };\n\t }\n\t\n\t function transformRelative(transform) {\n\t if (!transform) return noop;\n\t var x0,\n\t y0,\n\t kx = transform.scale[0],\n\t ky = transform.scale[1],\n\t dx = transform.translate[0],\n\t dy = transform.translate[1];\n\t return function(point, i) {\n\t if (!i) x0 = y0 = 0;\n\t var x1 = Math.round((point[0] - dx) / kx),\n\t y1 = Math.round((point[1] - dy) / ky);\n\t point[0] = x1 - x0;\n\t point[1] = y1 - y0;\n\t x0 = x1;\n\t y0 = y1;\n\t };\n\t }\n\t\n\t function reverse(array, n) {\n\t var t, j = array.length, i = j - n;\n\t while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n\t }\n\t\n\t function bisect(a, x) {\n\t var lo = 0, hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (a[mid] < x) lo = mid + 1;\n\t else hi = mid;\n\t }\n\t return lo;\n\t }\n\t\n\t function feature(topology, o) {\n\t return o.type === \"GeometryCollection\" ? {\n\t type: \"FeatureCollection\",\n\t features: o.geometries.map(function(o) { return feature$1(topology, o); })\n\t } : feature$1(topology, o);\n\t }\n\t\n\t function feature$1(topology, o) {\n\t var f = {\n\t type: \"Feature\",\n\t id: o.id,\n\t properties: o.properties || {},\n\t geometry: object(topology, o)\n\t };\n\t if (o.id == null) delete f.id;\n\t return f;\n\t }\n\t\n\t function object(topology, o) {\n\t var absolute = transformAbsolute(topology.transform),\n\t arcs = topology.arcs;\n\t\n\t function arc(i, points) {\n\t if (points.length) points.pop();\n\t for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n\t points.push(p = a[k].slice());\n\t absolute(p, k);\n\t }\n\t if (i < 0) reverse(points, n);\n\t }\n\t\n\t function point(p) {\n\t p = p.slice();\n\t absolute(p, 0);\n\t return p;\n\t }\n\t\n\t function line(arcs) {\n\t var points = [];\n\t for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n\t if (points.length < 2) points.push(points[0].slice());\n\t return points;\n\t }\n\t\n\t function ring(arcs) {\n\t var points = line(arcs);\n\t while (points.length < 4) points.push(points[0].slice());\n\t return points;\n\t }\n\t\n\t function polygon(arcs) {\n\t return arcs.map(ring);\n\t }\n\t\n\t function geometry(o) {\n\t var t = o.type;\n\t return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n\t : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n\t : null;\n\t }\n\t\n\t var geometryType = {\n\t Point: function(o) { return point(o.coordinates); },\n\t MultiPoint: function(o) { return o.coordinates.map(point); },\n\t LineString: function(o) { return line(o.arcs); },\n\t MultiLineString: function(o) { return o.arcs.map(line); },\n\t Polygon: function(o) { return polygon(o.arcs); },\n\t MultiPolygon: function(o) { return o.arcs.map(polygon); }\n\t };\n\t\n\t return geometry(o);\n\t }\n\t\n\t function stitchArcs(topology, arcs) {\n\t var stitchedArcs = {},\n\t fragmentByStart = {},\n\t fragmentByEnd = {},\n\t fragments = [],\n\t emptyIndex = -1;\n\t\n\t // Stitch empty arcs first, since they may be subsumed by other arcs.\n\t arcs.forEach(function(i, j) {\n\t var arc = topology.arcs[i < 0 ? ~i : i], t;\n\t if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n\t t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n\t }\n\t });\n\t\n\t arcs.forEach(function(i) {\n\t var e = ends(i),\n\t start = e[0],\n\t end = e[1],\n\t f, g;\n\t\n\t if (f = fragmentByEnd[start]) {\n\t delete fragmentByEnd[f.end];\n\t f.push(i);\n\t f.end = end;\n\t if (g = fragmentByStart[end]) {\n\t delete fragmentByStart[g.start];\n\t var fg = g === f ? f : f.concat(g);\n\t fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n\t } else {\n\t fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n\t }\n\t } else if (f = fragmentByStart[end]) {\n\t delete fragmentByStart[f.start];\n\t f.unshift(i);\n\t f.start = start;\n\t if (g = fragmentByEnd[start]) {\n\t delete fragmentByEnd[g.end];\n\t var gf = g === f ? f : g.concat(f);\n\t fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n\t } else {\n\t fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n\t }\n\t } else {\n\t f = [i];\n\t fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n\t }\n\t });\n\t\n\t function ends(i) {\n\t var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n\t if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n\t else p1 = arc[arc.length - 1];\n\t return i < 0 ? [p1, p0] : [p0, p1];\n\t }\n\t\n\t function flush(fragmentByEnd, fragmentByStart) {\n\t for (var k in fragmentByEnd) {\n\t var f = fragmentByEnd[k];\n\t delete fragmentByStart[f.start];\n\t delete f.start;\n\t delete f.end;\n\t f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n\t fragments.push(f);\n\t }\n\t }\n\t\n\t flush(fragmentByEnd, fragmentByStart);\n\t flush(fragmentByStart, fragmentByEnd);\n\t arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\t\n\t return fragments;\n\t }\n\t\n\t function mesh(topology) {\n\t return object(topology, meshArcs.apply(this, arguments));\n\t }\n\t\n\t function meshArcs(topology, o, filter) {\n\t var arcs = [];\n\t\n\t function arc(i) {\n\t var j = i < 0 ? ~i : i;\n\t (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n\t }\n\t\n\t function line(arcs) {\n\t arcs.forEach(arc);\n\t }\n\t\n\t function polygon(arcs) {\n\t arcs.forEach(line);\n\t }\n\t\n\t function geometry(o) {\n\t if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n\t else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n\t }\n\t\n\t if (arguments.length > 1) {\n\t var geomsByArc = [],\n\t geom;\n\t\n\t var geometryType = {\n\t LineString: line,\n\t MultiLineString: polygon,\n\t Polygon: polygon,\n\t MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n\t };\n\t\n\t geometry(o);\n\t\n\t geomsByArc.forEach(arguments.length < 3\n\t ? function(geoms) { arcs.push(geoms[0].i); }\n\t : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\t } else {\n\t for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n\t }\n\t\n\t return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n\t }\n\t\n\t function cartesianTriangleArea(triangle) {\n\t var a = triangle[0], b = triangle[1], c = triangle[2];\n\t return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n\t }\n\t\n\t function ring(ring) {\n\t var i = -1,\n\t n = ring.length,\n\t a,\n\t b = ring[n - 1],\n\t area = 0;\n\t\n\t while (++i < n) {\n\t a = b;\n\t b = ring[i];\n\t area += a[0] * b[1] - a[1] * b[0];\n\t }\n\t\n\t return area / 2;\n\t }\n\t\n\t function merge(topology) {\n\t return object(topology, mergeArcs.apply(this, arguments));\n\t }\n\t\n\t function mergeArcs(topology, objects) {\n\t var polygonsByArc = {},\n\t polygons = [],\n\t components = [];\n\t\n\t objects.forEach(function(o) {\n\t if (o.type === \"Polygon\") register(o.arcs);\n\t else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n\t });\n\t\n\t function register(polygon) {\n\t polygon.forEach(function(ring$$) {\n\t ring$$.forEach(function(arc) {\n\t (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n\t });\n\t });\n\t polygons.push(polygon);\n\t }\n\t\n\t function area(ring$$) {\n\t return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n\t }\n\t\n\t polygons.forEach(function(polygon) {\n\t if (!polygon._) {\n\t var component = [],\n\t neighbors = [polygon];\n\t polygon._ = 1;\n\t components.push(component);\n\t while (polygon = neighbors.pop()) {\n\t component.push(polygon);\n\t polygon.forEach(function(ring$$) {\n\t ring$$.forEach(function(arc) {\n\t polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n\t if (!polygon._) {\n\t polygon._ = 1;\n\t neighbors.push(polygon);\n\t }\n\t });\n\t });\n\t });\n\t }\n\t }\n\t });\n\t\n\t polygons.forEach(function(polygon) {\n\t delete polygon._;\n\t });\n\t\n\t return {\n\t type: \"MultiPolygon\",\n\t arcs: components.map(function(polygons) {\n\t var arcs = [], n;\n\t\n\t // Extract the exterior (unique) arcs.\n\t polygons.forEach(function(polygon) {\n\t polygon.forEach(function(ring$$) {\n\t ring$$.forEach(function(arc) {\n\t if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n\t arcs.push(arc);\n\t }\n\t });\n\t });\n\t });\n\t\n\t // Stitch the arcs into one or more rings.\n\t arcs = stitchArcs(topology, arcs);\n\t\n\t // If more than one ring is returned,\n\t // at most one of these rings can be the exterior;\n\t // choose the one with the greatest absolute area.\n\t if ((n = arcs.length) > 1) {\n\t for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n\t if ((ki = area(arcs[i])) > k) {\n\t t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n\t }\n\t }\n\t }\n\t\n\t return arcs;\n\t })\n\t };\n\t }\n\t\n\t function neighbors(objects) {\n\t var indexesByArc = {}, // arc index -> array of object indexes\n\t neighbors = objects.map(function() { return []; });\n\t\n\t function line(arcs, i) {\n\t arcs.forEach(function(a) {\n\t if (a < 0) a = ~a;\n\t var o = indexesByArc[a];\n\t if (o) o.push(i);\n\t else indexesByArc[a] = [i];\n\t });\n\t }\n\t\n\t function polygon(arcs, i) {\n\t arcs.forEach(function(arc) { line(arc, i); });\n\t }\n\t\n\t function geometry(o, i) {\n\t if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n\t else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n\t }\n\t\n\t var geometryType = {\n\t LineString: line,\n\t MultiLineString: polygon,\n\t Polygon: polygon,\n\t MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n\t };\n\t\n\t objects.forEach(geometry);\n\t\n\t for (var i in indexesByArc) {\n\t for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n\t for (var k = j + 1; k < m; ++k) {\n\t var ij = indexes[j], ik = indexes[k], n;\n\t if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n\t if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n\t }\n\t }\n\t }\n\t\n\t return neighbors;\n\t }\n\t\n\t function compareArea(a, b) {\n\t return a[1][2] - b[1][2];\n\t }\n\t\n\t function minAreaHeap() {\n\t var heap = {},\n\t array = [],\n\t size = 0;\n\t\n\t heap.push = function(object) {\n\t up(array[object._ = size] = object, size++);\n\t return size;\n\t };\n\t\n\t heap.pop = function() {\n\t if (size <= 0) return;\n\t var removed = array[0], object;\n\t if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n\t return removed;\n\t };\n\t\n\t heap.remove = function(removed) {\n\t var i = removed._, object;\n\t if (array[i] !== removed) return; // invalid request\n\t if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n\t return i;\n\t };\n\t\n\t function up(object, i) {\n\t while (i > 0) {\n\t var j = ((i + 1) >> 1) - 1,\n\t parent = array[j];\n\t if (compareArea(object, parent) >= 0) break;\n\t array[parent._ = i] = parent;\n\t array[object._ = i = j] = object;\n\t }\n\t }\n\t\n\t function down(object, i) {\n\t while (true) {\n\t var r = (i + 1) << 1,\n\t l = r - 1,\n\t j = i,\n\t child = array[j];\n\t if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n\t if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n\t if (j === i) break;\n\t array[child._ = i] = child;\n\t array[object._ = i = j] = object;\n\t }\n\t }\n\t\n\t return heap;\n\t }\n\t\n\t function presimplify(topology, triangleArea) {\n\t var absolute = transformAbsolute(topology.transform),\n\t relative = transformRelative(topology.transform),\n\t heap = minAreaHeap();\n\t\n\t if (!triangleArea) triangleArea = cartesianTriangleArea;\n\t\n\t topology.arcs.forEach(function(arc) {\n\t var triangles = [],\n\t maxArea = 0,\n\t triangle,\n\t i,\n\t n,\n\t p;\n\t\n\t // To store each point’s effective area, we create a new array rather than\n\t // extending the passed-in point to workaround a Chrome/V8 bug (getting\n\t // stuck in smi mode). For midpoints, the initial effective area of\n\t // Infinity will be computed in the next step.\n\t for (i = 0, n = arc.length; i < n; ++i) {\n\t p = arc[i];\n\t absolute(arc[i] = [p[0], p[1], Infinity], i);\n\t }\n\t\n\t for (i = 1, n = arc.length - 1; i < n; ++i) {\n\t triangle = arc.slice(i - 1, i + 2);\n\t triangle[1][2] = triangleArea(triangle);\n\t triangles.push(triangle);\n\t heap.push(triangle);\n\t }\n\t\n\t for (i = 0, n = triangles.length; i < n; ++i) {\n\t triangle = triangles[i];\n\t triangle.previous = triangles[i - 1];\n\t triangle.next = triangles[i + 1];\n\t }\n\t\n\t while (triangle = heap.pop()) {\n\t var previous = triangle.previous,\n\t next = triangle.next;\n\t\n\t // If the area of the current point is less than that of the previous point\n\t // to be eliminated, use the latter's area instead. This ensures that the\n\t // current point cannot be eliminated without eliminating previously-\n\t // eliminated points.\n\t if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n\t else maxArea = triangle[1][2];\n\t\n\t if (previous) {\n\t previous.next = next;\n\t previous[2] = triangle[2];\n\t update(previous);\n\t }\n\t\n\t if (next) {\n\t next.previous = previous;\n\t next[0] = triangle[0];\n\t update(next);\n\t }\n\t }\n\t\n\t arc.forEach(relative);\n\t });\n\t\n\t function update(triangle) {\n\t heap.remove(triangle);\n\t triangle[1][2] = triangleArea(triangle);\n\t heap.push(triangle);\n\t }\n\t\n\t return topology;\n\t }\n\t\n\t var version = \"1.6.26\";\n\t\n\t exports.version = version;\n\t exports.mesh = mesh;\n\t exports.meshArcs = meshArcs;\n\t exports.merge = merge;\n\t exports.mergeArcs = mergeArcs;\n\t exports.feature = feature;\n\t exports.neighbors = neighbors;\n\t exports.presimplify = presimplify;\n\t\n\t}));\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar json = __webpack_require__(28);\n\t\n\tmodule.exports = function(tree, format) {\n\t return toTable(json(tree, format), format);\n\t};\n\t\n\tfunction toTable(root, fields) {\n\t var childrenField = fields && fields.children || 'children',\n\t parentField = fields && fields.parent || 'parent',\n\t table = [];\n\t\n\t function visit(node, parent) {\n\t node[parentField] = parent;\n\t table.push(node);\n\t var children = node[childrenField];\n\t if (children) {\n\t for (var i=0; i 4 && 'locale' + (\n\t l[0].toUpperCase() + l[1].toLowerCase() +\n\t l[3].toUpperCase() + l[4].toLowerCase()\n\t );\n\t}\n\t\n\tfunction numberLocale(l) {\n\t var f = util.isString(l) ? d3_numberF[localeRef(l)] : d3_numberF.locale(l);\n\t if (f == null) throw Error('Unrecognized locale: ' + l);\n\t numberF = f;\n\t}\n\t\n\tfunction timeLocale(l) {\n\t var f = util.isString(l) ? d3_timeF[localeRef(l)] : d3_timeF.locale(l);\n\t if (f == null) throw Error('Unrecognized locale: ' + l);\n\t timeF = f;\n\t monthFull = monthAbbr = dayFull = dayAbbr = null;\n\t}\n\t\n\t// -- Number Formatting ----\n\t\n\tvar e10 = Math.sqrt(50),\n\t e5 = Math.sqrt(10),\n\t e2 = Math.sqrt(2);\n\t\n\tfunction linearRange(domain, count) {\n\t if (!domain.length) domain = [0];\n\t if (count == null) count = 10;\n\t\n\t var start = domain[0],\n\t stop = domain[domain.length - 1];\n\t\n\t if (stop < start) { error = stop; stop = start; start = error; }\n\t\n\t var span = (stop - start) || (count = 1, start || stop || 1),\n\t step = Math.pow(10, Math.floor(Math.log(span / count) / Math.LN10)),\n\t error = span / count / step;\n\t\n\t // Filter ticks to get closer to the desired count.\n\t if (error >= e10) step *= 10;\n\t else if (error >= e5) step *= 5;\n\t else if (error >= e2) step *= 2;\n\t\n\t // Round start and stop values to step interval.\n\t return [\n\t Math.ceil(start / step) * step,\n\t Math.floor(stop / step) * step + step / 2, // inclusive\n\t step\n\t ];\n\t}\n\t\n\tfunction trimZero(f, decimal) {\n\t return function(x) {\n\t var s = f(x),\n\t n = s.indexOf(decimal);\n\t if (n < 0) return s;\n\t\n\t var idx = rightmostDigit(s, n),\n\t end = idx < s.length ? s.slice(idx) : '';\n\t\n\t while (--idx > n) {\n\t if (s[idx] !== '0') { ++idx; break; }\n\t }\n\t return s.slice(0, idx) + end;\n\t };\n\t}\n\t\n\tfunction rightmostDigit(s, n) {\n\t var i = s.lastIndexOf('e'), c;\n\t if (i > 0) return i;\n\t for (i=s.length; --i > n;) {\n\t c = s.charCodeAt(i);\n\t if (c >= 48 && c <= 57) return i+1; // is digit\n\t }\n\t}\n\t\n\tfunction autoNumberFormat(f) {\n\t var decimal = numberF.format('.1f')(1)[1]; // get decimal char\n\t if (f == null) f = ',';\n\t f = d3_numberF.formatSpecifier(f);\n\t if (f.precision == null) f.precision = 12;\n\t switch (f.type) {\n\t case '%': f.precision -= 2; break;\n\t case 'e': f.precision -= 1; break;\n\t }\n\t return trimZero(numberF.format(f), decimal);\n\t}\n\t\n\tfunction linearNumberFormat(domain, count, f) {\n\t var range = linearRange(domain, count);\n\t\n\t if (f == null) f = ',f';\n\t\n\t switch (f = d3_numberF.formatSpecifier(f), f.type) {\n\t case 's': {\n\t var value = Math.max(Math.abs(range[0]), Math.abs(range[1]));\n\t if (f.precision == null) f.precision = d3_numberF.precisionPrefix(range[2], value);\n\t return numberF.formatPrefix(f, value);\n\t }\n\t case '':\n\t case 'e':\n\t case 'g':\n\t case 'p':\n\t case 'r': {\n\t if (f.precision == null) f.precision = d3_numberF.precisionRound(range[2], Math.max(Math.abs(range[0]), Math.abs(range[1]))) - (f.type === 'e');\n\t break;\n\t }\n\t case 'f':\n\t case '%': {\n\t if (f.precision == null) f.precision = d3_numberF.precisionFixed(range[2]) - 2 * (f.type === '%');\n\t break;\n\t }\n\t }\n\t return numberF.format(f);\n\t}\n\t\n\t// -- Datetime Formatting ----\n\t\n\tfunction timeAutoFormat() {\n\t var f = timeF.format,\n\t formatMillisecond = f('.%L'),\n\t formatSecond = f(':%S'),\n\t formatMinute = f('%I:%M'),\n\t formatHour = f('%I %p'),\n\t formatDay = f('%a %d'),\n\t formatWeek = f('%b %d'),\n\t formatMonth = f('%B'),\n\t formatYear = f('%Y');\n\t\n\t return function(date) {\n\t var d = +date;\n\t return (d3_time.second(date) < d ? formatMillisecond\n\t : d3_time.minute(date) < d ? formatSecond\n\t : d3_time.hour(date) < d ? formatMinute\n\t : d3_time.day(date) < d ? formatHour\n\t : d3_time.month(date) < d ?\n\t (d3_time.week(date) < d ? formatDay : formatWeek)\n\t : d3_time.year(date) < d ? formatMonth\n\t : formatYear)(date);\n\t };\n\t}\n\t\n\tfunction utcAutoFormat() {\n\t var f = timeF.utcFormat,\n\t formatMillisecond = f('.%L'),\n\t formatSecond = f(':%S'),\n\t formatMinute = f('%I:%M'),\n\t formatHour = f('%I %p'),\n\t formatDay = f('%a %d'),\n\t formatWeek = f('%b %d'),\n\t formatMonth = f('%B'),\n\t formatYear = f('%Y');\n\t\n\t return function(date) {\n\t var d = +date;\n\t return (d3_time.utcSecond(date) < d ? formatMillisecond\n\t : d3_time.utcMinute(date) < d ? formatSecond\n\t : d3_time.utcHour(date) < d ? formatMinute\n\t : d3_time.utcDay(date) < d ? formatHour\n\t : d3_time.utcMonth(date) < d ?\n\t (d3_time.utcWeek(date) < d ? formatDay : formatWeek)\n\t : d3_time.utcYear(date) < d ? formatMonth\n\t : formatYear)(date);\n\t };\n\t}\n\t\n\tfunction monthFormat(month, abbreviate) {\n\t var f = abbreviate ?\n\t (monthAbbr || (monthAbbr = timeF.format('%b'))) :\n\t (monthFull || (monthFull = timeF.format('%B')));\n\t return (tmpDate.setMonth(month), f(tmpDate));\n\t}\n\t\n\tfunction dayFormat(day, abbreviate) {\n\t var f = abbreviate ?\n\t (dayAbbr || (dayAbbr = timeF.format('%a'))) :\n\t (dayFull || (dayFull = timeF.format('%A')));\n\t return (tmpDate.setMonth(0), tmpDate.setDate(2 + day), f(tmpDate));\n\t}\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define('d3-time', ['exports'], factory) :\n\t factory((global.d3_time = {}));\n\t}(this, function (exports) { 'use strict';\n\t\n\t var t0 = new Date;\n\t var t1 = new Date;\n\t function newInterval(floori, offseti, count, field) {\n\t\n\t function interval(date) {\n\t return floori(date = new Date(+date)), date;\n\t }\n\t\n\t interval.floor = interval;\n\t\n\t interval.round = function(date) {\n\t var d0 = new Date(+date),\n\t d1 = new Date(date - 1);\n\t floori(d0), floori(d1), offseti(d1, 1);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t };\n\t\n\t interval.ceil = function(date) {\n\t return floori(date = new Date(date - 1)), offseti(date, 1), date;\n\t };\n\t\n\t interval.offset = function(date, step) {\n\t return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n\t };\n\t\n\t interval.range = function(start, stop, step) {\n\t var range = [];\n\t start = new Date(start - 1);\n\t stop = new Date(+stop);\n\t step = step == null ? 1 : Math.floor(step);\n\t if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\t offseti(start, 1), floori(start);\n\t if (start < stop) range.push(new Date(+start));\n\t while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t while (--step >= 0) while (offseti(date, 1), !test(date));\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t };\n\t\n\t var millisecond = newInterval(function() {\n\t // noop\n\t }, function(date, step) {\n\t date.setTime(+date + step);\n\t }, function(start, end) {\n\t return end - start;\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t millisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t };\n\t\n\t var second = newInterval(function(date) {\n\t date.setMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t\n\t var minute = newInterval(function(date) {\n\t date.setSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t\n\t var hour = newInterval(function(date) {\n\t date.setMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t\n\t var day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t\n\t function weekday(i) {\n\t return newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n\t });\n\t }\n\t\n\t var sunday = weekday(0);\n\t var monday = weekday(1);\n\t var tuesday = weekday(2);\n\t var wednesday = weekday(3);\n\t var thursday = weekday(4);\n\t var friday = weekday(5);\n\t var saturday = weekday(6);\n\t\n\t var month = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(1);\n\t }, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t }, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t\n\t var year = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setMonth(0, 1);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t }, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t\n\t var utcSecond = newInterval(function(date) {\n\t date.setUTCMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getUTCSeconds();\n\t });\n\t\n\t var utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getUTCMinutes();\n\t });\n\t\n\t var utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getUTCHours();\n\t });\n\t\n\t var utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t }, function(start, end) {\n\t return (end - start) / 864e5;\n\t }, function(date) {\n\t return date.getUTCDate() - 1;\n\t });\n\t\n\t function utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / 6048e5;\n\t });\n\t }\n\t\n\t var utcSunday = utcWeekday(0);\n\t var utcMonday = utcWeekday(1);\n\t var utcTuesday = utcWeekday(2);\n\t var utcWednesday = utcWeekday(3);\n\t var utcThursday = utcWeekday(4);\n\t var utcFriday = utcWeekday(5);\n\t var utcSaturday = utcWeekday(6);\n\t\n\t var utcMonth = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(1);\n\t }, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t }, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t }, function(date) {\n\t return date.getUTCMonth();\n\t });\n\t\n\t var utcYear = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCMonth(0, 1);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t }, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t }, function(date) {\n\t return date.getUTCFullYear();\n\t });\n\t\n\t var milliseconds = millisecond.range;\n\t var seconds = second.range;\n\t var minutes = minute.range;\n\t var hours = hour.range;\n\t var days = day.range;\n\t var sundays = sunday.range;\n\t var mondays = monday.range;\n\t var tuesdays = tuesday.range;\n\t var wednesdays = wednesday.range;\n\t var thursdays = thursday.range;\n\t var fridays = friday.range;\n\t var saturdays = saturday.range;\n\t var weeks = sunday.range;\n\t var months = month.range;\n\t var years = year.range;\n\t\n\t var utcMillisecond = millisecond;\n\t var utcMilliseconds = milliseconds;\n\t var utcSeconds = utcSecond.range;\n\t var utcMinutes = utcMinute.range;\n\t var utcHours = utcHour.range;\n\t var utcDays = utcDay.range;\n\t var utcSundays = utcSunday.range;\n\t var utcMondays = utcMonday.range;\n\t var utcTuesdays = utcTuesday.range;\n\t var utcWednesdays = utcWednesday.range;\n\t var utcThursdays = utcThursday.range;\n\t var utcFridays = utcFriday.range;\n\t var utcSaturdays = utcSaturday.range;\n\t var utcWeeks = utcSunday.range;\n\t var utcMonths = utcMonth.range;\n\t var utcYears = utcYear.range;\n\t\n\t var version = \"0.1.1\";\n\t\n\t exports.version = version;\n\t exports.milliseconds = milliseconds;\n\t exports.seconds = seconds;\n\t exports.minutes = minutes;\n\t exports.hours = hours;\n\t exports.days = days;\n\t exports.sundays = sundays;\n\t exports.mondays = mondays;\n\t exports.tuesdays = tuesdays;\n\t exports.wednesdays = wednesdays;\n\t exports.thursdays = thursdays;\n\t exports.fridays = fridays;\n\t exports.saturdays = saturdays;\n\t exports.weeks = weeks;\n\t exports.months = months;\n\t exports.years = years;\n\t exports.utcMillisecond = utcMillisecond;\n\t exports.utcMilliseconds = utcMilliseconds;\n\t exports.utcSeconds = utcSeconds;\n\t exports.utcMinutes = utcMinutes;\n\t exports.utcHours = utcHours;\n\t exports.utcDays = utcDays;\n\t exports.utcSundays = utcSundays;\n\t exports.utcMondays = utcMondays;\n\t exports.utcTuesdays = utcTuesdays;\n\t exports.utcWednesdays = utcWednesdays;\n\t exports.utcThursdays = utcThursdays;\n\t exports.utcFridays = utcFridays;\n\t exports.utcSaturdays = utcSaturdays;\n\t exports.utcWeeks = utcWeeks;\n\t exports.utcMonths = utcMonths;\n\t exports.utcYears = utcYears;\n\t exports.millisecond = millisecond;\n\t exports.second = second;\n\t exports.minute = minute;\n\t exports.hour = hour;\n\t exports.day = day;\n\t exports.sunday = sunday;\n\t exports.monday = monday;\n\t exports.tuesday = tuesday;\n\t exports.wednesday = wednesday;\n\t exports.thursday = thursday;\n\t exports.friday = friday;\n\t exports.saturday = saturday;\n\t exports.week = sunday;\n\t exports.month = month;\n\t exports.year = year;\n\t exports.utcSecond = utcSecond;\n\t exports.utcMinute = utcMinute;\n\t exports.utcHour = utcHour;\n\t exports.utcDay = utcDay;\n\t exports.utcSunday = utcSunday;\n\t exports.utcMonday = utcMonday;\n\t exports.utcTuesday = utcTuesday;\n\t exports.utcWednesday = utcWednesday;\n\t exports.utcThursday = utcThursday;\n\t exports.utcFriday = utcFriday;\n\t exports.utcSaturday = utcSaturday;\n\t exports.utcWeek = utcSunday;\n\t exports.utcMonth = utcMonth;\n\t exports.utcYear = utcYear;\n\t exports.interval = newInterval;\n\t\n\t}));\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports, __webpack_require__(33)) :\n\t typeof define === 'function' && define.amd ? define('d3-time-format', ['exports', 'd3-time'], factory) :\n\t factory((global.d3_time_format = {}),global.d3_time);\n\t}(this, function (exports,d3Time) { 'use strict';\n\t\n\t function localDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n\t date.setFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n\t }\n\t\n\t function utcDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n\t date.setUTCFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n\t }\n\t\n\t function newYear(y) {\n\t return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n\t }\n\t\n\t function locale$1(locale) {\n\t var locale_dateTime = locale.dateTime,\n\t locale_date = locale.date,\n\t locale_time = locale.time,\n\t locale_periods = locale.periods,\n\t locale_weekdays = locale.days,\n\t locale_shortWeekdays = locale.shortDays,\n\t locale_months = locale.months,\n\t locale_shortMonths = locale.shortMonths;\n\t\n\t var periodRe = formatRe(locale_periods),\n\t periodLookup = formatLookup(locale_periods),\n\t weekdayRe = formatRe(locale_weekdays),\n\t weekdayLookup = formatLookup(locale_weekdays),\n\t shortWeekdayRe = formatRe(locale_shortWeekdays),\n\t shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n\t monthRe = formatRe(locale_months),\n\t monthLookup = formatLookup(locale_months),\n\t shortMonthRe = formatRe(locale_shortMonths),\n\t shortMonthLookup = formatLookup(locale_shortMonths);\n\t\n\t var formats = {\n\t \"a\": formatShortWeekday,\n\t \"A\": formatWeekday,\n\t \"b\": formatShortMonth,\n\t \"B\": formatMonth,\n\t \"c\": null,\n\t \"d\": formatDayOfMonth,\n\t \"e\": formatDayOfMonth,\n\t \"H\": formatHour24,\n\t \"I\": formatHour12,\n\t \"j\": formatDayOfYear,\n\t \"L\": formatMilliseconds,\n\t \"m\": formatMonthNumber,\n\t \"M\": formatMinutes,\n\t \"p\": formatPeriod,\n\t \"S\": formatSeconds,\n\t \"U\": formatWeekNumberSunday,\n\t \"w\": formatWeekdayNumber,\n\t \"W\": formatWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatYear,\n\t \"Y\": formatFullYear,\n\t \"Z\": formatZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var utcFormats = {\n\t \"a\": formatUTCShortWeekday,\n\t \"A\": formatUTCWeekday,\n\t \"b\": formatUTCShortMonth,\n\t \"B\": formatUTCMonth,\n\t \"c\": null,\n\t \"d\": formatUTCDayOfMonth,\n\t \"e\": formatUTCDayOfMonth,\n\t \"H\": formatUTCHour24,\n\t \"I\": formatUTCHour12,\n\t \"j\": formatUTCDayOfYear,\n\t \"L\": formatUTCMilliseconds,\n\t \"m\": formatUTCMonthNumber,\n\t \"M\": formatUTCMinutes,\n\t \"p\": formatUTCPeriod,\n\t \"S\": formatUTCSeconds,\n\t \"U\": formatUTCWeekNumberSunday,\n\t \"w\": formatUTCWeekdayNumber,\n\t \"W\": formatUTCWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatUTCYear,\n\t \"Y\": formatUTCFullYear,\n\t \"Z\": formatUTCZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var parses = {\n\t \"a\": parseShortWeekday,\n\t \"A\": parseWeekday,\n\t \"b\": parseShortMonth,\n\t \"B\": parseMonth,\n\t \"c\": parseLocaleDateTime,\n\t \"d\": parseDayOfMonth,\n\t \"e\": parseDayOfMonth,\n\t \"H\": parseHour24,\n\t \"I\": parseHour24,\n\t \"j\": parseDayOfYear,\n\t \"L\": parseMilliseconds,\n\t \"m\": parseMonthNumber,\n\t \"M\": parseMinutes,\n\t \"p\": parsePeriod,\n\t \"S\": parseSeconds,\n\t \"U\": parseWeekNumberSunday,\n\t \"w\": parseWeekdayNumber,\n\t \"W\": parseWeekNumberMonday,\n\t \"x\": parseLocaleDate,\n\t \"X\": parseLocaleTime,\n\t \"y\": parseYear,\n\t \"Y\": parseFullYear,\n\t \"Z\": parseZone,\n\t \"%\": parseLiteralPercent\n\t };\n\t\n\t // These recursive directive definitions must be deferred.\n\t formats.x = newFormat(locale_date, formats);\n\t formats.X = newFormat(locale_time, formats);\n\t formats.c = newFormat(locale_dateTime, formats);\n\t utcFormats.x = newFormat(locale_date, utcFormats);\n\t utcFormats.X = newFormat(locale_time, utcFormats);\n\t utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\t\n\t function newFormat(specifier, formats) {\n\t return function(date) {\n\t var string = [],\n\t i = -1,\n\t j = 0,\n\t n = specifier.length,\n\t c,\n\t pad,\n\t format;\n\t\n\t if (!(date instanceof Date)) date = new Date(+date);\n\t\n\t while (++i < n) {\n\t if (specifier.charCodeAt(i) === 37) {\n\t string.push(specifier.slice(j, i));\n\t if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n\t else pad = c === \"e\" ? \" \" : \"0\";\n\t if (format = formats[c]) c = format(date, pad);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t\n\t string.push(specifier.slice(j, i));\n\t return string.join(\"\");\n\t };\n\t }\n\t\n\t function newParse(specifier, newDate) {\n\t return function(string) {\n\t var d = newYear(1900),\n\t i = parseSpecifier(d, specifier, string += \"\", 0);\n\t if (i != string.length) return null;\n\t\n\t // The am-pm flag is 0 for AM, and 1 for PM.\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t\n\t // Convert day-of-week and week-of-year to day-of-year.\n\t if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n\t d.m = 0;\n\t d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n\t }\n\t\n\t // If a time zone is specified, all fields are interpreted as UTC and then\n\t // offset according to the specified time zone.\n\t if (\"Z\" in d) {\n\t d.H += d.Z / 100 | 0;\n\t d.M += d.Z % 100;\n\t return utcDate(d);\n\t }\n\t\n\t // Otherwise, all fields are in local time.\n\t return newDate(d);\n\t };\n\t }\n\t\n\t function parseSpecifier(d, specifier, string, j) {\n\t var i = 0,\n\t n = specifier.length,\n\t m = string.length,\n\t c,\n\t parse;\n\t\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = specifier.charCodeAt(i++);\n\t if (c === 37) {\n\t c = specifier.charAt(i++);\n\t parse = parses[c in pads ? specifier.charAt(i++) : c];\n\t if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t\n\t return j;\n\t }\n\t\n\t function parsePeriod(d, string, i) {\n\t var n = periodRe.exec(string.slice(i));\n\t return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortWeekday(d, string, i) {\n\t var n = shortWeekdayRe.exec(string.slice(i));\n\t return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekday(d, string, i) {\n\t var n = weekdayRe.exec(string.slice(i));\n\t return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortMonth(d, string, i) {\n\t var n = shortMonthRe.exec(string.slice(i));\n\t return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonth(d, string, i) {\n\t var n = monthRe.exec(string.slice(i));\n\t return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLocaleDateTime(d, string, i) {\n\t return parseSpecifier(d, locale_dateTime, string, i);\n\t }\n\t\n\t function parseLocaleDate(d, string, i) {\n\t return parseSpecifier(d, locale_date, string, i);\n\t }\n\t\n\t function parseLocaleTime(d, string, i) {\n\t return parseSpecifier(d, locale_time, string, i);\n\t }\n\t\n\t function formatShortWeekday(d) {\n\t return locale_shortWeekdays[d.getDay()];\n\t }\n\t\n\t function formatWeekday(d) {\n\t return locale_weekdays[d.getDay()];\n\t }\n\t\n\t function formatShortMonth(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t }\n\t\n\t function formatMonth(d) {\n\t return locale_months[d.getMonth()];\n\t }\n\t\n\t function formatPeriod(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t }\n\t\n\t function formatUTCShortWeekday(d) {\n\t return locale_shortWeekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCWeekday(d) {\n\t return locale_weekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCShortMonth(d) {\n\t return locale_shortMonths[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCMonth(d) {\n\t return locale_months[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCPeriod(d) {\n\t return locale_periods[+(d.getUTCHours() >= 12)];\n\t }\n\t\n\t return {\n\t format: function(specifier) {\n\t var f = newFormat(specifier += \"\", formats);\n\t f.parse = newParse(specifier, localDate);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t utcFormat: function(specifier) {\n\t var f = newFormat(specifier += \"\", utcFormats);\n\t f.parse = newParse(specifier, utcDate);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t }\n\t };\n\t };\n\t\n\t var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n\t var numberRe = /^\\s*\\d+/;\n\t var percentRe = /^%/;\n\t var requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t function pad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\",\n\t string = (sign ? -value : value) + \"\",\n\t length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t\n\t function requote(s) {\n\t return s.replace(requoteRe, \"\\\\$&\");\n\t }\n\t\n\t function formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n\t }\n\t\n\t function formatLookup(names) {\n\t var map = {}, i = -1, n = names.length;\n\t while (++i < n) map[names[i].toLowerCase()] = i;\n\t return map;\n\t }\n\t\n\t function parseWeekdayNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 1));\n\t return n ? (d.w = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberSunday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.U = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberMonday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.W = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseFullYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 4));\n\t return n ? (d.y = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n\t }\n\t\n\t function parseZone(d, string, i) {\n\t var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n\t return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonthNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfMonth(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseHour24(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.H = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMinutes(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.M = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseSeconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.S = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMilliseconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.L = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLiteralPercent(d, string, i) {\n\t var n = percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t\n\t function formatDayOfMonth(d, p) {\n\t return pad(d.getDate(), p, 2);\n\t }\n\t\n\t function formatHour24(d, p) {\n\t return pad(d.getHours(), p, 2);\n\t }\n\t\n\t function formatHour12(d, p) {\n\t return pad(d.getHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatDayOfYear(d, p) {\n\t return pad(1 + d3Time.day.count(d3Time.year(d), d), p, 3);\n\t }\n\t\n\t function formatMilliseconds(d, p) {\n\t return pad(d.getMilliseconds(), p, 3);\n\t }\n\t\n\t function formatMonthNumber(d, p) {\n\t return pad(d.getMonth() + 1, p, 2);\n\t }\n\t\n\t function formatMinutes(d, p) {\n\t return pad(d.getMinutes(), p, 2);\n\t }\n\t\n\t function formatSeconds(d, p) {\n\t return pad(d.getSeconds(), p, 2);\n\t }\n\t\n\t function formatWeekNumberSunday(d, p) {\n\t return pad(d3Time.sunday.count(d3Time.year(d), d), p, 2);\n\t }\n\t\n\t function formatWeekdayNumber(d) {\n\t return d.getDay();\n\t }\n\t\n\t function formatWeekNumberMonday(d, p) {\n\t return pad(d3Time.monday.count(d3Time.year(d), d), p, 2);\n\t }\n\t\n\t function formatYear(d, p) {\n\t return pad(d.getFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatFullYear(d, p) {\n\t return pad(d.getFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatZone(d) {\n\t var z = d.getTimezoneOffset();\n\t return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n\t + pad(z / 60 | 0, \"0\", 2)\n\t + pad(z % 60, \"0\", 2);\n\t }\n\t\n\t function formatUTCDayOfMonth(d, p) {\n\t return pad(d.getUTCDate(), p, 2);\n\t }\n\t\n\t function formatUTCHour24(d, p) {\n\t return pad(d.getUTCHours(), p, 2);\n\t }\n\t\n\t function formatUTCHour12(d, p) {\n\t return pad(d.getUTCHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatUTCDayOfYear(d, p) {\n\t return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n\t }\n\t\n\t function formatUTCMilliseconds(d, p) {\n\t return pad(d.getUTCMilliseconds(), p, 3);\n\t }\n\t\n\t function formatUTCMonthNumber(d, p) {\n\t return pad(d.getUTCMonth() + 1, p, 2);\n\t }\n\t\n\t function formatUTCMinutes(d, p) {\n\t return pad(d.getUTCMinutes(), p, 2);\n\t }\n\t\n\t function formatUTCSeconds(d, p) {\n\t return pad(d.getUTCSeconds(), p, 2);\n\t }\n\t\n\t function formatUTCWeekNumberSunday(d, p) {\n\t return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCWeekdayNumber(d) {\n\t return d.getUTCDay();\n\t }\n\t\n\t function formatUTCWeekNumberMonday(d, p) {\n\t return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCYear(d, p) {\n\t return pad(d.getUTCFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatUTCFullYear(d, p) {\n\t return pad(d.getUTCFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatUTCZone() {\n\t return \"+0000\";\n\t }\n\t\n\t function formatLiteralPercent() {\n\t return \"%\";\n\t }\n\t\n\t var locale = locale$1({\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%m/%d/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var caES = locale$1({\n\t dateTime: \"%A, %e de %B de %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"diumenge\", \"dilluns\", \"dimarts\", \"dimecres\", \"dijous\", \"divendres\", \"dissabte\"],\n\t shortDays: [\"dg.\", \"dl.\", \"dt.\", \"dc.\", \"dj.\", \"dv.\", \"ds.\"],\n\t months: [\"gener\", \"febrer\", \"març\", \"abril\", \"maig\", \"juny\", \"juliol\", \"agost\", \"setembre\", \"octubre\", \"novembre\", \"desembre\"],\n\t shortMonths: [\"gen.\", \"febr.\", \"març\", \"abr.\", \"maig\", \"juny\", \"jul.\", \"ag.\", \"set.\", \"oct.\", \"nov.\", \"des.\"]\n\t });\n\t\n\t var deCH = locale$1({\n\t dateTime: \"%A, der %e. %B %Y, %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n\t shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n\t months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n\t });\n\t\n\t var deDE = locale$1({\n\t dateTime: \"%A, der %e. %B %Y, %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n\t shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n\t months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n\t });\n\t\n\t var enCA = locale$1({\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%Y-%m-%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var enGB = locale$1({\n\t dateTime: \"%a %e %b %X %Y\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var esES = locale$1({\n\t dateTime: \"%A, %e de %B de %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"],\n\t shortDays: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\n\t months: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"],\n\t shortMonths: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\", \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"]\n\t });\n\t\n\t var fiFI = locale$1({\n\t dateTime: \"%A, %-d. %Bta %Y klo %X\",\n\t date: \"%-d.%-m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"a.m.\", \"p.m.\"],\n\t days: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"],\n\t shortDays: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n\t months: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n\t shortMonths: [\"Tammi\", \"Helmi\", \"Maalis\", \"Huhti\", \"Touko\", \"Kesä\", \"Heinä\", \"Elo\", \"Syys\", \"Loka\", \"Marras\", \"Joulu\"]\n\t });\n\t\n\t var frCA = locale$1({\n\t dateTime: \"%a %e %b %Y %X\",\n\t date: \"%Y-%m-%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"\", \"\"],\n\t days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n\t shortDays: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n\t months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n\t shortMonths: [\"jan\", \"fév\", \"mar\", \"avr\", \"mai\", \"jui\", \"jul\", \"aoû\", \"sep\", \"oct\", \"nov\", \"déc\"]\n\t });\n\t\n\t var frFR = locale$1({\n\t dateTime: \"%A, le %e %B %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n\t shortDays: [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"],\n\t months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n\t shortMonths: [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"]\n\t });\n\t\n\t var heIL = locale$1({\n\t dateTime: \"%A, %e ב%B %Y %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\n\t shortDays: [\"א׳\", \"ב׳\", \"ג׳\", \"ד׳\", \"ה׳\", \"ו׳\", \"ש׳\"],\n\t months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n\t shortMonths: [\"ינו׳\", \"פבר׳\", \"מרץ\", \"אפר׳\", \"מאי\", \"יוני\", \"יולי\", \"אוג׳\", \"ספט׳\", \"אוק׳\", \"נוב׳\", \"דצמ׳\"]\n\t });\n\t\n\t var huHU = locale$1({\n\t dateTime: \"%Y. %B %-e., %A %X\",\n\t date: \"%Y. %m. %d.\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"de.\", \"du.\"], // unused\n\t days: [\"vasárnap\", \"hétfő\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"],\n\t shortDays: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\"],\n\t months: [\"január\", \"február\", \"március\", \"április\", \"május\", \"június\", \"július\", \"augusztus\", \"szeptember\", \"október\", \"november\", \"december\"],\n\t shortMonths: [\"jan.\", \"feb.\", \"már.\", \"ápr.\", \"máj.\", \"jún.\", \"júl.\", \"aug.\", \"szept.\", \"okt.\", \"nov.\", \"dec.\"]\n\t });\n\t\n\t var itIT = locale$1({\n\t dateTime: \"%A %e %B %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n\t shortDays: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n\t months: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t shortMonths: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"]\n\t });\n\t\n\t var jaJP = locale$1({\n\t dateTime: \"%Y %b %e %a %X\",\n\t date: \"%Y/%m/%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\n\t shortDays: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n\t months: [\"睦月\", \"如月\", \"弥生\", \"卯月\", \"皐月\", \"水無月\", \"文月\", \"葉月\", \"長月\", \"神無月\", \"霜月\", \"師走\"],\n\t shortMonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"]\n\t });\n\t\n\t var koKR = locale$1({\n\t dateTime: \"%Y/%m/%d %a %X\",\n\t date: \"%Y/%m/%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"오전\", \"오후\"],\n\t days: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n\t shortDays: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n\t months: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t shortMonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"]\n\t });\n\t\n\t var mkMK = locale$1({\n\t dateTime: \"%A, %e %B %Y г. %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"недела\", \"понеделник\", \"вторник\", \"среда\", \"четврток\", \"петок\", \"сабота\"],\n\t shortDays: [\"нед\", \"пон\", \"вто\", \"сре\", \"чет\", \"пет\", \"саб\"],\n\t months: [\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"август\", \"септември\", \"октомври\", \"ноември\", \"декември\"],\n\t shortMonths: [\"јан\", \"фев\", \"мар\", \"апр\", \"мај\", \"јун\", \"јул\", \"авг\", \"сеп\", \"окт\", \"ное\", \"дек\"]\n\t });\n\t\n\t var nlNL = locale$1({\n\t dateTime: \"%a %e %B %Y %T\",\n\t date: \"%d-%m-%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"],\n\t shortDays: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n\t months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n\t shortMonths: [\"jan\", \"feb\", \"mrt\", \"apr\", \"mei\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n\t });\n\t\n\t var plPL = locale$1({\n\t dateTime: \"%A, %e %B %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n\t shortDays: [\"Niedz.\", \"Pon.\", \"Wt.\", \"Śr.\", \"Czw.\", \"Pt.\", \"Sob.\"],\n\t months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n\t shortMonths: [\"Stycz.\", \"Luty\", \"Marz.\", \"Kwie.\", \"Maj\", \"Czerw.\", \"Lipc.\", \"Sierp.\", \"Wrz.\", \"Paźdz.\", \"Listop.\", \"Grudz.\"]/* In Polish language abbraviated months are not commonly used so there is a dispute about the proper abbraviations. */\n\t });\n\t\n\t var ptBR = locale$1({\n\t dateTime: \"%A, %e de %B de %Y. %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n\t shortDays: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n\t months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t shortMonths: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"]\n\t });\n\t\n\t var ruRU = locale$1({\n\t dateTime: \"%A, %e %B %Y г. %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"воскресенье\", \"понедельник\", \"вторник\", \"среда\", \"четверг\", \"пятница\", \"суббота\"],\n\t shortDays: [\"вс\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"],\n\t months: [\"января\", \"февраля\", \"марта\", \"апреля\", \"мая\", \"июня\", \"июля\", \"августа\", \"сентября\", \"октября\", \"ноября\", \"декабря\"],\n\t shortMonths: [\"янв\", \"фев\", \"мар\", \"апр\", \"май\", \"июн\", \"июл\", \"авг\", \"сен\", \"окт\", \"ноя\", \"дек\"]\n\t });\n\t\n\t var svSE = locale$1({\n\t dateTime: \"%A den %d %B %Y %X\",\n\t date: \"%Y-%m-%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"fm\", \"em\"],\n\t days: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\n\t shortDays: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n\t months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var zhCN = locale$1({\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%Y/%-m/%-d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"上午\", \"下午\"],\n\t days: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t shortDays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t shortMonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"]\n\t });\n\t\n\t var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\t\n\t function formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t\n\t formatIsoNative.parse = function(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t };\n\t\n\t formatIsoNative.toString = function() {\n\t return isoSpecifier;\n\t };\n\t\n\t var formatIso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\")\n\t ? formatIsoNative\n\t : locale.utcFormat(isoSpecifier);\n\t\n\t var format = locale.format;\n\t var utcFormat = locale.utcFormat;\n\t\n\t var version = \"0.2.1\";\n\t\n\t exports.version = version;\n\t exports.format = format;\n\t exports.utcFormat = utcFormat;\n\t exports.locale = locale$1;\n\t exports.localeCaEs = caES;\n\t exports.localeDeCh = deCH;\n\t exports.localeDeDe = deDE;\n\t exports.localeEnCa = enCA;\n\t exports.localeEnGb = enGB;\n\t exports.localeEnUs = locale;\n\t exports.localeEsEs = esES;\n\t exports.localeFiFi = fiFI;\n\t exports.localeFrCa = frCA;\n\t exports.localeFrFr = frFR;\n\t exports.localeHeIl = heIL;\n\t exports.localeHuHu = huHU;\n\t exports.localeItIt = itIT;\n\t exports.localeJaJp = jaJP;\n\t exports.localeKoKr = koKR;\n\t exports.localeMkMk = mkMK;\n\t exports.localeNlNl = nlNL;\n\t exports.localePlPl = plPL;\n\t exports.localePtBr = ptBR;\n\t exports.localeRuRu = ruRU;\n\t exports.localeSvSe = svSE;\n\t exports.localeZhCn = zhCN;\n\t exports.isoFormat = formatIso;\n\t\n\t}));\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define('d3-format', ['exports'], factory) :\n\t factory((global.d3_format = {}));\n\t}(this, function (exports) { 'use strict';\n\t\n\t // Computes the decimal coefficient and exponent of the specified number x with\n\t // significant digits p, where x is positive and p is in [1, 21] or undefined.\n\t // For example, formatDecimal(1.23) returns [\"123\", 0].\n\t function formatDecimal(x, p) {\n\t if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\t var i, coefficient = x.slice(0, i);\n\t\n\t // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n\t // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\t return [\n\t coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n\t +x.slice(i + 1)\n\t ];\n\t };\n\t\n\t function exponent(x) {\n\t return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n\t };\n\t\n\t function formatGroup(grouping, thousands) {\n\t return function(value, width) {\n\t var i = value.length,\n\t t = [],\n\t j = 0,\n\t g = grouping[0],\n\t length = 0;\n\t\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = grouping[j = (j + 1) % grouping.length];\n\t }\n\t\n\t return t.reverse().join(thousands);\n\t };\n\t };\n\t\n\t var prefixExponent;\n\t\n\t function formatPrefixAuto(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1],\n\t i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n\t n = coefficient.length;\n\t return i === n ? coefficient\n\t : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n\t : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n\t : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n\t };\n\t\n\t function formatRounded(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1];\n\t return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n\t : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n\t : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n\t };\n\t\n\t function formatDefault(x, p) {\n\t x = x.toPrecision(p);\n\t\n\t out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n\t switch (x[i]) {\n\t case \".\": i0 = i1 = i; break;\n\t case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n\t case \"e\": break out;\n\t default: if (i0 > 0) i0 = 0; break;\n\t }\n\t }\n\t\n\t return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n\t };\n\t\n\t var formatTypes = {\n\t \"\": formatDefault,\n\t \"%\": function(x, p) { return (x * 100).toFixed(p); },\n\t \"b\": function(x) { return Math.round(x).toString(2); },\n\t \"c\": function(x) { return x + \"\"; },\n\t \"d\": function(x) { return Math.round(x).toString(10); },\n\t \"e\": function(x, p) { return x.toExponential(p); },\n\t \"f\": function(x, p) { return x.toFixed(p); },\n\t \"g\": function(x, p) { return x.toPrecision(p); },\n\t \"o\": function(x) { return Math.round(x).toString(8); },\n\t \"p\": function(x, p) { return formatRounded(x * 100, p); },\n\t \"r\": formatRounded,\n\t \"s\": formatPrefixAuto,\n\t \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n\t \"x\": function(x) { return Math.round(x).toString(16); }\n\t };\n\t\n\t // [[fill]align][sign][symbol][0][width][,][.precision][type]\n\t var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\t\n\t function formatSpecifier(specifier) {\n\t return new FormatSpecifier(specifier);\n\t };\n\t\n\t function FormatSpecifier(specifier) {\n\t if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\t\n\t var match,\n\t fill = match[1] || \" \",\n\t align = match[2] || \">\",\n\t sign = match[3] || \"-\",\n\t symbol = match[4] || \"\",\n\t zero = !!match[5],\n\t width = match[6] && +match[6],\n\t comma = !!match[7],\n\t precision = match[8] && +match[8].slice(1),\n\t type = match[9] || \"\";\n\t\n\t // The \"n\" type is an alias for \",g\".\n\t if (type === \"n\") comma = true, type = \"g\";\n\t\n\t // Map invalid types to the default format.\n\t else if (!formatTypes[type]) type = \"\";\n\t\n\t // If zero fill is specified, padding goes after sign and before digits.\n\t if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\t\n\t this.fill = fill;\n\t this.align = align;\n\t this.sign = sign;\n\t this.symbol = symbol;\n\t this.zero = zero;\n\t this.width = width;\n\t this.comma = comma;\n\t this.precision = precision;\n\t this.type = type;\n\t }\n\t\n\t FormatSpecifier.prototype.toString = function() {\n\t return this.fill\n\t + this.align\n\t + this.sign\n\t + this.symbol\n\t + (this.zero ? \"0\" : \"\")\n\t + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n\t + (this.comma ? \",\" : \"\")\n\t + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n\t + this.type;\n\t };\n\t\n\t var prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\t\n\t function identity(x) {\n\t return x;\n\t }\n\t\n\t function locale(locale) {\n\t var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n\t currency = locale.currency,\n\t decimal = locale.decimal;\n\t\n\t function format(specifier) {\n\t specifier = formatSpecifier(specifier);\n\t\n\t var fill = specifier.fill,\n\t align = specifier.align,\n\t sign = specifier.sign,\n\t symbol = specifier.symbol,\n\t zero = specifier.zero,\n\t width = specifier.width,\n\t comma = specifier.comma,\n\t precision = specifier.precision,\n\t type = specifier.type;\n\t\n\t // Compute the prefix and suffix.\n\t // For SI-prefix, the suffix is lazily computed.\n\t var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n\t suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? \"%\" : \"\";\n\t\n\t // What format function should we use?\n\t // Is this an integer type?\n\t // Can this type generate exponential notation?\n\t var formatType = formatTypes[type],\n\t maybeSuffix = !type || /[defgprs%]/.test(type);\n\t\n\t // Set the default precision if not specified,\n\t // or clamp the specified precision to the supported range.\n\t // For significant precision, it must be in [1, 21].\n\t // For fixed precision, it must be in [0, 20].\n\t precision = precision == null ? (type ? 6 : 12)\n\t : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n\t : Math.max(0, Math.min(20, precision));\n\t\n\t return function(value) {\n\t var valuePrefix = prefix,\n\t valueSuffix = suffix;\n\t\n\t if (type === \"c\") {\n\t valueSuffix = formatType(value) + valueSuffix;\n\t value = \"\";\n\t } else {\n\t value = +value;\n\t\n\t // Convert negative to positive, and compute the prefix.\n\t // Note that -0 is not less than 0, but 1 / -0 is!\n\t var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);\n\t\n\t // Perform the initial formatting.\n\t value = formatType(value, precision);\n\t\n\t // If the original value was negative, it may be rounded to zero during\n\t // formatting; treat this as (positive) zero.\n\t if (valueNegative) {\n\t var i = -1, n = value.length, c;\n\t valueNegative = false;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), (48 < c && c < 58)\n\t || (type === \"x\" && 96 < c && c < 103)\n\t || (type === \"X\" && 64 < c && c < 71)) {\n\t valueNegative = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t // Compute the prefix and suffix.\n\t valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\t valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\t\n\t // Break the formatted value into the integer “value” part that can be\n\t // grouped, and fractional or exponential “suffix” part that is not.\n\t if (maybeSuffix) {\n\t var i = -1, n = value.length, c;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), 48 > c || c > 57) {\n\t valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n\t value = value.slice(0, i);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // If the fill character is not \"0\", grouping is applied before padding.\n\t if (comma && !zero) value = group(value, Infinity);\n\t\n\t // Compute the padding.\n\t var length = valuePrefix.length + value.length + valueSuffix.length,\n\t padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\t\n\t // If the fill character is \"0\", grouping is applied after padding.\n\t if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\t\n\t // Reconstruct the final output based on the desired alignment.\n\t switch (align) {\n\t case \"<\": return valuePrefix + value + valueSuffix + padding;\n\t case \"=\": return valuePrefix + padding + value + valueSuffix;\n\t case \"^\": return padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n\t }\n\t return padding + valuePrefix + value + valueSuffix;\n\t };\n\t }\n\t\n\t function formatPrefix(specifier, value) {\n\t var f = format((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n\t e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n\t k = Math.pow(10, -e),\n\t prefix = prefixes[8 + e / 3];\n\t return function(value) {\n\t return f(k * value) + prefix;\n\t };\n\t }\n\t\n\t return {\n\t format: format,\n\t formatPrefix: formatPrefix\n\t };\n\t };\n\t\n\t var defaultLocale = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t });\n\t\n\t var caES = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var csCZ = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0Kč\"],\n\t });\n\t\n\t var deCH = locale({\n\t decimal: \",\",\n\t thousands: \"'\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0CHF\"]\n\t });\n\t\n\t var deDE = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var enCA = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t });\n\t\n\t var enGB = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"£\", \"\"]\n\t });\n\t\n\t var esES = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var fiFI = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var frCA = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"$\"]\n\t });\n\t\n\t var frFR = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var heIL = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"₪\", \"\"]\n\t });\n\t\n\t var huHU = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0Ft\"]\n\t });\n\t\n\t var itIT = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"€\", \"\"]\n\t });\n\t\n\t var jaJP = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"\", \"円\"]\n\t });\n\t\n\t var koKR = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"₩\", \"\"]\n\t });\n\t\n\t var mkMK = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0ден.\"]\n\t });\n\t\n\t var nlNL = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"€\\xa0\", \"\"]\n\t });\n\t\n\t var plPL = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"zł\"]\n\t });\n\t\n\t var ptBR = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"R$\", \"\"]\n\t });\n\t\n\t var ruRU = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0руб.\"]\n\t });\n\t\n\t var svSE = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"SEK\"]\n\t });\n\t\n\t var zhCN = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"¥\", \"\"]\n\t });\n\t\n\t function precisionFixed(step) {\n\t return Math.max(0, -exponent(Math.abs(step)));\n\t };\n\t\n\t function precisionPrefix(step, value) {\n\t return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n\t };\n\t\n\t function precisionRound(step, max) {\n\t step = Math.abs(step), max = Math.abs(max) - step;\n\t return Math.max(0, exponent(max) - exponent(step)) + 1;\n\t };\n\t\n\t var format = defaultLocale.format;\n\t var formatPrefix = defaultLocale.formatPrefix;\n\t\n\t var version = \"0.4.2\";\n\t\n\t exports.version = version;\n\t exports.format = format;\n\t exports.formatPrefix = formatPrefix;\n\t exports.locale = locale;\n\t exports.localeCaEs = caES;\n\t exports.localeCsCz = csCZ;\n\t exports.localeDeCh = deCH;\n\t exports.localeDeDe = deDE;\n\t exports.localeEnCa = enCA;\n\t exports.localeEnGb = enGB;\n\t exports.localeEnUs = defaultLocale;\n\t exports.localeEsEs = esES;\n\t exports.localeFiFi = fiFI;\n\t exports.localeFrCa = frCA;\n\t exports.localeFrFr = frFR;\n\t exports.localeHeIl = heIL;\n\t exports.localeHuHu = huHU;\n\t exports.localeItIt = itIT;\n\t exports.localeJaJp = jaJP;\n\t exports.localeKoKr = koKR;\n\t exports.localeMkMk = mkMK;\n\t exports.localeNlNl = nlNL;\n\t exports.localePlPl = plPL;\n\t exports.localePtBr = ptBR;\n\t exports.localeRuRu = ruRU;\n\t exports.localeSvSe = svSE;\n\t exports.localeZhCn = zhCN;\n\t exports.formatSpecifier = formatSpecifier;\n\t exports.precisionFixed = precisionFixed;\n\t exports.precisionPrefix = precisionPrefix;\n\t exports.precisionRound = precisionRound;\n\t\n\t}));\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t Measures = __webpack_require__(37),\n\t Collector = __webpack_require__(40);\n\t\n\tfunction Aggregator() {\n\t this._cells = {};\n\t this._aggr = [];\n\t this._stream = false;\n\t}\n\t\n\tvar Flags = Aggregator.Flags = {\n\t ADD_CELL: 1,\n\t MOD_CELL: 2\n\t};\n\t\n\tvar proto = Aggregator.prototype;\n\t\n\t// Parameters\n\t\n\tproto.stream = function(v) {\n\t if (v == null) return this._stream;\n\t this._stream = !!v;\n\t this._aggr = [];\n\t return this;\n\t};\n\t\n\t// key accessor to use for streaming removes\n\tproto.key = function(key) {\n\t if (key == null) return this._key;\n\t this._key = util.$(key);\n\t return this;\n\t};\n\t\n\t// Input: array of objects of the form\n\t// {name: string, get: function}\n\tproto.groupby = function(dims) {\n\t this._dims = util.array(dims).map(function(d, i) {\n\t d = util.isString(d) ? {name: d, get: util.$(d)}\n\t : util.isFunction(d) ? {name: util.name(d) || d.name || ('_' + i), get: d}\n\t : (d.name && util.isFunction(d.get)) ? d : null;\n\t if (d == null) throw 'Invalid groupby argument: ' + d;\n\t return d;\n\t });\n\t return this.clear();\n\t};\n\t\n\t// Input: array of objects of the form\n\t// {name: string, ops: [string, ...]}\n\tproto.summarize = function(fields) {\n\t fields = summarize_args(fields);\n\t this._count = true;\n\t var aggr = (this._aggr = []),\n\t m, f, i, j, op, as, get;\n\t\n\t for (i=0; i 0) {\n\t // consolidate collector values\n\t if (cell.collect) {\n\t cell.data.values();\n\t }\n\t // update tuple properties\n\t for (i=0; i 1 ? this.dev / (this.valid-1) : 0',\n\t req: ['mean'], idx: 1\n\t }),\n\t 'variancep': measure({\n\t name: 'variancep',\n\t set: 'this.valid > 1 ? this.dev / this.valid : 0',\n\t req: ['variance'], idx: 2\n\t }),\n\t 'stdev': measure({\n\t name: 'stdev',\n\t set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : 0',\n\t req: ['variance'], idx: 2\n\t }),\n\t 'stdevp': measure({\n\t name: 'stdevp',\n\t set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : 0',\n\t req: ['variance'], idx: 2\n\t }),\n\t 'median': measure({\n\t name: 'median',\n\t set: 'cell.data.q2(this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'q1': measure({\n\t name: 'q1',\n\t set: 'cell.data.q1(this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'q3': measure({\n\t name: 'q3',\n\t set: 'cell.data.q3(this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'distinct': measure({\n\t name: 'distinct',\n\t set: 'this.distinct(cell.data.values(), this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'argmin': measure({\n\t name: 'argmin',\n\t add: 'if (v < this.min) this.argmin = t;',\n\t rem: 'if (v <= this.min) this.argmin = null;',\n\t set: 'this.argmin = this.argmin || cell.data.argmin(this.get)',\n\t req: ['min'], str: ['values'], idx: 3\n\t }),\n\t 'argmax': measure({\n\t name: 'argmax',\n\t add: 'if (v > this.max) this.argmax = t;',\n\t rem: 'if (v >= this.max) this.argmax = null;',\n\t set: 'this.argmax = this.argmax || cell.data.argmax(this.get)',\n\t req: ['max'], str: ['values'], idx: 3\n\t }),\n\t 'min': measure({\n\t name: 'min',\n\t init: 'this.min = +Infinity;',\n\t add: 'if (v < this.min) this.min = v;',\n\t rem: 'if (v <= this.min) this.min = NaN;',\n\t set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n\t str: ['values'], idx: 4\n\t }),\n\t 'max': measure({\n\t name: 'max',\n\t init: 'this.max = -Infinity;',\n\t add: 'if (v > this.max) this.max = v;',\n\t rem: 'if (v >= this.max) this.max = NaN;',\n\t set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n\t str: ['values'], idx: 4\n\t }),\n\t 'modeskew': measure({\n\t name: 'modeskew',\n\t set: 'this.dev===0 ? 0 : (this.mean - cell.data.q2(this.get)) / Math.sqrt(this.dev/(this.valid-1))',\n\t req: ['mean', 'stdev', 'median'], idx: 5\n\t })\n\t};\n\t\n\tfunction measure(base) {\n\t return function(out) {\n\t var m = util.extend({init:'', add:'', rem:'', idx:0}, base);\n\t m.out = out || base.name;\n\t return m;\n\t };\n\t}\n\t\n\tfunction resolve(agg, stream) {\n\t function collect(m, a) {\n\t function helper(r) { if (!m[r]) collect(m, m[r] = types[r]()); }\n\t if (a.req) a.req.forEach(helper);\n\t if (stream && a.str) a.str.forEach(helper);\n\t return m;\n\t }\n\t var map = agg.reduce(\n\t collect,\n\t agg.reduce(function(m, a) { return (m[a.name] = a, m); }, {})\n\t );\n\t return util.vals(map).sort(function(a, b) { return a.idx - b.idx; });\n\t}\n\t\n\tfunction create(agg, stream, accessor, mutator) {\n\t var all = resolve(agg, stream),\n\t ctr = 'this.cell = cell; this.tuple = t; this.valid = 0; this.missing = 0;',\n\t add = 'if (v==null) this.missing++; if (!this.isValid(v)) return; ++this.valid;',\n\t rem = 'if (v==null) this.missing--; if (!this.isValid(v)) return; --this.valid;',\n\t set = 'var t = this.tuple; var cell = this.cell;';\n\t\n\t all.forEach(function(a) {\n\t if (a.idx < 0) {\n\t ctr = a.init + ctr;\n\t add = a.add + add;\n\t rem = a.rem + rem;\n\t } else {\n\t ctr += a.init;\n\t add += a.add;\n\t rem += a.rem;\n\t }\n\t });\n\t agg.slice()\n\t .sort(function(a, b) { return a.idx - b.idx; })\n\t .forEach(function(a) {\n\t set += 'this.assign(t,\\''+a.out+'\\','+a.set+');';\n\t });\n\t set += 'return t;';\n\t\n\t /* jshint evil: true */\n\t ctr = Function('cell', 't', ctr);\n\t ctr.prototype.assign = mutator;\n\t ctr.prototype.add = Function('t', 'var v = this.get(t);' + add);\n\t ctr.prototype.rem = Function('t', 'var v = this.get(t);' + rem);\n\t ctr.prototype.set = Function(set);\n\t ctr.prototype.get = accessor;\n\t ctr.prototype.distinct = __webpack_require__(38).count.distinct;\n\t ctr.prototype.isValid = util.isValid;\n\t ctr.fields = agg.map(util.$('out'));\n\t return ctr;\n\t}\n\t\n\ttypes.create = create;\n\tmodule.exports = types;\n\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\tvar type = __webpack_require__(24);\n\tvar gen = __webpack_require__(39);\n\t\n\tvar stats = module.exports;\n\t\n\t// Collect unique values.\n\t// Output: an array of unique values, in first-observed order\n\tstats.unique = function(values, f, results) {\n\t f = util.$(f);\n\t results = results || [];\n\t var u = {}, v, i, n;\n\t for (i=0, n=values.length; i 0 ? Math.pow(mean, 1/c) : 0;\n\t return mean;\n\t};\n\t\n\t// Compute the harmonic mean of an array of numbers.\n\tstats.mean.harmonic = function(values, f) {\n\t f = util.$(f);\n\t var mean = 0, c, n, v, i;\n\t for (i=0, c=0, n=values.length; i b) b = v;\n\t }\n\t }\n\t return [a, b];\n\t};\n\t\n\t// Find the integer indices of the minimum and maximum values.\n\tstats.extent.index = function(values, f) {\n\t f = util.$(f);\n\t var x = -1, y = -1, a, b, v, i, n = values.length;\n\t for (i=0; i b) { b = v; y = i; }\n\t }\n\t }\n\t return [x, y];\n\t};\n\t\n\t// Compute the dot product of two arrays of numbers.\n\tstats.dot = function(values, a, b) {\n\t var sum = 0, i, v;\n\t if (!b) {\n\t if (values.length !== a.length) {\n\t throw Error('Array lengths must match.');\n\t }\n\t for (i=0; i -1 && p !== v) {\n\t mu = 1 + (i-1 + tie) / 2;\n\t for (; tie -1) {\n\t mu = 1 + (n-1 + tie) / 2;\n\t for (; tie max) max = x;\n\t delta = x - mean;\n\t mean = mean + delta / (++valid);\n\t M2 = M2 + delta * (x - mean);\n\t vals.push(x);\n\t }\n\t }\n\t M2 = M2 / (valid - 1);\n\t sd = Math.sqrt(M2);\n\t\n\t // sort values for median and iqr\n\t vals.sort(util.cmp);\n\t\n\t return {\n\t type: type(values, f),\n\t unique: u,\n\t count: values.length,\n\t valid: valid,\n\t missing: missing,\n\t distinct: distinct,\n\t min: min,\n\t max: max,\n\t mean: mean,\n\t stdev: sd,\n\t median: (v = stats.quantile(vals, 0.5)),\n\t q1: stats.quantile(vals, 0.25),\n\t q3: stats.quantile(vals, 0.75),\n\t modeskew: sd === 0 ? 0 : (mean - v) / sd\n\t };\n\t};\n\t\n\t// Compute profiles for all variables in a data set.\n\tstats.summary = function(data, fields) {\n\t fields = fields || util.keys(data[0]);\n\t var s = fields.map(function(f) {\n\t var p = stats.profile(data, util.$(f));\n\t return (p.field = f, p);\n\t });\n\t return (s.__summary__ = true, s);\n\t};\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t gen = module.exports;\n\t\n\tgen.repeat = function(val, n) {\n\t var a = Array(n), i;\n\t for (i=0; i stop) range.push(j);\n\t else while ((j = start + step * ++i) < stop) range.push(j);\n\t return range;\n\t};\n\t\n\tgen.random = {};\n\t\n\tgen.random.uniform = function(min, max) {\n\t if (max === undefined) {\n\t max = min === undefined ? 1 : min;\n\t min = 0;\n\t }\n\t var d = max - min;\n\t var f = function() {\n\t return min + d * Math.random();\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x >= min && x <= max) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t return x < min ? 0 : x > max ? 1 : (x - min) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? min + p*d : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.integer = function(a, b) {\n\t if (b === undefined) {\n\t b = a;\n\t a = 0;\n\t }\n\t var d = b - a;\n\t var f = function() {\n\t return a + Math.floor(d * Math.random());\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t var v = Math.floor(x);\n\t return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.normal = function(mean, stdev) {\n\t mean = mean || 0;\n\t stdev = stdev || 1;\n\t var next;\n\t var f = function() {\n\t var x = 0, y = 0, rds, c;\n\t if (next !== undefined) {\n\t x = next;\n\t next = undefined;\n\t return x;\n\t }\n\t do {\n\t x = Math.random()*2-1;\n\t y = Math.random()*2-1;\n\t rds = x*x + y*y;\n\t } while (rds === 0 || rds > 1);\n\t c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n\t next = mean + y*c*stdev;\n\t return mean + x*c*stdev;\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n\t return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n\t };\n\t f.cdf = function(x) {\n\t // Approximation from West (2009)\n\t // Better Approximations to Cumulative Normal Functions\n\t var cd,\n\t z = (x - mean) / stdev,\n\t Z = Math.abs(z);\n\t if (Z > 37) {\n\t cd = 0;\n\t } else {\n\t var sum, exp = Math.exp(-Z*Z/2);\n\t if (Z < 7.07106781186547) {\n\t sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n\t sum = sum * Z + 6.37396220353165;\n\t sum = sum * Z + 33.912866078383;\n\t sum = sum * Z + 112.079291497871;\n\t sum = sum * Z + 221.213596169931;\n\t sum = sum * Z + 220.206867912376;\n\t cd = exp * sum;\n\t sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n\t sum = sum * Z + 16.064177579207;\n\t sum = sum * Z + 86.7807322029461;\n\t sum = sum * Z + 296.564248779674;\n\t sum = sum * Z + 637.333633378831;\n\t sum = sum * Z + 793.826512519948;\n\t sum = sum * Z + 440.413735824752;\n\t cd = cd / sum;\n\t } else {\n\t sum = Z + 0.65;\n\t sum = Z + 4 / sum;\n\t sum = Z + 3 / sum;\n\t sum = Z + 2 / sum;\n\t sum = Z + 1 / sum;\n\t cd = exp / sum / 2.506628274631;\n\t }\n\t }\n\t return z > 0 ? 1 - cd : cd;\n\t };\n\t f.icdf = function(p) {\n\t // Approximation of Probit function using inverse error function.\n\t if (p <= 0 || p >= 1) return NaN;\n\t var x = 2*p - 1,\n\t v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n\t a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n\t b = Math.log(1 - (x*x)) / v,\n\t s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n\t return mean + stdev * Math.SQRT2 * s;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.bootstrap = function(domain, smooth) {\n\t // Generates a bootstrap sample from a set of observations.\n\t // Smooth bootstrapping adds random zero-centered noise to the samples.\n\t var val = domain.filter(util.isValid),\n\t len = val.length,\n\t err = smooth ? gen.random.normal(0, smooth) : null;\n\t var f = function() {\n\t return val[~~(Math.random()*len)] + (err ? err() : 0);\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t return f;\n\t};\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\tvar stats = __webpack_require__(38);\n\t\n\tvar REM = '__dl_rem__';\n\t\n\tfunction Collector(key) {\n\t this._add = [];\n\t this._rem = [];\n\t this._key = key || null;\n\t this._last = null;\n\t}\n\t\n\tvar proto = Collector.prototype;\n\t\n\tproto.add = function(v) {\n\t this._add.push(v);\n\t};\n\t\n\tproto.rem = function(v) {\n\t this._rem.push(v);\n\t};\n\t\n\tproto.values = function() {\n\t this._get = null;\n\t if (this._rem.length === 0) return this._add;\n\t\n\t var a = this._add,\n\t r = this._rem,\n\t k = this._key,\n\t x = Array(a.length - r.length),\n\t i, j, n, m;\n\t\n\t if (!util.isObject(r[0])) {\n\t // processing raw values\n\t m = stats.count.map(r);\n\t for (i=0, j=0, n=a.length; i 0) {\n\t m[a[i]] -= 1;\n\t } else {\n\t x[j++] = a[i];\n\t }\n\t }\n\t } else if (k) {\n\t // has unique key field, so use that\n\t m = util.toMap(r, k);\n\t for (i=0, j=0, n=a.length; i maxb) { step *= base; }\n\t\n\t // decrease step size if allowed\n\t for (i=0; i= minstep && span / v <= maxb) step = v;\n\t }\n\t }\n\t\n\t // update precision, min and max\n\t v = Math.log(step);\n\t precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n\t eps = Math.pow(base, -precision - 1);\n\t min = Math.min(min, Math.floor(min / step + eps) * step);\n\t max = Math.ceil(max / step) * step;\n\t\n\t return {\n\t start: min,\n\t stop: max,\n\t step: step,\n\t unit: {precision: precision},\n\t value: value,\n\t index: index\n\t };\n\t}\n\t\n\tfunction bisect(a, x, lo, hi) {\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n\t else { hi = mid; }\n\t }\n\t return lo;\n\t}\n\t\n\tfunction value(v) {\n\t return this.step * Math.floor(v / this.step + EPSILON);\n\t}\n\t\n\tfunction index(v) {\n\t return Math.floor((v - this.start) / this.step + EPSILON);\n\t}\n\t\n\tfunction date_value(v) {\n\t return this.unit.date(value.call(this, v));\n\t}\n\t\n\tfunction date_index(v) {\n\t return index.call(this, this.unit.unit(v));\n\t}\n\t\n\tbins.date = function(opt) {\n\t if (!opt) { throw Error(\"Missing date binning options.\"); }\n\t\n\t // find time step, then bin\n\t var units = opt.utc ? time.utc : time,\n\t dmin = opt.min,\n\t dmax = opt.max,\n\t maxb = opt.maxbins || 20,\n\t minb = opt.minbins || 4,\n\t span = (+dmax) - (+dmin),\n\t unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n\t spec = bins({\n\t min: unit.min != null ? unit.min : unit.unit(dmin),\n\t max: unit.max != null ? unit.max : unit.unit(dmax),\n\t maxbins: maxb,\n\t minstep: unit.minstep,\n\t steps: unit.step\n\t });\n\t\n\t spec.unit = unit;\n\t spec.index = date_index;\n\t if (!opt.raw) spec.value = date_value;\n\t return spec;\n\t};\n\t\n\tmodule.exports = bins;\n\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3_time = __webpack_require__(33);\n\t\n\tvar tempDate = new Date(),\n\t baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n\t utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\t\n\tfunction date(d) {\n\t return (tempDate.setTime(+d), tempDate);\n\t}\n\t\n\t// create a time unit entry\n\tfunction entry(type, date, unit, step, min, max) {\n\t var e = {\n\t type: type,\n\t date: date,\n\t unit: unit\n\t };\n\t if (step) {\n\t e.step = step;\n\t } else {\n\t e.minstep = 1;\n\t }\n\t if (min != null) e.min = min;\n\t if (max != null) e.max = max;\n\t return e;\n\t}\n\t\n\tfunction create(type, unit, base, step, min, max) {\n\t return entry(type,\n\t function(d) { return unit.offset(base, d); },\n\t function(d) { return unit.count(base, d); },\n\t step, min, max);\n\t}\n\t\n\tvar locale = [\n\t create('second', d3_time.second, baseDate),\n\t create('minute', d3_time.minute, baseDate),\n\t create('hour', d3_time.hour, baseDate),\n\t create('day', d3_time.day, baseDate, [1, 7]),\n\t create('month', d3_time.month, baseDate, [1, 3, 6]),\n\t create('year', d3_time.year, baseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n\t function(d) { return date(d).getSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(1970, 0, 1, 0, d); },\n\t function(d) { return date(d).getMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(1970, 0, 1, d); },\n\t function(d) { return date(d).getHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(1970, 0, 4+d); },\n\t function(d) { return date(d).getDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(1970, 0, d); },\n\t function(d) { return date(d).getDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(1970, d % 12, 1); },\n\t function(d) { return date(d).getMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar utc = [\n\t create('second', d3_time.utcSecond, utcBaseDate),\n\t create('minute', d3_time.utcMinute, utcBaseDate),\n\t create('hour', d3_time.utcHour, utcBaseDate),\n\t create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n\t create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n\t create('year', d3_time.utcYear, utcBaseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n\t function(d) { return date(d).getUTCSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n\t function(d) { return date(d).getUTCMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n\t function(d) { return date(d).getUTCHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n\t function(d) { return date(d).getUTCDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(Date.UTC(1970, 0, d)); },\n\t function(d) { return date(d).getUTCDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n\t function(d) { return date(d).getUTCMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar STEPS = [\n\t [31536e6, 5], // 1-year\n\t [7776e6, 4], // 3-month\n\t [2592e6, 4], // 1-month\n\t [12096e5, 3], // 2-week\n\t [6048e5, 3], // 1-week\n\t [1728e5, 3], // 2-day\n\t [864e5, 3], // 1-day\n\t [432e5, 2], // 12-hour\n\t [216e5, 2], // 6-hour\n\t [108e5, 2], // 3-hour\n\t [36e5, 2], // 1-hour\n\t [18e5, 1], // 30-minute\n\t [9e5, 1], // 15-minute\n\t [3e5, 1], // 5-minute\n\t [6e4, 1], // 1-minute\n\t [3e4, 0], // 30-second\n\t [15e3, 0], // 15-second\n\t [5e3, 0], // 5-second\n\t [1e3, 0] // 1-second\n\t];\n\t\n\tfunction find(units, span, minb, maxb) {\n\t var step = STEPS[0], i, n, bins;\n\t\n\t for (i=1, n=STEPS.length; i step[0]) {\n\t bins = span / step[0];\n\t if (bins > maxb) {\n\t return units[STEPS[i-1][1]];\n\t }\n\t if (bins >= minb) {\n\t return units[step[1]];\n\t }\n\t }\n\t }\n\t return units[STEPS[n-1][1]];\n\t}\n\t\n\tfunction toUnitMap(units) {\n\t var map = {}, i, n;\n\t for (i=0, n=units.length; i= h.length || !isFinite(j)) continue;\n\t h[j].count += 1;\n\t }\n\t }\n\t h.bins = b;\n\t return h;\n\t}\n\t\n\tfunction categorical(values, f, sort) {\n\t var u = stats.unique(values, f),\n\t c = stats.count.map(values, f);\n\t return u.map(function(k) { return {value: k, count: c[k]}; })\n\t .sort(util.comparator(sort ? '-count' : '+value'));\n\t}\n\t\n\tmodule.exports = {\n\t $bin: $bin,\n\t histogram: histogram\n\t};\n\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t format = __webpack_require__(32);\n\t\n\tvar context = {\n\t formats: [],\n\t format_map: {},\n\t truncate: util.truncate,\n\t pad: util.pad,\n\t day: format.day,\n\t month: format.month\n\t};\n\t\n\tfunction template(text) {\n\t var src = source(text, 'd');\n\t src = 'var __t; return ' + src + ';';\n\t\n\t /* jshint evil: true */\n\t return (new Function('d', src)).bind(context);\n\t}\n\t\n\ttemplate.source = source;\n\ttemplate.context = context;\n\ttemplate.format = get_format;\n\tmodule.exports = template;\n\t\n\t// Clear cache of format objects.\n\t// This can *break* prior template functions, so invoke with care!\n\ttemplate.clearFormatCache = function() {\n\t context.formats = [];\n\t context.format_map = {};\n\t};\n\t\n\t// Generate property access code for use within template source.\n\t// object: the name of the object (variable) containing template data\n\t// property: the property access string, verbatim from template tag\n\ttemplate.property = function(object, property) {\n\t var src = util.field(property).map(util.str).join('][');\n\t return object + '[' + src + ']';\n\t};\n\t\n\t// Generate source code for a template function.\n\t// text: the template text\n\t// variable: the name of the data object variable ('obj' by default)\n\t// properties: optional hash for collecting all accessed properties\n\tfunction source(text, variable, properties) {\n\t variable = variable || 'obj';\n\t var index = 0;\n\t var src = '\\'';\n\t var regex = template_re;\n\t\n\t // Compile the template source, escaping string literals appropriately.\n\t text.replace(regex, function(match, interpolate, offset) {\n\t src += text\n\t .slice(index, offset)\n\t .replace(template_escaper, template_escapeChar);\n\t index = offset + match.length;\n\t\n\t if (interpolate) {\n\t src += '\\'\\n+((__t=(' +\n\t template_var(interpolate, variable, properties) +\n\t '))==null?\\'\\':__t)+\\n\\'';\n\t }\n\t\n\t // Adobe VMs need the match returned to produce the correct offest.\n\t return match;\n\t });\n\t return src + '\\'';\n\t}\n\t\n\tfunction template_var(text, variable, properties) {\n\t var filters = text.match(filter_re);\n\t var prop = filters.shift().trim();\n\t var stringCast = true;\n\t\n\t function strcall(fn) {\n\t fn = fn || '';\n\t if (stringCast) {\n\t stringCast = false;\n\t src = 'String(' + src + ')' + fn;\n\t } else {\n\t src += fn;\n\t }\n\t return src;\n\t }\n\t\n\t function date() {\n\t return '(typeof ' + src + '===\"number\"?new Date('+src+'):'+src+')';\n\t }\n\t\n\t function formatter(type) {\n\t var pattern = args[0];\n\t if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n\t (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n\t pattern = pattern.slice(1, -1);\n\t } else {\n\t throw Error('Format pattern must be quoted: ' + pattern);\n\t }\n\t a = template_format(pattern, type);\n\t stringCast = false;\n\t var arg = type === 'number' ? src : date();\n\t src = 'this.formats['+a+']('+arg+')';\n\t }\n\t\n\t if (properties) properties[prop] = 1;\n\t var src = template.property(variable, prop);\n\t\n\t for (var i=0; i 0) {\n\t f = f.slice(0, pidx);\n\t args = filters[i].slice(pidx+1)\n\t .match(args_re)\n\t .map(function(s) { return s.trim(); });\n\t }\n\t f = f.trim();\n\t\n\t switch (f) {\n\t case 'length':\n\t strcall('.length');\n\t break;\n\t case 'lower':\n\t strcall('.toLowerCase()');\n\t break;\n\t case 'upper':\n\t strcall('.toUpperCase()');\n\t break;\n\t case 'lower-locale':\n\t strcall('.toLocaleLowerCase()');\n\t break;\n\t case 'upper-locale':\n\t strcall('.toLocaleUpperCase()');\n\t break;\n\t case 'trim':\n\t strcall('.trim()');\n\t break;\n\t case 'left':\n\t a = util.number(args[0]);\n\t strcall('.slice(0,' + a + ')');\n\t break;\n\t case 'right':\n\t a = util.number(args[0]);\n\t strcall('.slice(-' + a +')');\n\t break;\n\t case 'mid':\n\t a = util.number(args[0]);\n\t b = a + util.number(args[1]);\n\t strcall('.slice(+'+a+','+b+')');\n\t break;\n\t case 'slice':\n\t a = util.number(args[0]);\n\t strcall('.slice('+ a +\n\t (args.length > 1 ? ',' + util.number(args[1]) : '') +\n\t ')');\n\t break;\n\t case 'truncate':\n\t a = util.number(args[0]);\n\t b = args[1];\n\t b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n\t src = 'this.truncate(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n\t break;\n\t case 'pad':\n\t a = util.number(args[0]);\n\t b = args[1];\n\t b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n\t src = 'this.pad(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n\t break;\n\t case 'number':\n\t formatter('number');\n\t break;\n\t case 'time':\n\t formatter('time');\n\t break;\n\t case 'time-utc':\n\t formatter('utc');\n\t break;\n\t case 'month':\n\t src = 'this.month(' + src + ')';\n\t break;\n\t case 'month-abbrev':\n\t src = 'this.month(' + src + ',true)';\n\t break;\n\t case 'day':\n\t src = 'this.day(' + src + ')';\n\t break;\n\t case 'day-abbrev':\n\t src = 'this.day(' + src + ',true)';\n\t break;\n\t default:\n\t throw Error('Unrecognized template filter: ' + f);\n\t }\n\t }\n\t\n\t return src;\n\t}\n\t\n\tvar template_re = /\\{\\{(.+?)\\}\\}|$/g,\n\t filter_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^\\|\"]+|[^\\|\\']+)+/g,\n\t args_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^,\"]+|[^,\\']+)+/g;\n\t\n\t// Certain characters need to be escaped so that they can be put into a\n\t// string literal.\n\tvar template_escapes = {\n\t '\\'': '\\'',\n\t '\\\\': '\\\\',\n\t '\\r': 'r',\n\t '\\n': 'n',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t};\n\t\n\tvar template_escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\t\n\tfunction template_escapeChar(match) {\n\t return '\\\\' + template_escapes[match];\n\t}\n\t\n\tfunction template_format(pattern, type) {\n\t var key = type + ':' + pattern;\n\t if (context.format_map[key] == null) {\n\t var f = format[type](pattern);\n\t var i = context.formats.length;\n\t context.formats.push(f);\n\t context.format_map[key] = i;\n\t return i;\n\t }\n\t return context.format_map[key];\n\t}\n\t\n\tfunction get_format(pattern, type) {\n\t return context.formats[template_format(pattern, type)];\n\t}\n\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t time = __webpack_require__(43),\n\t utc = time.utc;\n\t\n\tvar u = module.exports;\n\t\n\tu.$year = util.$func('year', time.year.unit);\n\tu.$month = util.$func('month', time.months.unit);\n\tu.$date = util.$func('date', time.dates.unit);\n\tu.$day = util.$func('day', time.weekdays.unit);\n\tu.$hour = util.$func('hour', time.hours.unit);\n\tu.$minute = util.$func('minute', time.minutes.unit);\n\tu.$second = util.$func('second', time.seconds.unit);\n\t\n\tu.$utcYear = util.$func('utcYear', utc.year.unit);\n\tu.$utcMonth = util.$func('utcMonth', utc.months.unit);\n\tu.$utcDate = util.$func('utcDate', utc.dates.unit);\n\tu.$utcDay = util.$func('utcDay', utc.weekdays.unit);\n\tu.$utcHour = util.$func('utcHour', utc.hours.unit);\n\tu.$utcMinute = util.$func('utcMinute', utc.minutes.unit);\n\tu.$utcSecond = util.$func('utcSecond', utc.seconds.unit);\n\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\tvar load = __webpack_require__(18);\n\tvar read = __webpack_require__(23);\n\t\n\tmodule.exports = util\n\t .keys(read.formats)\n\t .reduce(function(out, type) {\n\t out[type] = function(opt, format, callback) {\n\t // process arguments\n\t if (util.isString(opt)) { opt = {url: opt}; }\n\t if (arguments.length === 2 && util.isFunction(format)) {\n\t callback = format;\n\t format = undefined;\n\t }\n\t\n\t // set up read format\n\t format = util.extend({parse: 'auto'}, format);\n\t format.type = type;\n\t\n\t // load data\n\t var data = load(opt, callback ? function(error, data) {\n\t if (error) { callback(error, null); return; }\n\t try {\n\t // data loaded, now parse it (async)\n\t data = read(data, format);\n\t callback(null, data);\n\t } catch (e) {\n\t callback(e, null);\n\t }\n\t } : undefined);\n\t\n\t // data loaded, now parse it (sync)\n\t if (!callback) return read(data, format);\n\t };\n\t return out;\n\t }, {});\n\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t type = __webpack_require__(24),\n\t stats = __webpack_require__(38),\n\t template = __webpack_require__(45);\n\t\n\tmodule.exports = {\n\t table: formatTable, // format a data table\n\t summary: formatSummary // format a data table summary\n\t};\n\t\n\tvar FMT = {\n\t 'date': '|time:\"%m/%d/%Y %H:%M:%S\"',\n\t 'number': '|number:\".4f\"',\n\t 'integer': '|number:\"d\"'\n\t};\n\t\n\tvar POS = {\n\t 'number': 'left',\n\t 'integer': 'left'\n\t};\n\t\n\tfunction formatTable(data, opt) {\n\t opt = util.extend({separator:' ', minwidth: 8, maxwidth: 15}, opt);\n\t var fields = opt.fields || util.keys(data[0]),\n\t types = type.all(data);\n\t\n\t if (opt.start || opt.limit) {\n\t var a = opt.start || 0,\n\t b = opt.limit ? a + opt.limit : data.length;\n\t data = data.slice(a, b);\n\t }\n\t\n\t // determine char width of fields\n\t var lens = fields.map(function(name) {\n\t var format = FMT[types[name]] || '',\n\t t = template('{{' + name + format + '}}'),\n\t l = stats.max(data, function(x) { return t(x).length; });\n\t l = Math.max(Math.min(name.length, opt.minwidth), l);\n\t return opt.maxwidth > 0 ? Math.min(l, opt.maxwidth) : l;\n\t });\n\t\n\t // print header row\n\t var head = fields.map(function(name, i) {\n\t return util.truncate(util.pad(name, lens[i], 'center'), lens[i]);\n\t }).join(opt.separator);\n\t\n\t // build template function for each row\n\t var tmpl = template(fields.map(function(name, i) {\n\t return '{{' +\n\t name +\n\t (FMT[types[name]] || '') +\n\t ('|pad:' + lens[i] + ',' + (POS[types[name]] || 'right')) +\n\t ('|truncate:' + lens[i]) +\n\t '}}';\n\t }).join(opt.separator));\n\t\n\t // print table\n\t return head + \"\\n\" + data.map(tmpl).join('\\n');\n\t}\n\t\n\tfunction formatSummary(s) {\n\t s = s ? s.__summary__ ? s : stats.summary(s) : this;\n\t var str = [], i, n;\n\t for (i=0, n=s.length; i 1) {\n\t for (var i=1, n=ref.length; i 0) {\n\t node = pq.peek();\n\t isSg = node instanceof Signal;\n\t pulse = pulses[node._id];\n\t\n\t if (node.rank() !== node.qrank()) {\n\t // A node's rank might change during a propagation. Re-queue if so.\n\t pq.replace(node.qrank(true));\n\t } else {\n\t // Evaluate node and propagate pulse.\n\t pq.pop();\n\t pulses[node._id] = null;\n\t listeners = node._listeners;\n\t\n\t if (!isSg || (isSg && !skipSignals)) {\n\t pulse = this.evaluate(pulse, node);\n\t }\n\t\n\t // Propagate the pulse.\n\t if (pulse !== this.doNotPropagate) {\n\t // Ensure reflow pulses always send reflow pulses even if skipped.\n\t if (!pulse.reflow && node.reflows()) {\n\t pulse = ChangeSet.create(pulse, true);\n\t }\n\t\n\t for (i=0, len=listeners.length; i 0) branch[i-1].addListener(node);\n\t }\n\t\n\t return branch;\n\t};\n\t\n\tprototype.disconnect = function(branch) {\n\t var collector, node, data, signals, i, n, j, m;\n\t\n\t for (i=0, n=branch.length; i= pulse.stamp,\n\t run = node.router() || pulse.add.length || pulse.rem.length;\n\t\n\t return run || !reflowed || node.reevaluate(pulse);\n\t};\n\t\n\tprototype.evaluate = function(pulse, node) {\n\t if (!this.reevaluate(pulse, node)) return pulse;\n\t pulse = node.evaluate(pulse);\n\t node.last(pulse.stamp);\n\t return pulse;\n\t};\n\t\n\tmodule.exports = Graph;\n\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\tfunction Heap(comparator) {\n\t this.cmp = comparator;\n\t this.nodes = [];\n\t}\n\t\n\tvar prototype = Heap.prototype;\n\t\n\tprototype.size = function() {\n\t return this.nodes.length;\n\t};\n\t\n\tprototype.clear = function() {\n\t return (this.nodes = [], this);\n\t};\n\t\n\tprototype.peek = function() {\n\t return this.nodes[0];\n\t};\n\t\n\tprototype.push = function(x) {\n\t var array = this.nodes;\n\t array.push(x);\n\t return _siftdown(array, 0, array.length-1, this.cmp);\n\t};\n\t\n\tprototype.pop = function() {\n\t var array = this.nodes,\n\t last = array.pop(),\n\t item;\n\t\n\t if (array.length) {\n\t item = array[0];\n\t array[0] = last;\n\t _siftup(array, 0, this.cmp);\n\t } else {\n\t item = last;\n\t }\n\t return item;\n\t};\n\t\n\tprototype.replace = function(item) {\n\t var array = this.nodes,\n\t retval = array[0];\n\t array[0] = item;\n\t _siftup(array, 0, this.cmp);\n\t return retval;\n\t};\n\t\n\tprototype.pushpop = function(item) {\n\t var array = this.nodes, ref = array[0];\n\t if (array.length && this.cmp(ref, item) < 0) {\n\t array[0] = item;\n\t item = ref;\n\t _siftup(array, 0, this.cmp);\n\t }\n\t return item;\n\t};\n\t\n\tfunction _siftdown(array, start, idx, cmp) {\n\t var item, parent, pidx;\n\t\n\t item = array[idx];\n\t while (idx > start) {\n\t pidx = (idx - 1) >> 1;\n\t parent = array[pidx];\n\t if (cmp(item, parent) < 0) {\n\t array[idx] = parent;\n\t idx = pidx;\n\t continue;\n\t }\n\t break;\n\t }\n\t return (array[idx] = item);\n\t}\n\t\n\tfunction _siftup(array, idx, cmp) {\n\t var start = idx,\n\t end = array.length,\n\t item = array[idx],\n\t cidx = 2 * idx + 1, ridx;\n\t\n\t while (cidx < end) {\n\t ridx = cidx + 1;\n\t if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n\t cidx = ridx;\n\t }\n\t array[idx] = array[cidx];\n\t idx = cidx;\n\t cidx = 2 * idx + 1;\n\t }\n\t array[idx] = item;\n\t return _siftdown(array, start, idx, cmp);\n\t}\n\t\n\tmodule.exports = Heap;\n\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ChangeSet = __webpack_require__(5),\n\t Node = __webpack_require__(10), // jshint ignore:line\n\t Base = Node.prototype;\n\t\n\tfunction Signal(graph, name, initialValue) {\n\t Base.init.call(this, graph);\n\t this._name = name;\n\t this._value = initialValue;\n\t this._verbose = false; // Verbose signals re-pulse the graph even if prev === val.\n\t this._handlers = [];\n\t return this;\n\t}\n\t\n\tvar prototype = (Signal.prototype = Object.create(Base));\n\tprototype.constructor = Signal;\n\t\n\tprototype.name = function() {\n\t return this._name;\n\t};\n\t\n\tprototype.value = function(val) {\n\t if (!arguments.length) return this._value;\n\t return (this._value = val, this);\n\t};\n\t\n\t// Alias to value, for shared API with DataSource\n\tprototype.values = prototype.value;\n\t\n\tprototype.verbose = function(v) {\n\t if (!arguments.length) return this._verbose;\n\t return (this._verbose = !!v, this);\n\t};\n\t\n\tprototype.evaluate = function(input) {\n\t return input.signals[this._name] ? input : this._graph.doNotPropagate;\n\t};\n\t\n\tprototype.fire = function(cs) {\n\t if (!cs) cs = ChangeSet.create(null, true);\n\t cs.signals[this._name] = 1;\n\t this._graph.propagate(cs, this);\n\t};\n\t\n\tprototype.on = function(handler) {\n\t var signal = this,\n\t node = new Node(this._graph);\n\t\n\t node.evaluate = function(input) {\n\t handler(signal.name(), signal.value());\n\t return input;\n\t };\n\t\n\t this._handlers.push({\n\t handler: handler,\n\t node: node\n\t });\n\t\n\t return this.addListener(node);\n\t};\n\t\n\tprototype.off = function(handler) {\n\t var h = this._handlers, i, x;\n\t\n\t for (i=h.length; --i>=0;) {\n\t if (!handler || h[i].handler === handler) {\n\t x = h.splice(i, 1)[0];\n\t this.removeListener(x.node);\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tmodule.exports = Signal;\n\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t axes: __webpack_require__(53),\n\t background: __webpack_require__(100),\n\t data: __webpack_require__(101),\n\t events: __webpack_require__(135),\n\t expr: __webpack_require__(136),\n\t legends: __webpack_require__(142),\n\t mark: __webpack_require__(55),\n\t marks: __webpack_require__(144),\n\t modify: __webpack_require__(134),\n\t padding: __webpack_require__(145),\n\t predicates: __webpack_require__(146),\n\t properties: __webpack_require__(56),\n\t signals: __webpack_require__(147),\n\t spec: __webpack_require__(148),\n\t streams: __webpack_require__(158),\n\t transforms: __webpack_require__(102)\n\t};\n\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t axs = __webpack_require__(54);\n\t\n\tvar ORIENT = {\n\t \"x\": \"bottom\",\n\t \"y\": \"left\",\n\t \"top\": \"top\",\n\t \"bottom\": \"bottom\",\n\t \"left\": \"left\",\n\t \"right\": \"right\"\n\t};\n\t\n\tfunction parseAxes(model, spec, axes, group) {\n\t var config = model.config();\n\t (spec || []).forEach(function(def, index) {\n\t axes[index] = axes[index] || axs(model);\n\t parseAxis(config, def, index, axes[index], group);\n\t });\n\t}\n\t\n\tfunction parseAxis(config, def, index, axis, group) {\n\t // axis scale\n\t if (def.scale !== undefined) {\n\t axis.scale(group.scale(def.scale));\n\t }\n\t\n\t // axis orientation\n\t axis.orient(def.orient || ORIENT[def.type]);\n\t // axis offset\n\t axis.offset(def.offset || 0);\n\t // axis layer\n\t axis.layer(def.layer || \"front\");\n\t // axis grid lines\n\t axis.grid(def.grid || false);\n\t // axis title\n\t axis.title(def.title || null);\n\t // axis title offset\n\t axis.titleOffset(def.titleOffset != null ?\n\t def.titleOffset : config.axis.titleOffset);\n\t // axis values\n\t axis.tickValues(def.values || null);\n\t // axis label formatting\n\t axis.tickFormat(def.format || null);\n\t axis.tickFormatType(def.formatType || null);\n\t // axis tick subdivision\n\t axis.tickSubdivide(def.subdivide || 0);\n\t // axis tick padding\n\t axis.tickPadding(def.tickPadding || config.axis.padding);\n\t\n\t // axis tick size(s)\n\t var size = [];\n\t if (def.tickSize !== undefined) {\n\t for (var i=0; i<3; ++i) size.push(def.tickSize);\n\t } else {\n\t var ts = config.axis.tickSize;\n\t size = [ts, ts, ts];\n\t }\n\t if (def.tickSizeMajor != null) size[0] = def.tickSizeMajor;\n\t if (def.tickSizeMinor != null) size[1] = def.tickSizeMinor;\n\t if (def.tickSizeEnd != null) size[2] = def.tickSizeEnd;\n\t if (size.length) {\n\t axis.tickSize.apply(axis, size);\n\t }\n\t\n\t // axis tick count\n\t axis.tickCount(def.ticks || config.axis.ticks);\n\t\n\t // style properties\n\t var p = def.properties;\n\t if (p && p.ticks) {\n\t axis.majorTickProperties(p.majorTicks ?\n\t dl.extend({}, p.ticks, p.majorTicks) : p.ticks);\n\t axis.minorTickProperties(p.minorTicks ?\n\t dl.extend({}, p.ticks, p.minorTicks) : p.ticks);\n\t } else {\n\t axis.majorTickProperties(p && p.majorTicks || {});\n\t axis.minorTickProperties(p && p.minorTicks || {});\n\t }\n\t axis.tickLabelProperties(p && p.labels || {});\n\t axis.titleProperties(p && p.title || {});\n\t axis.gridLineProperties(p && p.grid || {});\n\t axis.domainProperties(p && p.axis || {});\n\t}\n\t\n\tmodule.exports = parseAxes;\n\t\n\tparseAxes.schema = {\n\t \"defs\": {\n\t \"axis\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"x\", \"y\"]},\n\t \"scale\": {\"type\": \"string\"},\n\t \"orient\": {\"enum\": [\"top\", \"bottom\", \"left\", \"right\"]},\n\t \"title\": {\"type\": \"string\"},\n\t \"titleOffset\": {\"type\": \"number\"},\n\t \"format\": {\"type\": \"string\"},\n\t \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n\t \"ticks\": {\"type\": \"number\"},\n\t \"values\": {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": [\"string\", \"number\"]}\n\t },\n\t \"subdivide\": {\"type\": \"number\"},\n\t \"tickPadding\": {\"type\": \"number\"},\n\t \"tickSize\": {\"type\": \"number\"},\n\t \"tickSizeMajor\": {\"type\": \"number\"},\n\t \"tickSizeMinor\": {\"type\": \"number\"},\n\t \"tickSizeEnd\": {\"type\": \"number\"},\n\t \"offset\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"scale\": {\"type\": \"string\"},\n\t \"value\": {\"type\": [\"string\", \"number\"]}\n\t },\n\t \"required\": [\"scale\", \"value\"],\n\t \"additionalProperties\": false\n\t }]\n\t },\n\t \"layer\": {\"enum\": [\"front\", \"back\"], \"default\": \"front\"},\n\t \"grid\": {\"type\": \"boolean\"},\n\t \"properties\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"ticks\": {\"$ref\": \"#/defs/propset\"},\n\t \"majorTicks\": {\"$ref\": \"#/defs/propset\"},\n\t \"minorTicks\": {\"$ref\": \"#/defs/propset\"},\n\t \"labels\": {\"$ref\": \"#/defs/propset\"},\n\t \"title\": {\"$ref\": \"#/defs/propset\"},\n\t \"grid\": {\"$ref\": \"#/defs/propset\"},\n\t \"axis\": {\"$ref\": \"#/defs/propset\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"scale\"]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t parseMark = __webpack_require__(55),\n\t util = __webpack_require__(58);\n\t\n\tvar axisBounds = new (__webpack_require__(60).Bounds)();\n\tvar ORDINAL = 'ordinal';\n\t\n\tfunction axs(model) {\n\t var scale,\n\t config = model.config().axis,\n\t orient = config.orient,\n\t offset = 0,\n\t titleOffset = config.titleOffset,\n\t axisDef = {},\n\t layer = 'front',\n\t grid = false,\n\t title = null,\n\t tickMajorSize = config.tickSize,\n\t tickMinorSize = config.tickSize,\n\t tickEndSize = config.tickSize,\n\t tickPadding = config.padding,\n\t tickValues = null,\n\t tickFormatString = null,\n\t tickFormatType = null,\n\t tickSubdivide = 0,\n\t tickCount = config.ticks,\n\t gridLineStyle = {},\n\t tickLabelStyle = {},\n\t majorTickStyle = {},\n\t minorTickStyle = {},\n\t titleStyle = {},\n\t domainStyle = {},\n\t m = { // Axis marks as references for updates\n\t gridLines: {},\n\t majorTicks: {},\n\t minorTicks: {},\n\t tickLabels: {},\n\t domain: {},\n\t title: {}\n\t };\n\t\n\t var axis = {};\n\t\n\t function reset() {\n\t axisDef.type = null;\n\t }\n\t\n\t function ingest(d) {\n\t return {data: d};\n\t }\n\t\n\t function getTicks(format) {\n\t var major = tickValues || (scale.ticks ? scale.ticks(tickCount) : scale.domain()),\n\t minor = axisSubdivide(scale, major, tickSubdivide).map(ingest);\n\t major = major.map(function(d) { return (d = ingest(d), d.label = format(d.data), d); });\n\t return [major, minor];\n\t }\n\t\n\t axis.def = function() {\n\t if (!axisDef.type) axis_def(scale);\n\t\n\t var format = util.getTickFormat(scale, tickCount, tickFormatType, tickFormatString),\n\t ticks = getTicks(format),\n\t tdata = title ? [title].map(ingest) : [];\n\t\n\t axisDef.marks[0].from = function() { return grid ? ticks[0] : []; };\n\t axisDef.marks[1].from = function() { return ticks[0]; };\n\t axisDef.marks[2].from = function() { return ticks[1]; };\n\t axisDef.marks[3].from = axisDef.marks[1].from;\n\t axisDef.marks[4].from = function() { return [1]; };\n\t axisDef.marks[5].from = function() { return tdata; };\n\t axisDef.offset = offset;\n\t axisDef.orient = orient;\n\t axisDef.layer = layer;\n\t if (titleOffset === 'auto') titleAutoOffset(axisDef);\n\t\n\t return axisDef;\n\t };\n\t\n\t function titleAutoOffset(axisDef) {\n\t var orient = axisDef.orient,\n\t update = axisDef.marks[5].properties.update,\n\t fn = update.encode,\n\t min = config.titleOffsetAutoMin,\n\t max = config.titleOffsetAutoMax,\n\t pad = config.titleOffsetAutoMargin;\n\t\n\t // Offset axis title using bounding box of axis domain and labels\n\t // Assumes other components are **encoded and bounded** beforehand\n\t update.encode = function(item, group, trans, db, signals, preds) {\n\t var dirty = fn.call(fn, item, group, trans, db, signals, preds),\n\t field = (orient==='bottom' || orient==='top') ? 'y' : 'x';\n\t if (titleStyle[field] != null) return dirty;\n\t\n\t axisBounds.clear()\n\t .union(group.items[3].bounds)\n\t .union(group.items[4].bounds);\n\t\n\t var o = trans ? {} : item,\n\t method = (orient==='left' || orient==='right') ? 'width' : 'height',\n\t sign = (orient==='top' || orient==='left') ? -1 : 1,\n\t off = ~~(axisBounds[method]() + item.fontSize/2 + pad);\n\t\n\t Tuple.set(o, field, sign * Math.min(Math.max(min, off), max));\n\t if (trans) trans.interpolate(item, o);\n\t return true;\n\t };\n\t }\n\t\n\t function axis_def(scale) {\n\t // setup scale mapping\n\t var newScale, oldScale, range;\n\t if (scale.type === ORDINAL) {\n\t newScale = {scale: scale.scaleName, offset: 0.5 + scale.rangeBand()/2};\n\t oldScale = newScale;\n\t } else {\n\t newScale = {scale: scale.scaleName, offset: 0.5};\n\t oldScale = {scale: scale.scaleName+':prev', offset: 0.5};\n\t }\n\t range = axisScaleRange(scale);\n\t\n\t // setup axis marks\n\t dl.extend(m.gridLines, axisTicks(config));\n\t dl.extend(m.majorTicks, axisTicks(config));\n\t dl.extend(m.minorTicks, axisTicks(config));\n\t dl.extend(m.tickLabels, axisTickLabels(config));\n\t dl.extend(m.domain, axisDomain(config));\n\t dl.extend(m.title, axisTitle(config));\n\t m.gridLines.properties.enter.stroke = {value: config.gridColor};\n\t m.gridLines.properties.enter.strokeOpacity = {value: config.gridOpacity};\n\t\n\t // extend axis marks based on axis orientation\n\t axisTicksExtend(orient, m.gridLines, oldScale, newScale, Infinity, offset);\n\t axisTicksExtend(orient, m.majorTicks, oldScale, newScale, tickMajorSize);\n\t axisTicksExtend(orient, m.minorTicks, oldScale, newScale, tickMinorSize);\n\t axisLabelExtend(orient, m.tickLabels, oldScale, newScale, tickMajorSize, tickPadding);\n\t\n\t axisDomainExtend(orient, m.domain, range, tickEndSize);\n\t axisTitleExtend(orient, m.title, range, +titleOffset || -1);\n\t\n\t // add / override custom style properties\n\t dl.extend(m.gridLines.properties.update, gridLineStyle);\n\t dl.extend(m.majorTicks.properties.update, majorTickStyle);\n\t dl.extend(m.minorTicks.properties.update, minorTickStyle);\n\t dl.extend(m.tickLabels.properties.update, tickLabelStyle);\n\t dl.extend(m.domain.properties.update, domainStyle);\n\t dl.extend(m.title.properties.update, titleStyle);\n\t\n\t var marks = [m.gridLines, m.majorTicks, m.minorTicks, m.tickLabels, m.domain, m.title];\n\t dl.extend(axisDef, {\n\t type: 'group',\n\t interactive: false,\n\t properties: {\n\t enter: {\n\t encode: axisUpdate,\n\t scales: [scale.scaleName],\n\t signals: [], data: []\n\t },\n\t update: {\n\t encode: axisUpdate,\n\t scales: [scale.scaleName],\n\t signals: [], data: []\n\t }\n\t }\n\t });\n\t\n\t axisDef.marks = marks.map(function(m) { return parseMark(model, m); });\n\t }\n\t\n\t axis.scale = function(x) {\n\t if (!arguments.length) return scale;\n\t if (scale !== x) { scale = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.orient = function(x) {\n\t if (!arguments.length) return orient;\n\t if (orient !== x) {\n\t orient = x in axisOrients ? x + '' : config.orient;\n\t reset();\n\t }\n\t return axis;\n\t };\n\t\n\t axis.title = function(x) {\n\t if (!arguments.length) return title;\n\t if (title !== x) { title = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.tickCount = function(x) {\n\t if (!arguments.length) return tickCount;\n\t tickCount = x;\n\t return axis;\n\t };\n\t\n\t axis.tickValues = function(x) {\n\t if (!arguments.length) return tickValues;\n\t tickValues = x;\n\t return axis;\n\t };\n\t\n\t axis.tickFormat = function(x) {\n\t if (!arguments.length) return tickFormatString;\n\t if (tickFormatString !== x) {\n\t tickFormatString = x;\n\t reset();\n\t }\n\t return axis;\n\t };\n\t\n\t axis.tickFormatType = function(x) {\n\t if (!arguments.length) return tickFormatType;\n\t if (tickFormatType !== x) {\n\t tickFormatType = x;\n\t reset();\n\t }\n\t return axis;\n\t };\n\t\n\t axis.tickSize = function(x, y) {\n\t if (!arguments.length) return tickMajorSize;\n\t var n = arguments.length - 1,\n\t major = +x,\n\t minor = n > 1 ? +y : tickMajorSize,\n\t end = n > 0 ? +arguments[n] : tickMajorSize;\n\t\n\t if (tickMajorSize !== major ||\n\t tickMinorSize !== minor ||\n\t tickEndSize !== end) {\n\t reset();\n\t }\n\t\n\t tickMajorSize = major;\n\t tickMinorSize = minor;\n\t tickEndSize = end;\n\t return axis;\n\t };\n\t\n\t axis.tickSubdivide = function(x) {\n\t if (!arguments.length) return tickSubdivide;\n\t tickSubdivide = +x;\n\t return axis;\n\t };\n\t\n\t axis.offset = function(x) {\n\t if (!arguments.length) return offset;\n\t offset = dl.isObject(x) ? x : +x;\n\t return axis;\n\t };\n\t\n\t axis.tickPadding = function(x) {\n\t if (!arguments.length) return tickPadding;\n\t if (tickPadding !== +x) { tickPadding = +x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.titleOffset = function(x) {\n\t if (!arguments.length) return titleOffset;\n\t if (titleOffset !== x) { titleOffset = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.layer = function(x) {\n\t if (!arguments.length) return layer;\n\t if (layer !== x) { layer = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.grid = function(x) {\n\t if (!arguments.length) return grid;\n\t if (grid !== x) { grid = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.gridLineProperties = function(x) {\n\t if (!arguments.length) return gridLineStyle;\n\t if (gridLineStyle !== x) { gridLineStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.majorTickProperties = function(x) {\n\t if (!arguments.length) return majorTickStyle;\n\t if (majorTickStyle !== x) { majorTickStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.minorTickProperties = function(x) {\n\t if (!arguments.length) return minorTickStyle;\n\t if (minorTickStyle !== x) { minorTickStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.tickLabelProperties = function(x) {\n\t if (!arguments.length) return tickLabelStyle;\n\t if (tickLabelStyle !== x) { tickLabelStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.titleProperties = function(x) {\n\t if (!arguments.length) return titleStyle;\n\t if (titleStyle !== x) { titleStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.domainProperties = function(x) {\n\t if (!arguments.length) return domainStyle;\n\t if (domainStyle !== x) { domainStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.reset = function() {\n\t reset();\n\t return axis;\n\t };\n\t\n\t return axis;\n\t}\n\t\n\tvar axisOrients = {top: 1, right: 1, bottom: 1, left: 1};\n\t\n\tfunction axisSubdivide(scale, ticks, m) {\n\t var subticks = [];\n\t if (m && ticks.length > 1) {\n\t var extent = axisScaleExtent(scale.domain()),\n\t i = -1,\n\t n = ticks.length,\n\t d = (ticks[1] - ticks[0]) / ++m,\n\t j,\n\t v;\n\t while (++i < n) {\n\t for (j = m; --j > 0;) {\n\t if ((v = +ticks[i] - j * d) >= extent[0]) {\n\t subticks.push(v);\n\t }\n\t }\n\t }\n\t for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1];) {\n\t subticks.push(v);\n\t }\n\t }\n\t return subticks;\n\t}\n\t\n\tfunction axisScaleExtent(domain) {\n\t var start = domain[0], stop = domain[domain.length - 1];\n\t return start < stop ? [start, stop] : [stop, start];\n\t}\n\t\n\tfunction axisScaleRange(scale) {\n\t return scale.rangeExtent ?\n\t scale.rangeExtent() :\n\t axisScaleExtent(scale.range());\n\t}\n\t\n\tvar axisAlign = {\n\t bottom: 'center',\n\t top: 'center',\n\t left: 'right',\n\t right: 'left'\n\t};\n\t\n\tvar axisBaseline = {\n\t bottom: 'top',\n\t top: 'bottom',\n\t left: 'middle',\n\t right: 'middle'\n\t};\n\t\n\tfunction axisLabelExtend(orient, labels, oldScale, newScale, size, pad) {\n\t size = Math.max(size, 0) + pad;\n\t if (orient === 'left' || orient === 'top') {\n\t size *= -1;\n\t }\n\t if (orient === 'top' || orient === 'bottom') {\n\t dl.extend(labels.properties.enter, {\n\t x: oldScale,\n\t y: {value: size},\n\t });\n\t dl.extend(labels.properties.update, {\n\t x: newScale,\n\t y: {value: size},\n\t align: {value: 'center'},\n\t baseline: {value: axisBaseline[orient]}\n\t });\n\t } else {\n\t dl.extend(labels.properties.enter, {\n\t x: {value: size},\n\t y: oldScale,\n\t });\n\t dl.extend(labels.properties.update, {\n\t x: {value: size},\n\t y: newScale,\n\t align: {value: axisAlign[orient]},\n\t baseline: {value: 'middle'}\n\t });\n\t }\n\t}\n\t\n\tfunction axisTicksExtend(orient, ticks, oldScale, newScale, size, offset) {\n\t var sign = (orient === 'left' || orient === 'top') ? -1 : 1;\n\t if (size === Infinity) {\n\t size = (orient === 'top' || orient === 'bottom') ?\n\t {field: {group: 'height', level: 2}, mult: -sign, offset: offset*-sign} :\n\t {field: {group: 'width', level: 2}, mult: -sign, offset: offset*-sign};\n\t } else {\n\t size = {value: sign * size, offset: offset};\n\t }\n\t if (orient === 'top' || orient === 'bottom') {\n\t dl.extend(ticks.properties.enter, {\n\t x: oldScale,\n\t y: {value: 0},\n\t y2: size\n\t });\n\t dl.extend(ticks.properties.update, {\n\t x: newScale,\n\t y: {value: 0},\n\t y2: size\n\t });\n\t dl.extend(ticks.properties.exit, {\n\t x: newScale,\n\t });\n\t } else {\n\t dl.extend(ticks.properties.enter, {\n\t x: {value: 0},\n\t x2: size,\n\t y: oldScale\n\t });\n\t dl.extend(ticks.properties.update, {\n\t x: {value: 0},\n\t x2: size,\n\t y: newScale\n\t });\n\t dl.extend(ticks.properties.exit, {\n\t y: newScale,\n\t });\n\t }\n\t}\n\t\n\tfunction axisTitleExtend(orient, title, range, offset) {\n\t var update = title.properties.update,\n\t mid = ~~((range[0] + range[1]) / 2),\n\t sign = (orient === 'top' || orient === 'left') ? -1 : 1;\n\t\n\t if (orient === 'bottom' || orient === 'top') {\n\t update.x = {value: mid};\n\t update.angle = {value: 0};\n\t if (offset >= 0) update.y = {value: sign * offset};\n\t } else {\n\t update.y = {value: mid};\n\t update.angle = {value: orient === 'left' ? -90 : 90};\n\t if (offset >= 0) update.x = {value: sign * offset};\n\t }\n\t}\n\t\n\tfunction axisDomainExtend(orient, domain, range, size) {\n\t var path;\n\t if (orient === 'top' || orient === 'left') {\n\t size = -1 * size;\n\t }\n\t if (orient === 'bottom' || orient === 'top') {\n\t path = 'M' + range[0] + ',' + size + 'V0H' + range[1] + 'V' + size;\n\t } else {\n\t path = 'M' + size + ',' + range[0] + 'H0V' + range[1] + 'H' + size;\n\t }\n\t domain.properties.update.path = {value: path};\n\t}\n\t\n\tfunction axisUpdate(item, group, trans) {\n\t var o = trans ? {} : item,\n\t offset = item.mark.def.offset,\n\t orient = item.mark.def.orient,\n\t width = group.width,\n\t height = group.height; // TODO fallback to global w,h?\n\t\n\t if (dl.isArray(offset)) {\n\t var ofx = offset[0],\n\t ofy = offset[1];\n\t\n\t switch (orient) {\n\t case 'left': { Tuple.set(o, 'x', -ofx); Tuple.set(o, 'y', ofy); break; }\n\t case 'right': { Tuple.set(o, 'x', width + ofx); Tuple.set(o, 'y', ofy); break; }\n\t case 'bottom': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', height + ofy); break; }\n\t case 'top': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', -ofy); break; }\n\t default: { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', ofy); }\n\t }\n\t } else {\n\t if (dl.isObject(offset)) {\n\t offset = -group.scale(offset.scale)(offset.value);\n\t }\n\t\n\t switch (orient) {\n\t case 'left': { Tuple.set(o, 'x', -offset); Tuple.set(o, 'y', 0); break; }\n\t case 'right': { Tuple.set(o, 'x', width + offset); Tuple.set(o, 'y', 0); break; }\n\t case 'bottom': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', height + offset); break; }\n\t case 'top': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', -offset); break; }\n\t default: { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', 0); }\n\t }\n\t }\n\t\n\t if (trans) trans.interpolate(item, o);\n\t return true;\n\t}\n\t\n\tfunction axisTicks(config) {\n\t return {\n\t type: 'rule',\n\t interactive: false,\n\t key: 'data',\n\t properties: {\n\t enter: {\n\t stroke: {value: config.tickColor},\n\t strokeWidth: {value: config.tickWidth},\n\t opacity: {value: 1e-6}\n\t },\n\t exit: { opacity: {value: 1e-6} },\n\t update: { opacity: {value: 1} }\n\t }\n\t };\n\t}\n\t\n\tfunction axisTickLabels(config) {\n\t return {\n\t type: 'text',\n\t interactive: true,\n\t key: 'data',\n\t properties: {\n\t enter: {\n\t fill: {value: config.tickLabelColor},\n\t font: {value: config.tickLabelFont},\n\t fontSize: {value: config.tickLabelFontSize},\n\t opacity: {value: 1e-6},\n\t text: {field: 'label'}\n\t },\n\t exit: { opacity: {value: 1e-6} },\n\t update: { opacity: {value: 1} }\n\t }\n\t };\n\t}\n\t\n\tfunction axisTitle(config) {\n\t return {\n\t type: 'text',\n\t interactive: true,\n\t properties: {\n\t enter: {\n\t font: {value: config.titleFont},\n\t fontSize: {value: config.titleFontSize},\n\t fontWeight: {value: config.titleFontWeight},\n\t fill: {value: config.titleColor},\n\t align: {value: 'center'},\n\t baseline: {value: 'middle'},\n\t text: {field: 'data'}\n\t },\n\t update: {}\n\t }\n\t };\n\t}\n\t\n\tfunction axisDomain(config) {\n\t return {\n\t type: 'path',\n\t interactive: false,\n\t properties: {\n\t enter: {\n\t x: {value: 0.5},\n\t y: {value: 0.5},\n\t stroke: {value: config.axisColor},\n\t strokeWidth: {value: config.axisWidth}\n\t },\n\t update: {}\n\t }\n\t };\n\t}\n\t\n\tmodule.exports = axs;\n\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t parseProperties = __webpack_require__(56);\n\t\n\tfunction parseMark(model, mark) {\n\t var props = mark.properties,\n\t group = mark.marks;\n\t\n\t // parse mark property definitions\n\t dl.keys(props).forEach(function(k) {\n\t props[k] = parseProperties(model, mark.type, props[k]);\n\t });\n\t\n\t // parse delay function\n\t if (mark.delay) {\n\t mark.delay = parseProperties(model, mark.type, {delay: mark.delay});\n\t }\n\t\n\t // recurse if group type\n\t if (group) {\n\t mark.marks = group.map(function(g) { return parseMark(model, g); });\n\t }\n\t\n\t return mark;\n\t}\n\t\n\tmodule.exports = parseMark;\n\t\n\tparseMark.schema = {\n\t \"defs\": {\n\t \"mark\": {\n\t \"type\": \"object\",\n\t\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"key\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"rect\", \"symbol\", \"path\", \"arc\",\n\t \"area\", \"line\", \"rule\", \"image\", \"text\", \"group\"]},\n\t\n\t \"from\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"data\": {\"type\": \"string\"},\n\t \"mark\": {\"type\": \"string\"},\n\t \"transform\": {\"$ref\": \"#/defs/transform\"}\n\t },\n\t \"additionalProperties\": false\n\t },\n\t\n\t \"delay\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"ease\": {\n\t \"enum\": [\"linear\", \"quad\", \"cubic\", \"sin\",\n\t \"exp\", \"circle\", \"bounce\"].reduce(function(acc, e) {\n\t [\"in\", \"out\", \"in-out\", \"out-in\"].forEach(function(m) {\n\t acc.push(e+\"-\"+m);\n\t });\n\t return acc;\n\t }, [])\n\t },\n\t\n\t \"interactive\": {\"type\": \"boolean\"},\n\t\n\t \"properties\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"enter\": {\"$ref\": \"#/defs/propset\"},\n\t \"update\": {\"$ref\": \"#/defs/propset\"},\n\t \"exit\": {\"$ref\": \"#/defs/propset\"},\n\t \"hover\": {\"$ref\": \"#/defs/propset\"}\n\t },\n\t \"additionalProperties\": false,\n\t \"anyOf\": [{\"required\": [\"enter\"]}, {\"required\": [\"update\"]}]\n\t }\n\t },\n\t\n\t // \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t Tuple = __webpack_require__(4).Tuple;\n\t\n\tvar DEPS = [\"signals\", \"scales\", \"data\", \"fields\"];\n\t\n\tfunction properties(model, mark, spec) {\n\t var config = model.config(),\n\t code = \"\",\n\t names = dl.keys(spec),\n\t exprs = [], // parsed expressions injected in the generated code\n\t i, len, name, ref, vars = {},\n\t deps = {\n\t signals: {},\n\t scales: {},\n\t data: {},\n\t fields: {},\n\t nested: [],\n\t _nRefs: {}, // Temp stash to de-dupe nested refs.\n\t reflow: false\n\t };\n\t\n\t code += \"var o = trans ? {} : item, d=0, exprs=this.exprs, set=this.tpl.set, tmpl=signals||{}, t;\\n\" +\n\t // Stash for dl.template\n\t \"tmpl.datum = item.datum;\\n\" +\n\t \"tmpl.group = group;\\n\" +\n\t \"tmpl.parent = group.datum;\\n\";\n\t\n\t function handleDep(p) {\n\t if (ref[p] == null) return;\n\t var k = dl.array(ref[p]), i, n;\n\t for (i=0, n=k.length; i 0) ? \"\\n \" : \" \";\n\t if (ref.rule) {\n\t // a production rule valueref\n\t ref = rule(model, name, ref.rule, exprs);\n\t code += \"\\n \" + ref.code;\n\t } else if (dl.isArray(ref)) {\n\t // a production rule valueref as an array\n\t ref = rule(model, name, ref, exprs);\n\t code += \"\\n \" + ref.code;\n\t } else {\n\t // a simple valueref\n\t ref = valueRef(config, name, ref);\n\t code += \"d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n\t }\n\t\n\t vars[name] = true;\n\t DEPS.forEach(handleDep);\n\t deps.reflow = deps.reflow || ref.reflow;\n\t if (ref.nested.length) ref.nested.forEach(handleNestedRefs);\n\t }\n\t\n\t // If nested references are present, sort them based on their level\n\t // to speed up determination of whether encoders should be reeval'd.\n\t dl.keys(deps._nRefs).forEach(function(k) { deps.nested.push(deps._nRefs[k]); });\n\t deps.nested.sort(function(a, b) {\n\t a = a.level;\n\t b = b.level;\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t });\n\t\n\t if (vars.x2) {\n\t if (vars.x) {\n\t code += \"\\n if (o.x > o.x2) { \" +\n\t \"\\n t = o.x;\" +\n\t \"\\n d += set(o, 'x', o.x2);\" +\n\t \"\\n d += set(o, 'x2', t); \" +\n\t \"\\n };\";\n\t code += \"\\n d += set(o, 'width', (o.x2 - o.x));\";\n\t } else if (vars.width) {\n\t code += \"\\n d += set(o, 'x', (o.x2 - o.width));\";\n\t } else {\n\t code += \"\\n d += set(o, 'x', o.x2);\";\n\t }\n\t }\n\t\n\t if (vars.xc) {\n\t if (vars.width) {\n\t code += \"\\n d += set(o, 'x', (o.xc - o.width/2));\" ;\n\t } else {\n\t code += \"\\n d += set(o, 'x', o.xc);\" ;\n\t }\n\t }\n\t\n\t if (vars.y2) {\n\t if (vars.y) {\n\t code += \"\\n if (o.y > o.y2) { \" +\n\t \"\\n t = o.y;\" +\n\t \"\\n d += set(o, 'y', o.y2);\" +\n\t \"\\n d += set(o, 'y2', t);\" +\n\t \"\\n };\";\n\t code += \"\\n d += set(o, 'height', (o.y2 - o.y));\";\n\t } else if (vars.height) {\n\t code += \"\\n d += set(o, 'y', (o.y2 - o.height));\";\n\t } else {\n\t code += \"\\n d += set(o, 'y', o.y2);\";\n\t }\n\t }\n\t\n\t if (vars.yc) {\n\t if (vars.height) {\n\t code += \"\\n d += set(o, 'y', (o.yc - o.height/2));\" ;\n\t } else {\n\t code += \"\\n d += set(o, 'y', o.yc);\" ;\n\t }\n\t }\n\t\n\t if (hasPath(mark, vars)) code += \"\\n d += (item.touch(), 1);\";\n\t code += \"\\n if (trans) trans.interpolate(item, o);\";\n\t code += \"\\n return d > 0;\";\n\t\n\t try {\n\t /* jshint evil:true */\n\t var encoder = Function('item', 'group', 'trans', 'db',\n\t 'signals', 'predicates', code);\n\t\n\t encoder.tpl = Tuple;\n\t encoder.exprs = exprs;\n\t encoder.util = dl;\n\t encoder.d3 = d3; // For color spaces\n\t dl.extend(encoder, dl.template.context);\n\t return {\n\t encode: encoder,\n\t signals: dl.keys(deps.signals),\n\t scales: dl.keys(deps.scales),\n\t data: dl.keys(deps.data),\n\t fields: dl.keys(deps.fields),\n\t nested: deps.nested,\n\t reflow: deps.reflow\n\t };\n\t } catch (e) {\n\t log.error(e);\n\t log.log(code);\n\t }\n\t}\n\t\n\tfunction dependencies(a, b) {\n\t if (!dl.isObject(a)) {\n\t a = {reflow: false, nested: []};\n\t DEPS.forEach(function(d) { a[d] = []; });\n\t }\n\t\n\t if (dl.isObject(b)) {\n\t a.reflow = a.reflow || b.reflow;\n\t a.nested.push.apply(a.nested, b.nested);\n\t DEPS.forEach(function(d) { a[d].push.apply(a[d], b[d]); });\n\t }\n\t\n\t return a;\n\t}\n\t\n\tfunction hasPath(mark, vars) {\n\t return vars.path ||\n\t ((mark==='area' || mark==='line') &&\n\t (vars.x || vars.x2 || vars.width ||\n\t vars.y || vars.y2 || vars.height ||\n\t vars.tension || vars.interpolate));\n\t}\n\t\n\tfunction rule(model, name, rules, exprs) {\n\t var config = model.config(),\n\t deps = dependencies(),\n\t inputs = [],\n\t code = '';\n\t\n\t (rules||[]).forEach(function(r, i) {\n\t var ref = valueRef(config, name, r);\n\t dependencies(deps, ref);\n\t\n\t if (r.test) {\n\t // rule uses an expression instead of a predicate.\n\t var exprFn = model.expr(r.test);\n\t deps.signals.push.apply(deps.signals, exprFn.globals);\n\t deps.data.push.apply(deps.data, exprFn.dataSources);\n\t\n\t code += \"if (exprs[\" + exprs.length + \"](item.datum, null)) {\" +\n\t \"\\n d += set(o, \"+dl.str(name)+\", \" +ref.val+\");\";\n\t code += rules[i+1] ? \"\\n } else \" : \" }\";\n\t\n\t exprs.push(exprFn.fn);\n\t } else {\n\t var def = r.predicate,\n\t predName = def && (def.name || def),\n\t pred = model.predicate(predName),\n\t p = 'predicates['+dl.str(predName)+']',\n\t input = [], args = name+'_arg'+i;\n\t\n\t if (dl.isObject(def)) {\n\t dl.keys(def).forEach(function(k) {\n\t if (k === 'name') return;\n\t var ref = valueRef(config, i, def[k], true);\n\t input.push(dl.str(k)+': '+ref.val);\n\t dependencies(deps, ref);\n\t });\n\t }\n\t\n\t if (predName) {\n\t // append the predicates dependencies to our dependencies\n\t deps.signals.push.apply(deps.signals, pred.signals);\n\t deps.data.push.apply(deps.data, pred.data);\n\t inputs.push(args+\" = {\\n \"+input.join(\",\\n \")+\"\\n }\");\n\t code += \"if (\"+p+\".call(\"+p+\",\"+args+\", db, signals, predicates)) {\" +\n\t \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n\t code += rules[i+1] ? \"\\n } else \" : \" }\";\n\t } else {\n\t code += \"{\" +\n\t \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\"+\n\t \"\\n }\\n\";\n\t }\n\t }\n\t });\n\t\n\t if (inputs.length) code = \"var \" + inputs.join(\",\\n \") + \";\\n \" + code;\n\t return (deps.code = code, deps);\n\t}\n\t\n\tfunction valueRef(config, name, ref, predicateArg) {\n\t if (ref == null) return null;\n\t\n\t if (name==='fill' || name==='stroke') {\n\t if (ref.c) {\n\t return colorRef(config, 'hcl', ref.h, ref.c, ref.l);\n\t } else if (ref.h || ref.s) {\n\t return colorRef(config, 'hsl', ref.h, ref.s, ref.l);\n\t } else if (ref.l || ref.a) {\n\t return colorRef(config, 'lab', ref.l, ref.a, ref.b);\n\t } else if (ref.r || ref.g || ref.b) {\n\t return colorRef(config, 'rgb', ref.r, ref.g, ref.b);\n\t }\n\t }\n\t\n\t // initialize value\n\t var val = null, scale = null,\n\t deps = dependencies(),\n\t sgRef = null, fRef = null, sRef = null, tmpl = {};\n\t\n\t if (ref.template !== undefined) {\n\t val = dl.template.source(ref.template, 'tmpl', tmpl);\n\t dl.keys(tmpl).forEach(function(k) {\n\t var f = dl.field(k),\n\t a = f.shift();\n\t if (a === 'parent' || a === 'group') {\n\t deps.nested.push({\n\t parent: a === 'parent',\n\t group: a === 'group',\n\t level: 1\n\t });\n\t } else if (a === 'datum') {\n\t deps.fields.push(f[0]);\n\t } else {\n\t deps.signals.push(a);\n\t }\n\t });\n\t }\n\t\n\t if (ref.value !== undefined) {\n\t val = dl.str(ref.value);\n\t }\n\t\n\t if (ref.signal !== undefined) {\n\t sgRef = dl.field(ref.signal);\n\t val = 'signals['+sgRef.map(dl.str).join('][')+']';\n\t deps.signals.push(sgRef.shift());\n\t }\n\t\n\t if (ref.field !== undefined) {\n\t ref.field = dl.isString(ref.field) ? {datum: ref.field} : ref.field;\n\t fRef = fieldRef(ref.field);\n\t val = fRef.val;\n\t dependencies(deps, fRef);\n\t }\n\t\n\t if (ref.scale !== undefined) {\n\t sRef = scaleRef(ref.scale);\n\t scale = sRef.val;\n\t dependencies(deps, sRef);\n\t deps.scales.push(ref.scale.name || ref.scale);\n\t\n\t // run through scale function if val specified.\n\t // if no val, scale function is predicate arg.\n\t if (val !== null || ref.band || ref.mult || ref.offset || !predicateArg) {\n\t val = scale + (ref.band ? '.rangeBand()' :\n\t '('+(val !== null ? val : 'item.datum.data')+')');\n\t } else if (predicateArg) {\n\t val = scale;\n\t }\n\t }\n\t\n\t // multiply, offset, return value\n\t val = '(' + (ref.mult?(dl.number(ref.mult)+' * '):'') + val + ')' +\n\t (ref.offset ? ' + ' + dl.number(ref.offset) : '');\n\t\n\t // Collate dependencies\n\t return (deps.val = val, deps);\n\t}\n\t\n\tfunction colorRef(config, type, x, y, z) {\n\t var xx = x ? valueRef(config, '', x) : config.color[type][0],\n\t yy = y ? valueRef(config, '', y) : config.color[type][1],\n\t zz = z ? valueRef(config, '', z) : config.color[type][2],\n\t deps = dependencies();\n\t\n\t [xx, yy, zz].forEach(function(v) {\n\t if (dl.isArray) return;\n\t dependencies(deps, v);\n\t });\n\t\n\t var val = '(this.d3.' + type + '(' + [xx.val, yy.val, zz.val].join(',') + ') + \"\")';\n\t return (deps.val = val, deps);\n\t}\n\t\n\t// {field: {datum: \"foo\"} } -> item.datum.foo\n\t// {field: {group: \"foo\"} } -> group.foo\n\t// {field: {parent: \"foo\"} } -> group.datum.foo\n\tfunction fieldRef(ref) {\n\t if (dl.isString(ref)) {\n\t return {val: dl.field(ref).map(dl.str).join('][')};\n\t }\n\t\n\t // Resolve nesting/parent lookups\n\t var l = ref.level || 1,\n\t nested = (ref.group || ref.parent) && l,\n\t scope = nested ? Array(l).join('group.mark.') : '',\n\t r = fieldRef(ref.datum || ref.group || ref.parent || ref.signal),\n\t val = r.val,\n\t deps = dependencies(null, r);\n\t\n\t if (ref.datum) {\n\t val = 'item.datum['+val+']';\n\t deps.fields.push(ref.datum);\n\t } else if (ref.group) {\n\t val = scope+'group['+val+']';\n\t deps.nested.push({ level: l, group: true });\n\t } else if (ref.parent) {\n\t val = scope+'group.datum['+val+']';\n\t deps.nested.push({ level: l, parent: true });\n\t } else if (ref.signal) {\n\t val = 'signals['+val+']';\n\t deps.signals.push(dl.field(ref.signal)[0]);\n\t deps.reflow = true;\n\t }\n\t\n\t return (deps.val = val, deps);\n\t}\n\t\n\t// {scale: \"x\"}\n\t// {scale: {name: \"x\"}},\n\t// {scale: fieldRef}\n\tfunction scaleRef(ref) {\n\t var scale = null,\n\t fr = null,\n\t deps = dependencies();\n\t\n\t if (dl.isString(ref)) {\n\t scale = dl.str(ref);\n\t } else if (ref.name) {\n\t scale = dl.isString(ref.name) ? dl.str(ref.name) : (fr = fieldRef(ref.name)).val;\n\t } else {\n\t scale = (fr = fieldRef(ref)).val;\n\t }\n\t\n\t scale = '(item.mark._scaleRefs['+scale+'] = 1, group.scale('+scale+'))';\n\t if (ref.invert) scale += '.invert';\n\t\n\t // Mark scale refs as they're dealt with separately in mark._scaleRefs.\n\t if (fr) fr.nested.forEach(function(g) { g.scale = true; });\n\t return fr ? (fr.val = scale, fr) : (deps.val = scale, deps);\n\t}\n\t\n\tmodule.exports = properties;\n\t\n\tfunction valueSchema(type) {\n\t type = dl.isArray(type) ? {\"enum\": type} : {\"type\": type};\n\t var modType = type.type === \"number\" && type.type || \"string\";\n\t var valRef = {\n\t \"type\": \"object\",\n\t \"allOf\": [{\"$ref\": \"#/refs/\" + modType + \"Modifiers\"}, {\n\t \"oneOf\": [{\n\t \"$ref\": \"#/refs/signal\",\n\t \"required\": [\"signal\"]\n\t }, {\n\t \"properties\": {\"value\": type},\n\t \"required\": [\"value\"]\n\t }, {\n\t \"properties\": {\"field\": {\"$ref\": \"#/refs/field\"}},\n\t \"required\": [\"field\"]\n\t }, {\n\t \"properties\": {\"band\": {\"type\": \"boolean\"}},\n\t \"required\": [\"band\"]\n\t }]\n\t }]\n\t };\n\t\n\t if (type.type === \"string\") {\n\t valRef.allOf[1].oneOf.push({\n\t \"properties\": {\"template\": {\"type\": \"string\"}},\n\t \"required\": [\"template\"]\n\t });\n\t }\n\t\n\t return {\n\t \"oneOf\": [{\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"rule\": {\n\t \"type\": \"array\",\n\t \"items\": {\n\t \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n\t }\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"rule\"]\n\t },\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\n\t \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n\t }\n\t },\n\t valRef]\n\t };\n\t}\n\t\n\tproperties.schema = {\n\t \"refs\": {\n\t \"field\": {\n\t \"title\": \"FieldRef\",\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"oneOf\": [\n\t {\"$ref\": \"#/refs/signal\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"datum\": {\"$ref\": \"#/refs/field\"}},\n\t \"required\": [\"datum\"],\n\t \"additionalProperties\": false\n\t },\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"group\": {\"$ref\": \"#/refs/field\"},\n\t \"level\": {\"type\": \"number\"}\n\t },\n\t \"required\": [\"group\"],\n\t \"additionalProperties\": false\n\t },\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"parent\": {\"$ref\": \"#/refs/field\"},\n\t \"level\": {\"type\": \"number\"}\n\t },\n\t \"required\": [\"parent\"],\n\t \"additionalProperties\": false\n\t }\n\t ]\n\t }\n\t ]\n\t },\n\t\n\t \"scale\": {\n\t \"title\": \"ScaleRef\",\n\t \"oneOf\": [\n\t {\"$ref\": \"#/refs/field\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"name\": {\"$ref\": \"#/refs/field\"},\n\t \"invert\": {\"type\": \"boolean\", \"default\": false}\n\t },\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t },\n\t\n\t \"stringModifiers\": {\n\t \"properties\": {\n\t \"scale\": {\"$ref\": \"#/refs/scale\"}\n\t }\n\t },\n\t\n\t \"numberModifiers\": {\n\t \"properties\": {\n\t \"mult\": {\"type\": \"number\"},\n\t \"offset\": {\"type\": \"number\"},\n\t \"scale\": {\"$ref\": \"#/refs/scale\"}\n\t }\n\t },\n\t\n\t \"value\": valueSchema({}, \"value\"),\n\t \"numberValue\": valueSchema(\"number\", \"numberValue\"),\n\t \"stringValue\": valueSchema(\"string\", \"stringValue\"),\n\t \"booleanValue\": valueSchema(\"boolean\", \"booleanValue\"),\n\t \"arrayValue\": valueSchema(\"array\", \"arrayValue\"),\n\t\n\t \"colorValue\": {\n\t \"title\": \"ColorRef\",\n\t \"oneOf\": [{\"$ref\": \"#/refs/stringValue\"}, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"r\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"g\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"b\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"r\", \"g\", \"b\"]\n\t }, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"h\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"s\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"l\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"h\", \"s\", \"l\"]\n\t }, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"l\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"a\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"b\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"l\", \"a\", \"b\"]\n\t }, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"h\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"c\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"l\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"h\", \"c\", \"l\"]\n\t }]\n\t }\n\t },\n\t\n\t \"defs\": {\n\t \"rule\": {\n\t \"anyOf\": [\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"predicate\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"name\": { \"type\": \"string\" }},\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t }\n\t }\n\t },\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"test\": {\"type\": \"string\"}}\n\t }\n\t ]\n\t },\n\t \"propset\": {\n\t \"title\": \"Mark property set\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t // Common Properties\n\t \"x\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"x2\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"xc\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"width\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"y\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"y2\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"yc\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"height\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"opacity\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"fill\": {\"$ref\": \"#/refs/colorValue\"},\n\t \"fillOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"stroke\": {\"$ref\": \"#/refs/colorValue\"},\n\t \"strokeWidth\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"strokeOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"strokeDash\": {\"$ref\": \"#/refs/arrayValue\"},\n\t \"strokeDashOffset\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"cursor\": {\"$ref\": \"#/refs/stringValue\"},\n\t\n\t // Group-mark properties\n\t \"clip\": {\"$ref\": \"#/refs/booleanValue\"},\n\t\n\t // Symbol-mark properties\n\t \"size\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"shape\": valueSchema([\"circle\", \"square\",\n\t \"cross\", \"diamond\", \"triangle-up\", \"triangle-down\"]),\n\t\n\t // Path-mark properties\n\t \"path\": {\"$ref\": \"#/refs/stringValue\"},\n\t\n\t // Arc-mark properties\n\t \"innerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"outerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"startAngle\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"endAngle\": {\"$ref\": \"#/refs/numberValue\"},\n\t\n\t // Area- and line-mark properties\n\t \"interpolate\": valueSchema([\"linear\", \"step-before\", \"step-after\",\n\t \"basis\", \"basis-open\", \"cardinal\", \"cardinal-open\", \"monotone\"]),\n\t \"tension\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"orient\": valueSchema([\"horizontal\", \"vertical\"]),\n\t\n\t // Image-mark properties\n\t \"url\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"align\": valueSchema([\"left\", \"right\", \"center\"]),\n\t \"baseline\": valueSchema([\"top\", \"middle\", \"bottom\", \"alphabetic\"]),\n\t\n\t // Text-mark properties\n\t \"text\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"dx\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"dy\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"radius\":{\"$ref\": \"#/refs/numberValue\"},\n\t \"theta\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"angle\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"font\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"fontSize\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"fontWeight\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"fontStyle\": {\"$ref\": \"#/refs/stringValue\"}\n\t },\n\t\n\t \"additionalProperties\": false\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n\t var d3 = {\n\t version: \"3.5.17\"\n\t };\n\t var d3_arraySlice = [].slice, d3_array = function(list) {\n\t return d3_arraySlice.call(list);\n\t };\n\t var d3_document = this.document;\n\t function d3_documentElement(node) {\n\t return node && (node.ownerDocument || node.document || node).documentElement;\n\t }\n\t function d3_window(node) {\n\t return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n\t }\n\t if (d3_document) {\n\t try {\n\t d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n\t } catch (e) {\n\t d3_array = function(list) {\n\t var i = list.length, array = new Array(i);\n\t while (i--) array[i] = list[i];\n\t return array;\n\t };\n\t }\n\t }\n\t if (!Date.now) Date.now = function() {\n\t return +new Date();\n\t };\n\t if (d3_document) {\n\t try {\n\t d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n\t } catch (error) {\n\t var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n\t d3_element_prototype.setAttribute = function(name, value) {\n\t d3_element_setAttribute.call(this, name, value + \"\");\n\t };\n\t d3_element_prototype.setAttributeNS = function(space, local, value) {\n\t d3_element_setAttributeNS.call(this, space, local, value + \"\");\n\t };\n\t d3_style_prototype.setProperty = function(name, value, priority) {\n\t d3_style_setProperty.call(this, name, value + \"\", priority);\n\t };\n\t }\n\t }\n\t d3.ascending = d3_ascending;\n\t function d3_ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t d3.descending = function(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t };\n\t d3.min = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n\t }\n\t return a;\n\t };\n\t d3.max = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n\t }\n\t return a;\n\t };\n\t d3.extent = function(array, f) {\n\t var i = -1, n = array.length, a, b, c;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t return [ a, c ];\n\t };\n\t function d3_number(x) {\n\t return x === null ? NaN : +x;\n\t }\n\t function d3_numeric(x) {\n\t return !isNaN(x);\n\t }\n\t d3.sum = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n\t }\n\t return s;\n\t };\n\t d3.mean = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1, j = n;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n\t }\n\t if (j) return s / j;\n\t };\n\t d3.quantile = function(values, p) {\n\t var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n\t return e ? v + e * (values[h] - v) : v;\n\t };\n\t d3.median = function(array, f) {\n\t var numbers = [], n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n\t }\n\t if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n\t };\n\t d3.variance = function(array, f) {\n\t var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n\t if (arguments.length === 1) {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(array[i]))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t } else {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t if (j > 1) return s / (j - 1);\n\t };\n\t d3.deviation = function() {\n\t var v = d3.variance.apply(this, arguments);\n\t return v ? Math.sqrt(v) : v;\n\t };\n\t function d3_bisector(compare) {\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t }\n\t var d3_bisect = d3_bisector(d3_ascending);\n\t d3.bisectLeft = d3_bisect.left;\n\t d3.bisect = d3.bisectRight = d3_bisect.right;\n\t d3.bisector = function(f) {\n\t return d3_bisector(f.length === 1 ? function(d, x) {\n\t return d3_ascending(f(d), x);\n\t } : f);\n\t };\n\t d3.shuffle = function(array, i0, i1) {\n\t if ((m = arguments.length) < 3) {\n\t i1 = array.length;\n\t if (m < 2) i0 = 0;\n\t }\n\t var m = i1 - i0, t, i;\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n\t }\n\t return array;\n\t };\n\t d3.permute = function(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t };\n\t d3.pairs = function(array) {\n\t var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n\t return pairs;\n\t };\n\t d3.transpose = function(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t };\n\t function d3_transposeLength(d) {\n\t return d.length;\n\t }\n\t d3.zip = function() {\n\t return d3.transpose(arguments);\n\t };\n\t d3.keys = function(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t };\n\t d3.values = function(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t };\n\t d3.entries = function(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({\n\t key: key,\n\t value: map[key]\n\t });\n\t return entries;\n\t };\n\t d3.merge = function(arrays) {\n\t var n = arrays.length, m, i = -1, j = 0, merged, array;\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t return merged;\n\t };\n\t var abs = Math.abs;\n\t d3.range = function(start, stop, step) {\n\t if (arguments.length < 3) {\n\t step = 1;\n\t if (arguments.length < 2) {\n\t stop = start;\n\t start = 0;\n\t }\n\t }\n\t if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n\t var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n\t start *= k, stop *= k, step *= k;\n\t if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n\t return range;\n\t };\n\t function d3_range_integerScale(x) {\n\t var k = 1;\n\t while (x * k % 1) k *= 10;\n\t return k;\n\t }\n\t function d3_class(ctor, properties) {\n\t for (var key in properties) {\n\t Object.defineProperty(ctor.prototype, key, {\n\t value: properties[key],\n\t enumerable: false\n\t });\n\t }\n\t }\n\t d3.map = function(object, f) {\n\t var map = new d3_Map();\n\t if (object instanceof d3_Map) {\n\t object.forEach(function(key, value) {\n\t map.set(key, value);\n\t });\n\t } else if (Array.isArray(object)) {\n\t var i = -1, n = object.length, o;\n\t if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n\t } else {\n\t for (var key in object) map.set(key, object[key]);\n\t }\n\t return map;\n\t };\n\t function d3_Map() {\n\t this._ = Object.create(null);\n\t }\n\t var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n\t d3_class(d3_Map, {\n\t has: d3_map_has,\n\t get: function(key) {\n\t return this._[d3_map_escape(key)];\n\t },\n\t set: function(key, value) {\n\t return this._[d3_map_escape(key)] = value;\n\t },\n\t remove: d3_map_remove,\n\t keys: d3_map_keys,\n\t values: function() {\n\t var values = [];\n\t for (var key in this._) values.push(this._[key]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var key in this._) entries.push({\n\t key: d3_map_unescape(key),\n\t value: this._[key]\n\t });\n\t return entries;\n\t },\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n\t }\n\t });\n\t function d3_map_escape(key) {\n\t return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n\t }\n\t function d3_map_unescape(key) {\n\t return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n\t }\n\t function d3_map_has(key) {\n\t return d3_map_escape(key) in this._;\n\t }\n\t function d3_map_remove(key) {\n\t return (key = d3_map_escape(key)) in this._ && delete this._[key];\n\t }\n\t function d3_map_keys() {\n\t var keys = [];\n\t for (var key in this._) keys.push(d3_map_unescape(key));\n\t return keys;\n\t }\n\t function d3_map_size() {\n\t var size = 0;\n\t for (var key in this._) ++size;\n\t return size;\n\t }\n\t function d3_map_empty() {\n\t for (var key in this._) return false;\n\t return true;\n\t }\n\t d3.nest = function() {\n\t var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n\t function map(mapType, array, depth) {\n\t if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n\t var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n\t values.push(object);\n\t } else {\n\t valuesByKey.set(keyValue, [ object ]);\n\t }\n\t }\n\t if (mapType) {\n\t object = mapType();\n\t setter = function(keyValue, values) {\n\t object.set(keyValue, map(mapType, values, depth));\n\t };\n\t } else {\n\t object = {};\n\t setter = function(keyValue, values) {\n\t object[keyValue] = map(mapType, values, depth);\n\t };\n\t }\n\t valuesByKey.forEach(setter);\n\t return object;\n\t }\n\t function entries(map, depth) {\n\t if (depth >= keys.length) return map;\n\t var array = [], sortKey = sortKeys[depth++];\n\t map.forEach(function(key, keyMap) {\n\t array.push({\n\t key: key,\n\t values: entries(keyMap, depth)\n\t });\n\t });\n\t return sortKey ? array.sort(function(a, b) {\n\t return sortKey(a.key, b.key);\n\t }) : array;\n\t }\n\t nest.map = function(array, mapType) {\n\t return map(mapType, array, 0);\n\t };\n\t nest.entries = function(array) {\n\t return entries(map(d3.map, array, 0), 0);\n\t };\n\t nest.key = function(d) {\n\t keys.push(d);\n\t return nest;\n\t };\n\t nest.sortKeys = function(order) {\n\t sortKeys[keys.length - 1] = order;\n\t return nest;\n\t };\n\t nest.sortValues = function(order) {\n\t sortValues = order;\n\t return nest;\n\t };\n\t nest.rollup = function(f) {\n\t rollup = f;\n\t return nest;\n\t };\n\t return nest;\n\t };\n\t d3.set = function(array) {\n\t var set = new d3_Set();\n\t if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n\t return set;\n\t };\n\t function d3_Set() {\n\t this._ = Object.create(null);\n\t }\n\t d3_class(d3_Set, {\n\t has: d3_map_has,\n\t add: function(key) {\n\t this._[d3_map_escape(key += \"\")] = true;\n\t return key;\n\t },\n\t remove: d3_map_remove,\n\t values: d3_map_keys,\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key));\n\t }\n\t });\n\t d3.behavior = {};\n\t function d3_identity(d) {\n\t return d;\n\t }\n\t d3.rebind = function(target, source) {\n\t var i = 1, n = arguments.length, method;\n\t while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n\t return target;\n\t };\n\t function d3_rebind(target, source, method) {\n\t return function() {\n\t var value = method.apply(source, arguments);\n\t return value === source ? target : value;\n\t };\n\t }\n\t function d3_vendorSymbol(object, name) {\n\t if (name in object) return name;\n\t name = name.charAt(0).toUpperCase() + name.slice(1);\n\t for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n\t var prefixName = d3_vendorPrefixes[i] + name;\n\t if (prefixName in object) return prefixName;\n\t }\n\t }\n\t var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n\t function d3_noop() {}\n\t d3.dispatch = function() {\n\t var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t return dispatch;\n\t };\n\t function d3_dispatch() {}\n\t d3_dispatch.prototype.on = function(type, listener) {\n\t var i = type.indexOf(\".\"), name = \"\";\n\t if (i >= 0) {\n\t name = type.slice(i + 1);\n\t type = type.slice(0, i);\n\t }\n\t if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n\t if (arguments.length === 2) {\n\t if (listener == null) for (type in this) {\n\t if (this.hasOwnProperty(type)) this[type].on(name, null);\n\t }\n\t return this;\n\t }\n\t };\n\t function d3_dispatch_event(dispatch) {\n\t var listeners = [], listenerByName = new d3_Map();\n\t function event() {\n\t var z = listeners, i = -1, n = z.length, l;\n\t while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n\t return dispatch;\n\t }\n\t event.on = function(name, listener) {\n\t var l = listenerByName.get(name), i;\n\t if (arguments.length < 2) return l && l.on;\n\t if (l) {\n\t l.on = null;\n\t listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n\t listenerByName.remove(name);\n\t }\n\t if (listener) listeners.push(listenerByName.set(name, {\n\t on: listener\n\t }));\n\t return dispatch;\n\t };\n\t return event;\n\t }\n\t d3.event = null;\n\t function d3_eventPreventDefault() {\n\t d3.event.preventDefault();\n\t }\n\t function d3_eventSource() {\n\t var e = d3.event, s;\n\t while (s = e.sourceEvent) e = s;\n\t return e;\n\t }\n\t function d3_eventDispatch(target) {\n\t var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t dispatch.of = function(thiz, argumentz) {\n\t return function(e1) {\n\t try {\n\t var e0 = e1.sourceEvent = d3.event;\n\t e1.target = target;\n\t d3.event = e1;\n\t dispatch[e1.type].apply(thiz, argumentz);\n\t } finally {\n\t d3.event = e0;\n\t }\n\t };\n\t };\n\t return dispatch;\n\t }\n\t d3.requote = function(s) {\n\t return s.replace(d3_requote_re, \"\\\\$&\");\n\t };\n\t var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t var d3_subclass = {}.__proto__ ? function(object, prototype) {\n\t object.__proto__ = prototype;\n\t } : function(object, prototype) {\n\t for (var property in prototype) object[property] = prototype[property];\n\t };\n\t function d3_selection(groups) {\n\t d3_subclass(groups, d3_selectionPrototype);\n\t return groups;\n\t }\n\t var d3_select = function(s, n) {\n\t return n.querySelector(s);\n\t }, d3_selectAll = function(s, n) {\n\t return n.querySelectorAll(s);\n\t }, d3_selectMatches = function(n, s) {\n\t var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n\t d3_selectMatches = function(n, s) {\n\t return d3_selectMatcher.call(n, s);\n\t };\n\t return d3_selectMatches(n, s);\n\t };\n\t if (typeof Sizzle === \"function\") {\n\t d3_select = function(s, n) {\n\t return Sizzle(s, n)[0] || null;\n\t };\n\t d3_selectAll = Sizzle;\n\t d3_selectMatches = Sizzle.matchesSelector;\n\t }\n\t d3.selection = function() {\n\t return d3.select(d3_document.documentElement);\n\t };\n\t var d3_selectionPrototype = d3.selection.prototype = [];\n\t d3_selectionPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, group, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n\t if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selector(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_select(selector, this);\n\t };\n\t }\n\t d3_selectionPrototype.selectAll = function(selector) {\n\t var subgroups = [], subgroup, node;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n\t subgroup.parentNode = node;\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selectorAll(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_selectAll(selector, this);\n\t };\n\t }\n\t var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n\t var d3_nsPrefix = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: d3_nsXhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t };\n\t d3.ns = {\n\t prefix: d3_nsPrefix,\n\t qualify: function(name) {\n\t var i = name.indexOf(\":\"), prefix = name;\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return d3_nsPrefix.hasOwnProperty(prefix) ? {\n\t space: d3_nsPrefix[prefix],\n\t local: name\n\t } : name;\n\t }\n\t };\n\t d3_selectionPrototype.attr = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node();\n\t name = d3.ns.qualify(name);\n\t return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n\t }\n\t for (value in name) this.each(d3_selection_attr(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_attr(name, value));\n\t };\n\t function d3_selection_attr(name, value) {\n\t name = d3.ns.qualify(name);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrConstant() {\n\t this.setAttribute(name, value);\n\t }\n\t function attrConstantNS() {\n\t this.setAttributeNS(name.space, name.local, value);\n\t }\n\t function attrFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n\t }\n\t function attrFunctionNS() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n\t }\n\t return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n\t }\n\t function d3_collapse(s) {\n\t return s.trim().replace(/\\s+/g, \" \");\n\t }\n\t d3_selectionPrototype.classed = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n\t if (value = node.classList) {\n\t while (++i < n) if (!value.contains(name[i])) return false;\n\t } else {\n\t value = node.getAttribute(\"class\");\n\t while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n\t }\n\t return true;\n\t }\n\t for (value in name) this.each(d3_selection_classed(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_classed(name, value));\n\t };\n\t function d3_selection_classedRe(name) {\n\t return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n\t }\n\t function d3_selection_classes(name) {\n\t return (name + \"\").trim().split(/^|\\s+/);\n\t }\n\t function d3_selection_classed(name, value) {\n\t name = d3_selection_classes(name).map(d3_selection_classedName);\n\t var n = name.length;\n\t function classedConstant() {\n\t var i = -1;\n\t while (++i < n) name[i](this, value);\n\t }\n\t function classedFunction() {\n\t var i = -1, x = value.apply(this, arguments);\n\t while (++i < n) name[i](this, x);\n\t }\n\t return typeof value === \"function\" ? classedFunction : classedConstant;\n\t }\n\t function d3_selection_classedName(name) {\n\t var re = d3_selection_classedRe(name);\n\t return function(node, value) {\n\t if (c = node.classList) return value ? c.add(name) : c.remove(name);\n\t var c = node.getAttribute(\"class\") || \"\";\n\t if (value) {\n\t re.lastIndex = 0;\n\t if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n\t } else {\n\t node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n\t }\n\t };\n\t }\n\t d3_selectionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n\t return this;\n\t }\n\t if (n < 2) {\n\t var node = this.node();\n\t return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n\t }\n\t priority = \"\";\n\t }\n\t return this.each(d3_selection_style(name, value, priority));\n\t };\n\t function d3_selection_style(name, value, priority) {\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleConstant() {\n\t this.style.setProperty(name, value, priority);\n\t }\n\t function styleFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n\t }\n\t return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n\t }\n\t d3_selectionPrototype.property = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") return this.node()[name];\n\t for (value in name) this.each(d3_selection_property(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_property(name, value));\n\t };\n\t function d3_selection_property(name, value) {\n\t function propertyNull() {\n\t delete this[name];\n\t }\n\t function propertyConstant() {\n\t this[name] = value;\n\t }\n\t function propertyFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) delete this[name]; else this[name] = x;\n\t }\n\t return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n\t }\n\t d3_selectionPrototype.text = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.textContent = \"\";\n\t } : function() {\n\t this.textContent = value;\n\t }) : this.node().textContent;\n\t };\n\t d3_selectionPrototype.html = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.innerHTML = \"\";\n\t } : function() {\n\t this.innerHTML = value;\n\t }) : this.node().innerHTML;\n\t };\n\t d3_selectionPrototype.append = function(name) {\n\t name = d3_selection_creator(name);\n\t return this.select(function() {\n\t return this.appendChild(name.apply(this, arguments));\n\t });\n\t };\n\t function d3_selection_creator(name) {\n\t function create() {\n\t var document = this.ownerDocument, namespace = this.namespaceURI;\n\t return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n\t }\n\t function createNS() {\n\t return this.ownerDocument.createElementNS(name.space, name.local);\n\t }\n\t return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n\t }\n\t d3_selectionPrototype.insert = function(name, before) {\n\t name = d3_selection_creator(name);\n\t before = d3_selection_selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n\t });\n\t };\n\t d3_selectionPrototype.remove = function() {\n\t return this.each(d3_selectionRemove);\n\t };\n\t function d3_selectionRemove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t }\n\t d3_selectionPrototype.data = function(value, key) {\n\t var i = -1, n = this.length, group, node;\n\t if (!arguments.length) {\n\t value = new Array(n = (group = this[0]).length);\n\t while (++i < n) {\n\t if (node = group[i]) {\n\t value[i] = node.__data__;\n\t }\n\t }\n\t return value;\n\t }\n\t function bind(group, groupData) {\n\t var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n\t if (key) {\n\t var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n\t for (i = -1; ++i < n; ) {\n\t if (node = group[i]) {\n\t if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n\t exitNodes[i] = node;\n\t } else {\n\t nodeByKeyValue.set(keyValue, node);\n\t }\n\t keyValues[i] = keyValue;\n\t }\n\t }\n\t for (i = -1; ++i < m; ) {\n\t if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t } else if (node !== true) {\n\t updateNodes[i] = node;\n\t node.__data__ = nodeData;\n\t }\n\t nodeByKeyValue.set(keyValue, true);\n\t }\n\t for (i = -1; ++i < n; ) {\n\t if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t } else {\n\t for (i = -1; ++i < n0; ) {\n\t node = group[i];\n\t nodeData = groupData[i];\n\t if (node) {\n\t node.__data__ = nodeData;\n\t updateNodes[i] = node;\n\t } else {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t }\n\t }\n\t for (;i < m; ++i) {\n\t enterNodes[i] = d3_selection_dataNode(groupData[i]);\n\t }\n\t for (;i < n; ++i) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t enterNodes.update = updateNodes;\n\t enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n\t enter.push(enterNodes);\n\t update.push(updateNodes);\n\t exit.push(exitNodes);\n\t }\n\t var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n\t if (typeof value === \"function\") {\n\t while (++i < n) {\n\t bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n\t }\n\t } else {\n\t while (++i < n) {\n\t bind(group = this[i], value);\n\t }\n\t }\n\t update.enter = function() {\n\t return enter;\n\t };\n\t update.exit = function() {\n\t return exit;\n\t };\n\t return update;\n\t };\n\t function d3_selection_dataNode(data) {\n\t return {\n\t __data__: data\n\t };\n\t }\n\t d3_selectionPrototype.datum = function(value) {\n\t return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n\t };\n\t d3_selectionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_filter(selector) {\n\t return function() {\n\t return d3_selectMatches(this, selector);\n\t };\n\t }\n\t d3_selectionPrototype.order = function() {\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t return this;\n\t };\n\t d3_selectionPrototype.sort = function(comparator) {\n\t comparator = d3_selection_sortComparator.apply(this, arguments);\n\t for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n\t return this.order();\n\t };\n\t function d3_selection_sortComparator(comparator) {\n\t if (!arguments.length) comparator = d3_ascending;\n\t return function(a, b) {\n\t return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n\t };\n\t }\n\t d3_selectionPrototype.each = function(callback) {\n\t return d3_selection_each(this, function(node, i, j) {\n\t callback.call(node, node.__data__, i, j);\n\t });\n\t };\n\t function d3_selection_each(groups, callback) {\n\t for (var j = 0, m = groups.length; j < m; j++) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n\t if (node = group[i]) callback(node, i, j);\n\t }\n\t }\n\t return groups;\n\t }\n\t d3_selectionPrototype.call = function(callback) {\n\t var args = d3_array(arguments);\n\t callback.apply(args[0] = this, args);\n\t return this;\n\t };\n\t d3_selectionPrototype.empty = function() {\n\t return !this.node();\n\t };\n\t d3_selectionPrototype.node = function() {\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t return null;\n\t };\n\t d3_selectionPrototype.size = function() {\n\t var n = 0;\n\t d3_selection_each(this, function() {\n\t ++n;\n\t });\n\t return n;\n\t };\n\t function d3_selection_enter(selection) {\n\t d3_subclass(selection, d3_selection_enterPrototype);\n\t return selection;\n\t }\n\t var d3_selection_enterPrototype = [];\n\t d3.selection.enter = d3_selection_enter;\n\t d3.selection.enter.prototype = d3_selection_enterPrototype;\n\t d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n\t d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n\t d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n\t d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n\t d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n\t d3_selection_enterPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, upgroup, group, node;\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t upgroup = (group = this[j]).update;\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = group.parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n\t subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t d3_selection_enterPrototype.insert = function(name, before) {\n\t if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n\t return d3_selectionPrototype.insert.call(this, name, before);\n\t };\n\t function d3_selection_enterInsertBefore(enter) {\n\t var i0, j0;\n\t return function(d, i, j) {\n\t var group = enter[j].update, n = group.length, node;\n\t if (j != j0) j0 = j, i0 = 0;\n\t if (i >= i0) i0 = i + 1;\n\t while (!(node = group[i0]) && ++i0 < n) ;\n\t return node;\n\t };\n\t }\n\t d3.select = function(node) {\n\t var group;\n\t if (typeof node === \"string\") {\n\t group = [ d3_select(node, d3_document) ];\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = [ node ];\n\t group.parentNode = d3_documentElement(node);\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3.selectAll = function(nodes) {\n\t var group;\n\t if (typeof nodes === \"string\") {\n\t group = d3_array(d3_selectAll(nodes, d3_document));\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = d3_array(nodes);\n\t group.parentNode = null;\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3_selectionPrototype.on = function(type, listener, capture) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof type !== \"string\") {\n\t if (n < 2) listener = false;\n\t for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n\t return this;\n\t }\n\t if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n\t capture = false;\n\t }\n\t return this.each(d3_selection_on(type, listener, capture));\n\t };\n\t function d3_selection_on(type, listener, capture) {\n\t var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n\t if (i > 0) type = type.slice(0, i);\n\t var filter = d3_selection_onFilters.get(type);\n\t if (filter) type = filter, wrap = d3_selection_onFilter;\n\t function onRemove() {\n\t var l = this[name];\n\t if (l) {\n\t this.removeEventListener(type, l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t function onAdd() {\n\t var l = wrap(listener, d3_array(arguments));\n\t onRemove.call(this);\n\t this.addEventListener(type, this[name] = l, l.$ = capture);\n\t l._ = listener;\n\t }\n\t function removeAll() {\n\t var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n\t for (var name in this) {\n\t if (match = name.match(re)) {\n\t var l = this[name];\n\t this.removeEventListener(match[1], l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t }\n\t return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n\t }\n\t var d3_selection_onFilters = d3.map({\n\t mouseenter: \"mouseover\",\n\t mouseleave: \"mouseout\"\n\t });\n\t if (d3_document) {\n\t d3_selection_onFilters.forEach(function(k) {\n\t if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n\t });\n\t }\n\t function d3_selection_onListener(listener, argumentz) {\n\t return function(e) {\n\t var o = d3.event;\n\t d3.event = e;\n\t argumentz[0] = this.__data__;\n\t try {\n\t listener.apply(this, argumentz);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t }\n\t function d3_selection_onFilter(listener, argumentz) {\n\t var l = d3_selection_onListener(listener, argumentz);\n\t return function(e) {\n\t var target = this, related = e.relatedTarget;\n\t if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n\t l.call(target, e);\n\t }\n\t };\n\t }\n\t var d3_event_dragSelect, d3_event_dragId = 0;\n\t function d3_event_dragSuppress(node) {\n\t var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n\t if (d3_event_dragSelect == null) {\n\t d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n\t }\n\t if (d3_event_dragSelect) {\n\t var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n\t style[d3_event_dragSelect] = \"none\";\n\t }\n\t return function(suppressClick) {\n\t w.on(name, null);\n\t if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n\t if (suppressClick) {\n\t var off = function() {\n\t w.on(click, null);\n\t };\n\t w.on(click, function() {\n\t d3_eventPreventDefault();\n\t off();\n\t }, true);\n\t setTimeout(off, 0);\n\t }\n\t };\n\t }\n\t d3.mouse = function(container) {\n\t return d3_mousePoint(container, d3_eventSource());\n\t };\n\t var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n\t function d3_mousePoint(container, e) {\n\t if (e.changedTouches) e = e.changedTouches[0];\n\t var svg = container.ownerSVGElement || container;\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t if (d3_mouse_bug44083 < 0) {\n\t var window = d3_window(container);\n\t if (window.scrollX || window.scrollY) {\n\t svg = d3.select(\"body\").append(\"svg\").style({\n\t position: \"absolute\",\n\t top: 0,\n\t left: 0,\n\t margin: 0,\n\t padding: 0,\n\t border: \"none\"\n\t }, \"important\");\n\t var ctm = svg[0][0].getScreenCTM();\n\t d3_mouse_bug44083 = !(ctm.f || ctm.e);\n\t svg.remove();\n\t }\n\t }\n\t if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n\t point.y = e.clientY;\n\t point = point.matrixTransform(container.getScreenCTM().inverse());\n\t return [ point.x, point.y ];\n\t }\n\t var rect = container.getBoundingClientRect();\n\t return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n\t }\n\t d3.touch = function(container, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n\t if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return d3_mousePoint(container, touch);\n\t }\n\t }\n\t };\n\t d3.behavior.drag = function() {\n\t var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n\t function drag() {\n\t this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n\t }\n\t function dragstart(id, position, subject, move, end) {\n\t return function() {\n\t var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n\t if (origin) {\n\t dragOffset = origin.apply(that, arguments);\n\t dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n\t } else {\n\t dragOffset = [ 0, 0 ];\n\t }\n\t dispatch({\n\t type: \"dragstart\"\n\t });\n\t function moved() {\n\t var position1 = position(parent, dragId), dx, dy;\n\t if (!position1) return;\n\t dx = position1[0] - position0[0];\n\t dy = position1[1] - position0[1];\n\t dragged |= dx | dy;\n\t position0 = position1;\n\t dispatch({\n\t type: \"drag\",\n\t x: position1[0] + dragOffset[0],\n\t y: position1[1] + dragOffset[1],\n\t dx: dx,\n\t dy: dy\n\t });\n\t }\n\t function ended() {\n\t if (!position(parent, dragId)) return;\n\t dragSubject.on(move + dragName, null).on(end + dragName, null);\n\t dragRestore(dragged);\n\t dispatch({\n\t type: \"dragend\"\n\t });\n\t }\n\t };\n\t }\n\t drag.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return drag;\n\t };\n\t return d3.rebind(drag, event, \"on\");\n\t };\n\t function d3_behavior_dragTouchId() {\n\t return d3.event.changedTouches[0].identifier;\n\t }\n\t d3.touches = function(container, touches) {\n\t if (arguments.length < 2) touches = d3_eventSource().touches;\n\t return touches ? d3_array(touches).map(function(touch) {\n\t var point = d3_mousePoint(container, touch);\n\t point.identifier = touch.identifier;\n\t return point;\n\t }) : [];\n\t };\n\t var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n\t function d3_sgn(x) {\n\t return x > 0 ? 1 : x < 0 ? -1 : 0;\n\t }\n\t function d3_cross2d(a, b, c) {\n\t return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n\t }\n\t function d3_acos(x) {\n\t return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n\t }\n\t function d3_asin(x) {\n\t return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n\t }\n\t function d3_sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t }\n\t function d3_cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t }\n\t function d3_tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t }\n\t function d3_haversin(x) {\n\t return (x = Math.sin(x / 2)) * x;\n\t }\n\t var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n\t d3.interpolateZoom = function(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n\t if (d2 < ε2) {\n\t S = Math.log(w1 / w0) / ρ;\n\t i = function(t) {\n\t return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n\t };\n\t } else {\n\t var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / ρ;\n\t i = function(t) {\n\t var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n\t return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n\t };\n\t }\n\t i.duration = S * 1e3;\n\t return i;\n\t };\n\t d3.behavior.zoom = function() {\n\t var view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n\t if (!d3_behavior_zoomWheel) {\n\t d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n\t }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return d3.event.wheelDelta;\n\t }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n\t return -d3.event.detail;\n\t }, \"MozMousePixelScroll\");\n\t }\n\t function zoom(g) {\n\t g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n\t }\n\t zoom.event = function(g) {\n\t g.each(function() {\n\t var dispatch = event.of(this, arguments), view1 = view;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.zoom\", function() {\n\t view = this.__chart__ || {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t zoomstarted(dispatch);\n\t }).tween(\"zoom:zoom\", function() {\n\t var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n\t return function(t) {\n\t var l = i(t), k = dx / l[2];\n\t this.__chart__ = view = {\n\t x: cx - l[0] * k,\n\t y: cy - l[1] * k,\n\t k: k\n\t };\n\t zoomed(dispatch);\n\t };\n\t }).each(\"interrupt.zoom\", function() {\n\t zoomended(dispatch);\n\t }).each(\"end.zoom\", function() {\n\t zoomended(dispatch);\n\t });\n\t } else {\n\t this.__chart__ = view;\n\t zoomstarted(dispatch);\n\t zoomed(dispatch);\n\t zoomended(dispatch);\n\t }\n\t });\n\t };\n\t zoom.translate = function(_) {\n\t if (!arguments.length) return [ view.x, view.y ];\n\t view = {\n\t x: +_[0],\n\t y: +_[1],\n\t k: view.k\n\t };\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scale = function(_) {\n\t if (!arguments.length) return view.k;\n\t view = {\n\t x: view.x,\n\t y: view.y,\n\t k: null\n\t };\n\t scaleTo(+_);\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scaleExtent = function(_) {\n\t if (!arguments.length) return scaleExtent;\n\t scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.center = function(_) {\n\t if (!arguments.length) return center;\n\t center = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.duration = function(_) {\n\t if (!arguments.length) return duration;\n\t duration = +_;\n\t return zoom;\n\t };\n\t zoom.x = function(z) {\n\t if (!arguments.length) return x1;\n\t x1 = z;\n\t x0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t zoom.y = function(z) {\n\t if (!arguments.length) return y1;\n\t y1 = z;\n\t y0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t function location(p) {\n\t return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n\t }\n\t function point(l) {\n\t return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n\t }\n\t function scaleTo(s) {\n\t view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n\t }\n\t function translateTo(p, l) {\n\t l = point(l);\n\t view.x += p[0] - l[0];\n\t view.y += p[1] - l[1];\n\t }\n\t function zoomTo(that, p, l, k) {\n\t that.__chart__ = {\n\t x: view.x,\n\t y: view.y,\n\t k: view.k\n\t };\n\t scaleTo(Math.pow(2, k));\n\t translateTo(center0 = p, l);\n\t that = d3.select(that);\n\t if (duration > 0) that = that.transition().duration(duration);\n\t that.call(zoom.event);\n\t }\n\t function rescale() {\n\t if (x1) x1.domain(x0.range().map(function(x) {\n\t return (x - view.x) / view.k;\n\t }).map(x0.invert));\n\t if (y1) y1.domain(y0.range().map(function(y) {\n\t return (y - view.y) / view.k;\n\t }).map(y0.invert));\n\t }\n\t function zoomstarted(dispatch) {\n\t if (!zooming++) dispatch({\n\t type: \"zoomstart\"\n\t });\n\t }\n\t function zoomed(dispatch) {\n\t rescale();\n\t dispatch({\n\t type: \"zoom\",\n\t scale: view.k,\n\t translate: [ view.x, view.y ]\n\t });\n\t }\n\t function zoomended(dispatch) {\n\t if (!--zooming) dispatch({\n\t type: \"zoomend\"\n\t }), center0 = null;\n\t }\n\t function mousedowned() {\n\t var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n\t d3_selection_interrupt.call(that);\n\t zoomstarted(dispatch);\n\t function moved() {\n\t dragged = 1;\n\t translateTo(d3.mouse(that), location0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t subject.on(mousemove, null).on(mouseup, null);\n\t dragRestore(dragged);\n\t zoomended(dispatch);\n\t }\n\t }\n\t function touchstarted() {\n\t var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n\t started();\n\t zoomstarted(dispatch);\n\t subject.on(mousedown, null).on(touchstart, started);\n\t function relocate() {\n\t var touches = d3.touches(that);\n\t scale0 = view.k;\n\t touches.forEach(function(t) {\n\t if (t.identifier in locations0) locations0[t.identifier] = location(t);\n\t });\n\t return touches;\n\t }\n\t function started() {\n\t var target = d3.event.target;\n\t d3.select(target).on(touchmove, moved).on(touchend, ended);\n\t targets.push(target);\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t locations0[changed[i].identifier] = null;\n\t }\n\t var touches = relocate(), now = Date.now();\n\t if (touches.length === 1) {\n\t if (now - touchtime < 500) {\n\t var p = touches[0];\n\t zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n\t d3_eventPreventDefault();\n\t }\n\t touchtime = now;\n\t } else if (touches.length > 1) {\n\t var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n\t distance0 = dx * dx + dy * dy;\n\t }\n\t }\n\t function moved() {\n\t var touches = d3.touches(that), p0, l0, p1, l1;\n\t d3_selection_interrupt.call(that);\n\t for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n\t p1 = touches[i];\n\t if (l1 = locations0[p1.identifier]) {\n\t if (l0) break;\n\t p0 = p1, l0 = l1;\n\t }\n\t }\n\t if (l1) {\n\t var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n\t p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n\t l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n\t scaleTo(scale1 * scale0);\n\t }\n\t touchtime = null;\n\t translateTo(p0, l0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t if (d3.event.touches.length) {\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t delete locations0[changed[i].identifier];\n\t }\n\t for (var identifier in locations0) {\n\t return void relocate();\n\t }\n\t }\n\t d3.selectAll(targets).on(zoomName, null);\n\t subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n\t dragRestore();\n\t zoomended(dispatch);\n\t }\n\t }\n\t function mousewheeled() {\n\t var dispatch = event.of(this, arguments);\n\t if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n\t translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n\t mousewheelTimer = setTimeout(function() {\n\t mousewheelTimer = null;\n\t zoomended(dispatch);\n\t }, 50);\n\t d3_eventPreventDefault();\n\t scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n\t translateTo(center0, translate0);\n\t zoomed(dispatch);\n\t }\n\t function dblclicked() {\n\t var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n\t zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n\t }\n\t return d3.rebind(zoom, event, \"on\");\n\t };\n\t var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n\t d3.color = d3_color;\n\t function d3_color() {}\n\t d3_color.prototype.toString = function() {\n\t return this.rgb() + \"\";\n\t };\n\t d3.hsl = d3_hsl;\n\t function d3_hsl(h, s, l) {\n\t return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n\t }\n\t var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n\t d3_hslPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, this.l / k);\n\t };\n\t d3_hslPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, k * this.l);\n\t };\n\t d3_hslPrototype.rgb = function() {\n\t return d3_hsl_rgb(this.h, this.s, this.l);\n\t };\n\t function d3_hsl_rgb(h, s, l) {\n\t var m1, m2;\n\t h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n\t s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n\t l = l < 0 ? 0 : l > 1 ? 1 : l;\n\t m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n\t m1 = 2 * l - m2;\n\t function v(h) {\n\t if (h > 360) h -= 360; else if (h < 0) h += 360;\n\t if (h < 60) return m1 + (m2 - m1) * h / 60;\n\t if (h < 180) return m2;\n\t if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n\t return m1;\n\t }\n\t function vv(h) {\n\t return Math.round(v(h) * 255);\n\t }\n\t return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n\t }\n\t d3.hcl = d3_hcl;\n\t function d3_hcl(h, c, l) {\n\t return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n\t }\n\t var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n\t d3_hclPrototype.brighter = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.darker = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.rgb = function() {\n\t return d3_hcl_lab(this.h, this.c, this.l).rgb();\n\t };\n\t function d3_hcl_lab(h, c, l) {\n\t if (isNaN(h)) h = 0;\n\t if (isNaN(c)) c = 0;\n\t return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n\t }\n\t d3.lab = d3_lab;\n\t function d3_lab(l, a, b) {\n\t return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n\t }\n\t var d3_lab_K = 18;\n\t var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n\t var d3_labPrototype = d3_lab.prototype = new d3_color();\n\t d3_labPrototype.brighter = function(k) {\n\t return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.darker = function(k) {\n\t return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.rgb = function() {\n\t return d3_lab_rgb(this.l, this.a, this.b);\n\t };\n\t function d3_lab_rgb(l, a, b) {\n\t var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n\t x = d3_lab_xyz(x) * d3_lab_X;\n\t y = d3_lab_xyz(y) * d3_lab_Y;\n\t z = d3_lab_xyz(z) * d3_lab_Z;\n\t return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n\t }\n\t function d3_lab_hcl(l, a, b) {\n\t return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n\t }\n\t function d3_lab_xyz(x) {\n\t return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n\t }\n\t function d3_xyz_lab(x) {\n\t return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n\t }\n\t function d3_xyz_rgb(r) {\n\t return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n\t }\n\t d3.rgb = d3_rgb;\n\t function d3_rgb(r, g, b) {\n\t return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n\t }\n\t function d3_rgbNumber(value) {\n\t return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n\t }\n\t function d3_rgbString(value) {\n\t return d3_rgbNumber(value) + \"\";\n\t }\n\t var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n\t d3_rgbPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t var r = this.r, g = this.g, b = this.b, i = 30;\n\t if (!r && !g && !b) return new d3_rgb(i, i, i);\n\t if (r && r < i) r = i;\n\t if (g && g < i) g = i;\n\t if (b && b < i) b = i;\n\t return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n\t };\n\t d3_rgbPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_rgb(k * this.r, k * this.g, k * this.b);\n\t };\n\t d3_rgbPrototype.hsl = function() {\n\t return d3_rgb_hsl(this.r, this.g, this.b);\n\t };\n\t d3_rgbPrototype.toString = function() {\n\t return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n\t };\n\t function d3_rgb_hex(v) {\n\t return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n\t }\n\t function d3_rgb_parse(format, rgb, hsl) {\n\t var r = 0, g = 0, b = 0, m1, m2, color;\n\t m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n\t if (m1) {\n\t m2 = m1[2].split(\",\");\n\t switch (m1[1]) {\n\t case \"hsl\":\n\t {\n\t return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n\t }\n\t\n\t case \"rgb\":\n\t {\n\t return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n\t }\n\t }\n\t }\n\t if (color = d3_rgb_names.get(format)) {\n\t return rgb(color.r, color.g, color.b);\n\t }\n\t if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n\t if (format.length === 4) {\n\t r = (color & 3840) >> 4;\n\t r = r >> 4 | r;\n\t g = color & 240;\n\t g = g >> 4 | g;\n\t b = color & 15;\n\t b = b << 4 | b;\n\t } else if (format.length === 7) {\n\t r = (color & 16711680) >> 16;\n\t g = (color & 65280) >> 8;\n\t b = color & 255;\n\t }\n\t }\n\t return rgb(r, g, b);\n\t }\n\t function d3_rgb_hsl(r, g, b) {\n\t var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n\t if (d) {\n\t s = l < .5 ? d / (max + min) : d / (2 - max - min);\n\t if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n\t h *= 60;\n\t } else {\n\t h = NaN;\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new d3_hsl(h, s, l);\n\t }\n\t function d3_rgb_lab(r, g, b) {\n\t r = d3_rgb_xyz(r);\n\t g = d3_rgb_xyz(g);\n\t b = d3_rgb_xyz(b);\n\t var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n\t return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n\t }\n\t function d3_rgb_xyz(r) {\n\t return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n\t }\n\t function d3_rgb_parseNumber(c) {\n\t var f = parseFloat(c);\n\t return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n\t }\n\t var d3_rgb_names = d3.map({\n\t aliceblue: 15792383,\n\t antiquewhite: 16444375,\n\t aqua: 65535,\n\t aquamarine: 8388564,\n\t azure: 15794175,\n\t beige: 16119260,\n\t bisque: 16770244,\n\t black: 0,\n\t blanchedalmond: 16772045,\n\t blue: 255,\n\t blueviolet: 9055202,\n\t brown: 10824234,\n\t burlywood: 14596231,\n\t cadetblue: 6266528,\n\t chartreuse: 8388352,\n\t chocolate: 13789470,\n\t coral: 16744272,\n\t cornflowerblue: 6591981,\n\t cornsilk: 16775388,\n\t crimson: 14423100,\n\t cyan: 65535,\n\t darkblue: 139,\n\t darkcyan: 35723,\n\t darkgoldenrod: 12092939,\n\t darkgray: 11119017,\n\t darkgreen: 25600,\n\t darkgrey: 11119017,\n\t darkkhaki: 12433259,\n\t darkmagenta: 9109643,\n\t darkolivegreen: 5597999,\n\t darkorange: 16747520,\n\t darkorchid: 10040012,\n\t darkred: 9109504,\n\t darksalmon: 15308410,\n\t darkseagreen: 9419919,\n\t darkslateblue: 4734347,\n\t darkslategray: 3100495,\n\t darkslategrey: 3100495,\n\t darkturquoise: 52945,\n\t darkviolet: 9699539,\n\t deeppink: 16716947,\n\t deepskyblue: 49151,\n\t dimgray: 6908265,\n\t dimgrey: 6908265,\n\t dodgerblue: 2003199,\n\t firebrick: 11674146,\n\t floralwhite: 16775920,\n\t forestgreen: 2263842,\n\t fuchsia: 16711935,\n\t gainsboro: 14474460,\n\t ghostwhite: 16316671,\n\t gold: 16766720,\n\t goldenrod: 14329120,\n\t gray: 8421504,\n\t green: 32768,\n\t greenyellow: 11403055,\n\t grey: 8421504,\n\t honeydew: 15794160,\n\t hotpink: 16738740,\n\t indianred: 13458524,\n\t indigo: 4915330,\n\t ivory: 16777200,\n\t khaki: 15787660,\n\t lavender: 15132410,\n\t lavenderblush: 16773365,\n\t lawngreen: 8190976,\n\t lemonchiffon: 16775885,\n\t lightblue: 11393254,\n\t lightcoral: 15761536,\n\t lightcyan: 14745599,\n\t lightgoldenrodyellow: 16448210,\n\t lightgray: 13882323,\n\t lightgreen: 9498256,\n\t lightgrey: 13882323,\n\t lightpink: 16758465,\n\t lightsalmon: 16752762,\n\t lightseagreen: 2142890,\n\t lightskyblue: 8900346,\n\t lightslategray: 7833753,\n\t lightslategrey: 7833753,\n\t lightsteelblue: 11584734,\n\t lightyellow: 16777184,\n\t lime: 65280,\n\t limegreen: 3329330,\n\t linen: 16445670,\n\t magenta: 16711935,\n\t maroon: 8388608,\n\t mediumaquamarine: 6737322,\n\t mediumblue: 205,\n\t mediumorchid: 12211667,\n\t mediumpurple: 9662683,\n\t mediumseagreen: 3978097,\n\t mediumslateblue: 8087790,\n\t mediumspringgreen: 64154,\n\t mediumturquoise: 4772300,\n\t mediumvioletred: 13047173,\n\t midnightblue: 1644912,\n\t mintcream: 16121850,\n\t mistyrose: 16770273,\n\t moccasin: 16770229,\n\t navajowhite: 16768685,\n\t navy: 128,\n\t oldlace: 16643558,\n\t olive: 8421376,\n\t olivedrab: 7048739,\n\t orange: 16753920,\n\t orangered: 16729344,\n\t orchid: 14315734,\n\t palegoldenrod: 15657130,\n\t palegreen: 10025880,\n\t paleturquoise: 11529966,\n\t palevioletred: 14381203,\n\t papayawhip: 16773077,\n\t peachpuff: 16767673,\n\t peru: 13468991,\n\t pink: 16761035,\n\t plum: 14524637,\n\t powderblue: 11591910,\n\t purple: 8388736,\n\t rebeccapurple: 6697881,\n\t red: 16711680,\n\t rosybrown: 12357519,\n\t royalblue: 4286945,\n\t saddlebrown: 9127187,\n\t salmon: 16416882,\n\t sandybrown: 16032864,\n\t seagreen: 3050327,\n\t seashell: 16774638,\n\t sienna: 10506797,\n\t silver: 12632256,\n\t skyblue: 8900331,\n\t slateblue: 6970061,\n\t slategray: 7372944,\n\t slategrey: 7372944,\n\t snow: 16775930,\n\t springgreen: 65407,\n\t steelblue: 4620980,\n\t tan: 13808780,\n\t teal: 32896,\n\t thistle: 14204888,\n\t tomato: 16737095,\n\t turquoise: 4251856,\n\t violet: 15631086,\n\t wheat: 16113331,\n\t white: 16777215,\n\t whitesmoke: 16119285,\n\t yellow: 16776960,\n\t yellowgreen: 10145074\n\t });\n\t d3_rgb_names.forEach(function(key, value) {\n\t d3_rgb_names.set(key, d3_rgbNumber(value));\n\t });\n\t function d3_functor(v) {\n\t return typeof v === \"function\" ? v : function() {\n\t return v;\n\t };\n\t }\n\t d3.functor = d3_functor;\n\t d3.xhr = d3_xhrType(d3_identity);\n\t function d3_xhrType(response) {\n\t return function(url, mimeType, callback) {\n\t if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n\t mimeType = null;\n\t return d3_xhr(url, mimeType, response, callback);\n\t };\n\t }\n\t function d3_xhr(url, mimeType, response, callback) {\n\t var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n\t if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\t \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n\t request.readyState > 3 && respond();\n\t };\n\t function respond() {\n\t var status = request.status, result;\n\t if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n\t try {\n\t result = response.call(xhr, request);\n\t } catch (e) {\n\t dispatch.error.call(xhr, e);\n\t return;\n\t }\n\t dispatch.load.call(xhr, result);\n\t } else {\n\t dispatch.error.call(xhr, request);\n\t }\n\t }\n\t request.onprogress = function(event) {\n\t var o = d3.event;\n\t d3.event = event;\n\t try {\n\t dispatch.progress.call(xhr, request);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t xhr.header = function(name, value) {\n\t name = (name + \"\").toLowerCase();\n\t if (arguments.length < 2) return headers[name];\n\t if (value == null) delete headers[name]; else headers[name] = value + \"\";\n\t return xhr;\n\t };\n\t xhr.mimeType = function(value) {\n\t if (!arguments.length) return mimeType;\n\t mimeType = value == null ? null : value + \"\";\n\t return xhr;\n\t };\n\t xhr.responseType = function(value) {\n\t if (!arguments.length) return responseType;\n\t responseType = value;\n\t return xhr;\n\t };\n\t xhr.response = function(value) {\n\t response = value;\n\t return xhr;\n\t };\n\t [ \"get\", \"post\" ].forEach(function(method) {\n\t xhr[method] = function() {\n\t return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n\t };\n\t });\n\t xhr.send = function(method, data, callback) {\n\t if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n\t request.open(method, url, true);\n\t if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n\t if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n\t if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n\t if (responseType != null) request.responseType = responseType;\n\t if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n\t callback(null, request);\n\t });\n\t dispatch.beforesend.call(xhr, request);\n\t request.send(data == null ? null : data);\n\t return xhr;\n\t };\n\t xhr.abort = function() {\n\t request.abort();\n\t return xhr;\n\t };\n\t d3.rebind(xhr, dispatch, \"on\");\n\t return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n\t }\n\t function d3_xhr_fixCallback(callback) {\n\t return callback.length === 1 ? function(error, request) {\n\t callback(error == null ? request : null);\n\t } : callback;\n\t }\n\t function d3_xhrHasResponse(request) {\n\t var type = request.responseType;\n\t return type && type !== \"text\" ? request.response : request.responseText;\n\t }\n\t d3.dsv = function(delimiter, mimeType) {\n\t var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n\t function dsv(url, row, callback) {\n\t if (arguments.length < 3) callback = row, row = null;\n\t var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n\t xhr.row = function(_) {\n\t return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n\t };\n\t return xhr;\n\t }\n\t function response(request) {\n\t return dsv.parse(request.responseText);\n\t }\n\t function typedResponse(f) {\n\t return function(request) {\n\t return dsv.parse(request.responseText, f);\n\t };\n\t }\n\t dsv.parse = function(text, f) {\n\t var o;\n\t return dsv.parseRows(text, function(row, i) {\n\t if (o) return o(row, i - 1);\n\t var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n\t return JSON.stringify(name) + \": d[\" + i + \"]\";\n\t }).join(\",\") + \"}\");\n\t o = f ? function(row, i) {\n\t return f(a(row), i);\n\t } : a;\n\t });\n\t };\n\t dsv.parseRows = function(text, f) {\n\t var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n\t function token() {\n\t if (I >= N) return EOF;\n\t if (eol) return eol = false, EOL;\n\t var j = I;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t var c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n\t }\n\t while (I < N) {\n\t var c = text.charCodeAt(I++), k = 1;\n\t if (c === 10) eol = true; else if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(I) === 10) ++I, ++k;\n\t } else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t return text.slice(j);\n\t }\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t return rows;\n\t };\n\t dsv.format = function(rows) {\n\t if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n\t var fieldSet = new d3_Set(), fields = [];\n\t rows.forEach(function(row) {\n\t for (var field in row) {\n\t if (!fieldSet.has(field)) {\n\t fields.push(fieldSet.add(field));\n\t }\n\t }\n\t });\n\t return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n\t return fields.map(function(field) {\n\t return formatValue(row[field]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t };\n\t dsv.formatRows = function(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t };\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t function formatValue(text) {\n\t return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n\t }\n\t return dsv;\n\t };\n\t d3.csv = d3.dsv(\",\", \"text/csv\");\n\t d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n\t var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n\t setTimeout(callback, 17);\n\t };\n\t d3.timer = function() {\n\t d3_timer.apply(this, arguments);\n\t };\n\t function d3_timer(callback, delay, then) {\n\t var n = arguments.length;\n\t if (n < 2) delay = 0;\n\t if (n < 3) then = Date.now();\n\t var time = then + delay, timer = {\n\t c: callback,\n\t t: time,\n\t n: null\n\t };\n\t if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n\t d3_timer_queueTail = timer;\n\t if (!d3_timer_interval) {\n\t d3_timer_timeout = clearTimeout(d3_timer_timeout);\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t return timer;\n\t }\n\t function d3_timer_step() {\n\t var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n\t if (delay > 24) {\n\t if (isFinite(delay)) {\n\t clearTimeout(d3_timer_timeout);\n\t d3_timer_timeout = setTimeout(d3_timer_step, delay);\n\t }\n\t d3_timer_interval = 0;\n\t } else {\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t }\n\t d3.timer.flush = function() {\n\t d3_timer_mark();\n\t d3_timer_sweep();\n\t };\n\t function d3_timer_mark() {\n\t var now = Date.now(), timer = d3_timer_queueHead;\n\t while (timer) {\n\t if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n\t timer = timer.n;\n\t }\n\t return now;\n\t }\n\t function d3_timer_sweep() {\n\t var t0, t1 = d3_timer_queueHead, time = Infinity;\n\t while (t1) {\n\t if (t1.c) {\n\t if (t1.t < time) time = t1.t;\n\t t1 = (t0 = t1).n;\n\t } else {\n\t t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n\t }\n\t }\n\t d3_timer_queueTail = t0;\n\t return time;\n\t }\n\t function d3_format_precision(x, p) {\n\t return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n\t }\n\t d3.round = function(x, n) {\n\t return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n\t };\n\t var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n\t d3.formatPrefix = function(value, precision) {\n\t var i = 0;\n\t if (value = +value) {\n\t if (value < 0) value *= -1;\n\t if (precision) value = d3.round(value, d3_format_precision(value, precision));\n\t i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n\t i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n\t }\n\t return d3_formatPrefixes[8 + i / 3];\n\t };\n\t function d3_formatPrefix(d, i) {\n\t var k = Math.pow(10, abs(8 - i) * 3);\n\t return {\n\t scale: i > 8 ? function(d) {\n\t return d / k;\n\t } : function(d) {\n\t return d * k;\n\t },\n\t symbol: d\n\t };\n\t }\n\t function d3_locale_numberFormat(locale) {\n\t var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n\t var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = locale_grouping[j = (j + 1) % locale_grouping.length];\n\t }\n\t return t.reverse().join(locale_thousands);\n\t } : d3_identity;\n\t return function(specifier) {\n\t var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n\t if (precision) precision = +precision.substring(1);\n\t if (zfill || fill === \"0\" && align === \"=\") {\n\t zfill = fill = \"0\";\n\t align = \"=\";\n\t }\n\t switch (type) {\n\t case \"n\":\n\t comma = true;\n\t type = \"g\";\n\t break;\n\t\n\t case \"%\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"f\";\n\t break;\n\t\n\t case \"p\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"r\";\n\t break;\n\t\n\t case \"b\":\n\t case \"o\":\n\t case \"x\":\n\t case \"X\":\n\t if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\t\n\t case \"c\":\n\t exponent = false;\n\t\n\t case \"d\":\n\t integer = true;\n\t precision = 0;\n\t break;\n\t\n\t case \"s\":\n\t scale = -1;\n\t type = \"r\";\n\t break;\n\t }\n\t if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n\t if (type == \"r\" && !precision) type = \"g\";\n\t if (precision != null) {\n\t if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n\t }\n\t type = d3_format_types.get(type) || d3_format_typeDefault;\n\t var zcomma = zfill && comma;\n\t return function(value) {\n\t var fullSuffix = suffix;\n\t if (integer && value % 1) return \"\";\n\t var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n\t if (scale < 0) {\n\t var unit = d3.formatPrefix(value, precision);\n\t value = unit.scale(value);\n\t fullSuffix = unit.symbol + suffix;\n\t } else {\n\t value *= scale;\n\t }\n\t value = type(value, precision);\n\t var i = value.lastIndexOf(\".\"), before, after;\n\t if (i < 0) {\n\t var j = exponent ? value.lastIndexOf(\"e\") : -1;\n\t if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n\t } else {\n\t before = value.substring(0, i);\n\t after = locale_decimal + value.substring(i + 1);\n\t }\n\t if (!zfill && comma) before = formatGroup(before, Infinity);\n\t var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n\t if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n\t negative += prefix;\n\t value = before + after;\n\t return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n\t };\n\t };\n\t }\n\t var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n\t var d3_format_types = d3.map({\n\t b: function(x) {\n\t return x.toString(2);\n\t },\n\t c: function(x) {\n\t return String.fromCharCode(x);\n\t },\n\t o: function(x) {\n\t return x.toString(8);\n\t },\n\t x: function(x) {\n\t return x.toString(16);\n\t },\n\t X: function(x) {\n\t return x.toString(16).toUpperCase();\n\t },\n\t g: function(x, p) {\n\t return x.toPrecision(p);\n\t },\n\t e: function(x, p) {\n\t return x.toExponential(p);\n\t },\n\t f: function(x, p) {\n\t return x.toFixed(p);\n\t },\n\t r: function(x, p) {\n\t return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n\t }\n\t });\n\t function d3_format_typeDefault(x) {\n\t return x + \"\";\n\t }\n\t var d3_time = d3.time = {}, d3_date = Date;\n\t function d3_date_utc() {\n\t this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n\t }\n\t d3_date_utc.prototype = {\n\t getDate: function() {\n\t return this._.getUTCDate();\n\t },\n\t getDay: function() {\n\t return this._.getUTCDay();\n\t },\n\t getFullYear: function() {\n\t return this._.getUTCFullYear();\n\t },\n\t getHours: function() {\n\t return this._.getUTCHours();\n\t },\n\t getMilliseconds: function() {\n\t return this._.getUTCMilliseconds();\n\t },\n\t getMinutes: function() {\n\t return this._.getUTCMinutes();\n\t },\n\t getMonth: function() {\n\t return this._.getUTCMonth();\n\t },\n\t getSeconds: function() {\n\t return this._.getUTCSeconds();\n\t },\n\t getTime: function() {\n\t return this._.getTime();\n\t },\n\t getTimezoneOffset: function() {\n\t return 0;\n\t },\n\t valueOf: function() {\n\t return this._.valueOf();\n\t },\n\t setDate: function() {\n\t d3_time_prototype.setUTCDate.apply(this._, arguments);\n\t },\n\t setDay: function() {\n\t d3_time_prototype.setUTCDay.apply(this._, arguments);\n\t },\n\t setFullYear: function() {\n\t d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n\t },\n\t setHours: function() {\n\t d3_time_prototype.setUTCHours.apply(this._, arguments);\n\t },\n\t setMilliseconds: function() {\n\t d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n\t },\n\t setMinutes: function() {\n\t d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n\t },\n\t setMonth: function() {\n\t d3_time_prototype.setUTCMonth.apply(this._, arguments);\n\t },\n\t setSeconds: function() {\n\t d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n\t },\n\t setTime: function() {\n\t d3_time_prototype.setTime.apply(this._, arguments);\n\t }\n\t };\n\t var d3_time_prototype = Date.prototype;\n\t function d3_time_interval(local, step, number) {\n\t function round(date) {\n\t var d0 = local(date), d1 = offset(d0, 1);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t }\n\t function ceil(date) {\n\t step(date = local(new d3_date(date - 1)), 1);\n\t return date;\n\t }\n\t function offset(date, k) {\n\t step(date = new d3_date(+date), k);\n\t return date;\n\t }\n\t function range(t0, t1, dt) {\n\t var time = ceil(t0), times = [];\n\t if (dt > 1) {\n\t while (time < t1) {\n\t if (!(number(time) % dt)) times.push(new Date(+time));\n\t step(time, 1);\n\t }\n\t } else {\n\t while (time < t1) times.push(new Date(+time)), step(time, 1);\n\t }\n\t return times;\n\t }\n\t function range_utc(t0, t1, dt) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = t0;\n\t return range(utc, t1, dt);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t local.floor = local;\n\t local.round = round;\n\t local.ceil = ceil;\n\t local.offset = offset;\n\t local.range = range;\n\t var utc = local.utc = d3_time_interval_utc(local);\n\t utc.floor = utc;\n\t utc.round = d3_time_interval_utc(round);\n\t utc.ceil = d3_time_interval_utc(ceil);\n\t utc.offset = d3_time_interval_utc(offset);\n\t utc.range = range_utc;\n\t return local;\n\t }\n\t function d3_time_interval_utc(method) {\n\t return function(date, k) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = date;\n\t return method(utc, k)._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t }\n\t d3_time.year = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setMonth(0, 1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setFullYear(date.getFullYear() + offset);\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t d3_time.years = d3_time.year.range;\n\t d3_time.years.utc = d3_time.year.utc.range;\n\t d3_time.day = d3_time_interval(function(date) {\n\t var day = new d3_date(2e3, 0);\n\t day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n\t return day;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + offset);\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t d3_time.days = d3_time.day.range;\n\t d3_time.days.utc = d3_time.day.utc.range;\n\t d3_time.dayOfYear = function(date) {\n\t var year = d3_time.year(date);\n\t return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n\t };\n\t [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n\t i = 7 - i;\n\t var interval = d3_time[day] = d3_time_interval(function(date) {\n\t (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n\t return date;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + Math.floor(offset) * 7);\n\t }, function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n\t });\n\t d3_time[day + \"s\"] = interval.range;\n\t d3_time[day + \"s\"].utc = interval.utc.range;\n\t d3_time[day + \"OfYear\"] = function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n\t };\n\t });\n\t d3_time.week = d3_time.sunday;\n\t d3_time.weeks = d3_time.sunday.range;\n\t d3_time.weeks.utc = d3_time.sunday.utc.range;\n\t d3_time.weekOfYear = d3_time.sundayOfYear;\n\t function d3_locale_timeFormat(locale) {\n\t var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n\t function d3_time_format(template) {\n\t var n = template.length;\n\t function format(date) {\n\t var string = [], i = -1, j = 0, c, p, f;\n\t while (++i < n) {\n\t if (template.charCodeAt(i) === 37) {\n\t string.push(template.slice(j, i));\n\t if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n\t if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t string.push(template.slice(j, i));\n\t return string.join(\"\");\n\t }\n\t format.parse = function(string) {\n\t var d = {\n\t y: 1900,\n\t m: 0,\n\t d: 1,\n\t H: 0,\n\t M: 0,\n\t S: 0,\n\t L: 0,\n\t Z: null\n\t }, i = d3_time_parse(d, template, string, 0);\n\t if (i != string.length) return null;\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n\t if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t date.setFullYear(d.y, 0, 1);\n\t date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n\t } else date.setFullYear(d.y, d.m, d.d);\n\t date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n\t return localZ ? date._ : date;\n\t };\n\t format.toString = function() {\n\t return template;\n\t };\n\t return format;\n\t }\n\t function d3_time_parse(date, template, string, j) {\n\t var c, p, t, i = 0, n = template.length, m = string.length;\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = template.charCodeAt(i++);\n\t if (c === 37) {\n\t t = template.charAt(i++);\n\t p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n\t if (!p || (j = p(date, string, j)) < 0) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t return j;\n\t }\n\t d3_time_format.utc = function(template) {\n\t var local = d3_time_format(template);\n\t function format(date) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date();\n\t utc._ = date;\n\t return local(utc);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t format.parse = function(string) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var date = local.parse(string);\n\t return date && date._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t format.toString = local.toString;\n\t return format;\n\t };\n\t d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n\t var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n\t locale_periods.forEach(function(p, i) {\n\t d3_time_periodLookup.set(p.toLowerCase(), i);\n\t });\n\t var d3_time_formats = {\n\t a: function(d) {\n\t return locale_shortDays[d.getDay()];\n\t },\n\t A: function(d) {\n\t return locale_days[d.getDay()];\n\t },\n\t b: function(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t },\n\t B: function(d) {\n\t return locale_months[d.getMonth()];\n\t },\n\t c: d3_time_format(locale_dateTime),\n\t d: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t e: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t H: function(d, p) {\n\t return d3_time_formatPad(d.getHours(), p, 2);\n\t },\n\t I: function(d, p) {\n\t return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n\t },\n\t j: function(d, p) {\n\t return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n\t },\n\t L: function(d, p) {\n\t return d3_time_formatPad(d.getMilliseconds(), p, 3);\n\t },\n\t m: function(d, p) {\n\t return d3_time_formatPad(d.getMonth() + 1, p, 2);\n\t },\n\t M: function(d, p) {\n\t return d3_time_formatPad(d.getMinutes(), p, 2);\n\t },\n\t p: function(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t },\n\t S: function(d, p) {\n\t return d3_time_formatPad(d.getSeconds(), p, 2);\n\t },\n\t U: function(d, p) {\n\t return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n\t },\n\t w: function(d) {\n\t return d.getDay();\n\t },\n\t W: function(d, p) {\n\t return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n\t },\n\t x: d3_time_format(locale_date),\n\t X: d3_time_format(locale_time),\n\t y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n\t },\n\t Y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n\t },\n\t Z: d3_time_zone,\n\t \"%\": function() {\n\t return \"%\";\n\t }\n\t };\n\t var d3_time_parsers = {\n\t a: d3_time_parseWeekdayAbbrev,\n\t A: d3_time_parseWeekday,\n\t b: d3_time_parseMonthAbbrev,\n\t B: d3_time_parseMonth,\n\t c: d3_time_parseLocaleFull,\n\t d: d3_time_parseDay,\n\t e: d3_time_parseDay,\n\t H: d3_time_parseHour24,\n\t I: d3_time_parseHour24,\n\t j: d3_time_parseDayOfYear,\n\t L: d3_time_parseMilliseconds,\n\t m: d3_time_parseMonthNumber,\n\t M: d3_time_parseMinutes,\n\t p: d3_time_parseAmPm,\n\t S: d3_time_parseSeconds,\n\t U: d3_time_parseWeekNumberSunday,\n\t w: d3_time_parseWeekdayNumber,\n\t W: d3_time_parseWeekNumberMonday,\n\t x: d3_time_parseLocaleDate,\n\t X: d3_time_parseLocaleTime,\n\t y: d3_time_parseYear,\n\t Y: d3_time_parseFullYear,\n\t Z: d3_time_parseZone,\n\t \"%\": d3_time_parseLiteralPercent\n\t };\n\t function d3_time_parseWeekdayAbbrev(date, string, i) {\n\t d3_time_dayAbbrevRe.lastIndex = 0;\n\t var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekday(date, string, i) {\n\t d3_time_dayRe.lastIndex = 0;\n\t var n = d3_time_dayRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonthAbbrev(date, string, i) {\n\t d3_time_monthAbbrevRe.lastIndex = 0;\n\t var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonth(date, string, i) {\n\t d3_time_monthRe.lastIndex = 0;\n\t var n = d3_time_monthRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseLocaleFull(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleDate(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleTime(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n\t }\n\t function d3_time_parseAmPm(date, string, i) {\n\t var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n\t return n == null ? -1 : (date.p = n, i);\n\t }\n\t return d3_time_format;\n\t }\n\t var d3_time_formatPads = {\n\t \"-\": \"\",\n\t _: \" \",\n\t \"0\": \"0\"\n\t }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n\t function d3_time_formatPad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t function d3_time_formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n\t }\n\t function d3_time_formatLookup(names) {\n\t var map = new d3_Map(), i = -1, n = names.length;\n\t while (++i < n) map.set(names[i].toLowerCase(), i);\n\t return map;\n\t }\n\t function d3_time_parseWeekdayNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n\t return n ? (date.w = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberSunday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.U = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberMonday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.W = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseFullYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n\t return n ? (date.y = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseZone(date, string, i) {\n\t return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n\t i + 5) : -1;\n\t }\n\t function d3_time_expandYear(d) {\n\t return d + (d > 68 ? 1900 : 2e3);\n\t }\n\t function d3_time_parseMonthNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDay(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.d = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDayOfYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.j = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseHour24(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.H = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMinutes(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.M = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseSeconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.S = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMilliseconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.L = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_zone(d) {\n\t var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n\t return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n\t }\n\t function d3_time_parseLiteralPercent(date, string, i) {\n\t d3_time_percentRe.lastIndex = 0;\n\t var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t function d3_time_formatMulti(formats) {\n\t var n = formats.length, i = -1;\n\t while (++i < n) formats[i][0] = this(formats[i][0]);\n\t return function(date) {\n\t var i = 0, f = formats[i];\n\t while (!f[1](date)) f = formats[++i];\n\t return f[0](date);\n\t };\n\t }\n\t d3.locale = function(locale) {\n\t return {\n\t numberFormat: d3_locale_numberFormat(locale),\n\t timeFormat: d3_locale_timeFormat(locale)\n\t };\n\t };\n\t var d3_locale_enUS = d3.locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [ 3 ],\n\t currency: [ \"$\", \"\" ],\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%m/%d/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [ \"AM\", \"PM\" ],\n\t days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n\t shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n\t });\n\t d3.format = d3_locale_enUS.numberFormat;\n\t d3.geo = {};\n\t function d3_adder() {}\n\t d3_adder.prototype = {\n\t s: 0,\n\t t: 0,\n\t add: function(y) {\n\t d3_adderSum(y, this.t, d3_adderTemp);\n\t d3_adderSum(d3_adderTemp.s, this.s, this);\n\t if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n\t },\n\t reset: function() {\n\t this.s = this.t = 0;\n\t },\n\t valueOf: function() {\n\t return this.s;\n\t }\n\t };\n\t var d3_adderTemp = new d3_adder();\n\t function d3_adderSum(a, b, o) {\n\t var x = o.s = a + b, bv = x - a, av = x - bv;\n\t o.t = a - av + (b - bv);\n\t }\n\t d3.geo.stream = function(object, listener) {\n\t if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n\t d3_geo_streamObjectType[object.type](object, listener);\n\t } else {\n\t d3_geo_streamGeometry(object, listener);\n\t }\n\t };\n\t function d3_geo_streamGeometry(geometry, listener) {\n\t if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n\t d3_geo_streamGeometryType[geometry.type](geometry, listener);\n\t }\n\t }\n\t var d3_geo_streamObjectType = {\n\t Feature: function(feature, listener) {\n\t d3_geo_streamGeometry(feature.geometry, listener);\n\t },\n\t FeatureCollection: function(object, listener) {\n\t var features = object.features, i = -1, n = features.length;\n\t while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n\t }\n\t };\n\t var d3_geo_streamGeometryType = {\n\t Sphere: function(object, listener) {\n\t listener.sphere();\n\t },\n\t Point: function(object, listener) {\n\t object = object.coordinates;\n\t listener.point(object[0], object[1], object[2]);\n\t },\n\t MultiPoint: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n\t },\n\t LineString: function(object, listener) {\n\t d3_geo_streamLine(object.coordinates, listener, 0);\n\t },\n\t MultiLineString: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n\t },\n\t Polygon: function(object, listener) {\n\t d3_geo_streamPolygon(object.coordinates, listener);\n\t },\n\t MultiPolygon: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n\t },\n\t GeometryCollection: function(object, listener) {\n\t var geometries = object.geometries, i = -1, n = geometries.length;\n\t while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n\t }\n\t };\n\t function d3_geo_streamLine(coordinates, listener, closed) {\n\t var i = -1, n = coordinates.length - closed, coordinate;\n\t listener.lineStart();\n\t while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n\t listener.lineEnd();\n\t }\n\t function d3_geo_streamPolygon(coordinates, listener) {\n\t var i = -1, n = coordinates.length;\n\t listener.polygonStart();\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n\t listener.polygonEnd();\n\t }\n\t d3.geo.area = function(object) {\n\t d3_geo_areaSum = 0;\n\t d3.geo.stream(object, d3_geo_area);\n\t return d3_geo_areaSum;\n\t };\n\t var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n\t var d3_geo_area = {\n\t sphere: function() {\n\t d3_geo_areaSum += 4 * π;\n\t },\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_areaRingSum.reset();\n\t d3_geo_area.lineStart = d3_geo_areaRingStart;\n\t },\n\t polygonEnd: function() {\n\t var area = 2 * d3_geo_areaRingSum;\n\t d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n\t d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n\t }\n\t };\n\t function d3_geo_areaRingStart() {\n\t var λ00, φ00, λ0, cosφ0, sinφ0;\n\t d3_geo_area.point = function(λ, φ) {\n\t d3_geo_area.point = nextPoint;\n\t λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n\t sinφ0 = Math.sin(φ);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t φ = φ * d3_radians / 2 + π / 4;\n\t var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n\t d3_geo_areaRingSum.add(Math.atan2(v, u));\n\t λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n\t }\n\t d3_geo_area.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t };\n\t }\n\t function d3_geo_cartesian(spherical) {\n\t var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n\t return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n\t }\n\t function d3_geo_cartesianDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t }\n\t function d3_geo_cartesianCross(a, b) {\n\t return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n\t }\n\t function d3_geo_cartesianAdd(a, b) {\n\t a[0] += b[0];\n\t a[1] += b[1];\n\t a[2] += b[2];\n\t }\n\t function d3_geo_cartesianScale(vector, k) {\n\t return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n\t }\n\t function d3_geo_cartesianNormalize(d) {\n\t var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n\t d[0] /= l;\n\t d[1] /= l;\n\t d[2] /= l;\n\t }\n\t function d3_geo_spherical(cartesian) {\n\t return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n\t }\n\t function d3_geo_sphericalEqual(a, b) {\n\t return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n\t }\n\t d3.geo.bounds = function() {\n\t var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n\t var bound = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t bound.point = ringPoint;\n\t bound.lineStart = ringStart;\n\t bound.lineEnd = ringEnd;\n\t dλSum = 0;\n\t d3_geo_area.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t d3_geo_area.polygonEnd();\n\t bound.point = point;\n\t bound.lineStart = lineStart;\n\t bound.lineEnd = lineEnd;\n\t if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n\t range[0] = λ0, range[1] = λ1;\n\t }\n\t };\n\t function point(λ, φ) {\n\t ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t function linePoint(λ, φ) {\n\t var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n\t if (p0) {\n\t var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n\t d3_geo_cartesianNormalize(inflection);\n\t inflection = d3_geo_spherical(inflection);\n\t var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n\t if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = inflection[1] * d3_degrees;\n\t if (φi > φ1) φ1 = φi;\n\t } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = -inflection[1] * d3_degrees;\n\t if (φi < φ0) φ0 = φi;\n\t } else {\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t if (antimeridian) {\n\t if (λ < λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t } else {\n\t if (λ1 >= λ0) {\n\t if (λ < λ0) λ0 = λ;\n\t if (λ > λ1) λ1 = λ;\n\t } else {\n\t if (λ > λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t }\n\t }\n\t } else {\n\t point(λ, φ);\n\t }\n\t p0 = p, λ_ = λ;\n\t }\n\t function lineStart() {\n\t bound.point = linePoint;\n\t }\n\t function lineEnd() {\n\t range[0] = λ0, range[1] = λ1;\n\t bound.point = point;\n\t p0 = null;\n\t }\n\t function ringPoint(λ, φ) {\n\t if (p0) {\n\t var dλ = λ - λ_;\n\t dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n\t } else λ__ = λ, φ__ = φ;\n\t d3_geo_area.point(λ, φ);\n\t linePoint(λ, φ);\n\t }\n\t function ringStart() {\n\t d3_geo_area.lineStart();\n\t }\n\t function ringEnd() {\n\t ringPoint(λ__, φ__);\n\t d3_geo_area.lineEnd();\n\t if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n\t range[0] = λ0, range[1] = λ1;\n\t p0 = null;\n\t }\n\t function angle(λ0, λ1) {\n\t return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n\t }\n\t function compareRanges(a, b) {\n\t return a[0] - b[0];\n\t }\n\t function withinRange(x, range) {\n\t return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n\t }\n\t return function(feature) {\n\t φ1 = λ1 = -(λ0 = φ0 = Infinity);\n\t ranges = [];\n\t d3.geo.stream(feature, bound);\n\t var n = ranges.length;\n\t if (n) {\n\t ranges.sort(compareRanges);\n\t for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n\t b = ranges[i];\n\t if (withinRange(b[0], a) || withinRange(b[1], a)) {\n\t if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n\t if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n\t } else {\n\t merged.push(a = b);\n\t }\n\t }\n\t var best = -Infinity, dλ;\n\t for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n\t b = merged[i];\n\t if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n\t }\n\t }\n\t ranges = range = null;\n\t return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n\t };\n\t }();\n\t d3.geo.centroid = function(object) {\n\t d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, d3_geo_centroid);\n\t var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n\t if (m < ε2) {\n\t x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n\t if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n\t m = x * x + y * y + z * z;\n\t if (m < ε2) return [ NaN, NaN ];\n\t }\n\t return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n\t };\n\t var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n\t var d3_geo_centroid = {\n\t sphere: d3_noop,\n\t point: d3_geo_centroidPoint,\n\t lineStart: d3_geo_centroidLineStart,\n\t lineEnd: d3_geo_centroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n\t }\n\t };\n\t function d3_geo_centroidPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n\t }\n\t function d3_geo_centroidPointXYZ(x, y, z) {\n\t ++d3_geo_centroidW0;\n\t d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n\t d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n\t d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n\t }\n\t function d3_geo_centroidLineStart() {\n\t var x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroid.point = nextPoint;\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_centroidLineEnd() {\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t }\n\t function d3_geo_centroidRingStart() {\n\t var λ00, φ00, x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ00 = λ, φ00 = φ;\n\t d3_geo_centroid.point = nextPoint;\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t d3_geo_centroid.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n\t d3_geo_centroidX2 += v * cx;\n\t d3_geo_centroidY2 += v * cy;\n\t d3_geo_centroidZ2 += v * cz;\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_compose(a, b) {\n\t function compose(x, y) {\n\t return x = a(x, y), b(x[0], x[1]);\n\t }\n\t if (a.invert && b.invert) compose.invert = function(x, y) {\n\t return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n\t };\n\t return compose;\n\t }\n\t function d3_true() {\n\t return true;\n\t }\n\t function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n\t var subject = [], clip = [];\n\t segments.forEach(function(segment) {\n\t if ((n = segment.length - 1) <= 0) return;\n\t var n, p0 = segment[0], p1 = segment[n];\n\t if (d3_geo_sphericalEqual(p0, p1)) {\n\t listener.lineStart();\n\t for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n\t listener.lineEnd();\n\t return;\n\t }\n\t var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n\t b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t });\n\t clip.sort(compare);\n\t d3_geo_clipPolygonLinkCircular(subject);\n\t d3_geo_clipPolygonLinkCircular(clip);\n\t if (!subject.length) return;\n\t for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n\t clip[i].e = entry = !entry;\n\t }\n\t var start = subject[0], points, point;\n\t while (1) {\n\t var current = start, isSubject = true;\n\t while (current.v) if ((current = current.n) === start) return;\n\t points = current.z;\n\t listener.lineStart();\n\t do {\n\t current.v = current.o.v = true;\n\t if (current.e) {\n\t if (isSubject) {\n\t for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.n.x, 1, listener);\n\t }\n\t current = current.n;\n\t } else {\n\t if (isSubject) {\n\t points = current.p.z;\n\t for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.p.x, -1, listener);\n\t }\n\t current = current.p;\n\t }\n\t current = current.o;\n\t points = current.z;\n\t isSubject = !isSubject;\n\t } while (!current.v);\n\t listener.lineEnd();\n\t }\n\t }\n\t function d3_geo_clipPolygonLinkCircular(array) {\n\t if (!(n = array.length)) return;\n\t var n, i = 0, a = array[0], b;\n\t while (++i < n) {\n\t a.n = b = array[i];\n\t b.p = a;\n\t a = b;\n\t }\n\t a.n = b = array[0];\n\t b.p = a;\n\t }\n\t function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n\t this.x = point;\n\t this.z = points;\n\t this.o = other;\n\t this.e = entry;\n\t this.v = false;\n\t this.n = this.p = null;\n\t }\n\t function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n\t return function(rotate, listener) {\n\t var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t clip.point = pointRing;\n\t clip.lineStart = ringStart;\n\t clip.lineEnd = ringEnd;\n\t segments = [];\n\t polygon = [];\n\t },\n\t polygonEnd: function() {\n\t clip.point = point;\n\t clip.lineStart = lineStart;\n\t clip.lineEnd = lineEnd;\n\t segments = d3.merge(segments);\n\t var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n\t if (segments.length) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n\t } else if (clipStartInside) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n\t segments = polygon = null;\n\t },\n\t sphere: function() {\n\t listener.polygonStart();\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t listener.polygonEnd();\n\t }\n\t };\n\t function point(λ, φ) {\n\t var point = rotate(λ, φ);\n\t if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n\t }\n\t function pointLine(λ, φ) {\n\t var point = rotate(λ, φ);\n\t line.point(point[0], point[1]);\n\t }\n\t function lineStart() {\n\t clip.point = pointLine;\n\t line.lineStart();\n\t }\n\t function lineEnd() {\n\t clip.point = point;\n\t line.lineEnd();\n\t }\n\t var segments;\n\t var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n\t function pointRing(λ, φ) {\n\t ring.push([ λ, φ ]);\n\t var point = rotate(λ, φ);\n\t ringListener.point(point[0], point[1]);\n\t }\n\t function ringStart() {\n\t ringListener.lineStart();\n\t ring = [];\n\t }\n\t function ringEnd() {\n\t pointRing(ring[0][0], ring[0][1]);\n\t ringListener.lineEnd();\n\t var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n\t ring.pop();\n\t polygon.push(ring);\n\t ring = null;\n\t if (!n) return;\n\t if (clean & 1) {\n\t segment = ringSegments[0];\n\t var n = segment.length - 1, i = -1, point;\n\t if (n > 0) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t while (++i < n) listener.point((point = segment[i])[0], point[1]);\n\t listener.lineEnd();\n\t }\n\t return;\n\t }\n\t if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\t segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n\t }\n\t return clip;\n\t };\n\t }\n\t function d3_geo_clipSegmentLength1(segment) {\n\t return segment.length > 1;\n\t }\n\t function d3_geo_clipBufferListener() {\n\t var lines = [], line;\n\t return {\n\t lineStart: function() {\n\t lines.push(line = []);\n\t },\n\t point: function(λ, φ) {\n\t line.push([ λ, φ ]);\n\t },\n\t lineEnd: d3_noop,\n\t buffer: function() {\n\t var buffer = lines;\n\t lines = [];\n\t line = null;\n\t return buffer;\n\t },\n\t rejoin: function() {\n\t if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n\t }\n\t };\n\t }\n\t function d3_geo_clipSort(a, b) {\n\t return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n\t }\n\t var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n\t function d3_geo_clipAntimeridianLine(listener) {\n\t var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n\t return {\n\t lineStart: function() {\n\t listener.lineStart();\n\t clean = 1;\n\t },\n\t point: function(λ1, φ1) {\n\t var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n\t if (abs(dλ - π) < ε) {\n\t listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t listener.point(λ1, φ0);\n\t clean = 0;\n\t } else if (sλ0 !== sλ1 && dλ >= π) {\n\t if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n\t if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n\t φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t clean = 0;\n\t }\n\t listener.point(λ0 = λ1, φ0 = φ1);\n\t sλ0 = sλ1;\n\t },\n\t lineEnd: function() {\n\t listener.lineEnd();\n\t λ0 = φ0 = NaN;\n\t },\n\t clean: function() {\n\t return 2 - clean;\n\t }\n\t };\n\t }\n\t function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n\t var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n\t return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n\t }\n\t function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n\t var φ;\n\t if (from == null) {\n\t φ = direction * halfπ;\n\t listener.point(-π, φ);\n\t listener.point(0, φ);\n\t listener.point(π, φ);\n\t listener.point(π, 0);\n\t listener.point(π, -φ);\n\t listener.point(0, -φ);\n\t listener.point(-π, -φ);\n\t listener.point(-π, 0);\n\t listener.point(-π, φ);\n\t } else if (abs(from[0] - to[0]) > ε) {\n\t var s = from[0] < to[0] ? π : -π;\n\t φ = direction * s / 2;\n\t listener.point(-s, φ);\n\t listener.point(0, φ);\n\t listener.point(s, φ);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function d3_geo_pointInPolygon(point, polygon) {\n\t var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n\t d3_geo_areaRingSum.reset();\n\t for (var i = 0, n = polygon.length; i < n; ++i) {\n\t var ring = polygon[i], m = ring.length;\n\t if (!m) continue;\n\t var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n\t while (true) {\n\t if (j === m) j = 0;\n\t point = ring[j];\n\t var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n\t d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n\t polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n\t if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n\t var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n\t d3_geo_cartesianNormalize(arc);\n\t var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n\t d3_geo_cartesianNormalize(intersection);\n\t var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n\t if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n\t winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n\t }\n\t }\n\t if (!j++) break;\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n\t }\n\t }\n\t return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n\t }\n\t function d3_geo_clipCircle(radius) {\n\t var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n\t return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n\t function visible(λ, φ) {\n\t return Math.cos(λ) * Math.cos(φ) > cr;\n\t }\n\t function clipLine(listener) {\n\t var point0, c0, v0, v00, clean;\n\t return {\n\t lineStart: function() {\n\t v00 = v0 = false;\n\t clean = 1;\n\t },\n\t point: function(λ, φ) {\n\t var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n\t if (!point0 && (v00 = v0 = v)) listener.lineStart();\n\t if (v !== v0) {\n\t point2 = intersect(point0, point1);\n\t if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n\t point1[0] += ε;\n\t point1[1] += ε;\n\t v = visible(point1[0], point1[1]);\n\t }\n\t }\n\t if (v !== v0) {\n\t clean = 0;\n\t if (v) {\n\t listener.lineStart();\n\t point2 = intersect(point1, point0);\n\t listener.point(point2[0], point2[1]);\n\t } else {\n\t point2 = intersect(point0, point1);\n\t listener.point(point2[0], point2[1]);\n\t listener.lineEnd();\n\t }\n\t point0 = point2;\n\t } else if (notHemisphere && point0 && smallRadius ^ v) {\n\t var t;\n\t if (!(c & c0) && (t = intersect(point1, point0, true))) {\n\t clean = 0;\n\t if (smallRadius) {\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t } else {\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t }\n\t }\n\t }\n\t if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n\t listener.point(point1[0], point1[1]);\n\t }\n\t point0 = point1, v0 = v, c0 = c;\n\t },\n\t lineEnd: function() {\n\t if (v0) listener.lineEnd();\n\t point0 = null;\n\t },\n\t clean: function() {\n\t return clean | (v00 && v0) << 1;\n\t }\n\t };\n\t }\n\t function intersect(a, b, two) {\n\t var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n\t var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n\t if (!determinant) return !two && a;\n\t var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n\t d3_geo_cartesianAdd(A, B);\n\t var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n\t if (t2 < 0) return;\n\t var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n\t d3_geo_cartesianAdd(q, A);\n\t q = d3_geo_spherical(q);\n\t if (!two) return q;\n\t var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n\t if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n\t var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n\t if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n\t if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n\t var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n\t d3_geo_cartesianAdd(q1, A);\n\t return [ q, d3_geo_spherical(q1) ];\n\t }\n\t }\n\t function code(λ, φ) {\n\t var r = smallRadius ? radius : π - radius, code = 0;\n\t if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n\t if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n\t return code;\n\t }\n\t }\n\t function d3_geom_clipLine(x0, y0, x1, y1) {\n\t return function(line) {\n\t var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n\t r = x0 - ax;\n\t if (!dx && r > 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dx > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = x1 - ax;\n\t if (!dx && r < 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dx > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t r = y0 - ay;\n\t if (!dy && r > 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dy > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = y1 - ay;\n\t if (!dy && r < 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dy > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t if (t0 > 0) line.a = {\n\t x: ax + t0 * dx,\n\t y: ay + t0 * dy\n\t };\n\t if (t1 < 1) line.b = {\n\t x: ax + t1 * dx,\n\t y: ay + t1 * dy\n\t };\n\t return line;\n\t };\n\t }\n\t var d3_geo_clipExtentMAX = 1e9;\n\t d3.geo.clipExtent = function() {\n\t var x0, y0, x1, y1, stream, clip, clipExtent = {\n\t stream: function(output) {\n\t if (stream) stream.valid = false;\n\t stream = clip(output);\n\t stream.valid = true;\n\t return stream;\n\t },\n\t extent: function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n\t if (stream) stream.valid = false, stream = null;\n\t return clipExtent;\n\t }\n\t };\n\t return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n\t };\n\t function d3_geo_clipExtent(x0, y0, x1, y1) {\n\t return function(listener) {\n\t var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t listener = bufferListener;\n\t segments = [];\n\t polygon = [];\n\t clean = true;\n\t },\n\t polygonEnd: function() {\n\t listener = listener_;\n\t segments = d3.merge(segments);\n\t var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n\t if (inside || visible) {\n\t listener.polygonStart();\n\t if (inside) {\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (visible) {\n\t d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n\t }\n\t listener.polygonEnd();\n\t }\n\t segments = polygon = ring = null;\n\t }\n\t };\n\t function insidePolygon(p) {\n\t var wn = 0, n = polygon.length, y = p[1];\n\t for (var i = 0; i < n; ++i) {\n\t for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n\t b = v[j];\n\t if (a[1] <= y) {\n\t if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n\t } else {\n\t if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n\t }\n\t a = b;\n\t }\n\t }\n\t return wn !== 0;\n\t }\n\t function interpolate(from, to, direction, listener) {\n\t var a = 0, a1 = 0;\n\t if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n\t do {\n\t listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n\t } while ((a = (a + direction + 4) % 4) !== a1);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function pointVisible(x, y) {\n\t return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n\t }\n\t function point(x, y) {\n\t if (pointVisible(x, y)) listener.point(x, y);\n\t }\n\t var x__, y__, v__, x_, y_, v_, first, clean;\n\t function lineStart() {\n\t clip.point = linePoint;\n\t if (polygon) polygon.push(ring = []);\n\t first = true;\n\t v_ = false;\n\t x_ = y_ = NaN;\n\t }\n\t function lineEnd() {\n\t if (segments) {\n\t linePoint(x__, y__);\n\t if (v__ && v_) bufferListener.rejoin();\n\t segments.push(bufferListener.buffer());\n\t }\n\t clip.point = point;\n\t if (v_) listener.lineEnd();\n\t }\n\t function linePoint(x, y) {\n\t x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n\t y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n\t var v = pointVisible(x, y);\n\t if (polygon) ring.push([ x, y ]);\n\t if (first) {\n\t x__ = x, y__ = y, v__ = v;\n\t first = false;\n\t if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t }\n\t } else {\n\t if (v && v_) listener.point(x, y); else {\n\t var l = {\n\t a: {\n\t x: x_,\n\t y: y_\n\t },\n\t b: {\n\t x: x,\n\t y: y\n\t }\n\t };\n\t if (clipLine(l)) {\n\t if (!v_) {\n\t listener.lineStart();\n\t listener.point(l.a.x, l.a.y);\n\t }\n\t listener.point(l.b.x, l.b.y);\n\t if (!v) listener.lineEnd();\n\t clean = false;\n\t } else if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t clean = false;\n\t }\n\t }\n\t }\n\t x_ = x, y_ = y, v_ = v;\n\t }\n\t return clip;\n\t };\n\t function corner(p, direction) {\n\t return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n\t }\n\t function compare(a, b) {\n\t return comparePoints(a.x, b.x);\n\t }\n\t function comparePoints(a, b) {\n\t var ca = corner(a, 1), cb = corner(b, 1);\n\t return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n\t }\n\t }\n\t function d3_geo_conic(projectAt) {\n\t var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n\t p.parallels = function(_) {\n\t if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n\t return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n\t };\n\t return p;\n\t }\n\t function d3_geo_conicEqualArea(φ0, φ1) {\n\t var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n\t function forward(λ, φ) {\n\t var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n\t return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = ρ0 - y;\n\t return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEqualArea = function() {\n\t return d3_geo_conic(d3_geo_conicEqualArea);\n\t }).raw = d3_geo_conicEqualArea;\n\t d3.geo.albers = function() {\n\t return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n\t };\n\t d3.geo.albersUsa = function() {\n\t var lower48 = d3.geo.albers();\n\t var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n\t var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n\t var point, pointStream = {\n\t point: function(x, y) {\n\t point = [ x, y ];\n\t }\n\t }, lower48Point, alaskaPoint, hawaiiPoint;\n\t function albersUsa(coordinates) {\n\t var x = coordinates[0], y = coordinates[1];\n\t point = null;\n\t (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n\t return point;\n\t }\n\t albersUsa.invert = function(coordinates) {\n\t var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n\t return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n\t };\n\t albersUsa.stream = function(stream) {\n\t var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n\t return {\n\t point: function(x, y) {\n\t lower48Stream.point(x, y);\n\t alaskaStream.point(x, y);\n\t hawaiiStream.point(x, y);\n\t },\n\t sphere: function() {\n\t lower48Stream.sphere();\n\t alaskaStream.sphere();\n\t hawaiiStream.sphere();\n\t },\n\t lineStart: function() {\n\t lower48Stream.lineStart();\n\t alaskaStream.lineStart();\n\t hawaiiStream.lineStart();\n\t },\n\t lineEnd: function() {\n\t lower48Stream.lineEnd();\n\t alaskaStream.lineEnd();\n\t hawaiiStream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t lower48Stream.polygonStart();\n\t alaskaStream.polygonStart();\n\t hawaiiStream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t lower48Stream.polygonEnd();\n\t alaskaStream.polygonEnd();\n\t hawaiiStream.polygonEnd();\n\t }\n\t };\n\t };\n\t albersUsa.precision = function(_) {\n\t if (!arguments.length) return lower48.precision();\n\t lower48.precision(_);\n\t alaska.precision(_);\n\t hawaii.precision(_);\n\t return albersUsa;\n\t };\n\t albersUsa.scale = function(_) {\n\t if (!arguments.length) return lower48.scale();\n\t lower48.scale(_);\n\t alaska.scale(_ * .35);\n\t hawaii.scale(_);\n\t return albersUsa.translate(lower48.translate());\n\t };\n\t albersUsa.translate = function(_) {\n\t if (!arguments.length) return lower48.translate();\n\t var k = lower48.scale(), x = +_[0], y = +_[1];\n\t lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n\t alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t return albersUsa;\n\t };\n\t return albersUsa.scale(1070);\n\t };\n\t var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_pathAreaPolygon = 0;\n\t d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n\t d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n\t }\n\t };\n\t function d3_geo_pathAreaRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathArea.point = function(x, y) {\n\t d3_geo_pathArea.point = nextPoint;\n\t x00 = x0 = x, y00 = y0 = y;\n\t };\n\t function nextPoint(x, y) {\n\t d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n\t x0 = x, y0 = y;\n\t }\n\t d3_geo_pathArea.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n\t var d3_geo_pathBounds = {\n\t point: d3_geo_pathBoundsPoint,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_pathBoundsPoint(x, y) {\n\t if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n\t if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n\t if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n\t if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n\t }\n\t function d3_geo_pathBuffer() {\n\t var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointCircle = d3_geo_pathBufferCircle(_);\n\t return stream;\n\t },\n\t result: function() {\n\t if (buffer.length) {\n\t var result = buffer.join(\"\");\n\t buffer = [];\n\t return result;\n\t }\n\t }\n\t };\n\t function point(x, y) {\n\t buffer.push(\"M\", x, \",\", y, pointCircle);\n\t }\n\t function pointLineStart(x, y) {\n\t buffer.push(\"M\", x, \",\", y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t buffer.push(\"L\", x, \",\", y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t buffer.push(\"Z\");\n\t }\n\t return stream;\n\t }\n\t function d3_geo_pathBufferCircle(radius) {\n\t return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n\t }\n\t var d3_geo_pathCentroid = {\n\t point: d3_geo_pathCentroidPoint,\n\t lineStart: d3_geo_pathCentroidLineStart,\n\t lineEnd: d3_geo_pathCentroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n\t d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n\t }\n\t };\n\t function d3_geo_pathCentroidPoint(x, y) {\n\t d3_geo_centroidX0 += x;\n\t d3_geo_centroidY0 += y;\n\t ++d3_geo_centroidZ0;\n\t }\n\t function d3_geo_pathCentroidLineStart() {\n\t var x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t }\n\t function d3_geo_pathCentroidLineEnd() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t }\n\t function d3_geo_pathCentroidRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t z = y0 * x - x0 * y;\n\t d3_geo_centroidX2 += z * (x0 + x);\n\t d3_geo_centroidY2 += z * (y0 + y);\n\t d3_geo_centroidZ2 += z * 3;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t d3_geo_pathCentroid.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t function d3_geo_pathContext(context) {\n\t var pointRadius = 4.5;\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointRadius = _;\n\t return stream;\n\t },\n\t result: d3_noop\n\t };\n\t function point(x, y) {\n\t context.moveTo(x + pointRadius, y);\n\t context.arc(x, y, pointRadius, 0, τ);\n\t }\n\t function pointLineStart(x, y) {\n\t context.moveTo(x, y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t context.lineTo(x, y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t context.closePath();\n\t }\n\t return stream;\n\t }\n\t function d3_geo_resample(project) {\n\t var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n\t function resample(stream) {\n\t return (maxDepth ? resampleRecursive : resampleNone)(stream);\n\t }\n\t function resampleNone(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t });\n\t }\n\t function resampleRecursive(stream) {\n\t var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n\t var resample = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t resample.lineStart = ringStart;\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t resample.lineStart = lineStart;\n\t }\n\t };\n\t function point(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t }\n\t function lineStart() {\n\t x0 = NaN;\n\t resample.point = linePoint;\n\t stream.lineStart();\n\t }\n\t function linePoint(λ, φ) {\n\t var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n\t stream.point(x0, y0);\n\t }\n\t function lineEnd() {\n\t resample.point = point;\n\t stream.lineEnd();\n\t }\n\t function ringStart() {\n\t lineStart();\n\t resample.point = ringPoint;\n\t resample.lineEnd = ringEnd;\n\t }\n\t function ringPoint(λ, φ) {\n\t linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n\t resample.point = linePoint;\n\t }\n\t function ringEnd() {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n\t resample.lineEnd = lineEnd;\n\t lineEnd();\n\t }\n\t return resample;\n\t }\n\t function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n\t var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n\t if (d2 > 4 * δ2 && depth--) {\n\t var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n\t if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n\t stream.point(x2, y2);\n\t resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n\t }\n\t }\n\t }\n\t resample.precision = function(_) {\n\t if (!arguments.length) return Math.sqrt(δ2);\n\t maxDepth = (δ2 = _ * _) > 0 && 16;\n\t return resample;\n\t };\n\t return resample;\n\t }\n\t d3.geo.path = function() {\n\t var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n\t function path(object) {\n\t if (object) {\n\t if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n\t if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n\t d3.geo.stream(object, cacheStream);\n\t }\n\t return contextStream.result();\n\t }\n\t path.area = function(object) {\n\t d3_geo_pathAreaSum = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathArea));\n\t return d3_geo_pathAreaSum;\n\t };\n\t path.centroid = function(object) {\n\t d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n\t return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n\t };\n\t path.bounds = function(object) {\n\t d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n\t d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n\t return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n\t };\n\t path.projection = function(_) {\n\t if (!arguments.length) return projection;\n\t projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n\t return reset();\n\t };\n\t path.context = function(_) {\n\t if (!arguments.length) return context;\n\t contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n\t if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n\t return reset();\n\t };\n\t path.pointRadius = function(_) {\n\t if (!arguments.length) return pointRadius;\n\t pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n\t return path;\n\t };\n\t function reset() {\n\t cacheStream = null;\n\t return path;\n\t }\n\t return path.projection(d3.geo.albersUsa()).context(null);\n\t };\n\t function d3_geo_pathProjectStream(project) {\n\t var resample = d3_geo_resample(function(x, y) {\n\t return project([ x * d3_degrees, y * d3_degrees ]);\n\t });\n\t return function(stream) {\n\t return d3_geo_projectionRadians(resample(stream));\n\t };\n\t }\n\t d3.geo.transform = function(methods) {\n\t return {\n\t stream: function(stream) {\n\t var transform = new d3_geo_transform(stream);\n\t for (var k in methods) transform[k] = methods[k];\n\t return transform;\n\t }\n\t };\n\t };\n\t function d3_geo_transform(stream) {\n\t this.stream = stream;\n\t }\n\t d3_geo_transform.prototype = {\n\t point: function(x, y) {\n\t this.stream.point(x, y);\n\t },\n\t sphere: function() {\n\t this.stream.sphere();\n\t },\n\t lineStart: function() {\n\t this.stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t this.stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t this.stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t this.stream.polygonEnd();\n\t }\n\t };\n\t function d3_geo_transformPoint(stream, point) {\n\t return {\n\t point: point,\n\t sphere: function() {\n\t stream.sphere();\n\t },\n\t lineStart: function() {\n\t stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t }\n\t };\n\t }\n\t d3.geo.projection = d3_geo_projection;\n\t d3.geo.projectionMutator = d3_geo_projectionMutator;\n\t function d3_geo_projection(project) {\n\t return d3_geo_projectionMutator(function() {\n\t return project;\n\t })();\n\t }\n\t function d3_geo_projectionMutator(projectAt) {\n\t var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n\t x = project(x, y);\n\t return [ x[0] * k + δx, δy - x[1] * k ];\n\t }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n\t function projection(point) {\n\t point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n\t return [ point[0] * k + δx, δy - point[1] * k ];\n\t }\n\t function invert(point) {\n\t point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n\t return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n\t }\n\t projection.stream = function(output) {\n\t if (stream) stream.valid = false;\n\t stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n\t stream.valid = true;\n\t return stream;\n\t };\n\t projection.clipAngle = function(_) {\n\t if (!arguments.length) return clipAngle;\n\t preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n\t return invalidate();\n\t };\n\t projection.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent;\n\t clipExtent = _;\n\t postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n\t return invalidate();\n\t };\n\t projection.scale = function(_) {\n\t if (!arguments.length) return k;\n\t k = +_;\n\t return reset();\n\t };\n\t projection.translate = function(_) {\n\t if (!arguments.length) return [ x, y ];\n\t x = +_[0];\n\t y = +_[1];\n\t return reset();\n\t };\n\t projection.center = function(_) {\n\t if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n\t λ = _[0] % 360 * d3_radians;\n\t φ = _[1] % 360 * d3_radians;\n\t return reset();\n\t };\n\t projection.rotate = function(_) {\n\t if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n\t δλ = _[0] % 360 * d3_radians;\n\t δφ = _[1] % 360 * d3_radians;\n\t δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n\t return reset();\n\t };\n\t d3.rebind(projection, projectResample, \"precision\");\n\t function reset() {\n\t projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n\t var center = project(λ, φ);\n\t δx = x - center[0] * k;\n\t δy = y + center[1] * k;\n\t return invalidate();\n\t }\n\t function invalidate() {\n\t if (stream) stream.valid = false, stream = null;\n\t return projection;\n\t }\n\t return function() {\n\t project = projectAt.apply(this, arguments);\n\t projection.invert = project.invert && invert;\n\t return reset();\n\t };\n\t }\n\t function d3_geo_projectionRadians(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t stream.point(x * d3_radians, y * d3_radians);\n\t });\n\t }\n\t function d3_geo_equirectangular(λ, φ) {\n\t return [ λ, φ ];\n\t }\n\t (d3.geo.equirectangular = function() {\n\t return d3_geo_projection(d3_geo_equirectangular);\n\t }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n\t d3.geo.rotation = function(rotate) {\n\t rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n\t function forward(coordinates) {\n\t coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t }\n\t forward.invert = function(coordinates) {\n\t coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t };\n\t return forward;\n\t };\n\t function d3_geo_identityRotation(λ, φ) {\n\t return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t }\n\t d3_geo_identityRotation.invert = d3_geo_equirectangular;\n\t function d3_geo_rotation(δλ, δφ, δγ) {\n\t return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n\t }\n\t function d3_geo_forwardRotationλ(δλ) {\n\t return function(λ, φ) {\n\t return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t };\n\t }\n\t function d3_geo_rotationλ(δλ) {\n\t var rotation = d3_geo_forwardRotationλ(δλ);\n\t rotation.invert = d3_geo_forwardRotationλ(-δλ);\n\t return rotation;\n\t }\n\t function d3_geo_rotationφγ(δφ, δγ) {\n\t var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n\t function rotation(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n\t return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n\t }\n\t rotation.invert = function(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n\t return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n\t };\n\t return rotation;\n\t }\n\t d3.geo.circle = function() {\n\t var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n\t function circle() {\n\t var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n\t interpolate(null, null, 1, {\n\t point: function(x, y) {\n\t ring.push(x = rotate(x, y));\n\t x[0] *= d3_degrees, x[1] *= d3_degrees;\n\t }\n\t });\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ ring ]\n\t };\n\t }\n\t circle.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return circle;\n\t };\n\t circle.angle = function(x) {\n\t if (!arguments.length) return angle;\n\t interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n\t return circle;\n\t };\n\t circle.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n\t return circle;\n\t };\n\t return circle.angle(90);\n\t };\n\t function d3_geo_circleInterpolate(radius, precision) {\n\t var cr = Math.cos(radius), sr = Math.sin(radius);\n\t return function(from, to, direction, listener) {\n\t var step = direction * precision;\n\t if (from != null) {\n\t from = d3_geo_circleAngle(cr, from);\n\t to = d3_geo_circleAngle(cr, to);\n\t if (direction > 0 ? from < to : from > to) from += direction * τ;\n\t } else {\n\t from = radius + direction * τ;\n\t to = radius - .5 * step;\n\t }\n\t for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n\t listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n\t }\n\t };\n\t }\n\t function d3_geo_circleAngle(cr, point) {\n\t var a = d3_geo_cartesian(point);\n\t a[0] -= cr;\n\t d3_geo_cartesianNormalize(a);\n\t var angle = d3_acos(-a[1]);\n\t return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n\t }\n\t d3.geo.distance = function(a, b) {\n\t var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n\t return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n\t };\n\t d3.geo.graticule = function() {\n\t var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n\t function graticule() {\n\t return {\n\t type: \"MultiLineString\",\n\t coordinates: lines()\n\t };\n\t }\n\t function lines() {\n\t return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n\t return abs(x % DX) > ε;\n\t }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n\t return abs(y % DY) > ε;\n\t }).map(y));\n\t }\n\t graticule.lines = function() {\n\t return lines().map(function(coordinates) {\n\t return {\n\t type: \"LineString\",\n\t coordinates: coordinates\n\t };\n\t });\n\t };\n\t graticule.outline = function() {\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n\t };\n\t };\n\t graticule.extent = function(_) {\n\t if (!arguments.length) return graticule.minorExtent();\n\t return graticule.majorExtent(_).minorExtent(_);\n\t };\n\t graticule.majorExtent = function(_) {\n\t if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n\t X0 = +_[0][0], X1 = +_[1][0];\n\t Y0 = +_[0][1], Y1 = +_[1][1];\n\t if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n\t if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.minorExtent = function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t x0 = +_[0][0], x1 = +_[1][0];\n\t y0 = +_[0][1], y1 = +_[1][1];\n\t if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n\t if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.step = function(_) {\n\t if (!arguments.length) return graticule.minorStep();\n\t return graticule.majorStep(_).minorStep(_);\n\t };\n\t graticule.majorStep = function(_) {\n\t if (!arguments.length) return [ DX, DY ];\n\t DX = +_[0], DY = +_[1];\n\t return graticule;\n\t };\n\t graticule.minorStep = function(_) {\n\t if (!arguments.length) return [ dx, dy ];\n\t dx = +_[0], dy = +_[1];\n\t return graticule;\n\t };\n\t graticule.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t precision = +_;\n\t x = d3_geo_graticuleX(y0, y1, 90);\n\t y = d3_geo_graticuleY(x0, x1, precision);\n\t X = d3_geo_graticuleX(Y0, Y1, 90);\n\t Y = d3_geo_graticuleY(X0, X1, precision);\n\t return graticule;\n\t };\n\t return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n\t };\n\t function d3_geo_graticuleX(y0, y1, dy) {\n\t var y = d3.range(y0, y1 - ε, dy).concat(y1);\n\t return function(x) {\n\t return y.map(function(y) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_geo_graticuleY(x0, x1, dx) {\n\t var x = d3.range(x0, x1 - ε, dx).concat(x1);\n\t return function(y) {\n\t return x.map(function(x) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_source(d) {\n\t return d.source;\n\t }\n\t function d3_target(d) {\n\t return d.target;\n\t }\n\t d3.geo.greatArc = function() {\n\t var source = d3_source, source_, target = d3_target, target_;\n\t function greatArc() {\n\t return {\n\t type: \"LineString\",\n\t coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n\t };\n\t }\n\t greatArc.distance = function() {\n\t return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n\t };\n\t greatArc.source = function(_) {\n\t if (!arguments.length) return source;\n\t source = _, source_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.target = function(_) {\n\t if (!arguments.length) return target;\n\t target = _, target_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.precision = function() {\n\t return arguments.length ? greatArc : 0;\n\t };\n\t return greatArc;\n\t };\n\t d3.geo.interpolate = function(source, target) {\n\t return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n\t };\n\t function d3_geo_interpolate(x0, y0, x1, y1) {\n\t var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n\t var interpolate = d ? function(t) {\n\t var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n\t return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n\t } : function() {\n\t return [ x0 * d3_degrees, y0 * d3_degrees ];\n\t };\n\t interpolate.distance = d;\n\t return interpolate;\n\t }\n\t d3.geo.length = function(object) {\n\t d3_geo_lengthSum = 0;\n\t d3.geo.stream(object, d3_geo_length);\n\t return d3_geo_lengthSum;\n\t };\n\t var d3_geo_lengthSum;\n\t var d3_geo_length = {\n\t sphere: d3_noop,\n\t point: d3_noop,\n\t lineStart: d3_geo_lengthLineStart,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_lengthLineStart() {\n\t var λ0, sinφ0, cosφ0;\n\t d3_geo_length.point = function(λ, φ) {\n\t λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n\t d3_geo_length.point = nextPoint;\n\t };\n\t d3_geo_length.lineEnd = function() {\n\t d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n\t };\n\t function nextPoint(λ, φ) {\n\t var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n\t d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n\t }\n\t }\n\t function d3_geo_azimuthal(scale, angle) {\n\t function azimuthal(λ, φ) {\n\t var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n\t return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n\t }\n\t azimuthal.invert = function(x, y) {\n\t var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n\t return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n\t };\n\t return azimuthal;\n\t }\n\t var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n\t return Math.sqrt(2 / (1 + cosλcosφ));\n\t }, function(ρ) {\n\t return 2 * Math.asin(ρ / 2);\n\t });\n\t (d3.geo.azimuthalEqualArea = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEqualArea);\n\t }).raw = d3_geo_azimuthalEqualArea;\n\t var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n\t var c = Math.acos(cosλcosφ);\n\t return c && c / Math.sin(c);\n\t }, d3_identity);\n\t (d3.geo.azimuthalEquidistant = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEquidistant);\n\t }).raw = d3_geo_azimuthalEquidistant;\n\t function d3_geo_conicConformal(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), t = function(φ) {\n\t return Math.tan(π / 4 + φ / 2);\n\t }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n\t if (!n) return d3_geo_mercator;\n\t function forward(λ, φ) {\n\t if (F > 0) {\n\t if (φ < -halfπ + ε) φ = -halfπ + ε;\n\t } else {\n\t if (φ > halfπ - ε) φ = halfπ - ε;\n\t }\n\t var ρ = F / Math.pow(t(φ), n);\n\t return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n\t return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicConformal = function() {\n\t return d3_geo_conic(d3_geo_conicConformal);\n\t }).raw = d3_geo_conicConformal;\n\t function d3_geo_conicEquidistant(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n\t if (abs(n) < ε) return d3_geo_equirectangular;\n\t function forward(λ, φ) {\n\t var ρ = G - φ;\n\t return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = G - y;\n\t return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEquidistant = function() {\n\t return d3_geo_conic(d3_geo_conicEquidistant);\n\t }).raw = d3_geo_conicEquidistant;\n\t var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / cosλcosφ;\n\t }, Math.atan);\n\t (d3.geo.gnomonic = function() {\n\t return d3_geo_projection(d3_geo_gnomonic);\n\t }).raw = d3_geo_gnomonic;\n\t function d3_geo_mercator(λ, φ) {\n\t return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n\t }\n\t d3_geo_mercator.invert = function(x, y) {\n\t return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n\t };\n\t function d3_geo_mercatorProjection(project) {\n\t var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n\t m.scale = function() {\n\t var v = scale.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.translate = function() {\n\t var v = translate.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.clipExtent = function(_) {\n\t var v = clipExtent.apply(m, arguments);\n\t if (v === m) {\n\t if (clipAuto = _ == null) {\n\t var k = π * scale(), t = translate();\n\t clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n\t }\n\t } else if (clipAuto) {\n\t v = null;\n\t }\n\t return v;\n\t };\n\t return m.clipExtent(null);\n\t }\n\t (d3.geo.mercator = function() {\n\t return d3_geo_mercatorProjection(d3_geo_mercator);\n\t }).raw = d3_geo_mercator;\n\t var d3_geo_orthographic = d3_geo_azimuthal(function() {\n\t return 1;\n\t }, Math.asin);\n\t (d3.geo.orthographic = function() {\n\t return d3_geo_projection(d3_geo_orthographic);\n\t }).raw = d3_geo_orthographic;\n\t var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / (1 + cosλcosφ);\n\t }, function(ρ) {\n\t return 2 * Math.atan(ρ);\n\t });\n\t (d3.geo.stereographic = function() {\n\t return d3_geo_projection(d3_geo_stereographic);\n\t }).raw = d3_geo_stereographic;\n\t function d3_geo_transverseMercator(λ, φ) {\n\t return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n\t }\n\t d3_geo_transverseMercator.invert = function(x, y) {\n\t return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n\t };\n\t (d3.geo.transverseMercator = function() {\n\t var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n\t projection.center = function(_) {\n\t return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n\t };\n\t projection.rotate = function(_) {\n\t return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n\t [ _[0], _[1], _[2] - 90 ]);\n\t };\n\t return rotate([ 0, 0, 90 ]);\n\t }).raw = d3_geo_transverseMercator;\n\t d3.geom = {};\n\t function d3_geom_pointX(d) {\n\t return d[0];\n\t }\n\t function d3_geom_pointY(d) {\n\t return d[1];\n\t }\n\t d3.geom.hull = function(vertices) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY;\n\t if (arguments.length) return hull(vertices);\n\t function hull(data) {\n\t if (data.length < 3) return [];\n\t var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n\t for (i = 0; i < n; i++) {\n\t points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n\t }\n\t points.sort(d3_geom_hullOrder);\n\t for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n\t var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n\t var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n\t for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n\t for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n\t return polygon;\n\t }\n\t hull.x = function(_) {\n\t return arguments.length ? (x = _, hull) : x;\n\t };\n\t hull.y = function(_) {\n\t return arguments.length ? (y = _, hull) : y;\n\t };\n\t return hull;\n\t };\n\t function d3_geom_hullUpper(points) {\n\t var n = points.length, hull = [ 0, 1 ], hs = 2;\n\t for (var i = 2; i < n; i++) {\n\t while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n\t hull[hs++] = i;\n\t }\n\t return hull.slice(0, hs);\n\t }\n\t function d3_geom_hullOrder(a, b) {\n\t return a[0] - b[0] || a[1] - b[1];\n\t }\n\t d3.geom.polygon = function(coordinates) {\n\t d3_subclass(coordinates, d3_geom_polygonPrototype);\n\t return coordinates;\n\t };\n\t var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n\t d3_geom_polygonPrototype.area = function() {\n\t var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t area += a[1] * b[0] - a[0] * b[1];\n\t }\n\t return area * .5;\n\t };\n\t d3_geom_polygonPrototype.centroid = function(k) {\n\t var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n\t if (!arguments.length) k = -1 / (6 * this.area());\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t c = a[0] * b[1] - b[0] * a[1];\n\t x += (a[0] + b[0]) * c;\n\t y += (a[1] + b[1]) * c;\n\t }\n\t return [ x * k, y * k ];\n\t };\n\t d3_geom_polygonPrototype.clip = function(subject) {\n\t var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n\t while (++i < n) {\n\t input = subject.slice();\n\t subject.length = 0;\n\t b = this[i];\n\t c = input[(m = input.length - closed) - 1];\n\t j = -1;\n\t while (++j < m) {\n\t d = input[j];\n\t if (d3_geom_polygonInside(d, a, b)) {\n\t if (!d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t subject.push(d);\n\t } else if (d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t c = d;\n\t }\n\t if (closed) subject.push(subject[0]);\n\t a = b;\n\t }\n\t return subject;\n\t };\n\t function d3_geom_polygonInside(p, a, b) {\n\t return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n\t }\n\t function d3_geom_polygonIntersect(c, d, a, b) {\n\t var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n\t return [ x1 + ua * x21, y1 + ua * y21 ];\n\t }\n\t function d3_geom_polygonClosed(coordinates) {\n\t var a = coordinates[0], b = coordinates[coordinates.length - 1];\n\t return !(a[0] - b[0] || a[1] - b[1]);\n\t }\n\t var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n\t function d3_geom_voronoiBeach() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.edge = this.site = this.circle = null;\n\t }\n\t function d3_geom_voronoiCreateBeach(site) {\n\t var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n\t beach.site = site;\n\t return beach;\n\t }\n\t function d3_geom_voronoiDetachBeach(beach) {\n\t d3_geom_voronoiDetachCircle(beach);\n\t d3_geom_voronoiBeaches.remove(beach);\n\t d3_geom_voronoiBeachPool.push(beach);\n\t d3_geom_voronoiRedBlackNode(beach);\n\t }\n\t function d3_geom_voronoiRemoveBeach(beach) {\n\t var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n\t x: x,\n\t y: y\n\t }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n\t d3_geom_voronoiDetachBeach(beach);\n\t var lArc = previous;\n\t while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n\t previous = lArc.P;\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachBeach(lArc);\n\t lArc = previous;\n\t }\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachCircle(lArc);\n\t var rArc = next;\n\t while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n\t next = rArc.N;\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachBeach(rArc);\n\t rArc = next;\n\t }\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var nArcs = disappearing.length, iArc;\n\t for (iArc = 1; iArc < nArcs; ++iArc) {\n\t rArc = disappearing[iArc];\n\t lArc = disappearing[iArc - 1];\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n\t }\n\t lArc = disappearing[0];\n\t rArc = disappearing[nArcs - 1];\n\t rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiAddBeach(site) {\n\t var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n\t while (node) {\n\t dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n\t if (dxl > ε) node = node.L; else {\n\t dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n\t if (dxr > ε) {\n\t if (!node.R) {\n\t lArc = node;\n\t break;\n\t }\n\t node = node.R;\n\t } else {\n\t if (dxl > -ε) {\n\t lArc = node.P;\n\t rArc = node;\n\t } else if (dxr > -ε) {\n\t lArc = node;\n\t rArc = node.N;\n\t } else {\n\t lArc = rArc = node;\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t var newArc = d3_geom_voronoiCreateBeach(site);\n\t d3_geom_voronoiBeaches.insert(lArc, newArc);\n\t if (!lArc && !rArc) return;\n\t if (lArc === rArc) {\n\t d3_geom_voronoiDetachCircle(lArc);\n\t rArc = d3_geom_voronoiCreateBeach(lArc.site);\n\t d3_geom_voronoiBeaches.insert(newArc, rArc);\n\t newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t return;\n\t }\n\t if (!rArc) {\n\t newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t return;\n\t }\n\t d3_geom_voronoiDetachCircle(lArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n\t x: (cy * hb - by * hc) / d + ax,\n\t y: (bx * hc - cx * hb) / d + ay\n\t };\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n\t newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n\t rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n\t var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n\t if (!pby2) return rfocx;\n\t var lArc = arc.P;\n\t if (!lArc) return -Infinity;\n\t site = lArc.site;\n\t var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n\t if (!plby2) return lfocx;\n\t var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n\t if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\t return (rfocx + lfocx) / 2;\n\t }\n\t function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n\t var rArc = arc.N;\n\t if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n\t var site = arc.site;\n\t return site.y === directrix ? site.x : Infinity;\n\t }\n\t function d3_geom_voronoiCell(site) {\n\t this.site = site;\n\t this.edges = [];\n\t }\n\t d3_geom_voronoiCell.prototype.prepare = function() {\n\t var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n\t while (iHalfEdge--) {\n\t edge = halfEdges[iHalfEdge].edge;\n\t if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n\t }\n\t halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n\t return halfEdges.length;\n\t };\n\t function d3_geom_voronoiCloseCells(extent) {\n\t var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n\t while (iCell--) {\n\t cell = cells[iCell];\n\t if (!cell || !cell.prepare()) continue;\n\t halfEdges = cell.edges;\n\t nHalfEdges = halfEdges.length;\n\t iHalfEdge = 0;\n\t while (iHalfEdge < nHalfEdges) {\n\t end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n\t start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n\t if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n\t halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n\t x: x0,\n\t y: abs(x2 - x0) < ε ? y2 : y1\n\t } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n\t x: abs(y2 - y1) < ε ? x2 : x1,\n\t y: y1\n\t } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n\t x: x1,\n\t y: abs(x2 - x1) < ε ? y2 : y0\n\t } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n\t x: abs(y2 - y0) < ε ? x2 : x0,\n\t y: y0\n\t } : null), cell.site, null));\n\t ++nHalfEdges;\n\t }\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdgeOrder(a, b) {\n\t return b.angle - a.angle;\n\t }\n\t function d3_geom_voronoiCircle() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.x = this.y = this.arc = this.site = this.cy = null;\n\t }\n\t function d3_geom_voronoiAttachCircle(arc) {\n\t var lArc = arc.P, rArc = arc.N;\n\t if (!lArc || !rArc) return;\n\t var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n\t if (lSite === rSite) return;\n\t var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n\t var d = 2 * (ax * cy - ay * cx);\n\t if (d >= -ε2) return;\n\t var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n\t var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n\t circle.arc = arc;\n\t circle.site = cSite;\n\t circle.x = x + bx;\n\t circle.y = cy + Math.sqrt(x * x + y * y);\n\t circle.cy = cy;\n\t arc.circle = circle;\n\t var before = null, node = d3_geom_voronoiCircles._;\n\t while (node) {\n\t if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n\t if (node.L) node = node.L; else {\n\t before = node.P;\n\t break;\n\t }\n\t } else {\n\t if (node.R) node = node.R; else {\n\t before = node;\n\t break;\n\t }\n\t }\n\t }\n\t d3_geom_voronoiCircles.insert(before, circle);\n\t if (!before) d3_geom_voronoiFirstCircle = circle;\n\t }\n\t function d3_geom_voronoiDetachCircle(arc) {\n\t var circle = arc.circle;\n\t if (circle) {\n\t if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n\t d3_geom_voronoiCircles.remove(circle);\n\t d3_geom_voronoiCirclePool.push(circle);\n\t d3_geom_voronoiRedBlackNode(circle);\n\t arc.circle = null;\n\t }\n\t }\n\t function d3_geom_voronoiClipEdges(extent) {\n\t var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n\t while (i--) {\n\t e = edges[i];\n\t if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n\t e.a = e.b = null;\n\t edges.splice(i, 1);\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiConnectEdge(edge, extent) {\n\t var vb = edge.b;\n\t if (vb) return true;\n\t var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n\t if (ry === ly) {\n\t if (fx < x0 || fx >= x1) return;\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: fx,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: fx,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: fx,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: fx,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t fm = (lx - rx) / (ry - ly);\n\t fb = fy - fm * fx;\n\t if (fm < -1 || fm > 1) {\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t if (ly < ry) {\n\t if (!va) va = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t }; else if (va.x >= x1) return;\n\t vb = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t }; else if (va.x < x0) return;\n\t vb = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t };\n\t }\n\t }\n\t }\n\t edge.a = va;\n\t edge.b = vb;\n\t return true;\n\t }\n\t function d3_geom_voronoiEdge(lSite, rSite) {\n\t this.l = lSite;\n\t this.r = rSite;\n\t this.a = this.b = null;\n\t }\n\t function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, rSite);\n\t d3_geom_voronoiEdges.push(edge);\n\t if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n\t if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n\t d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n\t d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n\t return edge;\n\t }\n\t function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, null);\n\t edge.a = va;\n\t edge.b = vb;\n\t d3_geom_voronoiEdges.push(edge);\n\t return edge;\n\t }\n\t function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n\t if (!edge.a && !edge.b) {\n\t edge.a = vertex;\n\t edge.l = lSite;\n\t edge.r = rSite;\n\t } else if (edge.l === rSite) {\n\t edge.b = vertex;\n\t } else {\n\t edge.a = vertex;\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n\t var va = edge.a, vb = edge.b;\n\t this.edge = edge;\n\t this.site = lSite;\n\t this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n\t }\n\t d3_geom_voronoiHalfEdge.prototype = {\n\t start: function() {\n\t return this.edge.l === this.site ? this.edge.a : this.edge.b;\n\t },\n\t end: function() {\n\t return this.edge.l === this.site ? this.edge.b : this.edge.a;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackTree() {\n\t this._ = null;\n\t }\n\t function d3_geom_voronoiRedBlackNode(node) {\n\t node.U = node.C = node.L = node.R = node.P = node.N = null;\n\t }\n\t d3_geom_voronoiRedBlackTree.prototype = {\n\t insert: function(after, node) {\n\t var parent, grandpa, uncle;\n\t if (after) {\n\t node.P = after;\n\t node.N = after.N;\n\t if (after.N) after.N.P = node;\n\t after.N = node;\n\t if (after.R) {\n\t after = after.R;\n\t while (after.L) after = after.L;\n\t after.L = node;\n\t } else {\n\t after.R = node;\n\t }\n\t parent = after;\n\t } else if (this._) {\n\t after = d3_geom_voronoiRedBlackFirst(this._);\n\t node.P = null;\n\t node.N = after;\n\t after.P = after.L = node;\n\t parent = after;\n\t } else {\n\t node.P = node.N = null;\n\t this._ = node;\n\t parent = null;\n\t }\n\t node.L = node.R = null;\n\t node.U = parent;\n\t node.C = true;\n\t after = node;\n\t while (parent && parent.C) {\n\t grandpa = parent.U;\n\t if (parent === grandpa.L) {\n\t uncle = grandpa.R;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.R) {\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n\t }\n\t } else {\n\t uncle = grandpa.L;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.L) {\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n\t }\n\t }\n\t parent = after.U;\n\t }\n\t this._.C = false;\n\t },\n\t remove: function(node) {\n\t if (node.N) node.N.P = node.P;\n\t if (node.P) node.P.N = node.N;\n\t node.N = node.P = null;\n\t var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n\t if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n\t if (parent) {\n\t if (parent.L === node) parent.L = next; else parent.R = next;\n\t } else {\n\t this._ = next;\n\t }\n\t if (left && right) {\n\t red = next.C;\n\t next.C = node.C;\n\t next.L = left;\n\t left.U = next;\n\t if (next !== right) {\n\t parent = next.U;\n\t next.U = node.U;\n\t node = next.R;\n\t parent.L = node;\n\t next.R = right;\n\t right.U = next;\n\t } else {\n\t next.U = parent;\n\t parent = next;\n\t node = next.R;\n\t }\n\t } else {\n\t red = node.C;\n\t node = next;\n\t }\n\t if (node) node.U = parent;\n\t if (red) return;\n\t if (node && node.C) {\n\t node.C = false;\n\t return;\n\t }\n\t do {\n\t if (node === this._) break;\n\t if (node === parent.L) {\n\t sibling = parent.R;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t sibling = parent.R;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.R || !sibling.R.C) {\n\t sibling.L.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, sibling);\n\t sibling = parent.R;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.R.C = false;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t } else {\n\t sibling = parent.L;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t sibling = parent.L;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.L || !sibling.L.C) {\n\t sibling.R.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n\t sibling = parent.L;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.L.C = false;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t }\n\t sibling.C = true;\n\t node = parent;\n\t parent = parent.U;\n\t } while (!node.C);\n\t if (node) node.C = false;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n\t var p = node, q = node.R, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.R = q.L;\n\t if (p.R) p.R.U = p;\n\t q.L = p;\n\t }\n\t function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n\t var p = node, q = node.L, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.L = q.R;\n\t if (p.L) p.L.U = p;\n\t q.R = p;\n\t }\n\t function d3_geom_voronoiRedBlackFirst(node) {\n\t while (node.L) node = node.L;\n\t return node;\n\t }\n\t function d3_geom_voronoi(sites, bbox) {\n\t var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n\t d3_geom_voronoiEdges = [];\n\t d3_geom_voronoiCells = new Array(sites.length);\n\t d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n\t d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n\t while (true) {\n\t circle = d3_geom_voronoiFirstCircle;\n\t if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n\t if (site.x !== x0 || site.y !== y0) {\n\t d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n\t d3_geom_voronoiAddBeach(site);\n\t x0 = site.x, y0 = site.y;\n\t }\n\t site = sites.pop();\n\t } else if (circle) {\n\t d3_geom_voronoiRemoveBeach(circle.arc);\n\t } else {\n\t break;\n\t }\n\t }\n\t if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n\t var diagram = {\n\t cells: d3_geom_voronoiCells,\n\t edges: d3_geom_voronoiEdges\n\t };\n\t d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n\t return diagram;\n\t }\n\t function d3_geom_voronoiVertexOrder(a, b) {\n\t return b.y - a.y || b.x - a.x;\n\t }\n\t d3.geom.voronoi = function(points) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n\t if (points) return voronoi(points);\n\t function voronoi(data) {\n\t var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n\t d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n\t var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n\t var s = e.start();\n\t return [ s.x, s.y ];\n\t }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n\t polygon.point = data[i];\n\t });\n\t return polygons;\n\t }\n\t function sites(data) {\n\t return data.map(function(d, i) {\n\t return {\n\t x: Math.round(fx(d, i) / ε) * ε,\n\t y: Math.round(fy(d, i) / ε) * ε,\n\t i: i\n\t };\n\t });\n\t }\n\t voronoi.links = function(data) {\n\t return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n\t return edge.l && edge.r;\n\t }).map(function(edge) {\n\t return {\n\t source: data[edge.l.i],\n\t target: data[edge.r.i]\n\t };\n\t });\n\t };\n\t voronoi.triangles = function(data) {\n\t var triangles = [];\n\t d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n\t var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n\t while (++j < m) {\n\t e0 = e1;\n\t s0 = s1;\n\t e1 = edges[j].edge;\n\t s1 = e1.l === site ? e1.r : e1.l;\n\t if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n\t triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n\t }\n\t }\n\t });\n\t return triangles;\n\t };\n\t voronoi.x = function(_) {\n\t return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n\t };\n\t voronoi.y = function(_) {\n\t return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n\t };\n\t voronoi.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n\t clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n\t return voronoi;\n\t };\n\t voronoi.size = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n\t return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n\t };\n\t return voronoi;\n\t };\n\t var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n\t function d3_geom_voronoiTriangleArea(a, b, c) {\n\t return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n\t }\n\t d3.geom.delaunay = function(vertices) {\n\t return d3.geom.voronoi().triangles(vertices);\n\t };\n\t d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n\t if (compat = arguments.length) {\n\t x = d3_geom_quadtreeCompatX;\n\t y = d3_geom_quadtreeCompatY;\n\t if (compat === 3) {\n\t y2 = y1;\n\t x2 = x1;\n\t y1 = x1 = 0;\n\t }\n\t return quadtree(points);\n\t }\n\t function quadtree(data) {\n\t var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n\t if (x1 != null) {\n\t x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n\t } else {\n\t x2_ = y2_ = -(x1_ = y1_ = Infinity);\n\t xs = [], ys = [];\n\t n = data.length;\n\t if (compat) for (i = 0; i < n; ++i) {\n\t d = data[i];\n\t if (d.x < x1_) x1_ = d.x;\n\t if (d.y < y1_) y1_ = d.y;\n\t if (d.x > x2_) x2_ = d.x;\n\t if (d.y > y2_) y2_ = d.y;\n\t xs.push(d.x);\n\t ys.push(d.y);\n\t } else for (i = 0; i < n; ++i) {\n\t var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n\t if (x_ < x1_) x1_ = x_;\n\t if (y_ < y1_) y1_ = y_;\n\t if (x_ > x2_) x2_ = x_;\n\t if (y_ > y2_) y2_ = y_;\n\t xs.push(x_);\n\t ys.push(y_);\n\t }\n\t }\n\t var dx = x2_ - x1_, dy = y2_ - y1_;\n\t if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n\t function insert(n, d, x, y, x1, y1, x2, y2) {\n\t if (isNaN(x) || isNaN(y)) return;\n\t if (n.leaf) {\n\t var nx = n.x, ny = n.y;\n\t if (nx != null) {\n\t if (abs(nx - x) + abs(ny - y) < .01) {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t } else {\n\t var nPoint = n.point;\n\t n.x = n.y = n.point = null;\n\t insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t } else {\n\t n.x = x, n.y = y, n.point = d;\n\t }\n\t } else {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t }\n\t function insertChild(n, d, x, y, x1, y1, x2, y2) {\n\t var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n\t n.leaf = false;\n\t n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n\t if (right) x1 = xm; else x2 = xm;\n\t if (below) y1 = ym; else y2 = ym;\n\t insert(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t var root = d3_geom_quadtreeNode();\n\t root.add = function(d) {\n\t insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n\t };\n\t root.visit = function(f) {\n\t d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n\t };\n\t root.find = function(point) {\n\t return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n\t };\n\t i = -1;\n\t if (x1 == null) {\n\t while (++i < n) {\n\t insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n\t }\n\t --i;\n\t } else data.forEach(root.add);\n\t xs = ys = data = d = null;\n\t return root;\n\t }\n\t quadtree.x = function(_) {\n\t return arguments.length ? (x = _, quadtree) : x;\n\t };\n\t quadtree.y = function(_) {\n\t return arguments.length ? (y = _, quadtree) : y;\n\t };\n\t quadtree.extent = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n\t y2 = +_[1][1];\n\t return quadtree;\n\t };\n\t quadtree.size = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n\t return quadtree;\n\t };\n\t return quadtree;\n\t };\n\t function d3_geom_quadtreeCompatX(d) {\n\t return d.x;\n\t }\n\t function d3_geom_quadtreeCompatY(d) {\n\t return d.y;\n\t }\n\t function d3_geom_quadtreeNode() {\n\t return {\n\t leaf: true,\n\t nodes: [],\n\t point: null,\n\t x: null,\n\t y: null\n\t };\n\t }\n\t function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n\t if (!f(node, x1, y1, x2, y2)) {\n\t var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n\t if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n\t if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n\t if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n\t if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n\t }\n\t }\n\t function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n\t var minDistance2 = Infinity, closestPoint;\n\t (function find(node, x1, y1, x2, y2) {\n\t if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n\t if (point = node.point) {\n\t var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n\t if (distance2 < minDistance2) {\n\t var distance = Math.sqrt(minDistance2 = distance2);\n\t x0 = x - distance, y0 = y - distance;\n\t x3 = x + distance, y3 = y + distance;\n\t closestPoint = point;\n\t }\n\t }\n\t var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n\t for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n\t if (node = children[i & 3]) switch (i & 3) {\n\t case 0:\n\t find(node, x1, y1, xm, ym);\n\t break;\n\t\n\t case 1:\n\t find(node, xm, y1, x2, ym);\n\t break;\n\t\n\t case 2:\n\t find(node, x1, ym, xm, y2);\n\t break;\n\t\n\t case 3:\n\t find(node, xm, ym, x2, y2);\n\t break;\n\t }\n\t }\n\t })(root, x0, y0, x3, y3);\n\t return closestPoint;\n\t }\n\t d3.interpolateRgb = d3_interpolateRgb;\n\t function d3_interpolateRgb(a, b) {\n\t a = d3.rgb(a);\n\t b = d3.rgb(b);\n\t var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n\t return function(t) {\n\t return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n\t };\n\t }\n\t d3.interpolateObject = d3_interpolateObject;\n\t function d3_interpolateObject(a, b) {\n\t var i = {}, c = {}, k;\n\t for (k in a) {\n\t if (k in b) {\n\t i[k] = d3_interpolate(a[k], b[k]);\n\t } else {\n\t c[k] = a[k];\n\t }\n\t }\n\t for (k in b) {\n\t if (!(k in a)) {\n\t c[k] = b[k];\n\t }\n\t }\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t }\n\t d3.interpolateNumber = d3_interpolateNumber;\n\t function d3_interpolateNumber(a, b) {\n\t a = +a, b = +b;\n\t return function(t) {\n\t return a * (1 - t) + b * t;\n\t };\n\t }\n\t d3.interpolateString = d3_interpolateString;\n\t function d3_interpolateString(a, b) {\n\t var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n\t a = a + \"\", b = b + \"\";\n\t while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n\t if ((bs = bm.index) > bi) {\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) {\n\t if (s[i]) s[i] += bm; else s[++i] = bm;\n\t } else {\n\t s[++i] = null;\n\t q.push({\n\t i: i,\n\t x: d3_interpolateNumber(am, bm)\n\t });\n\t }\n\t bi = d3_interpolate_numberB.lastIndex;\n\t }\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n\t return b(t) + \"\";\n\t }) : function() {\n\t return b;\n\t } : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t }\n\t var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n\t d3.interpolate = d3_interpolate;\n\t function d3_interpolate(a, b) {\n\t var i = d3.interpolators.length, f;\n\t while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n\t return f;\n\t }\n\t d3.interpolators = [ function(a, b) {\n\t var t = typeof b;\n\t return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n\t } ];\n\t d3.interpolateArray = d3_interpolateArray;\n\t function d3_interpolateArray(a, b) {\n\t var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n\t for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n\t for (;i < na; ++i) c[i] = a[i];\n\t for (;i < nb; ++i) c[i] = b[i];\n\t return function(t) {\n\t for (i = 0; i < n0; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t }\n\t var d3_ease_default = function() {\n\t return d3_identity;\n\t };\n\t var d3_ease = d3.map({\n\t linear: d3_ease_default,\n\t poly: d3_ease_poly,\n\t quad: function() {\n\t return d3_ease_quad;\n\t },\n\t cubic: function() {\n\t return d3_ease_cubic;\n\t },\n\t sin: function() {\n\t return d3_ease_sin;\n\t },\n\t exp: function() {\n\t return d3_ease_exp;\n\t },\n\t circle: function() {\n\t return d3_ease_circle;\n\t },\n\t elastic: d3_ease_elastic,\n\t back: d3_ease_back,\n\t bounce: function() {\n\t return d3_ease_bounce;\n\t }\n\t });\n\t var d3_ease_mode = d3.map({\n\t \"in\": d3_identity,\n\t out: d3_ease_reverse,\n\t \"in-out\": d3_ease_reflect,\n\t \"out-in\": function(f) {\n\t return d3_ease_reflect(d3_ease_reverse(f));\n\t }\n\t });\n\t d3.ease = function(name) {\n\t var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n\t t = d3_ease.get(t) || d3_ease_default;\n\t m = d3_ease_mode.get(m) || d3_identity;\n\t return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n\t };\n\t function d3_ease_clamp(f) {\n\t return function(t) {\n\t return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n\t };\n\t }\n\t function d3_ease_reverse(f) {\n\t return function(t) {\n\t return 1 - f(1 - t);\n\t };\n\t }\n\t function d3_ease_reflect(f) {\n\t return function(t) {\n\t return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n\t };\n\t }\n\t function d3_ease_quad(t) {\n\t return t * t;\n\t }\n\t function d3_ease_cubic(t) {\n\t return t * t * t;\n\t }\n\t function d3_ease_cubicInOut(t) {\n\t if (t <= 0) return 0;\n\t if (t >= 1) return 1;\n\t var t2 = t * t, t3 = t2 * t;\n\t return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n\t }\n\t function d3_ease_poly(e) {\n\t return function(t) {\n\t return Math.pow(t, e);\n\t };\n\t }\n\t function d3_ease_sin(t) {\n\t return 1 - Math.cos(t * halfπ);\n\t }\n\t function d3_ease_exp(t) {\n\t return Math.pow(2, 10 * (t - 1));\n\t }\n\t function d3_ease_circle(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t }\n\t function d3_ease_elastic(a, p) {\n\t var s;\n\t if (arguments.length < 2) p = .45;\n\t if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n\t return function(t) {\n\t return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n\t };\n\t }\n\t function d3_ease_back(s) {\n\t if (!s) s = 1.70158;\n\t return function(t) {\n\t return t * t * ((s + 1) * t - s);\n\t };\n\t }\n\t function d3_ease_bounce(t) {\n\t return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n\t }\n\t d3.interpolateHcl = d3_interpolateHcl;\n\t function d3_interpolateHcl(a, b) {\n\t a = d3.hcl(a);\n\t b = d3.hcl(b);\n\t var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n\t if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateHsl = d3_interpolateHsl;\n\t function d3_interpolateHsl(a, b) {\n\t a = d3.hsl(a);\n\t b = d3.hsl(b);\n\t var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n\t if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateLab = d3_interpolateLab;\n\t function d3_interpolateLab(a, b) {\n\t a = d3.lab(a);\n\t b = d3.lab(b);\n\t var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n\t return function(t) {\n\t return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n\t };\n\t }\n\t d3.interpolateRound = d3_interpolateRound;\n\t function d3_interpolateRound(a, b) {\n\t b -= a;\n\t return function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t }\n\t d3.transform = function(string) {\n\t var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n\t return (d3.transform = function(string) {\n\t if (string != null) {\n\t g.setAttribute(\"transform\", string);\n\t var t = g.transform.baseVal.consolidate();\n\t }\n\t return new d3_transform(t ? t.matrix : d3_transformIdentity);\n\t })(string);\n\t };\n\t function d3_transform(m) {\n\t var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n\t if (r0[0] * r1[1] < r1[0] * r0[1]) {\n\t r0[0] *= -1;\n\t r0[1] *= -1;\n\t kx *= -1;\n\t kz *= -1;\n\t }\n\t this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n\t this.translate = [ m.e, m.f ];\n\t this.scale = [ kx, ky ];\n\t this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n\t }\n\t d3_transform.prototype.toString = function() {\n\t return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n\t };\n\t function d3_transformDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1];\n\t }\n\t function d3_transformNormalize(a) {\n\t var k = Math.sqrt(d3_transformDot(a, a));\n\t if (k) {\n\t a[0] /= k;\n\t a[1] /= k;\n\t }\n\t return k;\n\t }\n\t function d3_transformCombine(a, b, k) {\n\t a[0] += k * b[0];\n\t a[1] += k * b[1];\n\t return a;\n\t }\n\t var d3_transformIdentity = {\n\t a: 1,\n\t b: 0,\n\t c: 0,\n\t d: 1,\n\t e: 0,\n\t f: 0\n\t };\n\t d3.interpolateTransform = d3_interpolateTransform;\n\t function d3_interpolateTransformPop(s) {\n\t return s.length ? s.pop() + \",\" : \"\";\n\t }\n\t function d3_interpolateTranslate(ta, tb, s, q) {\n\t if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n\t var i = s.push(\"translate(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ta[0], tb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ta[1], tb[1])\n\t });\n\t } else if (tb[0] || tb[1]) {\n\t s.push(\"translate(\" + tb + \")\");\n\t }\n\t }\n\t function d3_interpolateRotate(ra, rb, s, q) {\n\t if (ra !== rb) {\n\t if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(ra, rb)\n\t });\n\t } else if (rb) {\n\t s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n\t }\n\t }\n\t function d3_interpolateSkew(wa, wb, s, q) {\n\t if (wa !== wb) {\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(wa, wb)\n\t });\n\t } else if (wb) {\n\t s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n\t }\n\t }\n\t function d3_interpolateScale(ka, kb, s, q) {\n\t if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n\t var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ka[0], kb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ka[1], kb[1])\n\t });\n\t } else if (kb[0] !== 1 || kb[1] !== 1) {\n\t s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n\t }\n\t }\n\t function d3_interpolateTransform(a, b) {\n\t var s = [], q = [];\n\t a = d3.transform(a), b = d3.transform(b);\n\t d3_interpolateTranslate(a.translate, b.translate, s, q);\n\t d3_interpolateRotate(a.rotate, b.rotate, s, q);\n\t d3_interpolateSkew(a.skew, b.skew, s, q);\n\t d3_interpolateScale(a.scale, b.scale, s, q);\n\t a = b = null;\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t }\n\t function d3_uninterpolateNumber(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return (x - a) / b;\n\t };\n\t }\n\t function d3_uninterpolateClamp(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return Math.max(0, Math.min(1, (x - a) / b));\n\t };\n\t }\n\t d3.layout = {};\n\t d3.layout.bundle = function() {\n\t return function(links) {\n\t var paths = [], i = -1, n = links.length;\n\t while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n\t return paths;\n\t };\n\t };\n\t function d3_layout_bundlePath(link) {\n\t var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n\t while (start !== lca) {\n\t start = start.parent;\n\t points.push(start);\n\t }\n\t var k = points.length;\n\t while (end !== lca) {\n\t points.splice(k, 0, end);\n\t end = end.parent;\n\t }\n\t return points;\n\t }\n\t function d3_layout_bundleAncestors(node) {\n\t var ancestors = [], parent = node.parent;\n\t while (parent != null) {\n\t ancestors.push(node);\n\t node = parent;\n\t parent = parent.parent;\n\t }\n\t ancestors.push(node);\n\t return ancestors;\n\t }\n\t function d3_layout_bundleLeastCommonAncestor(a, b) {\n\t if (a === b) return a;\n\t var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n\t while (aNode === bNode) {\n\t sharedNode = aNode;\n\t aNode = aNodes.pop();\n\t bNode = bNodes.pop();\n\t }\n\t return sharedNode;\n\t }\n\t d3.layout.chord = function() {\n\t var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n\t function relayout() {\n\t var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n\t chords = [];\n\t groups = [];\n\t k = 0, i = -1;\n\t while (++i < n) {\n\t x = 0, j = -1;\n\t while (++j < n) {\n\t x += matrix[i][j];\n\t }\n\t groupSums.push(x);\n\t subgroupIndex.push(d3.range(n));\n\t k += x;\n\t }\n\t if (sortGroups) {\n\t groupIndex.sort(function(a, b) {\n\t return sortGroups(groupSums[a], groupSums[b]);\n\t });\n\t }\n\t if (sortSubgroups) {\n\t subgroupIndex.forEach(function(d, i) {\n\t d.sort(function(a, b) {\n\t return sortSubgroups(matrix[i][a], matrix[i][b]);\n\t });\n\t });\n\t }\n\t k = (τ - padding * n) / k;\n\t x = 0, i = -1;\n\t while (++i < n) {\n\t x0 = x, j = -1;\n\t while (++j < n) {\n\t var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n\t subgroups[di + \"-\" + dj] = {\n\t index: di,\n\t subindex: dj,\n\t startAngle: a0,\n\t endAngle: a1,\n\t value: v\n\t };\n\t }\n\t groups[di] = {\n\t index: di,\n\t startAngle: x0,\n\t endAngle: x,\n\t value: groupSums[di]\n\t };\n\t x += padding;\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t j = i - 1;\n\t while (++j < n) {\n\t var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n\t if (source.value || target.value) {\n\t chords.push(source.value < target.value ? {\n\t source: target,\n\t target: source\n\t } : {\n\t source: source,\n\t target: target\n\t });\n\t }\n\t }\n\t }\n\t if (sortChords) resort();\n\t }\n\t function resort() {\n\t chords.sort(function(a, b) {\n\t return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n\t });\n\t }\n\t chord.matrix = function(x) {\n\t if (!arguments.length) return matrix;\n\t n = (matrix = x) && matrix.length;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t padding = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortGroups = function(x) {\n\t if (!arguments.length) return sortGroups;\n\t sortGroups = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortSubgroups = function(x) {\n\t if (!arguments.length) return sortSubgroups;\n\t sortSubgroups = x;\n\t chords = null;\n\t return chord;\n\t };\n\t chord.sortChords = function(x) {\n\t if (!arguments.length) return sortChords;\n\t sortChords = x;\n\t if (chords) resort();\n\t return chord;\n\t };\n\t chord.chords = function() {\n\t if (!chords) relayout();\n\t return chords;\n\t };\n\t chord.groups = function() {\n\t if (!groups) relayout();\n\t return groups;\n\t };\n\t return chord;\n\t };\n\t d3.layout.force = function() {\n\t var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n\t function repulse(node) {\n\t return function(quad, x1, _, x2) {\n\t if (quad.point !== node) {\n\t var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n\t if (dw * dw / theta2 < dn) {\n\t if (dn < chargeDistance2) {\n\t var k = quad.charge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t return true;\n\t }\n\t if (quad.point && dn && dn < chargeDistance2) {\n\t var k = quad.pointCharge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t }\n\t return !quad.charge;\n\t };\n\t }\n\t force.tick = function() {\n\t if ((alpha *= .99) < .005) {\n\t timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t return true;\n\t }\n\t var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t s = o.source;\n\t t = o.target;\n\t x = t.x - s.x;\n\t y = t.y - s.y;\n\t if (l = x * x + y * y) {\n\t l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n\t x *= l;\n\t y *= l;\n\t t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n\t t.y -= y * k;\n\t s.x += x * (k = 1 - k);\n\t s.y += y * k;\n\t }\n\t }\n\t if (k = alpha * gravity) {\n\t x = size[0] / 2;\n\t y = size[1] / 2;\n\t i = -1;\n\t if (k) while (++i < n) {\n\t o = nodes[i];\n\t o.x += (x - o.x) * k;\n\t o.y += (y - o.y) * k;\n\t }\n\t }\n\t if (charge) {\n\t d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n\t i = -1;\n\t while (++i < n) {\n\t if (!(o = nodes[i]).fixed) {\n\t q.visit(repulse(o));\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t o = nodes[i];\n\t if (o.fixed) {\n\t o.x = o.px;\n\t o.y = o.py;\n\t } else {\n\t o.x -= (o.px - (o.px = o.x)) * friction;\n\t o.y -= (o.py - (o.py = o.y)) * friction;\n\t }\n\t }\n\t event.tick({\n\t type: \"tick\",\n\t alpha: alpha\n\t });\n\t };\n\t force.nodes = function(x) {\n\t if (!arguments.length) return nodes;\n\t nodes = x;\n\t return force;\n\t };\n\t force.links = function(x) {\n\t if (!arguments.length) return links;\n\t links = x;\n\t return force;\n\t };\n\t force.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return force;\n\t };\n\t force.linkDistance = function(x) {\n\t if (!arguments.length) return linkDistance;\n\t linkDistance = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.distance = force.linkDistance;\n\t force.linkStrength = function(x) {\n\t if (!arguments.length) return linkStrength;\n\t linkStrength = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.friction = function(x) {\n\t if (!arguments.length) return friction;\n\t friction = +x;\n\t return force;\n\t };\n\t force.charge = function(x) {\n\t if (!arguments.length) return charge;\n\t charge = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.chargeDistance = function(x) {\n\t if (!arguments.length) return Math.sqrt(chargeDistance2);\n\t chargeDistance2 = x * x;\n\t return force;\n\t };\n\t force.gravity = function(x) {\n\t if (!arguments.length) return gravity;\n\t gravity = +x;\n\t return force;\n\t };\n\t force.theta = function(x) {\n\t if (!arguments.length) return Math.sqrt(theta2);\n\t theta2 = x * x;\n\t return force;\n\t };\n\t force.alpha = function(x) {\n\t if (!arguments.length) return alpha;\n\t x = +x;\n\t if (alpha) {\n\t if (x > 0) {\n\t alpha = x;\n\t } else {\n\t timer.c = null, timer.t = NaN, timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t }\n\t } else if (x > 0) {\n\t event.start({\n\t type: \"start\",\n\t alpha: alpha = x\n\t });\n\t timer = d3_timer(force.tick);\n\t }\n\t return force;\n\t };\n\t force.start = function() {\n\t var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n\t for (i = 0; i < n; ++i) {\n\t (o = nodes[i]).index = i;\n\t o.weight = 0;\n\t }\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t if (typeof o.source == \"number\") o.source = nodes[o.source];\n\t if (typeof o.target == \"number\") o.target = nodes[o.target];\n\t ++o.source.weight;\n\t ++o.target.weight;\n\t }\n\t for (i = 0; i < n; ++i) {\n\t o = nodes[i];\n\t if (isNaN(o.x)) o.x = position(\"x\", w);\n\t if (isNaN(o.y)) o.y = position(\"y\", h);\n\t if (isNaN(o.px)) o.px = o.x;\n\t if (isNaN(o.py)) o.py = o.y;\n\t }\n\t distances = [];\n\t if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n\t strengths = [];\n\t if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n\t charges = [];\n\t if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n\t function position(dimension, size) {\n\t if (!neighbors) {\n\t neighbors = new Array(n);\n\t for (j = 0; j < n; ++j) {\n\t neighbors[j] = [];\n\t }\n\t for (j = 0; j < m; ++j) {\n\t var o = links[j];\n\t neighbors[o.source.index].push(o.target);\n\t neighbors[o.target.index].push(o.source);\n\t }\n\t }\n\t var candidates = neighbors[i], j = -1, l = candidates.length, x;\n\t while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n\t return Math.random() * size;\n\t }\n\t return force.resume();\n\t };\n\t force.resume = function() {\n\t return force.alpha(.1);\n\t };\n\t force.stop = function() {\n\t return force.alpha(0);\n\t };\n\t force.drag = function() {\n\t if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n\t if (!arguments.length) return drag;\n\t this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n\t };\n\t function dragmove(d) {\n\t d.px = d3.event.x, d.py = d3.event.y;\n\t force.resume();\n\t }\n\t return d3.rebind(force, event, \"on\");\n\t };\n\t function d3_layout_forceDragstart(d) {\n\t d.fixed |= 2;\n\t }\n\t function d3_layout_forceDragend(d) {\n\t d.fixed &= ~6;\n\t }\n\t function d3_layout_forceMouseover(d) {\n\t d.fixed |= 4;\n\t d.px = d.x, d.py = d.y;\n\t }\n\t function d3_layout_forceMouseout(d) {\n\t d.fixed &= ~4;\n\t }\n\t function d3_layout_forceAccumulate(quad, alpha, charges) {\n\t var cx = 0, cy = 0;\n\t quad.charge = 0;\n\t if (!quad.leaf) {\n\t var nodes = quad.nodes, n = nodes.length, i = -1, c;\n\t while (++i < n) {\n\t c = nodes[i];\n\t if (c == null) continue;\n\t d3_layout_forceAccumulate(c, alpha, charges);\n\t quad.charge += c.charge;\n\t cx += c.charge * c.cx;\n\t cy += c.charge * c.cy;\n\t }\n\t }\n\t if (quad.point) {\n\t if (!quad.leaf) {\n\t quad.point.x += Math.random() - .5;\n\t quad.point.y += Math.random() - .5;\n\t }\n\t var k = alpha * charges[quad.point.index];\n\t quad.charge += quad.pointCharge = k;\n\t cx += k * quad.point.x;\n\t cy += k * quad.point.y;\n\t }\n\t quad.cx = cx / quad.charge;\n\t quad.cy = cy / quad.charge;\n\t }\n\t var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n\t d3.layout.hierarchy = function() {\n\t var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n\t function hierarchy(root) {\n\t var stack = [ root ], nodes = [], node;\n\t root.depth = 0;\n\t while ((node = stack.pop()) != null) {\n\t nodes.push(node);\n\t if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n\t var n, childs, child;\n\t while (--n >= 0) {\n\t stack.push(child = childs[n]);\n\t child.parent = node;\n\t child.depth = node.depth + 1;\n\t }\n\t if (value) node.value = 0;\n\t node.children = childs;\n\t } else {\n\t if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t delete node.children;\n\t }\n\t }\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var childs, parent;\n\t if (sort && (childs = node.children)) childs.sort(sort);\n\t if (value && (parent = node.parent)) parent.value += node.value;\n\t });\n\t return nodes;\n\t }\n\t hierarchy.sort = function(x) {\n\t if (!arguments.length) return sort;\n\t sort = x;\n\t return hierarchy;\n\t };\n\t hierarchy.children = function(x) {\n\t if (!arguments.length) return children;\n\t children = x;\n\t return hierarchy;\n\t };\n\t hierarchy.value = function(x) {\n\t if (!arguments.length) return value;\n\t value = x;\n\t return hierarchy;\n\t };\n\t hierarchy.revalue = function(root) {\n\t if (value) {\n\t d3_layout_hierarchyVisitBefore(root, function(node) {\n\t if (node.children) node.value = 0;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var parent;\n\t if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t if (parent = node.parent) parent.value += node.value;\n\t });\n\t }\n\t return root;\n\t };\n\t return hierarchy;\n\t };\n\t function d3_layout_hierarchyRebind(object, hierarchy) {\n\t d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n\t object.nodes = object;\n\t object.links = d3_layout_hierarchyLinks;\n\t return object;\n\t }\n\t function d3_layout_hierarchyVisitBefore(node, callback) {\n\t var nodes = [ node ];\n\t while ((node = nodes.pop()) != null) {\n\t callback(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var n, children;\n\t while (--n >= 0) nodes.push(children[n]);\n\t }\n\t }\n\t }\n\t function d3_layout_hierarchyVisitAfter(node, callback) {\n\t var nodes = [ node ], nodes2 = [];\n\t while ((node = nodes.pop()) != null) {\n\t nodes2.push(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var i = -1, n, children;\n\t while (++i < n) nodes.push(children[i]);\n\t }\n\t }\n\t while ((node = nodes2.pop()) != null) {\n\t callback(node);\n\t }\n\t }\n\t function d3_layout_hierarchyChildren(d) {\n\t return d.children;\n\t }\n\t function d3_layout_hierarchyValue(d) {\n\t return d.value;\n\t }\n\t function d3_layout_hierarchySort(a, b) {\n\t return b.value - a.value;\n\t }\n\t function d3_layout_hierarchyLinks(nodes) {\n\t return d3.merge(nodes.map(function(parent) {\n\t return (parent.children || []).map(function(child) {\n\t return {\n\t source: parent,\n\t target: child\n\t };\n\t });\n\t }));\n\t }\n\t d3.layout.partition = function() {\n\t var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n\t function position(node, x, dx, dy) {\n\t var children = node.children;\n\t node.x = x;\n\t node.y = node.depth * dy;\n\t node.dx = dx;\n\t node.dy = dy;\n\t if (children && (n = children.length)) {\n\t var i = -1, n, c, d;\n\t dx = node.value ? dx / node.value : 0;\n\t while (++i < n) {\n\t position(c = children[i], x, d = c.value * dx, dy);\n\t x += d;\n\t }\n\t }\n\t }\n\t function depth(node) {\n\t var children = node.children, d = 0;\n\t if (children && (n = children.length)) {\n\t var i = -1, n;\n\t while (++i < n) d = Math.max(d, depth(children[i]));\n\t }\n\t return 1 + d;\n\t }\n\t function partition(d, i) {\n\t var nodes = hierarchy.call(this, d, i);\n\t position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n\t return nodes;\n\t }\n\t partition.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return partition;\n\t };\n\t return d3_layout_hierarchyRebind(partition, hierarchy);\n\t };\n\t d3.layout.pie = function() {\n\t var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n\t function pie(data) {\n\t var n = data.length, values = data.map(function(d, i) {\n\t return +value.call(pie, d, i);\n\t }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n\t if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n\t return values[j] - values[i];\n\t } : function(i, j) {\n\t return sort(data[i], data[j]);\n\t });\n\t index.forEach(function(i) {\n\t arcs[i] = {\n\t data: data[i],\n\t value: v = values[i],\n\t startAngle: a,\n\t endAngle: a += v * k + pa,\n\t padAngle: p\n\t };\n\t });\n\t return arcs;\n\t }\n\t pie.value = function(_) {\n\t if (!arguments.length) return value;\n\t value = _;\n\t return pie;\n\t };\n\t pie.sort = function(_) {\n\t if (!arguments.length) return sort;\n\t sort = _;\n\t return pie;\n\t };\n\t pie.startAngle = function(_) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = _;\n\t return pie;\n\t };\n\t pie.endAngle = function(_) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = _;\n\t return pie;\n\t };\n\t pie.padAngle = function(_) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = _;\n\t return pie;\n\t };\n\t return pie;\n\t };\n\t var d3_layout_pieSortByValue = {};\n\t d3.layout.stack = function() {\n\t var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n\t function stack(data, index) {\n\t if (!(n = data.length)) return data;\n\t var series = data.map(function(d, i) {\n\t return values.call(stack, d, i);\n\t });\n\t var points = series.map(function(d) {\n\t return d.map(function(v, i) {\n\t return [ x.call(stack, v, i), y.call(stack, v, i) ];\n\t });\n\t });\n\t var orders = order.call(stack, points, index);\n\t series = d3.permute(series, orders);\n\t points = d3.permute(points, orders);\n\t var offsets = offset.call(stack, points, index);\n\t var m = series[0].length, n, i, j, o;\n\t for (j = 0; j < m; ++j) {\n\t out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n\t for (i = 1; i < n; ++i) {\n\t out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n\t }\n\t }\n\t return data;\n\t }\n\t stack.values = function(x) {\n\t if (!arguments.length) return values;\n\t values = x;\n\t return stack;\n\t };\n\t stack.order = function(x) {\n\t if (!arguments.length) return order;\n\t order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n\t return stack;\n\t };\n\t stack.offset = function(x) {\n\t if (!arguments.length) return offset;\n\t offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n\t return stack;\n\t };\n\t stack.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t return stack;\n\t };\n\t stack.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t return stack;\n\t };\n\t stack.out = function(z) {\n\t if (!arguments.length) return out;\n\t out = z;\n\t return stack;\n\t };\n\t return stack;\n\t };\n\t function d3_layout_stackX(d) {\n\t return d.x;\n\t }\n\t function d3_layout_stackY(d) {\n\t return d.y;\n\t }\n\t function d3_layout_stackOut(d, y0, y) {\n\t d.y0 = y0;\n\t d.y = y;\n\t }\n\t var d3_layout_stackOrders = d3.map({\n\t \"inside-out\": function(data) {\n\t var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n\t return max[a] - max[b];\n\t }), top = 0, bottom = 0, tops = [], bottoms = [];\n\t for (i = 0; i < n; ++i) {\n\t j = index[i];\n\t if (top < bottom) {\n\t top += sums[j];\n\t tops.push(j);\n\t } else {\n\t bottom += sums[j];\n\t bottoms.push(j);\n\t }\n\t }\n\t return bottoms.reverse().concat(tops);\n\t },\n\t reverse: function(data) {\n\t return d3.range(data.length).reverse();\n\t },\n\t \"default\": d3_layout_stackOrderDefault\n\t });\n\t var d3_layout_stackOffsets = d3.map({\n\t silhouette: function(data) {\n\t var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o > max) max = o;\n\t sums.push(o);\n\t }\n\t for (j = 0; j < m; ++j) {\n\t y0[j] = (max - sums[j]) / 2;\n\t }\n\t return y0;\n\t },\n\t wiggle: function(data) {\n\t var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n\t y0[0] = o = o0 = 0;\n\t for (j = 1; j < m; ++j) {\n\t for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n\t for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n\t for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n\t s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n\t }\n\t s2 += s3 * data[i][j][1];\n\t }\n\t y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n\t if (o < o0) o0 = o;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] -= o0;\n\t return y0;\n\t },\n\t expand: function(data) {\n\t var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] = 0;\n\t return y0;\n\t },\n\t zero: d3_layout_stackOffsetZero\n\t });\n\t function d3_layout_stackOrderDefault(data) {\n\t return d3.range(data.length);\n\t }\n\t function d3_layout_stackOffsetZero(data) {\n\t var j = -1, m = data[0].length, y0 = [];\n\t while (++j < m) y0[j] = 0;\n\t return y0;\n\t }\n\t function d3_layout_stackMaxIndex(array) {\n\t var i = 1, j = 0, v = array[0][1], k, n = array.length;\n\t for (;i < n; ++i) {\n\t if ((k = array[i][1]) > v) {\n\t j = i;\n\t v = k;\n\t }\n\t }\n\t return j;\n\t }\n\t function d3_layout_stackReduceSum(d) {\n\t return d.reduce(d3_layout_stackSum, 0);\n\t }\n\t function d3_layout_stackSum(p, d) {\n\t return p + d[1];\n\t }\n\t d3.layout.histogram = function() {\n\t var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n\t function histogram(data, i) {\n\t var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n\t while (++i < m) {\n\t bin = bins[i] = [];\n\t bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n\t bin.y = 0;\n\t }\n\t if (m > 0) {\n\t i = -1;\n\t while (++i < n) {\n\t x = values[i];\n\t if (x >= range[0] && x <= range[1]) {\n\t bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n\t bin.y += k;\n\t bin.push(data[i]);\n\t }\n\t }\n\t }\n\t return bins;\n\t }\n\t histogram.value = function(x) {\n\t if (!arguments.length) return valuer;\n\t valuer = x;\n\t return histogram;\n\t };\n\t histogram.range = function(x) {\n\t if (!arguments.length) return ranger;\n\t ranger = d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.bins = function(x) {\n\t if (!arguments.length) return binner;\n\t binner = typeof x === \"number\" ? function(range) {\n\t return d3_layout_histogramBinFixed(range, x);\n\t } : d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.frequency = function(x) {\n\t if (!arguments.length) return frequency;\n\t frequency = !!x;\n\t return histogram;\n\t };\n\t return histogram;\n\t };\n\t function d3_layout_histogramBinSturges(range, values) {\n\t return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n\t }\n\t function d3_layout_histogramBinFixed(range, n) {\n\t var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n\t while (++x <= n) f[x] = m * x + b;\n\t return f;\n\t }\n\t function d3_layout_histogramRange(values) {\n\t return [ d3.min(values), d3.max(values) ];\n\t }\n\t d3.layout.pack = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n\t function pack(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n\t return radius;\n\t };\n\t root.x = root.y = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r = +r(d.value);\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t if (padding) {\n\t var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r += dr;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r -= dr;\n\t });\n\t }\n\t d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n\t return nodes;\n\t }\n\t pack.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _;\n\t return pack;\n\t };\n\t pack.radius = function(_) {\n\t if (!arguments.length) return radius;\n\t radius = _ == null || typeof _ === \"function\" ? _ : +_;\n\t return pack;\n\t };\n\t pack.padding = function(_) {\n\t if (!arguments.length) return padding;\n\t padding = +_;\n\t return pack;\n\t };\n\t return d3_layout_hierarchyRebind(pack, hierarchy);\n\t };\n\t function d3_layout_packSort(a, b) {\n\t return a.value - b.value;\n\t }\n\t function d3_layout_packInsert(a, b) {\n\t var c = a._pack_next;\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t b._pack_next = c;\n\t c._pack_prev = b;\n\t }\n\t function d3_layout_packSplice(a, b) {\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t }\n\t function d3_layout_packIntersects(a, b) {\n\t var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n\t return .999 * dr * dr > dx * dx + dy * dy;\n\t }\n\t function d3_layout_packSiblings(node) {\n\t if (!(nodes = node.children) || !(n = nodes.length)) return;\n\t var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n\t function bound(node) {\n\t xMin = Math.min(node.x - node.r, xMin);\n\t xMax = Math.max(node.x + node.r, xMax);\n\t yMin = Math.min(node.y - node.r, yMin);\n\t yMax = Math.max(node.y + node.r, yMax);\n\t }\n\t nodes.forEach(d3_layout_packLink);\n\t a = nodes[0];\n\t a.x = -a.r;\n\t a.y = 0;\n\t bound(a);\n\t if (n > 1) {\n\t b = nodes[1];\n\t b.x = b.r;\n\t b.y = 0;\n\t bound(b);\n\t if (n > 2) {\n\t c = nodes[2];\n\t d3_layout_packPlace(a, b, c);\n\t bound(c);\n\t d3_layout_packInsert(a, c);\n\t a._pack_prev = c;\n\t d3_layout_packInsert(c, b);\n\t b = a._pack_next;\n\t for (i = 3; i < n; i++) {\n\t d3_layout_packPlace(a, b, c = nodes[i]);\n\t var isect = 0, s1 = 1, s2 = 1;\n\t for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n\t if (d3_layout_packIntersects(j, c)) {\n\t isect = 1;\n\t break;\n\t }\n\t }\n\t if (isect == 1) {\n\t for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n\t if (d3_layout_packIntersects(k, c)) {\n\t break;\n\t }\n\t }\n\t }\n\t if (isect) {\n\t if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n\t i--;\n\t } else {\n\t d3_layout_packInsert(a, c);\n\t b = c;\n\t bound(c);\n\t }\n\t }\n\t }\n\t }\n\t var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n\t for (i = 0; i < n; i++) {\n\t c = nodes[i];\n\t c.x -= cx;\n\t c.y -= cy;\n\t cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n\t }\n\t node.r = cr;\n\t nodes.forEach(d3_layout_packUnlink);\n\t }\n\t function d3_layout_packLink(node) {\n\t node._pack_next = node._pack_prev = node;\n\t }\n\t function d3_layout_packUnlink(node) {\n\t delete node._pack_next;\n\t delete node._pack_prev;\n\t }\n\t function d3_layout_packTransform(node, x, y, k) {\n\t var children = node.children;\n\t node.x = x += k * node.x;\n\t node.y = y += k * node.y;\n\t node.r *= k;\n\t if (children) {\n\t var i = -1, n = children.length;\n\t while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n\t }\n\t }\n\t function d3_layout_packPlace(a, b, c) {\n\t var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n\t if (db && (dx || dy)) {\n\t var da = b.r + c.r, dc = dx * dx + dy * dy;\n\t da *= da;\n\t db *= db;\n\t var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n\t c.x = a.x + x * dx + y * dy;\n\t c.y = a.y + x * dy - y * dx;\n\t } else {\n\t c.x = a.x + db;\n\t c.y = a.y;\n\t }\n\t }\n\t d3.layout.tree = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n\t function tree(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n\t d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n\t d3_layout_hierarchyVisitBefore(root1, secondWalk);\n\t if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n\t var left = root0, right = root0, bottom = root0;\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t if (node.x < left.x) left = node;\n\t if (node.x > right.x) right = node;\n\t if (node.depth > bottom.depth) bottom = node;\n\t });\n\t var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t node.x = (node.x + tx) * kx;\n\t node.y = node.depth * ky;\n\t });\n\t }\n\t return nodes;\n\t }\n\t function wrapTree(root0) {\n\t var root1 = {\n\t A: null,\n\t children: [ root0 ]\n\t }, queue = [ root1 ], node1;\n\t while ((node1 = queue.pop()) != null) {\n\t for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n\t queue.push((children[i] = child = {\n\t _: children[i],\n\t parent: node1,\n\t children: (child = children[i].children) && child.slice() || [],\n\t A: null,\n\t a: null,\n\t z: 0,\n\t m: 0,\n\t c: 0,\n\t s: 0,\n\t t: null,\n\t i: i\n\t }).a = child);\n\t }\n\t }\n\t return root1.children[0];\n\t }\n\t function firstWalk(v) {\n\t var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n\t if (children.length) {\n\t d3_layout_treeShift(v);\n\t var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n\t if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t v.m = v.z - midpoint;\n\t } else {\n\t v.z = midpoint;\n\t }\n\t } else if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t }\n\t v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n\t }\n\t function secondWalk(v) {\n\t v._.x = v.z + v.parent.m;\n\t v.m += v.parent.m;\n\t }\n\t function apportion(v, w, ancestor) {\n\t if (w) {\n\t var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n\t while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n\t vom = d3_layout_treeLeft(vom);\n\t vop = d3_layout_treeRight(vop);\n\t vop.a = v;\n\t shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n\t if (shift > 0) {\n\t d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n\t sip += shift;\n\t sop += shift;\n\t }\n\t sim += vim.m;\n\t sip += vip.m;\n\t som += vom.m;\n\t sop += vop.m;\n\t }\n\t if (vim && !d3_layout_treeRight(vop)) {\n\t vop.t = vim;\n\t vop.m += sim - sop;\n\t }\n\t if (vip && !d3_layout_treeLeft(vom)) {\n\t vom.t = vip;\n\t vom.m += sip - som;\n\t ancestor = v;\n\t }\n\t }\n\t return ancestor;\n\t }\n\t function sizeNode(node) {\n\t node.x *= size[0];\n\t node.y = node.depth * size[1];\n\t }\n\t tree.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return tree;\n\t };\n\t tree.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null ? sizeNode : null;\n\t return tree;\n\t };\n\t tree.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) == null ? null : sizeNode;\n\t return tree;\n\t };\n\t return d3_layout_hierarchyRebind(tree, hierarchy);\n\t };\n\t function d3_layout_treeSeparation(a, b) {\n\t return a.parent == b.parent ? 1 : 2;\n\t }\n\t function d3_layout_treeLeft(v) {\n\t var children = v.children;\n\t return children.length ? children[0] : v.t;\n\t }\n\t function d3_layout_treeRight(v) {\n\t var children = v.children, n;\n\t return (n = children.length) ? children[n - 1] : v.t;\n\t }\n\t function d3_layout_treeMove(wm, wp, shift) {\n\t var change = shift / (wp.i - wm.i);\n\t wp.c -= change;\n\t wp.s += shift;\n\t wm.c += change;\n\t wp.z += shift;\n\t wp.m += shift;\n\t }\n\t function d3_layout_treeShift(v) {\n\t var shift = 0, change = 0, children = v.children, i = children.length, w;\n\t while (--i >= 0) {\n\t w = children[i];\n\t w.z += shift;\n\t w.m += shift;\n\t shift += w.s + (change += w.c);\n\t }\n\t }\n\t function d3_layout_treeAncestor(vim, v, ancestor) {\n\t return vim.a.parent === v.parent ? vim.a : ancestor;\n\t }\n\t d3.layout.cluster = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n\t function cluster(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t node.x = d3_layout_clusterX(children);\n\t node.y = d3_layout_clusterY(children);\n\t } else {\n\t node.x = previousNode ? x += separation(node, previousNode) : 0;\n\t node.y = 0;\n\t previousNode = node;\n\t }\n\t });\n\t var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n\t d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n\t node.x = (node.x - root.x) * size[0];\n\t node.y = (root.y - node.y) * size[1];\n\t } : function(node) {\n\t node.x = (node.x - x0) / (x1 - x0) * size[0];\n\t node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n\t });\n\t return nodes;\n\t }\n\t cluster.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return cluster;\n\t };\n\t cluster.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null;\n\t return cluster;\n\t };\n\t cluster.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) != null;\n\t return cluster;\n\t };\n\t return d3_layout_hierarchyRebind(cluster, hierarchy);\n\t };\n\t function d3_layout_clusterY(children) {\n\t return 1 + d3.max(children, function(child) {\n\t return child.y;\n\t });\n\t }\n\t function d3_layout_clusterX(children) {\n\t return children.reduce(function(x, child) {\n\t return x + child.x;\n\t }, 0) / children.length;\n\t }\n\t function d3_layout_clusterLeft(node) {\n\t var children = node.children;\n\t return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n\t }\n\t function d3_layout_clusterRight(node) {\n\t var children = node.children, n;\n\t return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n\t }\n\t d3.layout.treemap = function() {\n\t var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n\t function scale(children, k) {\n\t var i = -1, n = children.length, child, area;\n\t while (++i < n) {\n\t area = (child = children[i]).value * (k < 0 ? 0 : k);\n\t child.area = isNaN(area) || area <= 0 ? 0 : area;\n\t }\n\t }\n\t function squarify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while ((n = remaining.length) > 0) {\n\t row.push(child = remaining[n - 1]);\n\t row.area += child.area;\n\t if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n\t remaining.pop();\n\t best = score;\n\t } else {\n\t row.area -= row.pop().area;\n\t position(row, u, rect, false);\n\t u = Math.min(rect.dx, rect.dy);\n\t row.length = row.area = 0;\n\t best = Infinity;\n\t }\n\t }\n\t if (row.length) {\n\t position(row, u, rect, true);\n\t row.length = row.area = 0;\n\t }\n\t children.forEach(squarify);\n\t }\n\t }\n\t function stickify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), remaining = children.slice(), child, row = [];\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while (child = remaining.pop()) {\n\t row.push(child);\n\t row.area += child.area;\n\t if (child.z != null) {\n\t position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n\t row.length = row.area = 0;\n\t }\n\t }\n\t children.forEach(stickify);\n\t }\n\t }\n\t function worst(row, u) {\n\t var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n\t while (++i < n) {\n\t if (!(r = row[i].area)) continue;\n\t if (r < rmin) rmin = r;\n\t if (r > rmax) rmax = r;\n\t }\n\t s *= s;\n\t u *= u;\n\t return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n\t }\n\t function position(row, u, rect, flush) {\n\t var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n\t if (u == rect.dx) {\n\t if (flush || v > rect.dy) v = rect.dy;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dy = v;\n\t x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n\t }\n\t o.z = true;\n\t o.dx += rect.x + rect.dx - x;\n\t rect.y += v;\n\t rect.dy -= v;\n\t } else {\n\t if (flush || v > rect.dx) v = rect.dx;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dx = v;\n\t y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n\t }\n\t o.z = false;\n\t o.dy += rect.y + rect.dy - y;\n\t rect.x += v;\n\t rect.dx -= v;\n\t }\n\t }\n\t function treemap(d) {\n\t var nodes = stickies || hierarchy(d), root = nodes[0];\n\t root.x = root.y = 0;\n\t if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n\t if (stickies) hierarchy.revalue(root);\n\t scale([ root ], root.dx * root.dy / root.value);\n\t (stickies ? stickify : squarify)(root);\n\t if (sticky) stickies = nodes;\n\t return nodes;\n\t }\n\t treemap.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return treemap;\n\t };\n\t treemap.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t function padFunction(node) {\n\t var p = x.call(treemap, node, node.depth);\n\t return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n\t }\n\t function padConstant(node) {\n\t return d3_layout_treemapPad(node, x);\n\t }\n\t var type;\n\t pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n\t padConstant) : padConstant;\n\t return treemap;\n\t };\n\t treemap.round = function(x) {\n\t if (!arguments.length) return round != Number;\n\t round = x ? Math.round : Number;\n\t return treemap;\n\t };\n\t treemap.sticky = function(x) {\n\t if (!arguments.length) return sticky;\n\t sticky = x;\n\t stickies = null;\n\t return treemap;\n\t };\n\t treemap.ratio = function(x) {\n\t if (!arguments.length) return ratio;\n\t ratio = x;\n\t return treemap;\n\t };\n\t treemap.mode = function(x) {\n\t if (!arguments.length) return mode;\n\t mode = x + \"\";\n\t return treemap;\n\t };\n\t return d3_layout_hierarchyRebind(treemap, hierarchy);\n\t };\n\t function d3_layout_treemapPadNull(node) {\n\t return {\n\t x: node.x,\n\t y: node.y,\n\t dx: node.dx,\n\t dy: node.dy\n\t };\n\t }\n\t function d3_layout_treemapPad(node, padding) {\n\t var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n\t if (dx < 0) {\n\t x += dx / 2;\n\t dx = 0;\n\t }\n\t if (dy < 0) {\n\t y += dy / 2;\n\t dy = 0;\n\t }\n\t return {\n\t x: x,\n\t y: y,\n\t dx: dx,\n\t dy: dy\n\t };\n\t }\n\t d3.random = {\n\t normal: function(µ, σ) {\n\t var n = arguments.length;\n\t if (n < 2) σ = 1;\n\t if (n < 1) µ = 0;\n\t return function() {\n\t var x, y, r;\n\t do {\n\t x = Math.random() * 2 - 1;\n\t y = Math.random() * 2 - 1;\n\t r = x * x + y * y;\n\t } while (!r || r > 1);\n\t return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n\t };\n\t },\n\t logNormal: function() {\n\t var random = d3.random.normal.apply(d3, arguments);\n\t return function() {\n\t return Math.exp(random());\n\t };\n\t },\n\t bates: function(m) {\n\t var random = d3.random.irwinHall(m);\n\t return function() {\n\t return random() / m;\n\t };\n\t },\n\t irwinHall: function(m) {\n\t return function() {\n\t for (var s = 0, j = 0; j < m; j++) s += Math.random();\n\t return s;\n\t };\n\t }\n\t };\n\t d3.scale = {};\n\t function d3_scaleExtent(domain) {\n\t var start = domain[0], stop = domain[domain.length - 1];\n\t return start < stop ? [ start, stop ] : [ stop, start ];\n\t }\n\t function d3_scaleRange(scale) {\n\t return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n\t }\n\t function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n\t var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n\t return function(x) {\n\t return i(u(x));\n\t };\n\t }\n\t function d3_scale_nice(domain, nice) {\n\t var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n\t if (x1 < x0) {\n\t dx = i0, i0 = i1, i1 = dx;\n\t dx = x0, x0 = x1, x1 = dx;\n\t }\n\t domain[i0] = nice.floor(x0);\n\t domain[i1] = nice.ceil(x1);\n\t return domain;\n\t }\n\t function d3_scale_niceStep(step) {\n\t return step ? {\n\t floor: function(x) {\n\t return Math.floor(x / step) * step;\n\t },\n\t ceil: function(x) {\n\t return Math.ceil(x / step) * step;\n\t }\n\t } : d3_scale_niceIdentity;\n\t }\n\t var d3_scale_niceIdentity = {\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n\t var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n\t if (domain[k] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range = range.slice().reverse();\n\t }\n\t while (++j <= k) {\n\t u.push(uninterpolate(domain[j - 1], domain[j]));\n\t i.push(interpolate(range[j - 1], range[j]));\n\t }\n\t return function(x) {\n\t var j = d3.bisect(domain, x, 1, k) - 1;\n\t return i[j](u[j](x));\n\t };\n\t }\n\t d3.scale.linear = function() {\n\t return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n\t };\n\t function d3_scale_linear(domain, range, interpolate, clamp) {\n\t var output, input;\n\t function rescale() {\n\t var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n\t output = linear(domain, range, uninterpolate, interpolate);\n\t input = linear(range, domain, uninterpolate, d3_interpolate);\n\t return scale;\n\t }\n\t function scale(x) {\n\t return output(x);\n\t }\n\t scale.invert = function(y) {\n\t return input(y);\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(Number);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.rangeRound = function(x) {\n\t return scale.range(x).interpolate(d3_interpolateRound);\n\t };\n\t scale.clamp = function(x) {\n\t if (!arguments.length) return clamp;\n\t clamp = x;\n\t return rescale();\n\t };\n\t scale.interpolate = function(x) {\n\t if (!arguments.length) return interpolate;\n\t interpolate = x;\n\t return rescale();\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t d3_scale_linearNice(domain, m);\n\t return rescale();\n\t };\n\t scale.copy = function() {\n\t return d3_scale_linear(domain, range, interpolate, clamp);\n\t };\n\t return rescale();\n\t }\n\t function d3_scale_linearRebind(scale, linear) {\n\t return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n\t }\n\t function d3_scale_linearNice(domain, m) {\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t return domain;\n\t }\n\t function d3_scale_linearTickRange(domain, m) {\n\t if (m == null) m = 10;\n\t var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n\t if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n\t extent[0] = Math.ceil(extent[0] / step) * step;\n\t extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n\t extent[2] = step;\n\t return extent;\n\t }\n\t function d3_scale_linearTicks(domain, m) {\n\t return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n\t }\n\t function d3_scale_linearTickFormat(domain, m, format) {\n\t var range = d3_scale_linearTickRange(domain, m);\n\t if (format) {\n\t var match = d3_format_re.exec(format);\n\t match.shift();\n\t if (match[8] === \"s\") {\n\t var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n\t match[8] = \"f\";\n\t format = d3.format(match.join(\"\"));\n\t return function(d) {\n\t return format(prefix.scale(d)) + prefix.symbol;\n\t };\n\t }\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n\t format = match.join(\"\");\n\t } else {\n\t format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n\t }\n\t return d3.format(format);\n\t }\n\t var d3_scale_linearFormatSignificant = {\n\t s: 1,\n\t g: 1,\n\t p: 1,\n\t r: 1,\n\t e: 1\n\t };\n\t function d3_scale_linearPrecision(value) {\n\t return -Math.floor(Math.log(value) / Math.LN10 + .01);\n\t }\n\t function d3_scale_linearFormatPrecision(type, range) {\n\t var p = d3_scale_linearPrecision(range[2]);\n\t return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n\t }\n\t d3.scale.log = function() {\n\t return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n\t };\n\t function d3_scale_log(linear, base, positive, domain) {\n\t function log(x) {\n\t return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n\t }\n\t function pow(x) {\n\t return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n\t }\n\t function scale(x) {\n\t return linear(log(x));\n\t }\n\t scale.invert = function(x) {\n\t return pow(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t positive = x[0] >= 0;\n\t linear.domain((domain = x.map(Number)).map(log));\n\t return scale;\n\t };\n\t scale.base = function(_) {\n\t if (!arguments.length) return base;\n\t base = +_;\n\t linear.domain(domain.map(log));\n\t return scale;\n\t };\n\t scale.nice = function() {\n\t var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n\t linear.domain(niced);\n\t domain = niced.map(pow);\n\t return scale;\n\t };\n\t scale.ticks = function() {\n\t var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n\t if (isFinite(j - i)) {\n\t if (positive) {\n\t for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n\t ticks.push(pow(i));\n\t } else {\n\t ticks.push(pow(i));\n\t for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n\t }\n\t for (i = 0; ticks[i] < u; i++) {}\n\t for (j = ticks.length; ticks[j - 1] > v; j--) {}\n\t ticks = ticks.slice(i, j);\n\t }\n\t return ticks;\n\t };\n\t scale.tickFormat = function(n, format) {\n\t if (!arguments.length) return d3_scale_logFormat;\n\t if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n\t var k = Math.max(1, base * n / scale.ticks().length);\n\t return function(d) {\n\t var i = d / pow(Math.round(log(d)));\n\t if (i * base < base - .5) i *= base;\n\t return i <= k ? format(d) : \"\";\n\t };\n\t };\n\t scale.copy = function() {\n\t return d3_scale_log(linear.copy(), base, positive, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n\t floor: function(x) {\n\t return -Math.ceil(-x);\n\t },\n\t ceil: function(x) {\n\t return -Math.floor(-x);\n\t }\n\t };\n\t d3.scale.pow = function() {\n\t return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_pow(linear, exponent, domain) {\n\t var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n\t function scale(x) {\n\t return linear(powp(x));\n\t }\n\t scale.invert = function(x) {\n\t return powb(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t linear.domain((domain = x.map(Number)).map(powp));\n\t return scale;\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t return scale.domain(d3_scale_linearNice(domain, m));\n\t };\n\t scale.exponent = function(x) {\n\t if (!arguments.length) return exponent;\n\t powp = d3_scale_powPow(exponent = x);\n\t powb = d3_scale_powPow(1 / exponent);\n\t linear.domain(domain.map(powp));\n\t return scale;\n\t };\n\t scale.copy = function() {\n\t return d3_scale_pow(linear.copy(), exponent, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_scale_powPow(e) {\n\t return function(x) {\n\t return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n\t };\n\t }\n\t d3.scale.sqrt = function() {\n\t return d3.scale.pow().exponent(.5);\n\t };\n\t d3.scale.ordinal = function() {\n\t return d3_scale_ordinal([], {\n\t t: \"range\",\n\t a: [ [] ]\n\t });\n\t };\n\t function d3_scale_ordinal(domain, ranger) {\n\t var index, range, rangeBand;\n\t function scale(x) {\n\t return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n\t }\n\t function steps(start, step) {\n\t return d3.range(domain.length).map(function(i) {\n\t return start + step * i;\n\t });\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = [];\n\t index = new d3_Map();\n\t var i = -1, n = x.length, xi;\n\t while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n\t return scale[ranger.t].apply(scale, ranger.a);\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"range\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangePoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n\t 0) : (stop - start) / (domain.length - 1 + padding);\n\t range = steps(start + step * padding / 2, step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangePoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundPoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n\t 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n\t range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangeRoundPoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n\t range = steps(start + step * outerPadding, step);\n\t if (reverse) range.reverse();\n\t rangeBand = step * (1 - padding);\n\t ranger = {\n\t t: \"rangeBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n\t range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n\t if (reverse) range.reverse();\n\t rangeBand = Math.round(step * (1 - padding));\n\t ranger = {\n\t t: \"rangeRoundBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBand = function() {\n\t return rangeBand;\n\t };\n\t scale.rangeExtent = function() {\n\t return d3_scaleExtent(ranger.a[0]);\n\t };\n\t scale.copy = function() {\n\t return d3_scale_ordinal(domain, ranger);\n\t };\n\t return scale.domain(domain);\n\t }\n\t d3.scale.category10 = function() {\n\t return d3.scale.ordinal().range(d3_category10);\n\t };\n\t d3.scale.category20 = function() {\n\t return d3.scale.ordinal().range(d3_category20);\n\t };\n\t d3.scale.category20b = function() {\n\t return d3.scale.ordinal().range(d3_category20b);\n\t };\n\t d3.scale.category20c = function() {\n\t return d3.scale.ordinal().range(d3_category20c);\n\t };\n\t var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n\t var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n\t var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n\t var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n\t d3.scale.quantile = function() {\n\t return d3_scale_quantile([], []);\n\t };\n\t function d3_scale_quantile(domain, range) {\n\t var thresholds;\n\t function rescale() {\n\t var k = 0, q = range.length;\n\t thresholds = [];\n\t while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n\t return scale;\n\t }\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.quantiles = function() {\n\t return thresholds;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantile(domain, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.quantize = function() {\n\t return d3_scale_quantize(0, 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_quantize(x0, x1, range) {\n\t var kx, i;\n\t function scale(x) {\n\t return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n\t }\n\t function rescale() {\n\t kx = range.length / (x1 - x0);\n\t i = range.length - 1;\n\t return scale;\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return [ x0, x1 ];\n\t x0 = +x[0];\n\t x1 = +x[x.length - 1];\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t y = y < 0 ? NaN : y / kx + x0;\n\t return [ y, y + 1 / kx ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantize(x0, x1, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.threshold = function() {\n\t return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n\t };\n\t function d3_scale_threshold(domain, range) {\n\t function scale(x) {\n\t if (x <= x) return range[d3.bisect(domain, x)];\n\t }\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain;\n\t domain = _;\n\t return scale;\n\t };\n\t scale.range = function(_) {\n\t if (!arguments.length) return range;\n\t range = _;\n\t return scale;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return [ domain[y - 1], domain[y] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_threshold(domain, range);\n\t };\n\t return scale;\n\t }\n\t d3.scale.identity = function() {\n\t return d3_scale_identity([ 0, 1 ]);\n\t };\n\t function d3_scale_identity(domain) {\n\t function identity(x) {\n\t return +x;\n\t }\n\t identity.invert = identity;\n\t identity.domain = identity.range = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(identity);\n\t return identity;\n\t };\n\t identity.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t identity.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t identity.copy = function() {\n\t return d3_scale_identity(domain);\n\t };\n\t return identity;\n\t }\n\t d3.svg = {};\n\t function d3_zero() {\n\t return 0;\n\t }\n\t d3.svg.arc = function() {\n\t var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n\t function arc() {\n\t var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n\t if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n\t if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n\t var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n\t if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n\t rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n\t if (!cw) p1 *= -1;\n\t if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n\t if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n\t }\n\t if (r1) {\n\t x0 = r1 * Math.cos(a0 + p1);\n\t y0 = r1 * Math.sin(a0 + p1);\n\t x1 = r1 * Math.cos(a1 - p1);\n\t y1 = r1 * Math.sin(a1 - p1);\n\t var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n\t if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n\t var h1 = (a0 + a1) / 2;\n\t x0 = r1 * Math.cos(h1);\n\t y0 = r1 * Math.sin(h1);\n\t x1 = y1 = null;\n\t }\n\t } else {\n\t x0 = y0 = 0;\n\t }\n\t if (r0) {\n\t x2 = r0 * Math.cos(a1 - p0);\n\t y2 = r0 * Math.sin(a1 - p0);\n\t x3 = r0 * Math.cos(a0 + p0);\n\t y3 = r0 * Math.sin(a0 + p0);\n\t var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n\t if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n\t var h0 = (a0 + a1) / 2;\n\t x2 = r0 * Math.cos(h0);\n\t y2 = r0 * Math.sin(h0);\n\t x3 = y3 = null;\n\t }\n\t } else {\n\t x2 = y2 = 0;\n\t }\n\t if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n\t cr = r0 < r1 ^ cw ? 0 : 1;\n\t var rc1 = rc, rc0 = rc;\n\t if (da < π) {\n\t var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\t rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n\t rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n\t }\n\t if (x1 != null) {\n\t var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n\t if (rc === rc1) {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n\t } else {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t }\n\t if (x3 != null) {\n\t var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n\t if (rc === rc0) {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t } else {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t }\n\t } else {\n\t path.push(\"L\", x2, \",\", y2);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n\t path.push(\"L\", x2, \",\", y2);\n\t if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n\t }\n\t path.push(\"Z\");\n\t return path.join(\"\");\n\t }\n\t function circleSegment(r1, cw) {\n\t return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n\t }\n\t arc.innerRadius = function(v) {\n\t if (!arguments.length) return innerRadius;\n\t innerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.outerRadius = function(v) {\n\t if (!arguments.length) return outerRadius;\n\t outerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.cornerRadius = function(v) {\n\t if (!arguments.length) return cornerRadius;\n\t cornerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padRadius = function(v) {\n\t if (!arguments.length) return padRadius;\n\t padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n\t return arc;\n\t };\n\t arc.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padAngle = function(v) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.centroid = function() {\n\t var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n\t return [ Math.cos(a) * r, Math.sin(a) * r ];\n\t };\n\t return arc;\n\t };\n\t var d3_svg_arcAuto = \"auto\";\n\t function d3_svg_arcInnerRadius(d) {\n\t return d.innerRadius;\n\t }\n\t function d3_svg_arcOuterRadius(d) {\n\t return d.outerRadius;\n\t }\n\t function d3_svg_arcStartAngle(d) {\n\t return d.startAngle;\n\t }\n\t function d3_svg_arcEndAngle(d) {\n\t return d.endAngle;\n\t }\n\t function d3_svg_arcPadAngle(d) {\n\t return d && d.padAngle;\n\t }\n\t function d3_svg_arcSweep(x0, y0, x1, y1) {\n\t return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n\t }\n\t function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n\t var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n\t if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\t return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n\t }\n\t function d3_svg_line(projection) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n\t function line(data) {\n\t var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points), tension));\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n\t } else if (points.length) {\n\t segment();\n\t points = [];\n\t }\n\t }\n\t if (points.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t line.x = function(_) {\n\t if (!arguments.length) return x;\n\t x = _;\n\t return line;\n\t };\n\t line.y = function(_) {\n\t if (!arguments.length) return y;\n\t y = _;\n\t return line;\n\t };\n\t line.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return line;\n\t };\n\t line.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t return line;\n\t };\n\t line.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return line;\n\t };\n\t return line;\n\t }\n\t d3.svg.line = function() {\n\t return d3_svg_line(d3_identity);\n\t };\n\t var d3_svg_lineInterpolators = d3.map({\n\t linear: d3_svg_lineLinear,\n\t \"linear-closed\": d3_svg_lineLinearClosed,\n\t step: d3_svg_lineStep,\n\t \"step-before\": d3_svg_lineStepBefore,\n\t \"step-after\": d3_svg_lineStepAfter,\n\t basis: d3_svg_lineBasis,\n\t \"basis-open\": d3_svg_lineBasisOpen,\n\t \"basis-closed\": d3_svg_lineBasisClosed,\n\t bundle: d3_svg_lineBundle,\n\t cardinal: d3_svg_lineCardinal,\n\t \"cardinal-open\": d3_svg_lineCardinalOpen,\n\t \"cardinal-closed\": d3_svg_lineCardinalClosed,\n\t monotone: d3_svg_lineMonotone\n\t });\n\t d3_svg_lineInterpolators.forEach(function(key, value) {\n\t value.key = key;\n\t value.closed = /-closed$/.test(key);\n\t });\n\t function d3_svg_lineLinear(points) {\n\t return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n\t }\n\t function d3_svg_lineLinearClosed(points) {\n\t return points.join(\"L\") + \"Z\";\n\t }\n\t function d3_svg_lineStep(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n\t if (n > 1) path.push(\"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepBefore(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepAfter(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineCardinalOpen(points, tension) {\n\t return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineCardinalClosed(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n\t points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n\t }\n\t function d3_svg_lineCardinal(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineHermite(points, tangents) {\n\t if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n\t return d3_svg_lineLinear(points);\n\t }\n\t var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n\t if (quad) {\n\t path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n\t p0 = points[1];\n\t pi = 2;\n\t }\n\t if (tangents.length > 1) {\n\t t = tangents[1];\n\t p = points[pi];\n\t pi++;\n\t path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t for (var i = 2; i < tangents.length; i++, pi++) {\n\t p = points[pi];\n\t t = tangents[i];\n\t path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t }\n\t }\n\t if (quad) {\n\t var lp = points[pi];\n\t path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n\t }\n\t return path;\n\t }\n\t function d3_svg_lineCardinalTangents(points, tension) {\n\t var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n\t while (++i < n) {\n\t p0 = p1;\n\t p1 = p2;\n\t p2 = points[i];\n\t tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineBasis(points) {\n\t if (points.length < 3) return d3_svg_lineLinear(points);\n\t var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t points.push(points[n - 1]);\n\t while (++i <= n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t points.pop();\n\t path.push(\"L\", pi);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisOpen(points) {\n\t if (points.length < 4) return d3_svg_lineLinear(points);\n\t var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n\t while (++i < 3) {\n\t pi = points[i];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n\t --i;\n\t while (++i < n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisClosed(points) {\n\t var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n\t while (++i < 4) {\n\t pi = points[i % n];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t --i;\n\t while (++i < m) {\n\t pi = points[i % n];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBundle(points, tension) {\n\t var n = points.length - 1;\n\t if (n) {\n\t var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n\t while (++i <= n) {\n\t p = points[i];\n\t t = i / n;\n\t p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n\t p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n\t }\n\t }\n\t return d3_svg_lineBasis(points);\n\t }\n\t function d3_svg_lineDot4(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t }\n\t var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n\t function d3_svg_lineBasisBezier(path, x, y) {\n\t path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n\t }\n\t function d3_svg_lineSlope(p0, p1) {\n\t return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n\t }\n\t function d3_svg_lineFiniteDifferences(points) {\n\t var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n\t while (++i < j) {\n\t m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n\t }\n\t m[i] = d;\n\t return m;\n\t }\n\t function d3_svg_lineMonotoneTangents(points) {\n\t var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n\t while (++i < j) {\n\t d = d3_svg_lineSlope(points[i], points[i + 1]);\n\t if (abs(d) < ε) {\n\t m[i] = m[i + 1] = 0;\n\t } else {\n\t a = m[i] / d;\n\t b = m[i + 1] / d;\n\t s = a * a + b * b;\n\t if (s > 9) {\n\t s = d * 3 / Math.sqrt(s);\n\t m[i] = s * a;\n\t m[i + 1] = s * b;\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i <= j) {\n\t s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n\t tangents.push([ s || 0, m[i] * s || 0 ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineMonotone(points) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n\t }\n\t d3.svg.line.radial = function() {\n\t var line = d3_svg_line(d3_svg_lineRadial);\n\t line.radius = line.x, delete line.x;\n\t line.angle = line.y, delete line.y;\n\t return line;\n\t };\n\t function d3_svg_lineRadial(points) {\n\t var point, i = -1, n = points.length, r, a;\n\t while (++i < n) {\n\t point = points[i];\n\t r = point[0];\n\t a = point[1] - halfπ;\n\t point[0] = r * Math.cos(a);\n\t point[1] = r * Math.sin(a);\n\t }\n\t return points;\n\t }\n\t function d3_svg_area(projection) {\n\t var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n\t function area(data) {\n\t var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n\t return x;\n\t } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n\t return y;\n\t } : d3_functor(y1), x, y;\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n\t points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n\t } else if (points0.length) {\n\t segment();\n\t points0 = [];\n\t points1 = [];\n\t }\n\t }\n\t if (points0.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t area.x = function(_) {\n\t if (!arguments.length) return x1;\n\t x0 = x1 = _;\n\t return area;\n\t };\n\t area.x0 = function(_) {\n\t if (!arguments.length) return x0;\n\t x0 = _;\n\t return area;\n\t };\n\t area.x1 = function(_) {\n\t if (!arguments.length) return x1;\n\t x1 = _;\n\t return area;\n\t };\n\t area.y = function(_) {\n\t if (!arguments.length) return y1;\n\t y0 = y1 = _;\n\t return area;\n\t };\n\t area.y0 = function(_) {\n\t if (!arguments.length) return y0;\n\t y0 = _;\n\t return area;\n\t };\n\t area.y1 = function(_) {\n\t if (!arguments.length) return y1;\n\t y1 = _;\n\t return area;\n\t };\n\t area.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return area;\n\t };\n\t area.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t interpolateReverse = interpolate.reverse || interpolate;\n\t L = interpolate.closed ? \"M\" : \"L\";\n\t return area;\n\t };\n\t area.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return area;\n\t };\n\t return area;\n\t }\n\t d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n\t d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n\t d3.svg.area = function() {\n\t return d3_svg_area(d3_identity);\n\t };\n\t d3.svg.area.radial = function() {\n\t var area = d3_svg_area(d3_svg_lineRadial);\n\t area.radius = area.x, delete area.x;\n\t area.innerRadius = area.x0, delete area.x0;\n\t area.outerRadius = area.x1, delete area.x1;\n\t area.angle = area.y, delete area.y;\n\t area.startAngle = area.y0, delete area.y0;\n\t area.endAngle = area.y1, delete area.y1;\n\t return area;\n\t };\n\t d3.svg.chord = function() {\n\t var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n\t function chord(d, i) {\n\t var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n\t return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n\t }\n\t function subgroup(self, f, d, i) {\n\t var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n\t return {\n\t r: r,\n\t a0: a0,\n\t a1: a1,\n\t p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n\t p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n\t };\n\t }\n\t function equals(a, b) {\n\t return a.a0 == b.a0 && a.a1 == b.a1;\n\t }\n\t function arc(r, p, a) {\n\t return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n\t }\n\t function curve(r0, p0, r1, p1) {\n\t return \"Q 0,0 \" + p1;\n\t }\n\t chord.radius = function(v) {\n\t if (!arguments.length) return radius;\n\t radius = d3_functor(v);\n\t return chord;\n\t };\n\t chord.source = function(v) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(v);\n\t return chord;\n\t };\n\t chord.target = function(v) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(v);\n\t return chord;\n\t };\n\t chord.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return chord;\n\t };\n\t chord.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return chord;\n\t };\n\t return chord;\n\t };\n\t function d3_svg_chordRadius(d) {\n\t return d.radius;\n\t }\n\t d3.svg.diagonal = function() {\n\t var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n\t function diagonal(d, i) {\n\t var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n\t x: p0.x,\n\t y: m\n\t }, {\n\t x: p3.x,\n\t y: m\n\t }, p3 ];\n\t p = p.map(projection);\n\t return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n\t }\n\t diagonal.source = function(x) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.target = function(x) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.projection = function(x) {\n\t if (!arguments.length) return projection;\n\t projection = x;\n\t return diagonal;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalProjection(d) {\n\t return [ d.x, d.y ];\n\t }\n\t d3.svg.diagonal.radial = function() {\n\t var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n\t diagonal.projection = function(x) {\n\t return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalRadialProjection(projection) {\n\t return function() {\n\t var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n\t return [ r * Math.cos(a), r * Math.sin(a) ];\n\t };\n\t }\n\t d3.svg.symbol = function() {\n\t var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n\t function symbol(d, i) {\n\t return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n\t }\n\t symbol.type = function(x) {\n\t if (!arguments.length) return type;\n\t type = d3_functor(x);\n\t return symbol;\n\t };\n\t symbol.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = d3_functor(x);\n\t return symbol;\n\t };\n\t return symbol;\n\t };\n\t function d3_svg_symbolSize() {\n\t return 64;\n\t }\n\t function d3_svg_symbolType() {\n\t return \"circle\";\n\t }\n\t function d3_svg_symbolCircle(size) {\n\t var r = Math.sqrt(size / π);\n\t return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n\t }\n\t var d3_svg_symbols = d3.map({\n\t circle: d3_svg_symbolCircle,\n\t cross: function(size) {\n\t var r = Math.sqrt(size / 5) / 2;\n\t return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n\t },\n\t diamond: function(size) {\n\t var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n\t return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n\t },\n\t square: function(size) {\n\t var r = Math.sqrt(size) / 2;\n\t return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n\t },\n\t \"triangle-down\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n\t },\n\t \"triangle-up\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n\t }\n\t });\n\t d3.svg.symbolTypes = d3_svg_symbols.keys();\n\t var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n\t d3_selectionPrototype.transition = function(name) {\n\t var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n\t time: Date.now(),\n\t ease: d3_ease_cubicInOut,\n\t delay: 0,\n\t duration: 250\n\t };\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_selectionPrototype.interrupt = function(name) {\n\t return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n\t };\n\t var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n\t function d3_selection_interruptNS(ns) {\n\t return function() {\n\t var lock, activeId, active;\n\t if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t if (--lock.count) delete lock[activeId]; else delete this[ns];\n\t lock.active += .5;\n\t active.event && active.event.interrupt.call(this, this.__data__, active.index);\n\t }\n\t };\n\t }\n\t function d3_transition(groups, ns, id) {\n\t d3_subclass(groups, d3_transitionPrototype);\n\t groups.namespace = ns;\n\t groups.id = id;\n\t return groups;\n\t }\n\t var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n\t d3_transitionPrototype.call = d3_selectionPrototype.call;\n\t d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n\t d3_transitionPrototype.node = d3_selectionPrototype.node;\n\t d3_transitionPrototype.size = d3_selectionPrototype.size;\n\t d3.transition = function(selection, name) {\n\t return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n\t };\n\t d3.transition.prototype = d3_transitionPrototype;\n\t d3_transitionPrototype.select = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n\t subgroup.push(subnode);\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.selectAll = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t transition = node[ns][id];\n\t subnodes = selector.call(node, node.__data__, i, j);\n\t subgroups.push(subgroup = []);\n\t for (var k = -1, o = subnodes.length; ++k < o; ) {\n\t if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n\t subgroup.push(subnode);\n\t }\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, this.namespace, this.id);\n\t };\n\t d3_transitionPrototype.tween = function(name, tween) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n\t return d3_selection_each(this, tween == null ? function(node) {\n\t node[ns][id].tween.remove(name);\n\t } : function(node) {\n\t node[ns][id].tween.set(name, tween);\n\t });\n\t };\n\t function d3_transition_tween(groups, name, value, tween) {\n\t var id = groups.id, ns = groups.namespace;\n\t return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n\t } : (value = tween(value), function(node) {\n\t node[ns][id].tween.set(name, value);\n\t }));\n\t }\n\t d3_transitionPrototype.attr = function(nameNS, value) {\n\t if (arguments.length < 2) {\n\t for (value in nameNS) this.attr(value, nameNS[value]);\n\t return this;\n\t }\n\t var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrTween(b) {\n\t return b == null ? attrNull : (b += \"\", function() {\n\t var a = this.getAttribute(name), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttribute(name, i(t));\n\t });\n\t });\n\t }\n\t function attrTweenNS(b) {\n\t return b == null ? attrNullNS : (b += \"\", function() {\n\t var a = this.getAttributeNS(name.space, name.local), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttributeNS(name.space, name.local, i(t));\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.attrTween = function(nameNS, tween) {\n\t var name = d3.ns.qualify(nameNS);\n\t function attrTween(d, i) {\n\t var f = tween.call(this, d, i, this.getAttribute(name));\n\t return f && function(t) {\n\t this.setAttribute(name, f(t));\n\t };\n\t }\n\t function attrTweenNS(d, i) {\n\t var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n\t return f && function(t) {\n\t this.setAttributeNS(name.space, name.local, f(t));\n\t };\n\t }\n\t return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.style(priority, name[priority], value);\n\t return this;\n\t }\n\t priority = \"\";\n\t }\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleString(b) {\n\t return b == null ? styleNull : (b += \"\", function() {\n\t var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n\t return a !== b && (i = d3_interpolate(a, b), function(t) {\n\t this.style.setProperty(name, i(t), priority);\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"style.\" + name, value, styleString);\n\t };\n\t d3_transitionPrototype.styleTween = function(name, tween, priority) {\n\t if (arguments.length < 3) priority = \"\";\n\t function styleTween(d, i) {\n\t var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n\t return f && function(t) {\n\t this.style.setProperty(name, f(t), priority);\n\t };\n\t }\n\t return this.tween(\"style.\" + name, styleTween);\n\t };\n\t d3_transitionPrototype.text = function(value) {\n\t return d3_transition_tween(this, \"text\", value, d3_transition_text);\n\t };\n\t function d3_transition_text(b) {\n\t if (b == null) b = \"\";\n\t return function() {\n\t this.textContent = b;\n\t };\n\t }\n\t d3_transitionPrototype.remove = function() {\n\t var ns = this.namespace;\n\t return this.each(\"end.transition\", function() {\n\t var p;\n\t if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n\t });\n\t };\n\t d3_transitionPrototype.ease = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].ease;\n\t if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n\t return d3_selection_each(this, function(node) {\n\t node[ns][id].ease = value;\n\t });\n\t };\n\t d3_transitionPrototype.delay = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].delay;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].delay = +value.call(node, node.__data__, i, j);\n\t } : (value = +value, function(node) {\n\t node[ns][id].delay = value;\n\t }));\n\t };\n\t d3_transitionPrototype.duration = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].duration;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n\t } : (value = Math.max(1, value), function(node) {\n\t node[ns][id].duration = value;\n\t }));\n\t };\n\t d3_transitionPrototype.each = function(type, listener) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) {\n\t var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n\t try {\n\t d3_transitionInheritId = id;\n\t d3_selection_each(this, function(node, i, j) {\n\t d3_transitionInherit = node[ns][id];\n\t type.call(node, node.__data__, i, j);\n\t });\n\t } finally {\n\t d3_transitionInherit = inherit;\n\t d3_transitionInheritId = inheritId;\n\t }\n\t } else {\n\t d3_selection_each(this, function(node) {\n\t var transition = node[ns][id];\n\t (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n\t });\n\t }\n\t return this;\n\t };\n\t d3_transitionPrototype.transition = function() {\n\t var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if (node = group[i]) {\n\t transition = node[ns][id0];\n\t d3_transitionNode(node, i, ns, id1, {\n\t time: transition.time,\n\t ease: transition.ease,\n\t delay: transition.delay + transition.duration,\n\t duration: transition.duration\n\t });\n\t }\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id1);\n\t };\n\t function d3_transitionNamespace(name) {\n\t return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n\t }\n\t function d3_transitionNode(node, i, ns, id, inherit) {\n\t var lock = node[ns] || (node[ns] = {\n\t active: 0,\n\t count: 0\n\t }), transition = lock[id], time, timer, duration, ease, tweens;\n\t function schedule(elapsed) {\n\t var delay = transition.delay;\n\t timer.t = delay + time;\n\t if (delay <= elapsed) return start(elapsed - delay);\n\t timer.c = start;\n\t }\n\t function start(elapsed) {\n\t var activeId = lock.active, active = lock[activeId];\n\t if (active) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t --lock.count;\n\t delete lock[activeId];\n\t active.event && active.event.interrupt.call(node, node.__data__, active.index);\n\t }\n\t for (var cancelId in lock) {\n\t if (+cancelId < id) {\n\t var cancel = lock[cancelId];\n\t cancel.timer.c = null;\n\t cancel.timer.t = NaN;\n\t --lock.count;\n\t delete lock[cancelId];\n\t }\n\t }\n\t timer.c = tick;\n\t d3_timer(function() {\n\t if (timer.c && tick(elapsed || 1)) {\n\t timer.c = null;\n\t timer.t = NaN;\n\t }\n\t return 1;\n\t }, 0, time);\n\t lock.active = id;\n\t transition.event && transition.event.start.call(node, node.__data__, i);\n\t tweens = [];\n\t transition.tween.forEach(function(key, value) {\n\t if (value = value.call(node, node.__data__, i)) {\n\t tweens.push(value);\n\t }\n\t });\n\t ease = transition.ease;\n\t duration = transition.duration;\n\t }\n\t function tick(elapsed) {\n\t var t = elapsed / duration, e = ease(t), n = tweens.length;\n\t while (n > 0) {\n\t tweens[--n].call(node, e);\n\t }\n\t if (t >= 1) {\n\t transition.event && transition.event.end.call(node, node.__data__, i);\n\t if (--lock.count) delete lock[id]; else delete node[ns];\n\t return 1;\n\t }\n\t }\n\t if (!transition) {\n\t time = inherit.time;\n\t timer = d3_timer(schedule, 0, time);\n\t transition = lock[id] = {\n\t tween: new d3_Map(),\n\t time: time,\n\t timer: timer,\n\t delay: inherit.delay,\n\t duration: inherit.duration,\n\t ease: inherit.ease,\n\t index: i\n\t };\n\t inherit = null;\n\t ++lock.count;\n\t }\n\t }\n\t d3.svg.axis = function() {\n\t var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n\t function axis(g) {\n\t g.each(function() {\n\t var g = d3.select(this);\n\t var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n\t var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n\t var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n\t d3.transition(path));\n\t tickEnter.append(\"line\");\n\t tickEnter.append(\"text\");\n\t var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n\t if (orient === \"bottom\" || orient === \"top\") {\n\t tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n\t text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n\t pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n\t } else {\n\t tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n\t text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n\t pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n\t }\n\t lineEnter.attr(y2, sign * innerTickSize);\n\t textEnter.attr(y1, sign * tickSpacing);\n\t lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n\t textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n\t if (scale1.rangeBand) {\n\t var x = scale1, dx = x.rangeBand() / 2;\n\t scale0 = scale1 = function(d) {\n\t return x(d) + dx;\n\t };\n\t } else if (scale0.rangeBand) {\n\t scale0 = scale1;\n\t } else {\n\t tickExit.call(tickTransform, scale1, scale0);\n\t }\n\t tickEnter.call(tickTransform, scale0, scale1);\n\t tickUpdate.call(tickTransform, scale1, scale1);\n\t });\n\t }\n\t axis.scale = function(x) {\n\t if (!arguments.length) return scale;\n\t scale = x;\n\t return axis;\n\t };\n\t axis.orient = function(x) {\n\t if (!arguments.length) return orient;\n\t orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n\t return axis;\n\t };\n\t axis.ticks = function() {\n\t if (!arguments.length) return tickArguments_;\n\t tickArguments_ = d3_array(arguments);\n\t return axis;\n\t };\n\t axis.tickValues = function(x) {\n\t if (!arguments.length) return tickValues;\n\t tickValues = x;\n\t return axis;\n\t };\n\t axis.tickFormat = function(x) {\n\t if (!arguments.length) return tickFormat_;\n\t tickFormat_ = x;\n\t return axis;\n\t };\n\t axis.tickSize = function(x) {\n\t var n = arguments.length;\n\t if (!n) return innerTickSize;\n\t innerTickSize = +x;\n\t outerTickSize = +arguments[n - 1];\n\t return axis;\n\t };\n\t axis.innerTickSize = function(x) {\n\t if (!arguments.length) return innerTickSize;\n\t innerTickSize = +x;\n\t return axis;\n\t };\n\t axis.outerTickSize = function(x) {\n\t if (!arguments.length) return outerTickSize;\n\t outerTickSize = +x;\n\t return axis;\n\t };\n\t axis.tickPadding = function(x) {\n\t if (!arguments.length) return tickPadding;\n\t tickPadding = +x;\n\t return axis;\n\t };\n\t axis.tickSubdivide = function() {\n\t return arguments.length && axis;\n\t };\n\t return axis;\n\t };\n\t var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n\t top: 1,\n\t right: 1,\n\t bottom: 1,\n\t left: 1\n\t };\n\t function d3_svg_axisX(selection, x0, x1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = x0(d);\n\t return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n\t });\n\t }\n\t function d3_svg_axisY(selection, y0, y1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = y0(d);\n\t return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n\t });\n\t }\n\t d3.svg.brush = function() {\n\t var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n\t function brush(g) {\n\t g.each(function() {\n\t var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n\t var background = g.selectAll(\".background\").data([ 0 ]);\n\t background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n\t g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n\t var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n\t resize.exit().remove();\n\t resize.enter().append(\"g\").attr(\"class\", function(d) {\n\t return \"resize \" + d;\n\t }).style(\"cursor\", function(d) {\n\t return d3_svg_brushCursor[d];\n\t }).append(\"rect\").attr(\"x\", function(d) {\n\t return /[ew]$/.test(d) ? -3 : null;\n\t }).attr(\"y\", function(d) {\n\t return /^[ns]/.test(d) ? -3 : null;\n\t }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n\t resize.style(\"display\", brush.empty() ? \"none\" : null);\n\t var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n\t if (x) {\n\t range = d3_scaleRange(x);\n\t backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n\t redrawX(gUpdate);\n\t }\n\t if (y) {\n\t range = d3_scaleRange(y);\n\t backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n\t redrawY(gUpdate);\n\t }\n\t redraw(gUpdate);\n\t });\n\t }\n\t brush.event = function(g) {\n\t g.each(function() {\n\t var event_ = event.of(this, arguments), extent1 = {\n\t x: xExtent,\n\t y: yExtent,\n\t i: xExtentDomain,\n\t j: yExtentDomain\n\t }, extent0 = this.__chart__ || extent1;\n\t this.__chart__ = extent1;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.brush\", function() {\n\t xExtentDomain = extent0.i;\n\t yExtentDomain = extent0.j;\n\t xExtent = extent0.x;\n\t yExtent = extent0.y;\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t }).tween(\"brush:brush\", function() {\n\t var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n\t xExtentDomain = yExtentDomain = null;\n\t return function(t) {\n\t xExtent = extent1.x = xi(t);\n\t yExtent = extent1.y = yi(t);\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t };\n\t }).each(\"end.brush\", function() {\n\t xExtentDomain = extent1.i;\n\t yExtentDomain = extent1.j;\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t });\n\t } else {\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t });\n\t };\n\t function redraw(g) {\n\t g.selectAll(\".resize\").attr(\"transform\", function(d) {\n\t return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n\t });\n\t }\n\t function redrawX(g) {\n\t g.select(\".extent\").attr(\"x\", xExtent[0]);\n\t g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n\t }\n\t function redrawY(g) {\n\t g.select(\".extent\").attr(\"y\", yExtent[0]);\n\t g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n\t }\n\t function brushstart() {\n\t var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n\t var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n\t if (d3.event.changedTouches) {\n\t w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n\t } else {\n\t w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n\t }\n\t g.interrupt().selectAll(\"*\").interrupt();\n\t if (dragging) {\n\t origin[0] = xExtent[0] - origin[0];\n\t origin[1] = yExtent[0] - origin[1];\n\t } else if (resizing) {\n\t var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n\t offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n\t origin[0] = xExtent[ex];\n\t origin[1] = yExtent[ey];\n\t } else if (d3.event.altKey) center = origin.slice();\n\t g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n\t d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t brushmove();\n\t function keydown() {\n\t if (d3.event.keyCode == 32) {\n\t if (!dragging) {\n\t center = null;\n\t origin[0] -= xExtent[1];\n\t origin[1] -= yExtent[1];\n\t dragging = 2;\n\t }\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function keyup() {\n\t if (d3.event.keyCode == 32 && dragging == 2) {\n\t origin[0] += xExtent[1];\n\t origin[1] += yExtent[1];\n\t dragging = 0;\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function brushmove() {\n\t var point = d3.mouse(target), moved = false;\n\t if (offset) {\n\t point[0] += offset[0];\n\t point[1] += offset[1];\n\t }\n\t if (!dragging) {\n\t if (d3.event.altKey) {\n\t if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n\t origin[0] = xExtent[+(point[0] < center[0])];\n\t origin[1] = yExtent[+(point[1] < center[1])];\n\t } else center = null;\n\t }\n\t if (resizingX && move1(point, x, 0)) {\n\t redrawX(g);\n\t moved = true;\n\t }\n\t if (resizingY && move1(point, y, 1)) {\n\t redrawY(g);\n\t moved = true;\n\t }\n\t if (moved) {\n\t redraw(g);\n\t event_({\n\t type: \"brush\",\n\t mode: dragging ? \"move\" : \"resize\"\n\t });\n\t }\n\t }\n\t function move1(point, scale, i) {\n\t var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n\t if (dragging) {\n\t r0 -= position;\n\t r1 -= size + position;\n\t }\n\t min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n\t if (dragging) {\n\t max = (min += position) + size;\n\t } else {\n\t if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n\t if (position < min) {\n\t max = min;\n\t min = position;\n\t } else {\n\t max = position;\n\t }\n\t }\n\t if (extent[0] != min || extent[1] != max) {\n\t if (i) yExtentDomain = null; else xExtentDomain = null;\n\t extent[0] = min;\n\t extent[1] = max;\n\t return true;\n\t }\n\t }\n\t function brushend() {\n\t brushmove();\n\t g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n\t d3.select(\"body\").style(\"cursor\", null);\n\t w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n\t dragRestore();\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t }\n\t brush.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.clamp = function(z) {\n\t if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n\t if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n\t return brush;\n\t };\n\t brush.extent = function(z) {\n\t var x0, x1, y0, y1, t;\n\t if (!arguments.length) {\n\t if (x) {\n\t if (xExtentDomain) {\n\t x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n\t } else {\n\t x0 = xExtent[0], x1 = xExtent[1];\n\t if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t }\n\t }\n\t if (y) {\n\t if (yExtentDomain) {\n\t y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n\t } else {\n\t y0 = yExtent[0], y1 = yExtent[1];\n\t if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t }\n\t }\n\t return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n\t }\n\t if (x) {\n\t x0 = z[0], x1 = z[1];\n\t if (y) x0 = x0[0], x1 = x1[0];\n\t xExtentDomain = [ x0, x1 ];\n\t if (x.invert) x0 = x(x0), x1 = x(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n\t }\n\t if (y) {\n\t y0 = z[0], y1 = z[1];\n\t if (x) y0 = y0[1], y1 = y1[1];\n\t yExtentDomain = [ y0, y1 ];\n\t if (y.invert) y0 = y(y0), y1 = y(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n\t }\n\t return brush;\n\t };\n\t brush.clear = function() {\n\t if (!brush.empty()) {\n\t xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n\t xExtentDomain = yExtentDomain = null;\n\t }\n\t return brush;\n\t };\n\t brush.empty = function() {\n\t return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n\t };\n\t return d3.rebind(brush, event, \"on\");\n\t };\n\t var d3_svg_brushCursor = {\n\t n: \"ns-resize\",\n\t e: \"ew-resize\",\n\t s: \"ns-resize\",\n\t w: \"ew-resize\",\n\t nw: \"nwse-resize\",\n\t ne: \"nesw-resize\",\n\t se: \"nwse-resize\",\n\t sw: \"nesw-resize\"\n\t };\n\t var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n\t var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n\t var d3_time_formatUtc = d3_time_format.utc;\n\t var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n\t d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n\t function d3_time_formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t d3_time_formatIsoNative.parse = function(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t };\n\t d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n\t d3_time.second = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 1e3) * 1e3);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t d3_time.seconds = d3_time.second.range;\n\t d3_time.seconds.utc = d3_time.second.utc.range;\n\t d3_time.minute = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 6e4) * 6e4);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t d3_time.minutes = d3_time.minute.range;\n\t d3_time.minutes.utc = d3_time.minute.utc.range;\n\t d3_time.hour = d3_time_interval(function(date) {\n\t var timezone = date.getTimezoneOffset() / 60;\n\t return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t d3_time.hours = d3_time.hour.range;\n\t d3_time.hours.utc = d3_time.hour.utc.range;\n\t d3_time.month = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setDate(1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setMonth(date.getMonth() + offset);\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t d3_time.months = d3_time.month.range;\n\t d3_time.months.utc = d3_time.month.utc.range;\n\t function d3_time_scale(linear, methods, format) {\n\t function scale(x) {\n\t return linear(x);\n\t }\n\t scale.invert = function(x) {\n\t return d3_time_scaleDate(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n\t linear.domain(x);\n\t return scale;\n\t };\n\t function tickMethod(extent, count) {\n\t var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n\t return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n\t return d / 31536e6;\n\t }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n\t }\n\t scale.nice = function(interval, skip) {\n\t var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n\t if (method) interval = method[0], skip = method[1];\n\t function skipped(date) {\n\t return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n\t }\n\t return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n\t floor: function(date) {\n\t while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n\t return date;\n\t },\n\t ceil: function(date) {\n\t while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n\t return date;\n\t }\n\t } : interval));\n\t };\n\t scale.ticks = function(interval, skip) {\n\t var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n\t range: interval\n\t }, skip ];\n\t if (method) interval = method[0], skip = method[1];\n\t return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n\t };\n\t scale.tickFormat = function() {\n\t return format;\n\t };\n\t scale.copy = function() {\n\t return d3_time_scale(linear.copy(), methods, format);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_time_scaleDate(t) {\n\t return new Date(t);\n\t }\n\t var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n\t var d3_time_scaleLocalMethods = [ [ 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 ] ];\n\t var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n\t return d.getMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getDay() && d.getDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t var d3_time_scaleMilliseconds = {\n\t range: function(start, stop, step) {\n\t return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n\t },\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t d3_time_scaleLocalMethods.year = d3_time.year;\n\t d3_time.scale = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n\t };\n\t var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n\t return [ m[0].utc, m[1] ];\n\t });\n\t var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n\t return d.getUTCMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getUTCSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getUTCMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getUTCHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getUTCDay() && d.getUTCDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getUTCDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getUTCMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t d3_time_scaleUtcMethods.year = d3_time.year.utc;\n\t d3_time.scale.utc = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n\t };\n\t d3.text = d3_xhrType(function(request) {\n\t return request.responseText;\n\t });\n\t d3.json = function(url, callback) {\n\t return d3_xhr(url, \"application/json\", d3_json, callback);\n\t };\n\t function d3_json(request) {\n\t return JSON.parse(request.responseText);\n\t }\n\t d3.html = function(url, callback) {\n\t return d3_xhr(url, \"text/html\", d3_html, callback);\n\t };\n\t function d3_html(request) {\n\t var range = d3_document.createRange();\n\t range.selectNode(d3_document.body);\n\t return range.createContextualFragment(request.responseText);\n\t }\n\t d3.xml = d3_xhrType(function(request) {\n\t return request.responseXML;\n\t });\n\t if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n\t}();\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t u = {};\n\t\n\tdl.extend(u, __webpack_require__(59));\n\tmodule.exports = dl.extend(u, dl);\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12);\n\t\n\tvar TIME = 'time',\n\t UTC = 'utc',\n\t STRING = 'string',\n\t ORDINAL = 'ordinal',\n\t NUMBER = 'number';\n\t\n\tfunction getTickFormat(scale, tickCount, tickFormatType, tickFormatString) {\n\t var formatType = tickFormatType || inferFormatType(scale);\n\t return getFormatter(scale, tickCount, formatType, tickFormatString);\n\t}\n\t\n\tfunction inferFormatType(scale) {\n\t switch (scale.type) {\n\t case TIME: return TIME;\n\t case UTC: return UTC;\n\t case ORDINAL: return STRING;\n\t default: return NUMBER;\n\t }\n\t}\n\t\n\t// Adapted from d3 log scale\n\t// TODO customize? replace with range-size-aware filtering?\n\tfunction logFilter(scale, domain, count, f) {\n\t if (count == null) return f;\n\t var base = scale.base(),\n\t k = Math.min(base, scale.ticks().length / count),\n\t v = domain[0] > 0 ? (e = 1e-12, Math.ceil) : (e = -1e-12, Math.floor),\n\t e;\n\t function log(x) {\n\t return (domain[0] < 0 ?\n\t -Math.log(x > 0 ? 0 : -x) :\n\t Math.log(x < 0 ? 0 : x)) / Math.log(base);\n\t }\n\t function pow(x) {\n\t return domain[0] < 0 ? -Math.pow(base, -x) : Math.pow(base, x);\n\t }\n\t return function(d) {\n\t return pow(v(log(d) + e)) / d >= k ? f(d) : '';\n\t };\n\t}\n\t\n\tfunction getFormatter(scale, tickCount, formatType, str) {\n\t var fmt = dl.format,\n\t log = scale.type === 'log',\n\t domain;\n\t\n\t switch (formatType) {\n\t case NUMBER:\n\t domain = scale.domain();\n\t return log ?\n\t logFilter(scale, domain, tickCount, fmt.auto.number(str || null)) :\n\t fmt.auto.linear(domain, tickCount, str || null);\n\t case TIME: return (str ? fmt : fmt.auto).time(str);\n\t case UTC: return (str ? fmt : fmt.auto).utc(str);\n\t default: return String;\n\t }\n\t}\n\t\n\tmodule.exports = {\n\t getTickFormat: getTickFormat\n\t};\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t path: __webpack_require__(61),\n\t render: __webpack_require__(65),\n\t Item: __webpack_require__(97),\n\t bound: __webpack_require__(84),\n\t Bounds: __webpack_require__(83),\n\t canvas: __webpack_require__(86),\n\t Gradient: __webpack_require__(98),\n\t toJSON: __webpack_require__(99).toJSON,\n\t fromJSON: __webpack_require__(99).fromJSON\n\t};\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t parse: __webpack_require__(62),\n\t render: __webpack_require__(63)\n\t};\n\n\n/***/ },\n/* 62 */\n/***/ function(module, exports) {\n\n\t// Path parsing and rendering code adapted from fabric.js -- Thanks!\n\tvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n\t regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\t\n\tmodule.exports = function(pathstr) {\n\t var result = [],\n\t path,\n\t curr,\n\t chunks,\n\t parsed, param,\n\t cmd, len, i, j, n, m;\n\t\n\t // First, break path into command sequence\n\t path = pathstr\n\t .slice()\n\t .replace(regexp[0], '###$1')\n\t .split(regexp[1])\n\t .slice(1);\n\t\n\t // Next, parse each command in turn\n\t for (i=0, n=path.length; i len) {\n\t for (j=1, m=parsed.length; j 1) {\n\t pl = Math.sqrt(pl);\n\t rx *= pl;\n\t ry *= pl;\n\t }\n\t\n\t var a00 = cos_th / rx;\n\t var a01 = sin_th / rx;\n\t var a10 = (-sin_th) / ry;\n\t var a11 = (cos_th) / ry;\n\t var x0 = a00 * ox + a01 * oy;\n\t var y0 = a10 * ox + a11 * oy;\n\t var x1 = a00 * x + a01 * y;\n\t var y1 = a10 * x + a11 * y;\n\t\n\t var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n\t var sfactor_sq = 1 / d - 0.25;\n\t if (sfactor_sq < 0) sfactor_sq = 0;\n\t var sfactor = Math.sqrt(sfactor_sq);\n\t if (sweep == large) sfactor = -sfactor;\n\t var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n\t var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\t\n\t var th0 = Math.atan2(y0-yc, x0-xc);\n\t var th1 = Math.atan2(y1-yc, x1-xc);\n\t\n\t var th_arc = th1-th0;\n\t if (th_arc < 0 && sweep === 1){\n\t th_arc += 2 * Math.PI;\n\t } else if (th_arc > 0 && sweep === 0) {\n\t th_arc -= 2 * Math.PI;\n\t }\n\t\n\t var segs = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n\t var result = [];\n\t for (var i=0; i=0;) {\n\t if (h[i].type !== type) continue;\n\t if (!handler || h[i].handler === handler) h.splice(i, 1);\n\t }\n\t return this;\n\t};\n\t\n\tprototype.pickEvent = function(evt) {\n\t var rect = this._canvas.getBoundingClientRect(),\n\t pad = this._padding, x, y;\n\t return this.pick(this._scene,\n\t x = (evt.clientX - rect.left),\n\t y = (evt.clientY - rect.top),\n\t x - pad.left, y - pad.top);\n\t};\n\t\n\t// find the scenegraph item at the current mouse position\n\t// x, y -- the absolute x, y mouse coordinates on the canvas element\n\t// gx, gy -- the relative coordinates within the current group\n\tprototype.pick = function(scene, x, y, gx, gy) {\n\t var g = this.context(),\n\t mark = marks[scene.marktype];\n\t return mark.pick.call(this, g, scene, x, y, gx, gy);\n\t};\n\t\n\tmodule.exports = CanvasHandler;\n\n\n/***/ },\n/* 68 */\n/***/ function(module, exports) {\n\n\t// create a new DOM element\n\tfunction create(doc, tag, ns) {\n\t return ns ? doc.createElementNS(ns, tag) : doc.createElement(tag);\n\t}\n\t\n\t// remove element from DOM\n\t// recursively remove parent elements if empty\n\tfunction remove(el) {\n\t if (!el) return;\n\t var p = el.parentNode;\n\t if (p) {\n\t p.removeChild(el);\n\t if (!p.childNodes || !p.childNodes.length) remove(p);\n\t }\n\t}\n\t\n\tmodule.exports = {\n\t // find first child element with matching tag\n\t find: function(el, tag) {\n\t tag = tag.toLowerCase();\n\t for (var i=0, n=el.childNodes.length; i index) {\n\t el.removeChild(el.childNodes[--curr]);\n\t }\n\t return el;\n\t },\n\t remove: remove,\n\t // generate css class name for mark\n\t cssClass: function(mark) {\n\t return 'mark-' + mark.marktype + (mark.name ? ' '+mark.name : '');\n\t },\n\t // generate string for an opening xml tag\n\t // tag: the name of the xml tag\n\t // attr: hash of attribute name-value pairs to include\n\t // raw: additional raw string to include in tag markup\n\t openTag: function(tag, attr, raw) {\n\t var s = '<' + tag, key, val;\n\t if (attr) {\n\t for (key in attr) {\n\t val = attr[key];\n\t if (val != null) {\n\t s += ' ' + key + '=\"' + val + '\"';\n\t }\n\t }\n\t }\n\t if (raw) s += ' ' + raw;\n\t return s + '>';\n\t },\n\t // generate string for closing xml tag\n\t // tag: the name of the xml tag\n\t closeTag: function(tag) {\n\t return '';\n\t }\n\t};\n\n\n/***/ },\n/* 69 */\n/***/ function(module, exports) {\n\n\tfunction Handler() {\n\t this._active = null;\n\t this._handlers = {};\n\t}\n\t\n\tvar prototype = Handler.prototype;\n\t\n\tprototype.initialize = function(el, pad, obj) {\n\t this._el = el;\n\t this._obj = obj || null;\n\t return this.padding(pad);\n\t};\n\t\n\tprototype.element = function() {\n\t return this._el;\n\t};\n\t\n\tprototype.padding = function(pad) {\n\t this._padding = pad || {top:0, left:0, bottom:0, right:0};\n\t return this;\n\t};\n\t\n\tprototype.scene = function(scene) {\n\t if (!arguments.length) return this._scene;\n\t this._scene = scene;\n\t return this;\n\t};\n\t\n\t// add an event handler\n\t// subclasses should override\n\tprototype.on = function(/*type, handler*/) {};\n\t\n\t// remove an event handler\n\t// subclasses should override\n\tprototype.off = function(/*type, handler*/) {};\n\t\n\t// return an array with all registered event handlers\n\tprototype.handlers = function() {\n\t var h = this._handlers, a = [], k;\n\t for (k in h) { a.push.apply(a, h[k]); }\n\t return a;\n\t};\n\t\n\tprototype.eventName = function(name) {\n\t var i = name.indexOf('.');\n\t return i < 0 ? name : name.slice(0,i);\n\t};\n\t\n\tmodule.exports = Handler;\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t arc: __webpack_require__(71),\n\t area: __webpack_require__(73),\n\t group: __webpack_require__(75),\n\t image: __webpack_require__(76),\n\t line: __webpack_require__(77),\n\t path: __webpack_require__(78),\n\t rect: __webpack_require__(79),\n\t rule: __webpack_require__(80),\n\t symbol: __webpack_require__(81),\n\t text: __webpack_require__(82)\n\t};\n\n\n/***/ },\n/* 71 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(72);\n\tvar halfpi = Math.PI / 2;\n\t\n\tfunction path(g, o) {\n\t var x = o.x || 0,\n\t y = o.y || 0,\n\t ir = o.innerRadius || 0,\n\t or = o.outerRadius || 0,\n\t sa = (o.startAngle || 0) - halfpi,\n\t ea = (o.endAngle || 0) - halfpi;\n\t g.beginPath();\n\t if (ir === 0) g.moveTo(x, y);\n\t else g.arc(x, y, ir, sa, ea, 0);\n\t g.arc(x, y, or, ea, sa, 1);\n\t g.closePath();\n\t}\n\t\n\tmodule.exports = {\n\t draw: util.drawAll(path),\n\t pick: util.pickPath(path)\n\t};\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\tfunction drawPathOne(path, g, o, items) {\n\t if (path(g, items)) return;\n\t\n\t var opac = o.opacity == null ? 1 : o.opacity;\n\t if (opac===0) return;\n\t\n\t if (o.fill && fill(g, o, opac)) { g.fill(); }\n\t if (o.stroke && stroke(g, o, opac)) { g.stroke(); }\n\t}\n\t\n\tfunction drawPathAll(path, g, scene, bounds) {\n\t var i, len, item;\n\t for (i=0, len=scene.items.length; i= 0;) {\n\t o = scene.items[i]; b = o.bounds;\n\t // first hit test against bounding box\n\t if ((b && !b.contains(gx, gy)) || !b) continue;\n\t // if in bounding box, perform more careful test\n\t if (test(g, o, x, y, gx, gy)) return o;\n\t }\n\t return null;\n\t };\n\t}\n\t\n\tfunction testPath(path, filled) {\n\t return function(g, o, x, y) {\n\t var item = Array.isArray(o) ? o[0] : o,\n\t fill = (filled == null) ? item.fill : filled,\n\t stroke = item.stroke && g.isPointInStroke, lw, lc;\n\t\n\t if (stroke) {\n\t lw = item.strokeWidth;\n\t lc = item.strokeCap;\n\t g.lineWidth = lw != null ? lw : 1;\n\t g.lineCap = lc != null ? lc : 'butt';\n\t }\n\t\n\t return path(g, o) ? false :\n\t (fill && g.isPointInPath(x, y)) ||\n\t (stroke && g.isPointInStroke(x, y));\n\t };\n\t}\n\t\n\tfunction pickPath(path) {\n\t return pick(testPath(path));\n\t}\n\t\n\tfunction fill(g, o, opacity) {\n\t opacity *= (o.fillOpacity==null ? 1 : o.fillOpacity);\n\t if (opacity > 0) {\n\t g.globalAlpha = opacity;\n\t g.fillStyle = color(g, o, o.fill);\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t}\n\t\n\tfunction stroke(g, o, opacity) {\n\t var lw = (lw = o.strokeWidth) != null ? lw : 1, lc;\n\t if (lw <= 0) return false;\n\t\n\t opacity *= (o.strokeOpacity==null ? 1 : o.strokeOpacity);\n\t if (opacity > 0) {\n\t g.globalAlpha = opacity;\n\t g.strokeStyle = color(g, o, o.stroke);\n\t g.lineWidth = lw;\n\t g.lineCap = (lc = o.strokeCap) != null ? lc : 'butt';\n\t g.vgLineDash(o.strokeDash || null);\n\t g.vgLineDashOffset(o.strokeDashOffset || 0);\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t}\n\t\n\tfunction color(g, o, value) {\n\t return (value.id) ?\n\t gradient(g, value, o.bounds) :\n\t value;\n\t}\n\t\n\tfunction gradient(g, p, b) {\n\t var w = b.width(),\n\t h = b.height(),\n\t x1 = b.x1 + p.x1 * w,\n\t y1 = b.y1 + p.y1 * h,\n\t x2 = b.x1 + p.x2 * w,\n\t y2 = b.y1 + p.y2 * h,\n\t grad = g.createLinearGradient(x1, y1, x2, y2),\n\t stop = p.stops,\n\t i, n;\n\t\n\t for (i=0, n=stop.length; i 0) {\n\t if (group.fill && util.fill(g, group, opac)) {\n\t g.fillRect(gx, gy, w, h);\n\t }\n\t if (group.stroke && util.stroke(g, group, opac)) {\n\t g.strokeRect(gx, gy, w, h);\n\t }\n\t }\n\t }\n\t\n\t // setup graphics context\n\t g.save();\n\t g.translate(gx, gy);\n\t if (group.clip) {\n\t g.beginPath();\n\t g.rect(0, 0, w, h);\n\t g.clip();\n\t }\n\t if (bounds) bounds.translate(-gx, -gy);\n\t\n\t // draw group contents\n\t for (j=0, m=axes.length; j=0;) {\n\t group = groups[i];\n\t\n\t // first hit test against bounding box\n\t // if a group is clipped, that should be handled by the bounds check.\n\t b = group.bounds;\n\t if (b && !b.contains(gx, gy)) continue;\n\t\n\t // passed bounds check, so test sub-groups\n\t axes = group.axisItems || EMPTY;\n\t items = group.items || EMPTY;\n\t legends = group.legendItems || EMPTY;\n\t dx = (group.x || 0);\n\t dy = (group.y || 0);\n\t\n\t g.save();\n\t g.translate(dx, dy);\n\t dx = gx - dx;\n\t dy = gy - dy;\n\t for (j=legends.length; --j>=0;) {\n\t subscene = legends[j];\n\t if (subscene.interactive !== false) {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t for (j=axes.length; --j>=0;) {\n\t subscene = axes[j];\n\t if (subscene.interactive !== false && subscene.layer !== 'back') {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t for (j=items.length; --j>=0;) {\n\t subscene = items[j];\n\t if (subscene.interactive !== false) {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t for (j=axes.length; --j>=0;) {\n\t subscene = axes[j];\n\t if (subscene.interative !== false && subscene.layer === 'back') {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t g.restore();\n\t\n\t if (scene.interactive !== false && (group.fill || group.stroke) &&\n\t dx >= 0 && dx <= group.width && dy >= 0 && dy <= group.height) {\n\t return group;\n\t }\n\t }\n\t\n\t return null;\n\t}\n\t\n\tmodule.exports = {\n\t draw: draw,\n\t pick: pick\n\t};\n\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(72);\n\t\n\tfunction draw(g, scene, bounds) {\n\t if (!scene.items || !scene.items.length) return;\n\t\n\t var renderer = this,\n\t items = scene.items, o;\n\t\n\t for (var i=0, len=items.length; i this.x2) this.x2 = x;\n\t if (y > this.y2) this.y2 = y;\n\t return this;\n\t};\n\t\n\tprototype.expand = function(d) {\n\t this.x1 -= d;\n\t this.y1 -= d;\n\t this.x2 += d;\n\t this.y2 += d;\n\t return this;\n\t};\n\t\n\tprototype.round = function() {\n\t this.x1 = Math.floor(this.x1);\n\t this.y1 = Math.floor(this.y1);\n\t this.x2 = Math.ceil(this.x2);\n\t this.y2 = Math.ceil(this.y2);\n\t return this;\n\t};\n\t\n\tprototype.translate = function(dx, dy) {\n\t this.x1 += dx;\n\t this.x2 += dx;\n\t this.y1 += dy;\n\t this.y2 += dy;\n\t return this;\n\t};\n\t\n\tprototype.rotate = function(angle, x, y) {\n\t var cos = Math.cos(angle),\n\t sin = Math.sin(angle),\n\t cx = x - x*cos + y*sin,\n\t cy = y - x*sin - y*cos,\n\t x1 = this.x1, x2 = this.x2,\n\t y1 = this.y1, y2 = this.y2;\n\t\n\t return this.clear()\n\t .add(cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy)\n\t .add(cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy)\n\t .add(cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy)\n\t .add(cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy);\n\t};\n\t\n\tprototype.union = function(b) {\n\t if (b.x1 < this.x1) this.x1 = b.x1;\n\t if (b.y1 < this.y1) this.y1 = b.y1;\n\t if (b.x2 > this.x2) this.x2 = b.x2;\n\t if (b.y2 > this.y2) this.y2 = b.y2;\n\t return this;\n\t};\n\t\n\tprototype.encloses = function(b) {\n\t return b && (\n\t this.x1 <= b.x1 &&\n\t this.x2 >= b.x2 &&\n\t this.y1 <= b.y1 &&\n\t this.y2 >= b.y2\n\t );\n\t};\n\t\n\tprototype.alignsWith = function(b) {\n\t return b && (\n\t this.x1 == b.x1 ||\n\t this.x2 == b.x2 ||\n\t this.y1 == b.y1 ||\n\t this.y2 == b.y2\n\t );\n\t};\n\t\n\tprototype.intersects = function(b) {\n\t return b && !(\n\t this.x2 < b.x1 ||\n\t this.x1 > b.x2 ||\n\t this.y2 < b.y1 ||\n\t this.y1 > b.y2\n\t );\n\t};\n\t\n\tprototype.contains = function(x, y) {\n\t return !(\n\t x < this.x1 ||\n\t x > this.x2 ||\n\t y < this.y1 ||\n\t y > this.y2\n\t );\n\t};\n\t\n\tprototype.width = function() {\n\t return this.x2 - this.x1;\n\t};\n\t\n\tprototype.height = function() {\n\t return this.y2 - this.y1;\n\t};\n\t\n\tmodule.exports = Bounds;\n\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar BoundsContext = __webpack_require__(85),\n\t Bounds = __webpack_require__(83),\n\t canvas = __webpack_require__(86),\n\t svg = __webpack_require__(74),\n\t text = __webpack_require__(88),\n\t paths = __webpack_require__(61),\n\t parse = paths.parse,\n\t drawPath = paths.render,\n\t areaPath = svg.path.area,\n\t linePath = svg.path.line,\n\t halfpi = Math.PI / 2,\n\t sqrt3 = Math.sqrt(3),\n\t tan30 = Math.tan(30 * Math.PI / 180),\n\t g2D = null,\n\t bc = BoundsContext();\n\t\n\tfunction context() {\n\t return g2D || (g2D = canvas.instance(1,1).getContext('2d'));\n\t}\n\t\n\tfunction strokeBounds(o, bounds) {\n\t if (o.stroke && o.opacity !== 0 && o.stokeOpacity !== 0) {\n\t bounds.expand(o.strokeWidth != null ? o.strokeWidth : 1);\n\t }\n\t return bounds;\n\t}\n\t\n\tfunction pathBounds(o, path, bounds, x, y) {\n\t if (path == null) {\n\t bounds.set(0, 0, 0, 0);\n\t } else {\n\t drawPath(bc.bounds(bounds), path, x, y);\n\t strokeBounds(o, bounds);\n\t }\n\t return bounds;\n\t}\n\t\n\tfunction path(o, bounds) {\n\t var p = o.path ? o.pathCache || (o.pathCache = parse(o.path)) : null;\n\t return pathBounds(o, p, bounds, o.x, o.y);\n\t}\n\t\n\tfunction area(mark, bounds) {\n\t if (mark.items.length === 0) return bounds;\n\t var items = mark.items,\n\t item = items[0],\n\t p = item.pathCache || (item.pathCache = parse(areaPath(items)));\n\t return pathBounds(item, p, bounds);\n\t}\n\t\n\tfunction line(mark, bounds) {\n\t if (mark.items.length === 0) return bounds;\n\t var items = mark.items,\n\t item = items[0],\n\t p = item.pathCache || (item.pathCache = parse(linePath(items)));\n\t return pathBounds(item, p, bounds);\n\t}\n\t\n\tfunction rect(o, bounds) {\n\t var x, y;\n\t return strokeBounds(o, bounds.set(\n\t x = o.x || 0,\n\t y = o.y || 0,\n\t (x + o.width) || 0,\n\t (y + o.height) || 0\n\t ));\n\t}\n\t\n\tfunction image(o, bounds) {\n\t var x = o.x || 0,\n\t y = o.y || 0,\n\t w = o.width || 0,\n\t h = o.height || 0;\n\t x = x - (o.align === 'center' ? w/2 : (o.align === 'right' ? w : 0));\n\t y = y - (o.baseline === 'middle' ? h/2 : (o.baseline === 'bottom' ? h : 0));\n\t return bounds.set(x, y, x+w, y+h);\n\t}\n\t\n\tfunction rule(o, bounds) {\n\t var x1, y1;\n\t return strokeBounds(o, bounds.set(\n\t x1 = o.x || 0,\n\t y1 = o.y || 0,\n\t o.x2 != null ? o.x2 : x1,\n\t o.y2 != null ? o.y2 : y1\n\t ));\n\t}\n\t\n\tfunction arc(o, bounds) {\n\t var cx = o.x || 0,\n\t cy = o.y || 0,\n\t ir = o.innerRadius || 0,\n\t or = o.outerRadius || 0,\n\t sa = (o.startAngle || 0) - halfpi,\n\t ea = (o.endAngle || 0) - halfpi,\n\t xmin = Infinity, xmax = -Infinity,\n\t ymin = Infinity, ymax = -Infinity,\n\t a, i, n, x, y, ix, iy, ox, oy;\n\t\n\t var angles = [sa, ea],\n\t s = sa - (sa % halfpi);\n\t for (i=0; i<4 && s=0;) {\n\t if (h[i].type === type && !handler || h[i].handler === handler) {\n\t svg.removeEventListener(name, h[i].listener);\n\t h.splice(i, 1);\n\t }\n\t }\n\t return this;\n\t};\n\t\n\tmodule.exports = SVGHandler;\n\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ImageLoader = __webpack_require__(90),\n\t Renderer = __webpack_require__(91),\n\t text = __webpack_require__(88),\n\t DOM = __webpack_require__(68),\n\t SVG = __webpack_require__(74),\n\t ns = SVG.metadata.xmlns,\n\t marks = __webpack_require__(95);\n\t\n\tfunction SVGRenderer(loadConfig) {\n\t Renderer.call(this);\n\t this._loader = new ImageLoader(loadConfig);\n\t this._dirtyID = 0;\n\t}\n\t\n\tvar base = Renderer.prototype;\n\tvar prototype = (SVGRenderer.prototype = Object.create(base));\n\tprototype.constructor = SVGRenderer;\n\t\n\tprototype.initialize = function(el, width, height, padding) {\n\t if (el) {\n\t this._svg = DOM.child(el, 0, 'svg', ns, 'marks');\n\t DOM.clear(el, 1);\n\t // set the svg root group\n\t this._root = DOM.child(this._svg, 0, 'g', ns);\n\t DOM.clear(this._svg, 1);\n\t }\n\t\n\t // create the svg definitions cache\n\t this._defs = {\n\t clip_id: 1,\n\t gradient: {},\n\t clipping: {}\n\t };\n\t\n\t // set background color if defined\n\t this.background(this._bgcolor);\n\t\n\t return base.initialize.call(this, el, width, height, padding);\n\t};\n\t\n\tprototype.background = function(bgcolor) {\n\t if (arguments.length && this._svg) {\n\t this._svg.style.setProperty('background-color', bgcolor);\n\t }\n\t return base.background.apply(this, arguments);\n\t};\n\t\n\tprototype.resize = function(width, height, padding) {\n\t base.resize.call(this, width, height, padding);\n\t \n\t if (this._svg) {\n\t var w = this._width,\n\t h = this._height,\n\t p = this._padding;\n\t \n\t this._svg.setAttribute('width', w + p.left + p.right);\n\t this._svg.setAttribute('height', h + p.top + p.bottom);\n\t \n\t this._root.setAttribute('transform', 'translate('+p.left+','+p.top+')');\n\t }\n\t\n\t return this;\n\t};\n\t\n\tprototype.svg = function() {\n\t if (!this._svg) return null;\n\t\n\t var attr = {\n\t 'class': 'marks',\n\t 'width': this._width + this._padding.left + this._padding.right,\n\t 'height': this._height + this._padding.top + this._padding.bottom,\n\t };\n\t for (var key in SVG.metadata) {\n\t attr[key] = SVG.metadata[key];\n\t }\n\t\n\t return DOM.openTag('svg', attr) + this._svg.innerHTML + DOM.closeTag('svg');\n\t};\n\t\n\tprototype.imageURL = function(url) {\n\t return this._loader.imageURL(url);\n\t};\n\t\n\t\n\t// -- Render entry point --\n\t\n\tprototype.render = function(scene, items) {\n\t if (this._dirtyCheck(items)) {\n\t if (this._dirtyAll) this._resetDefs();\n\t this.draw(this._root, scene, -1);\n\t DOM.clear(this._root, 1);\n\t }\n\t this.updateDefs();\n\t return this;\n\t};\n\t\n\tprototype.draw = function(el, scene, index) {\n\t this.drawMark(el, scene, index, marks[scene.marktype]);\n\t};\n\t\n\t\n\t// -- Manage SVG definitions ('defs') block --\n\t\n\tprototype.updateDefs = function() {\n\t var svg = this._svg,\n\t defs = this._defs,\n\t el = defs.el,\n\t index = 0, id;\n\t\n\t for (id in defs.gradient) {\n\t if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n\t updateGradient(el, defs.gradient[id], index++);\n\t }\n\t\n\t for (id in defs.clipping) {\n\t if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n\t updateClipping(el, defs.clipping[id], index++);\n\t }\n\t\n\t // clean-up\n\t if (el) {\n\t if (index === 0) {\n\t svg.removeChild(el);\n\t defs.el = null;\n\t } else {\n\t DOM.clear(el, index); \n\t }\n\t }\n\t};\n\t\n\tfunction updateGradient(el, grad, index) {\n\t var i, n, stop;\n\t\n\t el = DOM.child(el, index, 'linearGradient', ns);\n\t el.setAttribute('id', grad.id);\n\t el.setAttribute('x1', grad.x1);\n\t el.setAttribute('x2', grad.x2);\n\t el.setAttribute('y1', grad.y1);\n\t el.setAttribute('y2', grad.y2);\n\t \n\t for (i=0, n=grad.stops.length; i 0) ? openTag('defs') + defs + closeTag('defs') : '';\n\t};\n\t\n\tprototype.imageURL = function(url) {\n\t return this._loader.imageURL(url);\n\t};\n\t\n\tvar object;\n\t\n\tfunction emit(name, value, ns, prefixed) {\n\t object[prefixed || name] = value;\n\t}\n\t\n\tprototype.attributes = function(attr, item) {\n\t object = {};\n\t attr(emit, item, this);\n\t return object;\n\t};\n\t\n\tprototype.mark = function(scene) {\n\t var mdef = MARKS[scene.marktype],\n\t tag = mdef.tag,\n\t attr = mdef.attr,\n\t nest = mdef.nest || false,\n\t data = nest ?\n\t (scene.items && scene.items.length ? [scene.items[0]] : []) :\n\t (scene.items || []),\n\t defs = this._defs,\n\t str = '',\n\t style, i, item;\n\t\n\t if (tag !== 'g' && scene.interactive === false) {\n\t style = 'style=\"pointer-events: none;\"';\n\t }\n\t\n\t // render opening group tag\n\t str += openTag('g', {\n\t 'class': DOM.cssClass(scene)\n\t }, style);\n\t\n\t // render contained elements\n\t for (i=0; i/g, '>');\n\t}\n\t\n\tmodule.exports = SVGStringRenderer;\n\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tfunction Item(mark) {\n\t this.mark = mark;\n\t}\n\t\n\tvar prototype = Item.prototype;\n\t\n\tprototype.hasPropertySet = function(name) {\n\t var props = this.mark.def.properties;\n\t return props && props[name] != null;\n\t};\n\t\n\tprototype.cousin = function(offset, index) {\n\t if (offset === 0) return this;\n\t offset = offset || -1;\n\t var mark = this.mark,\n\t group = mark.group,\n\t iidx = index==null ? mark.items.indexOf(this) : index,\n\t midx = group.items.indexOf(mark) + offset;\n\t return group.items[midx].items[iidx];\n\t};\n\t\n\tprototype.sibling = function(offset) {\n\t if (offset === 0) return this;\n\t offset = offset || -1;\n\t var mark = this.mark,\n\t iidx = mark.items.indexOf(this) + offset;\n\t return mark.items[iidx];\n\t};\n\t\n\tprototype.remove = function() {\n\t var item = this,\n\t list = item.mark.items,\n\t i = list.indexOf(item);\n\t if (i >= 0) {\n\t if (i===list.length-1) {\n\t list.pop();\n\t } else {\n\t list.splice(i, 1);\n\t }\n\t }\n\t return item;\n\t};\n\t\n\tprototype.touch = function() {\n\t if (this.pathCache) this.pathCache = null;\n\t};\n\t\n\tmodule.exports = Item;\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tvar gradient_id = 0;\n\t\n\tfunction Gradient(type) {\n\t this.id = 'gradient_' + (gradient_id++);\n\t this.type = type || 'linear';\n\t this.stops = [];\n\t this.x1 = 0;\n\t this.x2 = 1;\n\t this.y1 = 0;\n\t this.y2 = 0;\n\t}\n\t\n\tvar prototype = Gradient.prototype;\n\t\n\tprototype.stop = function(offset, color) {\n\t this.stops.push({\n\t offset: offset,\n\t color: color\n\t });\n\t return this;\n\t};\n\t\n\tmodule.exports = Gradient;\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar bound = __webpack_require__(84);\n\t\n\tvar sets = [\n\t 'items',\n\t 'axisItems',\n\t 'legendItems'\n\t];\n\t\n\tvar keys = [\n\t 'marktype', 'name', 'interactive', 'clip',\n\t 'items', 'axisItems', 'legendItems', 'layer',\n\t 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n\t 'fill', 'fillOpacity', 'opacity', // fill\n\t 'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n\t 'strokeDash', 'strokeDashOffset', // stroke dash\n\t 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n\t 'interpolate', 'tension', 'orient', // area, line\n\t 'url', // image\n\t 'path', // path\n\t 'x2', 'y2', // rule\n\t 'size', 'shape', // symbol\n\t 'text', 'angle', 'theta', 'radius', 'dx', 'dy', // text\n\t 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant' // font\n\t];\n\t\n\tfunction toJSON(scene, indent) {\n\t return JSON.stringify(scene, keys, indent);\n\t}\n\t\n\tfunction fromJSON(json) {\n\t var scene = (typeof json === 'string' ? JSON.parse(json) : json);\n\t return initialize(scene);\n\t}\n\t\n\tfunction initialize(scene) {\n\t var type = scene.marktype,\n\t i, n, s, m, items;\n\t\n\t for (s=0, m=sets.length; s 0) {\n\t try {\n\t model.data(d.name).values(dl.read(data, d.format));\n\t if (--count === 0) callback();\n\t } catch (err) {\n\t onError(err, d);\n\t }\n\t }\n\t };\n\t }\n\t\n\t // process each data set definition\n\t (spec || []).forEach(function(d) {\n\t if (d.url) {\n\t count += 1;\n\t dl.load(dl.extend({url: d.url}, config.load), onLoad(d));\n\t }\n\t try {\n\t parseData.datasource(model, d);\n\t } catch (err) {\n\t onError(err, d);\n\t }\n\t });\n\t\n\t if (count === 0) setTimeout(callback, 1);\n\t return spec;\n\t}\n\t\n\tparseData.datasource = function(model, d) {\n\t var transform = (d.transform || []).map(function(t) {\n\t return parseTransforms(model, t);\n\t }),\n\t mod = (d.modify || []).map(function(m) {\n\t return parseModify(model, m, d);\n\t }),\n\t ds = model.data(d.name, mod.concat(transform));\n\t\n\t if (d.values) {\n\t ds.values(dl.read(d.values, d.format));\n\t } else if (d.source) {\n\t // Derived ds will be pulsed by its src rather than the model.\n\t ds.source(d.source).addListener(ds);\n\t model.removeListener(ds.pipeline()[0]);\n\t }\n\t\n\t return ds;\n\t};\n\t\n\tmodule.exports = parseData;\n\t\n\tvar parseDef = {\n\t \"oneOf\": [\n\t {\"enum\": [\"auto\"]},\n\t {\n\t \"type\": \"object\",\n\t \"additionalProperties\": {\n\t \"enum\": [\"number\", \"boolean\", \"date\", \"string\"]\n\t }\n\t }\n\t ]\n\t};\n\t\n\tparseData.schema = {\n\t \"defs\": {\n\t \"data\": {\n\t \"title\": \"Input data set definition\",\n\t \"type\": \"object\",\n\t\n\t \"allOf\": [{\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"transform\": {\"$ref\": \"#/defs/transform\"},\n\t \"modify\": {\"$ref\": \"#/defs/modify\"},\n\t \"format\": {\n\t \"type\": \"object\",\n\t \"oneOf\": [{\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"json\"]},\n\t \"parse\": parseDef,\n\t \"property\": {\"type\": \"string\"}\n\t },\n\t \"additionalProperties\": false\n\t }, {\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"csv\", \"tsv\"]},\n\t \"parse\": parseDef\n\t },\n\t \"additionalProperties\": false\n\t }, {\n\t \"oneOf\": [{\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"topojson\"]},\n\t \"feature\": {\"type\": \"string\"}\n\t },\n\t \"additionalProperties\": false\n\t }, {\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"topojson\"]},\n\t \"mesh\": {\"type\": \"string\"}\n\t },\n\t \"additionalProperties\": false\n\t }]\n\t }, {\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"treejson\"]},\n\t \"children\": {\"type\": \"string\"},\n\t \"parse\": parseDef\n\t },\n\t \"additionalProperties\": false\n\t }]\n\t }\n\t },\n\t \"required\": [\"name\"]\n\t }, {\n\t \"anyOf\": [{\n\t \"required\": [\"name\", \"modify\"]\n\t }, {\n\t \"oneOf\": [{\n\t \"properties\": {\"source\": {\"type\": \"string\"}},\n\t \"required\": [\"source\"]\n\t }, {\n\t \"properties\": {\"values\": {\"type\": \"array\"}},\n\t \"required\": [\"values\"]\n\t }, {\n\t \"properties\": {\"url\": {\"type\": \"string\"}},\n\t \"required\": [\"url\"]\n\t }]\n\t }]\n\t }]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t transforms = __webpack_require__(103);\n\t\n\tfunction parseTransforms(model, def) {\n\t var transform = transforms[def.type],\n\t tx;\n\t\n\t if (!transform) throw new Error('\"' + def.type + '\" is not a valid transformation');\n\t\n\t tx = new transform(model);\n\t // We want to rename output fields before setting any other properties,\n\t // as subsequent properties may require output to be set (e.g. group by).\n\t if(def.output) tx.output(def.output);\n\t\n\t dl.keys(def).forEach(function(k) {\n\t if(k === 'type' || k === 'output') return;\n\t tx.param(k, def[k]);\n\t });\n\t\n\t return tx;\n\t}\n\t\n\tmodule.exports = parseTransforms;\n\t\n\tvar keys = dl.keys(transforms)\n\t .filter(function(k) { return transforms[k].schema; });\n\t\n\tvar defs = keys.reduce(function(acc, k) {\n\t return (acc[k+'Transform'] = transforms[k].schema, acc);\n\t}, {});\n\t\n\tparseTransforms.schema = {\n\t \"defs\": dl.extend(defs, {\n\t \"transform\": {\n\t \"type\": \"array\",\n\t \"items\": {\n\t \"oneOf\": keys.map(function(k) {\n\t return {\"$ref\": \"#/defs/\"+k+\"Transform\"};\n\t })\n\t }\n\t }\n\t })\n\t};\n\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t aggregate: __webpack_require__(104),\n\t bin: __webpack_require__(108),\n\t cross: __webpack_require__(110),\n\t countpattern: __webpack_require__(111),\n\t linkpath: __webpack_require__(112),\n\t facet: __webpack_require__(113),\n\t filter: __webpack_require__(114),\n\t fold: __webpack_require__(115),\n\t force: __webpack_require__(116),\n\t formula: __webpack_require__(118),\n\t geo: __webpack_require__(119),\n\t geopath: __webpack_require__(120),\n\t hierarchy: __webpack_require__(121),\n\t impute: __webpack_require__(122),\n\t lookup: __webpack_require__(123),\n\t pie: __webpack_require__(124),\n\t rank: __webpack_require__(125),\n\t sort: __webpack_require__(126),\n\t stack: __webpack_require__(127),\n\t treeify: __webpack_require__(128),\n\t treemap: __webpack_require__(129),\n\t voronoi: __webpack_require__(130),\n\t wordcloud: __webpack_require__(131)\n\t};\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t log = __webpack_require__(8),\n\t ChangeSet = df.ChangeSet,\n\t Tuple = df.Tuple,\n\t Deps = df.Dependencies,\n\t Transform = __webpack_require__(105),\n\t Facetor = __webpack_require__(107);\n\t\n\tfunction Aggregate(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'},\n\t summarize: {\n\t type: 'custom',\n\t set: function(summarize) {\n\t var signalDeps = {},\n\t tx = this._transform,\n\t i, len, f, fields, name, ops;\n\t\n\t if (!dl.isArray(fields = summarize)) { // Object syntax from dl\n\t fields = [];\n\t for (name in summarize) {\n\t ops = dl.array(summarize[name]);\n\t fields.push({field: name, ops: ops});\n\t }\n\t }\n\t\n\t function sg(x) { if (x.signal) signalDeps[x.signal] = 1; }\n\t\n\t for (i=0, len=fields.length; i', default: [5, 2]}\n\t });\n\t\n\t this._output = {\n\t start: 'bin_start',\n\t end: 'bin_end',\n\t mid: 'bin_mid'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Bin.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Bin;\n\t\n\tprototype.extent = function(data) {\n\t // TODO only recompute extent upon data or field change?\n\t var e = [this.param('min'), this.param('max')], d;\n\t if (e[0] == null || e[1] == null) {\n\t d = dl.extent(data, this.param('field').accessor);\n\t if (e[0] == null) e[0] = d[0];\n\t if (e[1] == null) e[1] = d[1];\n\t }\n\t return e;\n\t};\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['binning']);\n\t\n\t var extent = this.extent(data),\n\t output = this._output,\n\t step = this.param('step'),\n\t steps = this.param('steps'),\n\t minstep = this.param('minstep'),\n\t get = this.param('field').accessor,\n\t opt = {\n\t min: extent[0],\n\t max: extent[1],\n\t base: this.param('base'),\n\t maxbins: this.param('maxbins'),\n\t div: this.param('div')\n\t };\n\t\n\t if (step) opt.step = step;\n\t if (steps) opt.steps = steps;\n\t if (minstep) opt.minstep = minstep;\n\t var b = dl.bins(opt),\n\t s = b.step;\n\t\n\t function update(d) {\n\t var v = get(d);\n\t v = v == null ? null\n\t : b.start + s * ~~((v - b.start) / s);\n\t Tuple.set(d, output.start, v);\n\t Tuple.set(d, output.end, v + s);\n\t Tuple.set(d, output.mid, v + s/2);\n\t }\n\t input.add.forEach(update);\n\t input.mod.forEach(update);\n\t input.rem.forEach(update);\n\t\n\t input.fields[output.start] = 1;\n\t input.fields[output.end] = 1;\n\t input.fields[output.mid] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = Bin;\n\t\n\tBin.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Bin transform\",\n\t \"description\": \"Bins values into quantitative bins (e.g., for a histogram).\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"bin\"]},\n\t \"field\": {\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The name of the field to bin values from.\"\n\t },\n\t \"min\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The minimum bin value to consider.\"\n\t },\n\t \"max\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The maximum bin value to consider.\"\n\t },\n\t \"base\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The number base to use for automatic bin determination.\",\n\t \"default\": 10\n\t },\n\t \"maxbins\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The maximum number of allowable bins.\",\n\t \"default\": 20\n\t },\n\t \"step\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"An exact step size to use between bins. If provided, options such as maxbins will be ignored.\"\n\t },\n\t \"steps\": {\n\t \"description\": \"An array of allowable step sizes to choose from.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": \"number\"}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"minstep\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"A minimum allowable step size (particularly useful for integer values).\"\n\t },\n\t \"div\": {\n\t \"description\": \"An array of scale factors indicating allowable subdivisions.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": \"number\"},\n\t \"default\": [5, 2]\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"start\": {\"type\": \"string\", \"default\": \"bin_start\"},\n\t \"end\": {\"type\": \"string\", \"default\": \"bin_end\"},\n\t \"mid\": {\"type\": \"string\", \"default\": \"bin_mid\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"field\"]\n\t};\n\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Base = __webpack_require__(105).prototype;\n\t\n\tfunction BatchTransform() {\n\t // Nearest appropriate collector.\n\t // Set by the dataflow Graph during connection.\n\t this._collector = null;\n\t}\n\t\n\tvar prototype = (BatchTransform.prototype = Object.create(Base));\n\tprototype.constructor = BatchTransform;\n\t\n\tprototype.init = function(graph) {\n\t Base.init.call(this, graph);\n\t return this.batch(true);\n\t};\n\t\n\tprototype.transform = function(input, reset) {\n\t return this.batchTransform(input, this._collector.data(), reset);\n\t};\n\t\n\tprototype.batchTransform = function(/* input, data, reset */) {\n\t};\n\t\n\tmodule.exports = BatchTransform;\n\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t ChangeSet = df.ChangeSet,\n\t Tuple = df.Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Cross(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t with: {type: 'data'},\n\t diagonal: {type: 'value', default: 'true'},\n\t filter: {type: 'expr'}\n\t });\n\t\n\t this._output = {'left': 'a', 'right': 'b'};\n\t this._lastWith = null; // Last time we crossed w/with-ds.\n\t this._cids = {};\n\t this._cache = {};\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Cross.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Cross;\n\t\n\t// Each cached incoming tuple also has a flag to determine whether\n\t// any tuples were filtered.\n\tfunction _cache(x, t) {\n\t var c = this._cache,\n\t cross = c[x._id] || (c[x._id] = {c: [], f: false});\n\t cross.c.push(t);\n\t}\n\t\n\tfunction _cid(left, x, y) {\n\t return left ? x._id+'_'+y._id : y._id+'_'+x._id;\n\t}\n\t\n\tfunction add(output, left, data, diag, test, mids, x) {\n\t var as = this._output,\n\t cache = this._cache,\n\t cids = this._cids,\n\t oadd = output.add,\n\t fltrd = false,\n\t i = 0, len = data.length,\n\t t = {}, y, cid;\n\t\n\t for (; i=0; --i) {\n\t t = tpls[i];\n\t l = x === t[as.left]; // Cache has tpls w/x both on left & right.\n\t y = l ? t[as.right] : t[as.left];\n\t cid = _cid(l, x, y);\n\t\n\t // Lazy removal: y was previously rem'd, so clean up the cache.\n\t if (!cache[y._id]) {\n\t cids[cid] = false;\n\t tpls.splice(i, 1);\n\t continue;\n\t }\n\t\n\t if (!test || test(t)) {\n\t if (mids[t._id]) continue;\n\t omod.push(t);\n\t mids[t._id] = 1;\n\t } else {\n\t if (!rids[t._id]) orem.push.apply(orem, tpls.splice(i, 1));\n\t rids[t._id] = 1;\n\t cids[cid] = false;\n\t cross.f = true;\n\t }\n\t }\n\t }\n\t\n\t // If we have a filter param, call add to catch any tuples that may\n\t // have previously been filtered.\n\t if (test && fltrd) add.call(this, output, left, data, diag, test, mids, x);\n\t}\n\t\n\tfunction rem(output, left, rids, x) {\n\t var as = this._output,\n\t cross = this._cache[x._id],\n\t cids = this._cids,\n\t orem = output.rem,\n\t i, len, t, y, l;\n\t if (!cross) return;\n\t\n\t for (i=0, len=cross.c.length; i this._lastWith) {\n\t woutput.rem.forEach(rem.bind(this, output, false, rids));\n\t woutput.add.forEach(add.bind(this, output, false, data, diag, test, mids));\n\t woutput.mod.forEach(mod.bind(this, output, false, data, diag, test, mids, rids));\n\t this._lastWith = woutput.stamp;\n\t }\n\t\n\t // Mods need to come after all removals have been run.\n\t input.mod.forEach(mod.bind(this, output, true, wdata, diag, test, mids, rids));\n\t }\n\t\n\t output.fields[as.left] = 1;\n\t output.fields[as.right] = 1;\n\t return output;\n\t};\n\t\n\tmodule.exports = Cross;\n\t\n\tCross.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Cross transform\",\n\t \"description\": \"Compute the cross-product of two data sets.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"cross\"]},\n\t \"with\": {\n\t \"type\": \"string\",\n\t \"description\": \"The name of the secondary data set to cross with the primary data. \" +\n\t \"If unspecified, the primary data is crossed with itself.\"\n\t },\n\t \"diagonal\": {\n\t \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"If false, items along the \\\"diagonal\\\" of the cross-product \" +\n\t \"(those elements with the same index in their respective array) \" +\n\t \"will not be included in the output.\",\n\t \"default\": true\n\t },\n\t \"filter\": {\n\t \"type\": \"string\",\n\t \"description\": \"A string containing an expression (in JavaScript syntax) \" +\n\t \"to filter the resulting data elements.\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"left\": {\"type\": \"string\", \"default\": \"a\"},\n\t \"right\": {\"type\": \"string\", \"default\": \"b\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 111 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar df = __webpack_require__(4),\n\t Tuple = df.Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction CountPattern(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t field: {type: 'field', default: 'data'},\n\t pattern: {type: 'value', default: '[\\\\w\\']+'},\n\t case: {type: 'value', default: 'lower'},\n\t stopwords: {type: 'value', default: ''}\n\t });\n\t\n\t this._output = {text: 'text', count: 'count'};\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (CountPattern.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = CountPattern;\n\t\n\tprototype.transform = function(input, reset) {\n\t log.debug(input, ['countpattern']);\n\t\n\t var get = this.param('field').accessor,\n\t pattern = this.param('pattern'),\n\t stop = this.param('stopwords'),\n\t rem = false;\n\t\n\t // update parameters\n\t if (this._stop !== stop) {\n\t this._stop = stop;\n\t this._stop_re = new RegExp('^' + stop + '$', 'i');\n\t reset = true;\n\t }\n\t\n\t if (this._pattern !== pattern) {\n\t this._pattern = pattern;\n\t this._match = new RegExp(this._pattern, 'g');\n\t reset = true;\n\t }\n\t\n\t if (reset) this._counts = {};\n\t\n\t function curr(t) { return (Tuple.prev_init(t), get(t)); }\n\t function prev(t) { return get(Tuple.prev(t)); }\n\t\n\t this._add(input.add, curr);\n\t if (!reset) this._rem(input.rem, prev);\n\t if (reset || (rem = input.fields[get.field])) {\n\t if (rem) this._rem(input.mod, prev);\n\t this._add(input.mod, curr);\n\t }\n\t\n\t // generate output tuples\n\t return this._changeset(input);\n\t};\n\t\n\tprototype._changeset = function(input) {\n\t var counts = this._counts,\n\t tuples = this._tuples || (this._tuples = {}),\n\t change = df.ChangeSet.create(input),\n\t out = this._output, w, t, c;\n\t\n\t for (w in counts) {\n\t t = tuples[w];\n\t c = counts[w] || 0;\n\t if (!t && c) {\n\t tuples[w] = (t = Tuple.ingest({}));\n\t t[out.text] = w;\n\t t[out.count] = c;\n\t change.add.push(t);\n\t } else if (c === 0) {\n\t if (t) change.rem.push(t);\n\t delete counts[w];\n\t delete tuples[w];\n\t } else if (t[out.count] !== c) {\n\t Tuple.set(t, out.count, c);\n\t change.mod.push(t);\n\t }\n\t }\n\t return change;\n\t};\n\t\n\tprototype._tokenize = function(text) {\n\t switch (this.param('case')) {\n\t case 'upper': text = text.toUpperCase(); break;\n\t case 'lower': text = text.toLowerCase(); break;\n\t }\n\t return text.match(this._match);\n\t};\n\t\n\tprototype._add = function(tuples, get) {\n\t var counts = this._counts,\n\t stop = this._stop_re,\n\t tok, i, j, t;\n\t\n\t for (j=0; j Math.PI ? ta <= sa : ta > sa;\n\t return 'M' + (sr*sc) + ',' + (sr*ss) +\n\t 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n\t ' ' + (sr*tc) + ',' + (sr*ts) +\n\t 'L' + (tr*tc) + ',' + (tr*ts);\n\t}\n\t\n\tfunction diagonalX(sx, sy, tx, ty) {\n\t var m = (sx + tx) / 2;\n\t return 'M' + sx + ',' + sy +\n\t 'C' + m + ',' + sy +\n\t ' ' + m + ',' + ty +\n\t ' ' + tx + ',' + ty;\n\t}\n\t\n\tfunction diagonalY(sx, sy, tx, ty) {\n\t var m = (sy + ty) / 2;\n\t return 'M' + sx + ',' + sy +\n\t 'C' + sx + ',' + m +\n\t ' ' + tx + ',' + m +\n\t ' ' + tx + ',' + ty;\n\t}\n\t\n\tfunction diagonalR(sa, sr, ta, tr) {\n\t var sc = Math.cos(sa),\n\t ss = Math.sin(sa),\n\t tc = Math.cos(ta),\n\t ts = Math.sin(ta),\n\t mr = (sr + tr) / 2;\n\t return 'M' + (sr*sc) + ',' + (sr*ss) +\n\t 'C' + (mr*sc) + ',' + (mr*ss) +\n\t ' ' + (mr*tc) + ',' + (mr*ts) +\n\t ' ' + (tr*tc) + ',' + (tr*ts);\n\t}\n\t\n\tvar shapes = {\n\t line: line,\n\t curve: curve,\n\t cornerX: cornerX,\n\t cornerY: cornerY,\n\t cornerR: cornerR,\n\t diagonalX: diagonalX,\n\t diagonalY: diagonalY,\n\t diagonalR: diagonalR\n\t};\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['linkpath']);\n\t\n\t var output = this._output,\n\t shape = shapes[this.param('shape')] || shapes.line,\n\t sourceX = this.param('sourceX').accessor,\n\t sourceY = this.param('sourceY').accessor,\n\t targetX = this.param('targetX').accessor,\n\t targetY = this.param('targetY').accessor,\n\t tension = this.param('tension');\n\t\n\t function set(t) {\n\t var path = shape(sourceX(t), sourceY(t), targetX(t), targetY(t), tension);\n\t Tuple.set(t, output.path, path);\n\t }\n\t\n\t input.add.forEach(set);\n\t if (this.reevaluate(input)) {\n\t input.mod.forEach(set);\n\t input.rem.forEach(set);\n\t }\n\t\n\t input.fields[output.path] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = LinkPath;\n\t\n\tLinkPath.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"LinkPath transform\",\n\t \"description\": \"Computes a path definition for connecting nodes within a node-link network or tree diagram.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"linkpath\"]},\n\t \"sourceX\": {\n\t \"description\": \"The data field that references the source x-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_source\"\n\t },\n\t \"sourceY\": {\n\t \"description\": \"The data field that references the source y-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_source\"\n\t },\n\t \"targetX\": {\n\t \"description\": \"The data field that references the target x-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_target\"\n\t },\n\t \"targetY\": {\n\t \"description\": \"The data field that references the target y-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_target\"\n\t },\n\t \"tension\": {\n\t \"description\": \"A tension parameter for the \\\"tightness\\\" of \\\"curve\\\"-shaped links.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"number\",\n\t \"minimum\": 0,\n\t \"maximum\": 1\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": 0.2\n\t },\n\t \"shape\": {\n\t \"description\": \"The path shape to use\",\n\t \"oneOf\": [\n\t {\"enum\": [\"line\", \"curve\", \"cornerX\", \"cornerY\", \"cornerR\", \"diagonalX\", \"diagonalY\", \"diagonalR\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"line\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 113 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Transform = __webpack_require__(105),\n\t Aggregate = __webpack_require__(104);\n\t\n\tfunction Facet(graph) {\n\t Transform.addParameters(this, {\n\t transform: {\n\t type: \"custom\",\n\t set: function(pipeline) {\n\t return (this._transform._pipeline = pipeline, this._transform);\n\t },\n\t get: function() {\n\t var parse = __webpack_require__(102),\n\t facet = this._transform;\n\t return facet._pipeline.map(function(t) {\n\t return parse(facet._graph, t);\n\t });\n\t }\n\t }\n\t });\n\t\n\t this._pipeline = [];\n\t return Aggregate.call(this, graph);\n\t}\n\t\n\tvar prototype = (Facet.prototype = Object.create(Aggregate.prototype));\n\tprototype.constructor = Facet;\n\t\n\tprototype.aggr = function() {\n\t return Aggregate.prototype.aggr.call(this).facet(this);\n\t};\n\t\n\tprototype.transform = function(input, reset) {\n\t var output = Aggregate.prototype.transform.call(this, input, reset);\n\t\n\t // New facet cells should trigger a re-ranking of the dataflow graph.\n\t // This ensures facet datasources are computed before scenegraph nodes.\n\t // We rerank the Facet's first listener, which is the next node in the\n\t // datasource's pipeline.\n\t if (input.add.length) {\n\t this.listeners()[0].rerank();\n\t }\n\t\n\t return output;\n\t};\n\t\n\tmodule.exports = Facet;\n\t\n\tvar dl = __webpack_require__(12);\n\t\n\tFacet.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Facet transform\",\n\t \"description\": \"A special aggregate transform that organizes a data set into groups or \\\"facets\\\".\",\n\t \"type\": \"object\",\n\t \"properties\": dl.extend({}, Aggregate.schema.properties, {\n\t \"type\": {\"enum\": [\"facet\"]},\n\t \"transform\": {\"$ref\": \"#/defs/transform\"}\n\t }),\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 114 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar df = __webpack_require__(4),\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction Filter(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {test: {type: 'expr'}});\n\t\n\t this._skip = {};\n\t return this.router(true);\n\t}\n\t\n\tvar prototype = (Filter.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Filter;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['filtering']);\n\t\n\t var output = df.ChangeSet.create(input),\n\t skip = this._skip,\n\t test = this.param('test');\n\t\n\t input.rem.forEach(function(x) {\n\t if (skip[x._id] !== 1) output.rem.push(x);\n\t else skip[x._id] = 0;\n\t });\n\t\n\t input.add.forEach(function(x) {\n\t if (test(x)) output.add.push(x);\n\t else skip[x._id] = 1;\n\t });\n\t\n\t input.mod.forEach(function(x) {\n\t var b = test(x),\n\t s = (skip[x._id] === 1);\n\t if (b && s) {\n\t skip[x._id] = 0;\n\t output.add.push(x);\n\t } else if (b && !s) {\n\t output.mod.push(x);\n\t } else if (!b && s) {\n\t // do nothing, keep skip true\n\t } else { // !b && !s\n\t output.rem.push(x);\n\t skip[x._id] = 1;\n\t }\n\t });\n\t\n\t return output;\n\t};\n\t\n\tmodule.exports = Filter;\n\t\n\tFilter.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Filter transform\",\n\t \"description\": \"Filters elements from a data set to remove unwanted items.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"filter\"]},\n\t \"test\": {\n\t \"type\": \"string\",\n\t \"description\": \"A string containing an expression (in JavaScript syntax) for the filter predicate.\"\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"test\"]\n\t};\n\n\n/***/ },\n/* 115 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar df = __webpack_require__(4),\n\t Tuple = df.Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction Fold(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t fields: {type: 'array'}\n\t });\n\t\n\t this._output = {key: 'key', value: 'value'};\n\t this._cache = {};\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Fold.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Fold;\n\t\n\tprototype._reset = function(input, output) {\n\t for (var id in this._cache) {\n\t output.rem.push.apply(output.rem, this._cache[id]);\n\t }\n\t this._cache = {};\n\t};\n\t\n\tprototype._tuple = function(x, i, len) {\n\t var list = this._cache[x._id] || (this._cache[x._id] = Array(len));\n\t return list[i] ? Tuple.rederive(x, list[i]) : (list[i] = Tuple.derive(x));\n\t};\n\t\n\tprototype._fn = function(data, on, out) {\n\t var i, j, n, m, d, t;\n\t for (i=0, n=data.length; i', default: __webpack_require__(117).size},\n\t bound: {type: 'value', default: true},\n\t links: {type: 'data'},\n\t\n\t // TODO: for now force these to be value params only (pun-intended)\n\t // Can update to include fields after Parameter refactoring.\n\t linkStrength: {type: 'value', default: 1},\n\t linkDistance: {type: 'value', default: 20},\n\t charge: {type: 'value', default: -30},\n\t\n\t chargeDistance: {type: 'value', default: Infinity},\n\t friction: {type: 'value', default: 0.9},\n\t theta: {type: 'value', default: 0.8},\n\t gravity: {type: 'value', default: 0.1},\n\t alpha: {type: 'value', default: 0.1},\n\t iterations: {type: 'value', default: 500},\n\t\n\t interactive: {type: 'value', default: this._interactive},\n\t active: {type: 'value', default: this._prev},\n\t fixed: {type: 'data'}\n\t });\n\t\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y'\n\t };\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Force.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Force;\n\t\n\tprototype.transform = function(nodeInput, reset) {\n\t log.debug(nodeInput, ['force']);\n\t reset = reset - (nodeInput.signals.active ? 1 : 0);\n\t\n\t // get variables\n\t var interactive = this.param('interactive'),\n\t linkSource = this.param('links').source,\n\t linkInput = linkSource.last(),\n\t active = this.param('active'),\n\t output = this._output,\n\t layout = this._layout,\n\t nodes = this._nodes,\n\t links = this._links;\n\t\n\t // configure nodes, links and layout\n\t if (linkInput.stamp < nodeInput.stamp) linkInput = null;\n\t this.configure(nodeInput, linkInput, interactive, reset);\n\t\n\t // run batch layout\n\t if (!interactive) {\n\t var iterations = this.param('iterations');\n\t for (var i=0; i'},\n\t translate: {type: 'array', default: __webpack_require__(117).center},\n\t rotate: {type: 'array'},\n\t scale: {type: 'value'},\n\t precision: {type: 'value'},\n\t clipAngle: {type: 'value'},\n\t clipExtent: {type: 'value'}\n\t};\n\t\n\tGeo.d3Projection = function() {\n\t var p = this.param('projection'),\n\t param = Geo.Parameters,\n\t proj, name, value;\n\t\n\t if (p !== this._mode) {\n\t this._mode = p;\n\t this._projection = d3.geo[p]();\n\t }\n\t proj = this._projection;\n\t\n\t for (name in param) {\n\t if (name === 'projection' || !proj[name]) continue;\n\t value = this.param(name);\n\t if (value === undefined || (dl.isArray(value) && value.length === 0)) {\n\t continue;\n\t }\n\t if (value !== proj[name]()) {\n\t proj[name](value);\n\t }\n\t }\n\t\n\t return proj;\n\t};\n\t\n\tvar prototype = (Geo.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Geo;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['geo']);\n\t\n\t var output = this._output,\n\t lon = this.param('lon').accessor,\n\t lat = this.param('lat').accessor,\n\t proj = Geo.d3Projection.call(this);\n\t\n\t function set(t) {\n\t var ll = [lon(t), lat(t)];\n\t var xy = proj(ll) || [null, null];\n\t Tuple.set(t, output.x, xy[0]);\n\t Tuple.set(t, output.y, xy[1]);\n\t }\n\t\n\t input.add.forEach(set);\n\t if (this.reevaluate(input)) {\n\t input.mod.forEach(set);\n\t input.rem.forEach(set);\n\t }\n\t\n\t input.fields[output.x] = 1;\n\t input.fields[output.y] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = Geo;\n\t\n\tGeo.baseSchema = {\n\t \"projection\": {\n\t \"description\": \"The type of cartographic projection to use.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"mercator\"\n\t },\n\t \"center\": {\n\t \"description\": \"The center of the projection.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"translate\": {\n\t \"description\": \"The translation of the projection.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"rotate\": {\n\t \"description\": \"The rotation of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"scale\": {\n\t \"description\": \"The scale of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"precision\": {\n\t \"description\": \"The desired precision of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"clipAngle\": {\n\t \"description\": \"The clip angle of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"clipExtent\": {\n\t \"description\": \"The clip extent of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t }\n\t};\n\t\n\tGeo.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Geo transform\",\n\t \"description\": \"Performs a cartographic projection. Given longitude and latitude values, sets corresponding x and y properties for a mark.\",\n\t \"type\": \"object\",\n\t \"properties\": dl.extend({\n\t \"type\": {\"enum\": [\"geo\"]},\n\t \"lon\": {\n\t \"description\": \"The input longitude values.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"lat\": {\n\t \"description\": \"The input latitude values.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n\t \"y\": {\"type\": \"string\", \"default\": \"layout_y\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t }, Geo.baseSchema),\n\t \"required\": [\"type\", \"lon\", \"lat\"],\n\t \"additionalProperties\": false\n\t};\n\t\n\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Geo = __webpack_require__(119),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction GeoPath(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, Geo.Parameters);\n\t Transform.addParameters(this, {\n\t field: {type: 'field', default: null},\n\t });\n\t\n\t this._output = {\n\t 'path': 'layout_path'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (GeoPath.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = GeoPath;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['geopath']);\n\t\n\t var output = this._output,\n\t geojson = this.param('field').accessor || dl.identity,\n\t proj = Geo.d3Projection.call(this),\n\t path = d3.geo.path().projection(proj);\n\t\n\t function set(t) {\n\t Tuple.set(t, output.path, path(geojson(t)));\n\t }\n\t\n\t input.add.forEach(set);\n\t if (this.reevaluate(input)) {\n\t input.mod.forEach(set);\n\t input.rem.forEach(set);\n\t }\n\t\n\t input.fields[output.path] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = GeoPath;\n\t\n\tGeoPath.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"GeoPath transform\",\n\t \"description\": \"Creates paths for geographic regions, such as countries, states and counties.\",\n\t \"type\": \"object\",\n\t \"properties\": dl.extend({\n\t \"type\": {\"enum\": [\"geopath\"]},\n\t \"field\": {\n\t \"description\": \"The data field containing GeoJSON Feature data.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t }, Geo.baseSchema),\n\t \"required\": [\"type\"],\n\t \"additionalProperties\": false\n\t};\n\n/***/ },\n/* 121 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Hierarchy(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t // hierarchy parameters\n\t sort: {type: 'array', default: null},\n\t children: {type: 'field', default: 'children'},\n\t parent: {type: 'field', default: 'parent'},\n\t field: {type: 'value', default: null},\n\t // layout parameters\n\t mode: {type: 'value', default: 'tidy'}, // tidy, cluster, partition\n\t size: {type: 'array', default: __webpack_require__(117).size},\n\t nodesize: {type: 'array', default: null},\n\t orient: {type: 'value', default: 'cartesian'}\n\t });\n\t\n\t this._mode = null;\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y',\n\t 'width': 'layout_width',\n\t 'height': 'layout_height',\n\t 'depth': 'layout_depth'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar PARTITION = 'partition';\n\t\n\tvar SEPARATION = {\n\t cartesian: function(a, b) { return (a.parent === b.parent ? 1 : 2); },\n\t radial: function(a, b) { return (a.parent === b.parent ? 1 : 2) / a.depth; }\n\t};\n\t\n\tvar prototype = (Hierarchy.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Hierarchy;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['hierarchy layout']);\n\t\n\t // get variables\n\t var layout = this._layout,\n\t output = this._output,\n\t mode = this.param('mode'),\n\t sort = this.param('sort'),\n\t nodesz = this.param('nodesize'),\n\t parent = this.param('parent').accessor,\n\t root = data.filter(function(d) { return parent(d) === null; })[0];\n\t\n\t if (mode !== this._mode) {\n\t this._mode = mode;\n\t if (mode === 'tidy') mode = 'tree';\n\t layout = (this._layout = d3.layout[mode]());\n\t }\n\t\n\t input.fields[output.x] = 1;\n\t input.fields[output.y] = 1;\n\t input.fields[output.depth] = 1;\n\t if (mode === PARTITION) {\n\t input.fields[output.width] = 1;\n\t input.fields[output.height] = 1;\n\t layout.value(this.param('field').accessor);\n\t } else {\n\t layout.separation(SEPARATION[this.param('orient')]);\n\t }\n\t\n\t if (nodesz.length && mode !== PARTITION) {\n\t layout.nodeSize(nodesz);\n\t } else {\n\t layout.size(this.param('size'));\n\t }\n\t\n\t layout\n\t .sort(sort.field.length ? dl.comparator(sort.field) : null)\n\t .children(this.param('children').accessor)\n\t .nodes(root);\n\t\n\t // copy layout values to nodes\n\t data.forEach(function(n) {\n\t Tuple.set(n, output.x, n.x);\n\t Tuple.set(n, output.y, n.y);\n\t Tuple.set(n, output.depth, n.depth);\n\t if (mode === PARTITION) {\n\t Tuple.set(n, output.width, n.dx);\n\t Tuple.set(n, output.height, n.dy);\n\t }\n\t });\n\t\n\t // return changeset\n\t return input;\n\t};\n\t\n\tmodule.exports = Hierarchy;\n\t\n\tHierarchy.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Hierarchy transform\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"hierarchy\"]},\n\t \"sort\": {\n\t \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"children\": {\n\t \"description\": \"The data field for the children node array\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"children\"\n\t },\n\t \"parent\": {\n\t \"description\": \"The data field for the parent node\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"parent\"\n\t },\n\t \"field\": {\n\t \"description\": \"The value for the area of each leaf-level node for partition layouts.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"mode\": {\n\t \"description\": \"The layout algorithm mode to use.\",\n\t \"oneOf\": [\n\t {\"enum\": [\"tidy\", \"cluster\", \"partition\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"tidy\"\n\t },\n\t \"orient\": {\n\t \"description\": \"The layout orientation to use.\",\n\t \"oneOf\": [\n\t {\"enum\": [\"cartesian\", \"radial\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"cartesian\"\n\t },\n\t \"size\": {\n\t \"description\": \"The dimensions of the tree layout\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": [500, 500]\n\t },\n\t \"nodesize\": {\n\t \"description\": \"Sets a fixed x,y size for each node (overrides the size parameter)\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": null\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n\t \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n\t \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n\t \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n\t \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t Tuple = __webpack_require__(4).Tuple,\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Impute(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'},\n\t orderby: {type: 'array'},\n\t field: {type: 'field'},\n\t method: {type: 'value', default: 'value'},\n\t value: {type: 'value', default: 0}\n\t });\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Impute.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Impute;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['imputing']);\n\t\n\t var groupby = this.param('groupby'),\n\t orderby = this.param('orderby'),\n\t method = this.param('method'),\n\t value = this.param('value'),\n\t field = this.param('field'),\n\t get = field.accessor,\n\t name = field.field,\n\t prev = this._imputed || [], curr = [],\n\t groups = partition(data, groupby.accessor, orderby.accessor),\n\t domain = groups.domain,\n\t group, i, j, n, m, t;\n\t\n\t function getval(x) {\n\t return x == null ? null : get(x);\n\t }\n\t\n\t for (j=0, m=groups.length; j'},\n\t keys: {type: 'array', default: ['data']},\n\t default: {type: 'value'}\n\t });\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Lookup.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Lookup;\n\t\n\tprototype.transform = function(input, reset) {\n\t log.debug(input, ['lookup']);\n\t\n\t var on = this.param('on'),\n\t onLast = on.source.last(),\n\t onData = on.source.values(),\n\t onKey = this.param('onKey'),\n\t onF = onKey.field,\n\t keys = this.param('keys'),\n\t get = keys.accessor,\n\t as = this.param('as'),\n\t defaultValue = this.param('default'),\n\t lut = this._lut,\n\t i, v;\n\t\n\t // build lookup table on init, withKey modified, or tuple add/rem\n\t if (lut == null || this._on !== onF || onF && onLast.fields[onF] ||\n\t onLast.add.length || onLast.rem.length)\n\t {\n\t if (onF) { // build hash from withKey field\n\t onKey = onKey.accessor;\n\t for (lut={}, i=0; i'} });\n\t this.router(true);\n\t}\n\t\n\tvar prototype = (Sort.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Sort;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['sorting']);\n\t\n\t if (input.add.length || input.mod.length || input.rem.length) {\n\t input.sort = dl.comparator(this.param('by').field);\n\t }\n\t return input;\n\t};\n\t\n\tmodule.exports = Sort;\n\t\n\tSort.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Sort transform\",\n\t \"description\": \"Sorts the values of a data set.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"sort\"]},\n\t \"by\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n\t ],\n\t \"description\": \"A list of fields to use as sort criteria.\"\n\t }\n\t },\n\t \"required\": [\"type\", \"by\"]\n\t};\n\n\n/***/ },\n/* 127 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Stack(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'},\n\t sortby: {type: 'array'},\n\t field: {type: 'field'},\n\t offset: {type: 'value', default: 'zero'}\n\t });\n\t\n\t this._output = {\n\t 'start': 'layout_start',\n\t 'end': 'layout_end',\n\t 'mid': 'layout_mid'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Stack.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Stack;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['stacking']);\n\t\n\t var groupby = this.param('groupby').accessor,\n\t sortby = dl.comparator(this.param('sortby').field),\n\t field = this.param('field').accessor,\n\t offset = this.param('offset'),\n\t output = this._output;\n\t\n\t // partition, sum, and sort the stack groups\n\t var groups = partition(data, groupby, sortby, field);\n\t\n\t // compute stack layouts per group\n\t for (var i=0, max=groups.max; i max) max = s;\n\t if (sortby != null) g.sort(sortby);\n\t }\n\t groups.max = max;\n\t\n\t return groups;\n\t}\n\t\n\tmodule.exports = Stack;\n\t\n\tStack.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Stack transform\",\n\t \"description\": \"Computes layout values for stacked graphs, as in stacked bar charts or stream graphs.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"stack\"]},\n\t \"groupby\": {\n\t \"description\": \"A list of fields to split the data into groups (stacks).\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t },\n\t \"sortby\": {\n\t \"description\": \"A list of fields to determine the sort order of stacks.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t },\n\t \"field\": {\n\t \"description\": \"The data field that determines the thickness/height of stacks.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"offset\": {\n\t \"description\": \"The baseline offset\",\n\t \"oneOf\": [{\"enum\": [\"zero\", \"center\", \"normalize\"]}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"zero\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"start\": {\"type\": \"string\", \"default\": \"layout_start\"},\n\t \"end\": {\"type\": \"string\", \"default\": \"layout_end\"},\n\t \"mid\": {\"type\": \"string\", \"default\": \"layout_mid\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"groupby\", \"field\"]\n\t};\n\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Treeify(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'}\n\t });\n\t\n\t this._output = {\n\t 'children': 'children',\n\t 'parent': 'parent'\n\t };\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Treeify.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Treeify;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['treeifying']);\n\t\n\t var fields = this.param('groupby').field,\n\t childField = this._output.children,\n\t parentField = this._output.parent,\n\t summary = [{name:'*', ops: ['values'], as: [childField]}],\n\t aggrs = fields.map(function(f) {\n\t return dl.groupby(f).summarize(summary);\n\t }),\n\t prev = this._internal || [], curr = [], i, n;\n\t\n\t function level(index, node, values) {\n\t var vals = aggrs[index].execute(values);\n\t\n\t node[childField] = vals;\n\t vals.forEach(function(n) {\n\t n[parentField] = node;\n\t curr.push(Tuple.ingest(n));\n\t if (index+1 < fields.length) level(index+1, n, n[childField]);\n\t else n[childField].forEach(function(c) { c[parentField] = n; });\n\t });\n\t }\n\t\n\t var root = Tuple.ingest({});\n\t root[parentField] = null;\n\t curr.push(root);\n\t level(0, root, data);\n\t\n\t // update changeset with internal nodes\n\t for (i=0, n=curr.length; i', default: ['-value']},\n\t children: {type: 'field', default: 'children'},\n\t parent: {type: 'field', default: 'parent'},\n\t field: {type: 'field', default: 'value'},\n\t // treemap parameters\n\t size: {type: 'array', default: __webpack_require__(117).size},\n\t round: {type: 'value', default: true},\n\t sticky: {type: 'value', default: false},\n\t ratio: {type: 'value', default: defaultRatio},\n\t padding: {type: 'value', default: null},\n\t mode: {type: 'value', default: 'squarify'}\n\t });\n\t\n\t this._layout = d3.layout.treemap();\n\t\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y',\n\t 'width': 'layout_width',\n\t 'height': 'layout_height',\n\t 'depth': 'layout_depth',\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Treemap.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Treemap;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['treemap']);\n\t\n\t // get variables\n\t var layout = this._layout,\n\t output = this._output,\n\t sticky = this.param('sticky'),\n\t parent = this.param('parent').accessor,\n\t root = data.filter(function(d) { return parent(d) === null; })[0];\n\t\n\t // layout.sticky resets state _regardless_ of input value\n\t // so, we perform out own check first\n\t if (layout.sticky() !== sticky) { layout.sticky(sticky); }\n\t\n\t // configure layout\n\t layout\n\t .sort(dl.comparator(this.param('sort').field))\n\t .children(this.param('children').accessor)\n\t .value(this.param('field').accessor)\n\t .size(this.param('size'))\n\t .round(this.param('round'))\n\t .ratio(this.param('ratio'))\n\t .padding(this.param('padding'))\n\t .mode(this.param('mode'))\n\t .nodes(root);\n\t\n\t // copy layout values to nodes\n\t data.forEach(function(n) {\n\t Tuple.set(n, output.x, n.x);\n\t Tuple.set(n, output.y, n.y);\n\t Tuple.set(n, output.width, n.dx);\n\t Tuple.set(n, output.height, n.dy);\n\t Tuple.set(n, output.depth, n.depth);\n\t });\n\t\n\t // return changeset\n\t input.fields[output.x] = 1;\n\t input.fields[output.y] = 1;\n\t input.fields[output.width] = 1;\n\t input.fields[output.height] = 1;\n\t input.fields[output.depth] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = Treemap;\n\t\n\tTreemap.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Treemap transform\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"treemap\"]},\n\t \"sort\": {\n\t \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": [\"-value\"]\n\t },\n\t \"children\": {\n\t \"description\": \"The data field for the children node array\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"children\"\n\t },\n\t \"parent\": {\n\t \"description\": \"The data field for the parent node\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"parent\"\n\t },\n\t \"field\": {\n\t \"description\": \"The values to use to determine the area of each leaf-level treemap cell.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"mode\": {\n\t \"description\": \"The treemap layout algorithm to use.\",\n\t \"oneOf\": [\n\t {\"enum\": [\"squarify\", \"slice\", \"dice\", \"slice-dice\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"squarify\"\n\t },\n\t \"size\": {\n\t \"description\": \"The dimensions of the treemap layout\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": [500, 500]\n\t },\n\t \"round\": {\n\t \"description\": \"If true, treemap cell dimensions will be rounded to integer pixels.\",\n\t \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": true\n\t },\n\t \"sticky\": {\n\t \"description\": \"If true, repeated runs of the treemap will use cached partition boundaries.\",\n\t \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": false\n\t },\n\t \"ratio\": {\n\t \"description\": \"The target aspect ratio for the layout to optimize.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": defaultRatio\n\t },\n\t \"padding\": {\n\t \"oneOf\": [\n\t {\"type\": \"number\"},\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 4,\n\t \"maxItems\": 4\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"description\": \"he padding (in pixels) to provide around internal nodes in the treemap.\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n\t \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n\t \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n\t \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n\t \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 130 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t Tuple = __webpack_require__(9),\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Voronoi(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t clipExtent: {type: 'array', default: __webpack_require__(117).extent},\n\t x: {type: 'field', default: 'layout_x'},\n\t y: {type: 'field', default: 'layout_y'}\n\t });\n\t\n\t this._layout = d3.geom.voronoi();\n\t this._output = {'path': 'layout_path'};\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Voronoi.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Voronoi;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['voronoi']);\n\t\n\t // get variables\n\t var pathname = this._output.path;\n\t\n\t // configure layout\n\t var polygons = this._layout\n\t .clipExtent(this.param('clipExtent'))\n\t .x(this.param('x').accessor)\n\t .y(this.param('y').accessor)\n\t (data);\n\t\n\t // build and assign path strings\n\t for (var i=0; i', default: __webpack_require__(117).size},\n\t text: {type: 'field', default: 'data'},\n\t rotate: {type: 'field|value', default: 0},\n\t font: {type: 'field|value', default: {value: 'sans-serif'}},\n\t fontSize: {type: 'field|value', default: 14},\n\t fontStyle: {type: 'field|value', default: {value: 'normal'}},\n\t fontWeight: {type: 'field|value', default: {value: 'normal'}},\n\t fontScale: {type: 'array', default: [10, 50]},\n\t padding: {type: 'value', default: 1},\n\t spiral: {type: 'value', default: 'archimedean'}\n\t });\n\t\n\t this._layout = d3_cloud().canvas(canvas.instance);\n\t\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y',\n\t 'font': 'layout_font',\n\t 'fontSize': 'layout_fontSize',\n\t 'fontStyle': 'layout_fontStyle',\n\t 'fontWeight': 'layout_fontWeight',\n\t 'rotate': 'layout_rotate',\n\t };\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Wordcloud.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Wordcloud;\n\t\n\tfunction get(p) {\n\t return (p && p.accessor) || p;\n\t}\n\t\n\tfunction wrap(tuple) {\n\t var x = Object.create(tuple);\n\t x._tuple = tuple;\n\t return x;\n\t}\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['wordcloud']);\n\t\n\t // get variables\n\t var layout = this._layout,\n\t output = this._output,\n\t fontSize = this.param('fontSize'),\n\t range = fontSize.accessor && this.param('fontScale'),\n\t size, scale;\n\t fontSize = fontSize.accessor || d3.functor(fontSize);\n\t\n\t // create font size scaling function as needed\n\t if (range.length) {\n\t scale = d3.scale.sqrt()\n\t .domain(dl.extent(data, size=fontSize))\n\t .range(range);\n\t fontSize = function(x) { return scale(size(x)); };\n\t }\n\t\n\t // configure layout\n\t layout\n\t .size(this.param('size'))\n\t .text(get(this.param('text')))\n\t .padding(this.param('padding'))\n\t .spiral(this.param('spiral'))\n\t .rotate(get(this.param('rotate')))\n\t .font(get(this.param('font')))\n\t .fontStyle(get(this.param('fontStyle')))\n\t .fontWeight(get(this.param('fontWeight')))\n\t .fontSize(fontSize)\n\t .words(data.map(wrap)) // wrap to avoid tuple writes\n\t .on('end', function(words) {\n\t var size = layout.size(),\n\t dx = size[0] >> 1,\n\t dy = size[1] >> 1,\n\t w, t, i, len;\n\t\n\t for (i=0, len=words.length; i> 5,\n\t ch = 1 << 11;\n\t\n\tmodule.exports = function() {\n\t var size = [256, 256],\n\t text = cloudText,\n\t font = cloudFont,\n\t fontSize = cloudFontSize,\n\t fontStyle = cloudFontNormal,\n\t fontWeight = cloudFontNormal,\n\t rotate = cloudRotate,\n\t padding = cloudPadding,\n\t spiral = archimedeanSpiral,\n\t words = [],\n\t timeInterval = Infinity,\n\t event = dispatch(\"word\", \"end\"),\n\t timer = null,\n\t random = Math.random,\n\t cloud = {},\n\t canvas = cloudCanvas;\n\t\n\t cloud.canvas = function(_) {\n\t return arguments.length ? (canvas = functor(_), cloud) : canvas;\n\t };\n\t\n\t cloud.start = function() {\n\t var contextAndRatio = getContext(canvas()),\n\t board = zeroArray((size[0] >> 5) * size[1]),\n\t bounds = null,\n\t n = words.length,\n\t i = -1,\n\t tags = [],\n\t data = words.map(function(d, i) {\n\t d.text = text.call(this, d, i);\n\t d.font = font.call(this, d, i);\n\t d.style = fontStyle.call(this, d, i);\n\t d.weight = fontWeight.call(this, d, i);\n\t d.rotate = rotate.call(this, d, i);\n\t d.size = ~~fontSize.call(this, d, i);\n\t d.padding = padding.call(this, d, i);\n\t return d;\n\t }).sort(function(a, b) { return b.size - a.size; });\n\t\n\t if (timer) clearInterval(timer);\n\t timer = setInterval(step, 0);\n\t step();\n\t\n\t return cloud;\n\t\n\t function step() {\n\t var start = Date.now();\n\t while (Date.now() - start < timeInterval && ++i < n && timer) {\n\t var d = data[i];\n\t d.x = (size[0] * (random() + .5)) >> 1;\n\t d.y = (size[1] * (random() + .5)) >> 1;\n\t cloudSprite(contextAndRatio, d, data, i);\n\t if (d.hasText && place(board, d, bounds)) {\n\t tags.push(d);\n\t event.word(d);\n\t if (bounds) cloudBounds(bounds, d);\n\t else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n\t // Temporary hack\n\t d.x -= size[0] >> 1;\n\t d.y -= size[1] >> 1;\n\t }\n\t }\n\t if (i >= n) {\n\t cloud.stop();\n\t event.end(tags, bounds);\n\t }\n\t }\n\t }\n\t\n\t cloud.stop = function() {\n\t if (timer) {\n\t clearInterval(timer);\n\t timer = null;\n\t }\n\t return cloud;\n\t };\n\t\n\t function getContext(canvas) {\n\t canvas.width = canvas.height = 1;\n\t var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n\t canvas.width = (cw << 5) / ratio;\n\t canvas.height = ch / ratio;\n\t\n\t var context = canvas.getContext(\"2d\");\n\t context.fillStyle = context.strokeStyle = \"red\";\n\t context.textAlign = \"center\";\n\t\n\t return {context: context, ratio: ratio};\n\t }\n\t\n\t function place(board, tag, bounds) {\n\t var perimeter = [{x: 0, y: 0}, {x: size[0], y: size[1]}],\n\t startX = tag.x,\n\t startY = tag.y,\n\t maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n\t s = spiral(size),\n\t dt = random() < .5 ? 1 : -1,\n\t t = -dt,\n\t dxdy,\n\t dx,\n\t dy;\n\t\n\t while (dxdy = s(t += dt)) {\n\t dx = ~~dxdy[0];\n\t dy = ~~dxdy[1];\n\t\n\t if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\t\n\t tag.x = startX + dx;\n\t tag.y = startY + dy;\n\t\n\t if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n\t tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n\t // TODO only check for collisions within current bounds.\n\t if (!bounds || !cloudCollide(tag, board, size[0])) {\n\t if (!bounds || collideRects(tag, bounds)) {\n\t var sprite = tag.sprite,\n\t w = tag.width >> 5,\n\t sw = size[0] >> 5,\n\t lx = tag.x - (w << 4),\n\t sx = lx & 0x7f,\n\t msx = 32 - sx,\n\t h = tag.y1 - tag.y0,\n\t x = (tag.y + tag.y0) * sw + (lx >> 5),\n\t last;\n\t for (var j = 0; j < h; j++) {\n\t last = 0;\n\t for (var i = 0; i <= w; i++) {\n\t board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n\t }\n\t x += sw;\n\t }\n\t delete tag.sprite;\n\t return true;\n\t }\n\t }\n\t }\n\t return false;\n\t }\n\t\n\t cloud.timeInterval = function(_) {\n\t return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n\t };\n\t\n\t cloud.words = function(_) {\n\t return arguments.length ? (words = _, cloud) : words;\n\t };\n\t\n\t cloud.size = function(_) {\n\t return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n\t };\n\t\n\t cloud.font = function(_) {\n\t return arguments.length ? (font = functor(_), cloud) : font;\n\t };\n\t\n\t cloud.fontStyle = function(_) {\n\t return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n\t };\n\t\n\t cloud.fontWeight = function(_) {\n\t return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n\t };\n\t\n\t cloud.rotate = function(_) {\n\t return arguments.length ? (rotate = functor(_), cloud) : rotate;\n\t };\n\t\n\t cloud.text = function(_) {\n\t return arguments.length ? (text = functor(_), cloud) : text;\n\t };\n\t\n\t cloud.spiral = function(_) {\n\t return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n\t };\n\t\n\t cloud.fontSize = function(_) {\n\t return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n\t };\n\t\n\t cloud.padding = function(_) {\n\t return arguments.length ? (padding = functor(_), cloud) : padding;\n\t };\n\t\n\t cloud.random = function(_) {\n\t return arguments.length ? (random = _, cloud) : random;\n\t };\n\t\n\t cloud.on = function() {\n\t var value = event.on.apply(event, arguments);\n\t return value === event ? cloud : value;\n\t };\n\t\n\t return cloud;\n\t};\n\t\n\tfunction cloudText(d) {\n\t return d.text;\n\t}\n\t\n\tfunction cloudFont() {\n\t return \"serif\";\n\t}\n\t\n\tfunction cloudFontNormal() {\n\t return \"normal\";\n\t}\n\t\n\tfunction cloudFontSize(d) {\n\t return Math.sqrt(d.value);\n\t}\n\t\n\tfunction cloudRotate() {\n\t return (~~(Math.random() * 6) - 3) * 30;\n\t}\n\t\n\tfunction cloudPadding() {\n\t return 1;\n\t}\n\t\n\t// Fetches a monochrome sprite bitmap for the specified text.\n\t// Load in batches for speed.\n\tfunction cloudSprite(contextAndRatio, d, data, di) {\n\t if (d.sprite) return;\n\t var c = contextAndRatio.context,\n\t ratio = contextAndRatio.ratio;\n\t\n\t c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n\t var x = 0,\n\t y = 0,\n\t maxh = 0,\n\t n = data.length;\n\t --di;\n\t while (++di < n) {\n\t d = data[di];\n\t c.save();\n\t c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n\t var w = c.measureText(d.text + \"m\").width * ratio,\n\t h = d.size << 1;\n\t if (d.rotate) {\n\t var sr = Math.sin(d.rotate * cloudRadians),\n\t cr = Math.cos(d.rotate * cloudRadians),\n\t wcr = w * cr,\n\t wsr = w * sr,\n\t hcr = h * cr,\n\t hsr = h * sr;\n\t w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n\t h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n\t } else {\n\t w = (w + 0x1f) >> 5 << 5;\n\t }\n\t if (h > maxh) maxh = h;\n\t if (x + w >= (cw << 5)) {\n\t x = 0;\n\t y += maxh;\n\t maxh = 0;\n\t }\n\t if (y + h >= ch) break;\n\t c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n\t if (d.rotate) c.rotate(d.rotate * cloudRadians);\n\t c.fillText(d.text, 0, 0);\n\t if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n\t c.restore();\n\t d.width = w;\n\t d.height = h;\n\t d.xoff = x;\n\t d.yoff = y;\n\t d.x1 = w >> 1;\n\t d.y1 = h >> 1;\n\t d.x0 = -d.x1;\n\t d.y0 = -d.y1;\n\t d.hasText = true;\n\t x += w;\n\t }\n\t var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n\t sprite = [];\n\t while (--di >= 0) {\n\t d = data[di];\n\t if (!d.hasText) continue;\n\t var w = d.width,\n\t w32 = w >> 5,\n\t h = d.y1 - d.y0;\n\t // Zero the buffer\n\t for (var i = 0; i < h * w32; i++) sprite[i] = 0;\n\t x = d.xoff;\n\t if (x == null) return;\n\t y = d.yoff;\n\t var seen = 0,\n\t seenRow = -1;\n\t for (var j = 0; j < h; j++) {\n\t for (var i = 0; i < w; i++) {\n\t var k = w32 * j + (i >> 5),\n\t m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n\t sprite[k] |= m;\n\t seen |= m;\n\t }\n\t if (seen) seenRow = j;\n\t else {\n\t d.y0++;\n\t h--;\n\t j--;\n\t y++;\n\t }\n\t }\n\t d.y1 = d.y0 + seenRow;\n\t d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n\t }\n\t}\n\t\n\t// Use mask-based collision detection.\n\tfunction cloudCollide(tag, board, sw) {\n\t sw >>= 5;\n\t var sprite = tag.sprite,\n\t w = tag.width >> 5,\n\t lx = tag.x - (w << 4),\n\t sx = lx & 0x7f,\n\t msx = 32 - sx,\n\t h = tag.y1 - tag.y0,\n\t x = (tag.y + tag.y0) * sw + (lx >> 5),\n\t last;\n\t for (var j = 0; j < h; j++) {\n\t last = 0;\n\t for (var i = 0; i <= w; i++) {\n\t if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n\t & board[x + i]) return true;\n\t }\n\t x += sw;\n\t }\n\t return false;\n\t}\n\t\n\tfunction cloudBounds(bounds, d) {\n\t var b0 = bounds[0],\n\t b1 = bounds[1];\n\t if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n\t if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n\t if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n\t if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n\t}\n\t\n\tfunction collideRects(a, b) {\n\t return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n\t}\n\t\n\tfunction archimedeanSpiral(size) {\n\t var e = size[0] / size[1];\n\t return function(t) {\n\t return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n\t };\n\t}\n\t\n\tfunction rectangularSpiral(size) {\n\t var dy = 4,\n\t dx = dy * size[0] / size[1],\n\t x = 0,\n\t y = 0;\n\t return function(t) {\n\t var sign = t < 0 ? -1 : 1;\n\t // See triangular numbers: T_n = n * (n + 1) / 2.\n\t switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n\t case 0: x += dx; break;\n\t case 1: y += dy; break;\n\t case 2: x -= dx; break;\n\t default: y -= dy; break;\n\t }\n\t return [x, y];\n\t };\n\t}\n\t\n\t// TODO reuse arrays?\n\tfunction zeroArray(n) {\n\t var a = [],\n\t i = -1;\n\t while (++i < n) a[i] = 0;\n\t return a;\n\t}\n\t\n\tfunction cloudCanvas() {\n\t return document.createElement(\"canvas\");\n\t}\n\t\n\tfunction functor(d) {\n\t return typeof d === \"function\" ? d : function() { return d; };\n\t}\n\t\n\tvar spirals = {\n\t archimedean: archimedeanSpiral,\n\t rectangular: rectangularSpiral\n\t};\n\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3_dispatch = {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t function dispatch() {\n\t return new Dispatch(arguments);\n\t }\n\t\n\t function Dispatch(types) {\n\t var i = -1,\n\t n = types.length,\n\t callbacksByType = {},\n\t callbackByName = {},\n\t type,\n\t that = this;\n\t\n\t that.on = function(type, callback) {\n\t type = parseType(type);\n\t\n\t // Return the current callback, if any.\n\t if (arguments.length < 2) {\n\t return (callback = callbackByName[type.name]) && callback.value;\n\t }\n\t\n\t // If a type was specified…\n\t if (type.type) {\n\t var callbacks = callbacksByType[type.type],\n\t callback0 = callbackByName[type.name],\n\t i;\n\t\n\t // Remove the current callback, if any, using copy-on-remove.\n\t if (callback0) {\n\t callback0.value = null;\n\t i = callbacks.indexOf(callback0);\n\t callbacksByType[type.type] = callbacks = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n\t delete callbackByName[type.name];\n\t }\n\t\n\t // Add the new callback, if any.\n\t if (callback) {\n\t callback = {value: callback};\n\t callbackByName[type.name] = callback;\n\t callbacks.push(callback);\n\t }\n\t }\n\t\n\t // Otherwise, if a null callback was specified, remove all callbacks with the given name.\n\t else if (callback == null) {\n\t for (var otherType in callbacksByType) {\n\t if (callback = callbackByName[otherType + type.name]) {\n\t callback.value = null;\n\t callbacks = callbacksByType[otherType];\n\t i = callbacks.indexOf(callback);\n\t callbacksByType[otherType] = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n\t delete callbackByName[callback.name];\n\t }\n\t }\n\t }\n\t\n\t return that;\n\t };\n\t\n\t while (++i < n) {\n\t type = types[i] + \"\";\n\t if (!type || (type in that)) throw new Error(\"illegal or duplicate type: \" + type);\n\t callbacksByType[type] = [];\n\t that[type] = applier(type);\n\t }\n\t\n\t function parseType(type) {\n\t var i = (type += \"\").indexOf(\".\"), name = type;\n\t if (i >= 0) type = type.slice(0, i); else name += \".\";\n\t if (type && !callbacksByType.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t return {type: type, name: name};\n\t }\n\t\n\t function applier(type) {\n\t return function() {\n\t var callbacks = callbacksByType[type], // Defensive reference; copy-on-remove.\n\t callbackValue,\n\t i = -1,\n\t n = callbacks.length;\n\t\n\t while (++i < n) {\n\t if (callbackValue = callbacks[i].value) {\n\t callbackValue.apply(this, arguments);\n\t }\n\t }\n\t\n\t return that;\n\t };\n\t }\n\t }\n\t\n\t dispatch.prototype = Dispatch.prototype;\n\t\n\t var version = \"0.2.6\";\n\t\n\t exports.version = version;\n\t exports.dispatch = dispatch;\n\t\n\t}));\n\n/***/ },\n/* 134 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t df = __webpack_require__(4),\n\t Node = df.Node, // jshint ignore:line\n\t Tuple = df.Tuple,\n\t Deps = df.Dependencies;\n\t\n\tvar Types = {\n\t INSERT: \"insert\",\n\t REMOVE: \"remove\",\n\t UPSERT: \"upsert\",\n\t TOGGLE: \"toggle\",\n\t CLEAR: \"clear\"\n\t};\n\t\n\tvar EMPTY = [];\n\t\n\tfunction filter(fields, value, src, dest) {\n\t var splice = true, len = fields.length, i, j, f, v;\n\t for (i = src.length - 1; i >= 0; --i) {\n\t for (j=0; j 1 ? arguments[1] : {},\n\t parser = this,\n\t\n\t peg$FAILED = {},\n\t\n\t peg$startRuleFunctions = { start: peg$parsestart },\n\t peg$startRuleFunction = peg$parsestart,\n\t\n\t peg$c0 = \",\",\n\t peg$c1 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n\t peg$c2 = function(o, m) { return [o].concat(m); },\n\t peg$c3 = function(o) { return [o]; },\n\t peg$c4 = \"[\",\n\t peg$c5 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n\t peg$c6 = \"]\",\n\t peg$c7 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n\t peg$c8 = \">\",\n\t peg$c9 = { type: \"literal\", value: \">\", description: \"\\\">\\\"\" },\n\t peg$c10 = function(f1, f2, o) {\n\t return {\n\t start: f1, middle: o, end: f2,\n\t str: '['+f1.str+', '+f2.str+'] > '+o.str};\n\t },\n\t peg$c11 = function(s, f) {\n\t s.filters = f;\n\t s.str += f.map(function(x) { return '['+x+']'; }).join('');\n\t return s;\n\t },\n\t peg$c12 = function(s) { return s; },\n\t peg$c13 = \"(\",\n\t peg$c14 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n\t peg$c15 = \")\",\n\t peg$c16 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n\t peg$c17 = function(m) {\n\t return {\n\t stream: m,\n\t str: '('+m.map(function(m) { return m.str; }).join(', ')+')'\n\t };\n\t },\n\t peg$c18 = \"@\",\n\t peg$c19 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n\t peg$c20 = \":\",\n\t peg$c21 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n\t peg$c22 = function(n, e) { return {event: e, name: n, str: '@'+n+':'+e}; },\n\t peg$c23 = function(m, e) { return {event: e, mark: m, str: m+':'+e}; },\n\t peg$c24 = function(t, e) { return {event: e, target: t, str: t+':'+e}; },\n\t peg$c25 = function(e) { return {event: e, str: e}; },\n\t peg$c26 = function(s) { return {signal: s, str: s}; },\n\t peg$c27 = \"rect\",\n\t peg$c28 = { type: \"literal\", value: \"rect\", description: \"\\\"rect\\\"\" },\n\t peg$c29 = \"symbol\",\n\t peg$c30 = { type: \"literal\", value: \"symbol\", description: \"\\\"symbol\\\"\" },\n\t peg$c31 = \"path\",\n\t peg$c32 = { type: \"literal\", value: \"path\", description: \"\\\"path\\\"\" },\n\t peg$c33 = \"arc\",\n\t peg$c34 = { type: \"literal\", value: \"arc\", description: \"\\\"arc\\\"\" },\n\t peg$c35 = \"area\",\n\t peg$c36 = { type: \"literal\", value: \"area\", description: \"\\\"area\\\"\" },\n\t peg$c37 = \"line\",\n\t peg$c38 = { type: \"literal\", value: \"line\", description: \"\\\"line\\\"\" },\n\t peg$c39 = \"rule\",\n\t peg$c40 = { type: \"literal\", value: \"rule\", description: \"\\\"rule\\\"\" },\n\t peg$c41 = \"image\",\n\t peg$c42 = { type: \"literal\", value: \"image\", description: \"\\\"image\\\"\" },\n\t peg$c43 = \"text\",\n\t peg$c44 = { type: \"literal\", value: \"text\", description: \"\\\"text\\\"\" },\n\t peg$c45 = \"group\",\n\t peg$c46 = { type: \"literal\", value: \"group\", description: \"\\\"group\\\"\" },\n\t peg$c47 = \"mousedown\",\n\t peg$c48 = { type: \"literal\", value: \"mousedown\", description: \"\\\"mousedown\\\"\" },\n\t peg$c49 = \"mouseup\",\n\t peg$c50 = { type: \"literal\", value: \"mouseup\", description: \"\\\"mouseup\\\"\" },\n\t peg$c51 = \"click\",\n\t peg$c52 = { type: \"literal\", value: \"click\", description: \"\\\"click\\\"\" },\n\t peg$c53 = \"dblclick\",\n\t peg$c54 = { type: \"literal\", value: \"dblclick\", description: \"\\\"dblclick\\\"\" },\n\t peg$c55 = \"wheel\",\n\t peg$c56 = { type: \"literal\", value: \"wheel\", description: \"\\\"wheel\\\"\" },\n\t peg$c57 = \"keydown\",\n\t peg$c58 = { type: \"literal\", value: \"keydown\", description: \"\\\"keydown\\\"\" },\n\t peg$c59 = \"keypress\",\n\t peg$c60 = { type: \"literal\", value: \"keypress\", description: \"\\\"keypress\\\"\" },\n\t peg$c61 = \"keyup\",\n\t peg$c62 = { type: \"literal\", value: \"keyup\", description: \"\\\"keyup\\\"\" },\n\t peg$c63 = \"mousewheel\",\n\t peg$c64 = { type: \"literal\", value: \"mousewheel\", description: \"\\\"mousewheel\\\"\" },\n\t peg$c65 = \"mousemove\",\n\t peg$c66 = { type: \"literal\", value: \"mousemove\", description: \"\\\"mousemove\\\"\" },\n\t peg$c67 = \"mouseout\",\n\t peg$c68 = { type: \"literal\", value: \"mouseout\", description: \"\\\"mouseout\\\"\" },\n\t peg$c69 = \"mouseover\",\n\t peg$c70 = { type: \"literal\", value: \"mouseover\", description: \"\\\"mouseover\\\"\" },\n\t peg$c71 = \"mouseenter\",\n\t peg$c72 = { type: \"literal\", value: \"mouseenter\", description: \"\\\"mouseenter\\\"\" },\n\t peg$c73 = \"touchstart\",\n\t peg$c74 = { type: \"literal\", value: \"touchstart\", description: \"\\\"touchstart\\\"\" },\n\t peg$c75 = \"touchmove\",\n\t peg$c76 = { type: \"literal\", value: \"touchmove\", description: \"\\\"touchmove\\\"\" },\n\t peg$c77 = \"touchend\",\n\t peg$c78 = { type: \"literal\", value: \"touchend\", description: \"\\\"touchend\\\"\" },\n\t peg$c79 = \"dragenter\",\n\t peg$c80 = { type: \"literal\", value: \"dragenter\", description: \"\\\"dragenter\\\"\" },\n\t peg$c81 = \"dragover\",\n\t peg$c82 = { type: \"literal\", value: \"dragover\", description: \"\\\"dragover\\\"\" },\n\t peg$c83 = \"dragleave\",\n\t peg$c84 = { type: \"literal\", value: \"dragleave\", description: \"\\\"dragleave\\\"\" },\n\t peg$c85 = function(e) { return e; },\n\t peg$c86 = /^[a-zA-Z0-9_\\-]/,\n\t peg$c87 = { type: \"class\", value: \"[a-zA-Z0-9_-]\", description: \"[a-zA-Z0-9_-]\" },\n\t peg$c88 = function(n) { return n.join(''); },\n\t peg$c89 = /^[a-zA-Z0-9\\-_ #.>+~[\\]=|\\^$*]/,\n\t peg$c90 = { type: \"class\", value: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\", description: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\" },\n\t peg$c91 = function(c) { return c.join(''); },\n\t peg$c92 = /^['\"a-zA-Z0-9_().><=! \\t-&|~]/,\n\t peg$c93 = { type: \"class\", value: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\", description: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\" },\n\t peg$c94 = function(v) { return v.join(''); },\n\t peg$c95 = /^[ \\t\\r\\n]/,\n\t peg$c96 = { type: \"class\", value: \"[ \\\\t\\\\r\\\\n]\", description: \"[ \\\\t\\\\r\\\\n]\" },\n\t\n\t peg$currPos = 0,\n\t peg$savedPos = 0,\n\t peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n\t peg$maxFailPos = 0,\n\t peg$maxFailExpected = [],\n\t peg$silentFails = 0,\n\t\n\t peg$result;\n\t\n\t if (\"startRule\" in options) {\n\t if (!(options.startRule in peg$startRuleFunctions)) {\n\t throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n\t }\n\t\n\t peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n\t }\n\t\n\t function text() {\n\t return input.substring(peg$savedPos, peg$currPos);\n\t }\n\t\n\t function location() {\n\t return peg$computeLocation(peg$savedPos, peg$currPos);\n\t }\n\t\n\t function expected(description) {\n\t throw peg$buildException(\n\t null,\n\t [{ type: \"other\", description: description }],\n\t input.substring(peg$savedPos, peg$currPos),\n\t peg$computeLocation(peg$savedPos, peg$currPos)\n\t );\n\t }\n\t\n\t function error(message) {\n\t throw peg$buildException(\n\t message,\n\t null,\n\t input.substring(peg$savedPos, peg$currPos),\n\t peg$computeLocation(peg$savedPos, peg$currPos)\n\t );\n\t }\n\t\n\t function peg$computePosDetails(pos) {\n\t var details = peg$posDetailsCache[pos],\n\t p, ch;\n\t\n\t if (details) {\n\t return details;\n\t } else {\n\t p = pos - 1;\n\t while (!peg$posDetailsCache[p]) {\n\t p--;\n\t }\n\t\n\t details = peg$posDetailsCache[p];\n\t details = {\n\t line: details.line,\n\t column: details.column,\n\t seenCR: details.seenCR\n\t };\n\t\n\t while (p < pos) {\n\t ch = input.charAt(p);\n\t if (ch === \"\\n\") {\n\t if (!details.seenCR) { details.line++; }\n\t details.column = 1;\n\t details.seenCR = false;\n\t } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n\t details.line++;\n\t details.column = 1;\n\t details.seenCR = true;\n\t } else {\n\t details.column++;\n\t details.seenCR = false;\n\t }\n\t\n\t p++;\n\t }\n\t\n\t peg$posDetailsCache[pos] = details;\n\t return details;\n\t }\n\t }\n\t\n\t function peg$computeLocation(startPos, endPos) {\n\t var startPosDetails = peg$computePosDetails(startPos),\n\t endPosDetails = peg$computePosDetails(endPos);\n\t\n\t return {\n\t start: {\n\t offset: startPos,\n\t line: startPosDetails.line,\n\t column: startPosDetails.column\n\t },\n\t end: {\n\t offset: endPos,\n\t line: endPosDetails.line,\n\t column: endPosDetails.column\n\t }\n\t };\n\t }\n\t\n\t function peg$fail(expected) {\n\t if (peg$currPos < peg$maxFailPos) { return; }\n\t\n\t if (peg$currPos > peg$maxFailPos) {\n\t peg$maxFailPos = peg$currPos;\n\t peg$maxFailExpected = [];\n\t }\n\t\n\t peg$maxFailExpected.push(expected);\n\t }\n\t\n\t function peg$buildException(message, expected, found, location) {\n\t function cleanupExpected(expected) {\n\t var i = 1;\n\t\n\t expected.sort(function(a, b) {\n\t if (a.description < b.description) {\n\t return -1;\n\t } else if (a.description > b.description) {\n\t return 1;\n\t } else {\n\t return 0;\n\t }\n\t });\n\t\n\t while (i < expected.length) {\n\t if (expected[i - 1] === expected[i]) {\n\t expected.splice(i, 1);\n\t } else {\n\t i++;\n\t }\n\t }\n\t }\n\t\n\t function buildMessage(expected, found) {\n\t function stringEscape(s) {\n\t function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\t\n\t return s\n\t .replace(/\\\\/g, '\\\\\\\\')\n\t .replace(/\"/g, '\\\\\"')\n\t .replace(/\\x08/g, '\\\\b')\n\t .replace(/\\t/g, '\\\\t')\n\t .replace(/\\n/g, '\\\\n')\n\t .replace(/\\f/g, '\\\\f')\n\t .replace(/\\r/g, '\\\\r')\n\t .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n\t .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n\t .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n\t .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n\t }\n\t\n\t var expectedDescs = new Array(expected.length),\n\t expectedDesc, foundDesc, i;\n\t\n\t for (i = 0; i < expected.length; i++) {\n\t expectedDescs[i] = expected[i].description;\n\t }\n\t\n\t expectedDesc = expected.length > 1\n\t ? expectedDescs.slice(0, -1).join(\", \")\n\t + \" or \"\n\t + expectedDescs[expected.length - 1]\n\t : expectedDescs[0];\n\t\n\t foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\t\n\t return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n\t }\n\t\n\t if (expected !== null) {\n\t cleanupExpected(expected);\n\t }\n\t\n\t return new peg$SyntaxError(\n\t message !== null ? message : buildMessage(expected, found),\n\t expected,\n\t found,\n\t location\n\t );\n\t }\n\t\n\t function peg$parsestart() {\n\t var s0;\n\t\n\t s0 = peg$parsemerged();\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsemerged() {\n\t var s0, s1, s2, s3, s4, s5;\n\t\n\t s0 = peg$currPos;\n\t s1 = peg$parseordered();\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsesep();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 44) {\n\t s3 = peg$c0;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c1); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t s4 = peg$parsesep();\n\t if (s4 !== peg$FAILED) {\n\t s5 = peg$parsemerged();\n\t if (s5 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c2(s1, s5);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parseordered();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c3(s1);\n\t }\n\t s0 = s1;\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parseordered() {\n\t var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\t\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 91) {\n\t s1 = peg$c4;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c5); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsesep();\n\t if (s2 !== peg$FAILED) {\n\t s3 = peg$parsefiltered();\n\t if (s3 !== peg$FAILED) {\n\t s4 = peg$parsesep();\n\t if (s4 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 44) {\n\t s5 = peg$c0;\n\t peg$currPos++;\n\t } else {\n\t s5 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c1); }\n\t }\n\t if (s5 !== peg$FAILED) {\n\t s6 = peg$parsesep();\n\t if (s6 !== peg$FAILED) {\n\t s7 = peg$parsefiltered();\n\t if (s7 !== peg$FAILED) {\n\t s8 = peg$parsesep();\n\t if (s8 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 93) {\n\t s9 = peg$c6;\n\t peg$currPos++;\n\t } else {\n\t s9 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c7); }\n\t }\n\t if (s9 !== peg$FAILED) {\n\t s10 = peg$parsesep();\n\t if (s10 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 62) {\n\t s11 = peg$c8;\n\t peg$currPos++;\n\t } else {\n\t s11 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c9); }\n\t }\n\t if (s11 !== peg$FAILED) {\n\t s12 = peg$parsesep();\n\t if (s12 !== peg$FAILED) {\n\t s13 = peg$parseordered();\n\t if (s13 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c10(s3, s7, s13);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$parsefiltered();\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsefiltered() {\n\t var s0, s1, s2, s3;\n\t\n\t s0 = peg$currPos;\n\t s1 = peg$parsestream();\n\t if (s1 !== peg$FAILED) {\n\t s2 = [];\n\t s3 = peg$parsefilter();\n\t if (s3 !== peg$FAILED) {\n\t while (s3 !== peg$FAILED) {\n\t s2.push(s3);\n\t s3 = peg$parsefilter();\n\t }\n\t } else {\n\t s2 = peg$FAILED;\n\t }\n\t if (s2 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c11(s1, s2);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsestream();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c12(s1);\n\t }\n\t s0 = s1;\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsestream() {\n\t var s0, s1, s2, s3, s4;\n\t\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 40) {\n\t s1 = peg$c13;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c14); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsemerged();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 41) {\n\t s3 = peg$c15;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c16); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c17(s2);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 64) {\n\t s1 = peg$c18;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c19); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsename();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 58) {\n\t s3 = peg$c20;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c21); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t s4 = peg$parseeventType();\n\t if (s4 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c22(s2, s4);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsemarkType();\n\t if (s1 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 58) {\n\t s2 = peg$c20;\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c21); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t s3 = peg$parseeventType();\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c23(s1, s3);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsecss();\n\t if (s1 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 58) {\n\t s2 = peg$c20;\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c21); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t s3 = peg$parseeventType();\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c24(s1, s3);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parseeventType();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c25(s1);\n\t }\n\t s0 = s1;\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsename();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c26(s1);\n\t }\n\t s0 = s1;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsemarkType() {\n\t var s0;\n\t\n\t if (input.substr(peg$currPos, 4) === peg$c27) {\n\t s0 = peg$c27;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c28); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 6) === peg$c29) {\n\t s0 = peg$c29;\n\t peg$currPos += 6;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c30); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c31) {\n\t s0 = peg$c31;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c32); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 3) === peg$c33) {\n\t s0 = peg$c33;\n\t peg$currPos += 3;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c34); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c35) {\n\t s0 = peg$c35;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c36); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c37) {\n\t s0 = peg$c37;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c38); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c39) {\n\t s0 = peg$c39;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c40); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c41) {\n\t s0 = peg$c41;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c42); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c43) {\n\t s0 = peg$c43;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c44); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c45) {\n\t s0 = peg$c45;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c46); }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parseeventType() {\n\t var s0;\n\t\n\t if (input.substr(peg$currPos, 9) === peg$c47) {\n\t s0 = peg$c47;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c48); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 7) === peg$c49) {\n\t s0 = peg$c49;\n\t peg$currPos += 7;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c50); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c51) {\n\t s0 = peg$c51;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c52); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c53) {\n\t s0 = peg$c53;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c54); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c55) {\n\t s0 = peg$c55;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c56); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 7) === peg$c57) {\n\t s0 = peg$c57;\n\t peg$currPos += 7;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c58); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c59) {\n\t s0 = peg$c59;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c60); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c61) {\n\t s0 = peg$c61;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c62); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 10) === peg$c63) {\n\t s0 = peg$c63;\n\t peg$currPos += 10;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c64); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c65) {\n\t s0 = peg$c65;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c66); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c67) {\n\t s0 = peg$c67;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c68); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c69) {\n\t s0 = peg$c69;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c70); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 10) === peg$c71) {\n\t s0 = peg$c71;\n\t peg$currPos += 10;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c72); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 10) === peg$c73) {\n\t s0 = peg$c73;\n\t peg$currPos += 10;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c74); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c75) {\n\t s0 = peg$c75;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c76); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c77) {\n\t s0 = peg$c77;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c78); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c79) {\n\t s0 = peg$c79;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c80); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c81) {\n\t s0 = peg$c81;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c82); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c83) {\n\t s0 = peg$c83;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c84); }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsefilter() {\n\t var s0, s1, s2, s3;\n\t\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 91) {\n\t s1 = peg$c4;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c5); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parseexpr();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 93) {\n\t s3 = peg$c6;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c7); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c85(s2);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsename() {\n\t var s0, s1, s2;\n\t\n\t s0 = peg$currPos;\n\t s1 = [];\n\t if (peg$c86.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c87); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t while (s2 !== peg$FAILED) {\n\t s1.push(s2);\n\t if (peg$c86.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c87); }\n\t }\n\t }\n\t } else {\n\t s1 = peg$FAILED;\n\t }\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c88(s1);\n\t }\n\t s0 = s1;\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsecss() {\n\t var s0, s1, s2;\n\t\n\t s0 = peg$currPos;\n\t s1 = [];\n\t if (peg$c89.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c90); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t while (s2 !== peg$FAILED) {\n\t s1.push(s2);\n\t if (peg$c89.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c90); }\n\t }\n\t }\n\t } else {\n\t s1 = peg$FAILED;\n\t }\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c91(s1);\n\t }\n\t s0 = s1;\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parseexpr() {\n\t var s0, s1, s2;\n\t\n\t s0 = peg$currPos;\n\t s1 = [];\n\t if (peg$c92.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c93); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t while (s2 !== peg$FAILED) {\n\t s1.push(s2);\n\t if (peg$c92.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c93); }\n\t }\n\t }\n\t } else {\n\t s1 = peg$FAILED;\n\t }\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c94(s1);\n\t }\n\t s0 = s1;\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsesep() {\n\t var s0, s1;\n\t\n\t s0 = [];\n\t if (peg$c95.test(input.charAt(peg$currPos))) {\n\t s1 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c96); }\n\t }\n\t while (s1 !== peg$FAILED) {\n\t s0.push(s1);\n\t if (peg$c95.test(input.charAt(peg$currPos))) {\n\t s1 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c96); }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t peg$result = peg$startRuleFunction();\n\t\n\t if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n\t return peg$result;\n\t } else {\n\t if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n\t peg$fail({ type: \"end\", description: \"end of input\" });\n\t }\n\t\n\t throw peg$buildException(\n\t null,\n\t peg$maxFailExpected,\n\t peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n\t peg$maxFailPos < input.length\n\t ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n\t : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n\t );\n\t }\n\t }\n\t\n\t return {\n\t SyntaxError: peg$SyntaxError,\n\t parse: peg$parse\n\t };\n\t})();\n\n\n/***/ },\n/* 136 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t template = dl.template,\n\t expr = __webpack_require__(137),\n\t args = ['datum', 'event', 'signals'];\n\t\n\tvar compile = expr.compiler(args, {\n\t idWhiteList: args,\n\t fieldVar: args[0],\n\t globalVar: function(id) {\n\t return 'this.sig[' + dl.str(id) + ']._value';\n\t },\n\t functions: function(codegen) {\n\t var fn = expr.functions(codegen);\n\t fn.eventItem = 'event.vg.getItem';\n\t fn.eventGroup = 'event.vg.getGroup';\n\t fn.eventX = 'event.vg.getX';\n\t fn.eventY = 'event.vg.getY';\n\t fn.open = 'window.open';\n\t fn.scale = scaleGen(codegen, false);\n\t fn.iscale = scaleGen(codegen, true);\n\t fn.inrange = 'this.defs.inrange';\n\t fn.indata = indataGen(codegen);\n\t fn.format = 'this.defs.format';\n\t fn.timeFormat = 'this.defs.timeFormat';\n\t fn.utcFormat = 'this.defs.utcFormat';\n\t return fn;\n\t },\n\t functionDefs: function(/*codegen*/) {\n\t return {\n\t 'scale': scale,\n\t 'inrange': inrange,\n\t 'indata': indata,\n\t 'format': numberFormat,\n\t 'timeFormat': timeFormat,\n\t 'utcFormat': utcFormat\n\t };\n\t }\n\t});\n\t\n\tfunction scaleGen(codegen, invert) {\n\t return function(args) {\n\t args = args.map(codegen);\n\t var n = args.length;\n\t if (n < 2 || n > 3) {\n\t throw Error(\"scale takes exactly 2 or 3 arguments.\");\n\t }\n\t return 'this.defs.scale(this.model, ' + invert + ', ' +\n\t args[0] + ',' + args[1] + (n > 2 ? ',' + args[2] : '') + ')';\n\t };\n\t}\n\t\n\tfunction scale(model, invert, name, value, scope) {\n\t if (!scope || !scope.scale) {\n\t scope = (scope && scope.mark) ? scope.mark.group : model.scene().items[0];\n\t }\n\t // Verify scope is valid\n\t if (model.group(scope._id) !== scope) {\n\t throw Error('Scope for scale \"'+name+'\" is not a valid group item.');\n\t }\n\t var s = scope.scale(name);\n\t return !s ? value : (invert ? s.invert(value) : s(value));\n\t}\n\t\n\tfunction inrange(val, a, b, exclusive) {\n\t var min = a, max = b;\n\t if (a > b) { min = b; max = a; }\n\t return exclusive ?\n\t (min < val && max > val) :\n\t (min <= val && max >= val);\n\t}\n\t\n\tfunction indataGen(codegen) {\n\t return function(args, globals, fields, dataSources) {\n\t var data;\n\t if (args.length !== 3) {\n\t throw Error(\"indata takes 3 arguments.\");\n\t }\n\t if (args[0].type !== 'Literal') {\n\t throw Error(\"Data source name must be a literal for indata.\");\n\t }\n\t\n\t data = args[0].value;\n\t dataSources[data] = 1;\n\t if (args[2].type === 'Literal') {\n\t indataGen.model.requestIndex(data, args[2].value);\n\t }\n\t\n\t args = args.map(codegen);\n\t return 'this.defs.indata(this.model,' + \n\t args[0] + ',' + args[1] + ',' + args[2] + ')';\n\t };\n\t}\n\t\n\tfunction indata(model, dataname, val, field) {\n\t var data = model.data(dataname),\n\t index = data.getIndex(field);\n\t return index[val] > 0;\n\t}\n\t\n\tfunction numberFormat(specifier, v) {\n\t return template.format(specifier, 'number')(v);\n\t}\n\t\n\tfunction timeFormat(specifier, d) {\n\t return template.format(specifier, 'time')(d);\n\t}\n\t\n\tfunction utcFormat(specifier, d) {\n\t return template.format(specifier, 'utc')(d);\n\t}\n\t\n\tfunction wrap(model) {\n\t return function(str) {\n\t indataGen.model = model;\n\t var x = compile(str);\n\t x.model = model;\n\t x.sig = model ? model._signals : {};\n\t return x;\n\t };\n\t}\n\t\n\twrap.scale = scale;\n\twrap.codegen = compile.codegen;\n\tmodule.exports = wrap;\n\n\n/***/ },\n/* 137 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar parser = __webpack_require__(138),\n\t codegen = __webpack_require__(139);\n\t\n\tvar expr = module.exports = {\n\t parse: function(input, opt) {\n\t return parser.parse('('+input+')', opt);\n\t },\n\t code: function(opt) {\n\t return codegen(opt);\n\t },\n\t compiler: function(args, opt) {\n\t args = args.slice();\n\t var generator = codegen(opt),\n\t len = args.length,\n\t compile = function(str) {\n\t var value = generator(expr.parse(str));\n\t args[len] = '\"use strict\"; return (' + value.code + ');';\n\t var fn = Function.apply(null, args);\n\t value.fn = (args.length > 8) ?\n\t function() { return fn.apply(value, arguments); } :\n\t function(a, b, c, d, e, f, g) {\n\t return fn.call(value, a, b, c, d, e, f, g);\n\t }; // call often faster than apply, use if args low enough\n\t return value;\n\t };\n\t compile.codegen = generator;\n\t return compile;\n\t },\n\t functions: __webpack_require__(141),\n\t constants: __webpack_require__(140)\n\t};\n\n/***/ },\n/* 138 */\n/***/ function(module, exports) {\n\n\t/*\n\t The following expression parser is based on Esprima (http://esprima.org/).\n\t Original header comment and license for Esprima is included here:\n\t\n\t Copyright (C) 2013 Ariya Hidayat \n\t Copyright (C) 2013 Thaddee Tyl \n\t Copyright (C) 2013 Mathias Bynens \n\t Copyright (C) 2012 Ariya Hidayat \n\t Copyright (C) 2012 Mathias Bynens \n\t Copyright (C) 2012 Joost-Wim Boekesteijn \n\t Copyright (C) 2012 Kris Kowal \n\t Copyright (C) 2012 Yusuke Suzuki \n\t Copyright (C) 2012 Arpad Borsos \n\t Copyright (C) 2011 Ariya Hidayat \n\t\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\t\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\t\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\t/* istanbul ignore next */\n\tmodule.exports = (function() {\n\t 'use strict';\n\t\n\t var Token,\n\t TokenName,\n\t Syntax,\n\t PropertyKind,\n\t Messages,\n\t Regex,\n\t source,\n\t strict,\n\t index,\n\t lineNumber,\n\t lineStart,\n\t length,\n\t lookahead,\n\t state,\n\t extra;\n\t\n\t Token = {\n\t BooleanLiteral: 1,\n\t EOF: 2,\n\t Identifier: 3,\n\t Keyword: 4,\n\t NullLiteral: 5,\n\t NumericLiteral: 6,\n\t Punctuator: 7,\n\t StringLiteral: 8,\n\t RegularExpression: 9\n\t };\n\t\n\t TokenName = {};\n\t TokenName[Token.BooleanLiteral] = 'Boolean';\n\t TokenName[Token.EOF] = '';\n\t TokenName[Token.Identifier] = 'Identifier';\n\t TokenName[Token.Keyword] = 'Keyword';\n\t TokenName[Token.NullLiteral] = 'Null';\n\t TokenName[Token.NumericLiteral] = 'Numeric';\n\t TokenName[Token.Punctuator] = 'Punctuator';\n\t TokenName[Token.StringLiteral] = 'String';\n\t TokenName[Token.RegularExpression] = 'RegularExpression';\n\t\n\t Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t ArrayExpression: 'ArrayExpression',\n\t BinaryExpression: 'BinaryExpression',\n\t CallExpression: 'CallExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ExpressionStatement: 'ExpressionStatement',\n\t Identifier: 'Identifier',\n\t Literal: 'Literal',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t Program: 'Program',\n\t Property: 'Property',\n\t UnaryExpression: 'UnaryExpression'\n\t };\n\t\n\t PropertyKind = {\n\t Data: 1,\n\t Get: 2,\n\t Set: 4\n\t };\n\t\n\t // Error messages should be identical to V8.\n\t Messages = {\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t InvalidRegExp: 'Invalid regular expression',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalReturn: 'Illegal return statement',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode',\n\t AccessorDataProperty: 'Object literal may not have data and accessor property with the same name',\n\t AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode'\n\t };\n\t\n\t // See also tools/generate-unicode-regex.py.\n\t Regex = {\n\t NonAsciiIdentifierStart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]'),\n\t NonAsciiIdentifierPart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]')\n\t };\n\t\n\t // Ensure the condition is true, otherwise throw an error.\n\t // This is only to have a better contract semantic, i.e. another safety net\n\t // to catch a logic error. The condition shall be fulfilled in normal case.\n\t // Do NOT use this to enforce a certain condition on any user input.\n\t\n\t function assert(condition, message) {\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t }\n\t\n\t function isDecimalDigit(ch) {\n\t return (ch >= 0x30 && ch <= 0x39); // 0..9\n\t }\n\t\n\t function isHexDigit(ch) {\n\t return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n\t }\n\t\n\t function isOctalDigit(ch) {\n\t return '01234567'.indexOf(ch) >= 0;\n\t }\n\t\n\t // 7.2 White Space\n\t\n\t function isWhiteSpace(ch) {\n\t return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n\t (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n\t }\n\t\n\t // 7.3 Line Terminators\n\t\n\t function isLineTerminator(ch) {\n\t return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n\t }\n\t\n\t // 7.6 Identifier Names and Identifiers\n\t\n\t function isIdentifierStart(ch) {\n\t return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n\t (ch >= 0x41 && ch <= 0x5A) || // A..Z\n\t (ch >= 0x61 && ch <= 0x7A) || // a..z\n\t (ch === 0x5C) || // \\ (backslash)\n\t ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n\t }\n\t\n\t function isIdentifierPart(ch) {\n\t return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n\t (ch >= 0x41 && ch <= 0x5A) || // A..Z\n\t (ch >= 0x61 && ch <= 0x7A) || // a..z\n\t (ch >= 0x30 && ch <= 0x39) || // 0..9\n\t (ch === 0x5C) || // \\ (backslash)\n\t ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n\t }\n\t\n\t // 7.6.1.2 Future Reserved Words\n\t\n\t function isFutureReservedWord(id) {\n\t switch (id) {\n\t case 'class':\n\t case 'enum':\n\t case 'export':\n\t case 'extends':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function isStrictModeReservedWord(id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t // 7.6.1.1 Keywords\n\t\n\t function isKeyword(id) {\n\t if (strict && isStrictModeReservedWord(id)) {\n\t return true;\n\t }\n\t\n\t // 'const' is specialized as Keyword in V8.\n\t // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next.\n\t // Some others are from future reserved words.\n\t\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function skipComment() {\n\t var ch, start;\n\t\n\t start = (index === 0);\n\t while (index < length) {\n\t ch = source.charCodeAt(index);\n\t\n\t if (isWhiteSpace(ch)) {\n\t ++index;\n\t } else if (isLineTerminator(ch)) {\n\t ++index;\n\t if (ch === 0x0D && source.charCodeAt(index) === 0x0A) {\n\t ++index;\n\t }\n\t ++lineNumber;\n\t lineStart = index;\n\t start = true;\n\t } else {\n\t break;\n\t }\n\t }\n\t }\n\t\n\t function scanHexEscape(prefix) {\n\t var i, len, ch, code = 0;\n\t\n\t len = (prefix === 'u') ? 4 : 2;\n\t for (i = 0; i < len; ++i) {\n\t if (index < length && isHexDigit(source[index])) {\n\t ch = source[index++];\n\t code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t } else {\n\t return '';\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t }\n\t\n\t function scanUnicodeCodePointEscape() {\n\t var ch, code, cu1, cu2;\n\t\n\t ch = source[index];\n\t code = 0;\n\t\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t while (index < length) {\n\t ch = source[index++];\n\t if (!isHexDigit(ch)) {\n\t break;\n\t }\n\t code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t }\n\t\n\t if (code > 0x10FFFF || ch !== '}') {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t // UTF-16 Encoding\n\t if (code <= 0xFFFF) {\n\t return String.fromCharCode(code);\n\t }\n\t cu1 = ((code - 0x10000) >> 10) + 0xD800;\n\t cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n\t return String.fromCharCode(cu1, cu2);\n\t }\n\t\n\t function getEscapedIdentifier() {\n\t var ch, id;\n\t\n\t ch = source.charCodeAt(index++);\n\t id = String.fromCharCode(ch);\n\t\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (ch === 0x5C) {\n\t if (source.charCodeAt(index) !== 0x75) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t ++index;\n\t ch = scanHexEscape('u');\n\t if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t id = ch;\n\t }\n\t\n\t while (index < length) {\n\t ch = source.charCodeAt(index);\n\t if (!isIdentifierPart(ch)) {\n\t break;\n\t }\n\t ++index;\n\t id += String.fromCharCode(ch);\n\t\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (ch === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (source.charCodeAt(index) !== 0x75) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t ++index;\n\t ch = scanHexEscape('u');\n\t if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t id += ch;\n\t }\n\t }\n\t\n\t return id;\n\t }\n\t\n\t function getIdentifier() {\n\t var start, ch;\n\t\n\t start = index++;\n\t while (index < length) {\n\t ch = source.charCodeAt(index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t index = start;\n\t return getEscapedIdentifier();\n\t }\n\t if (isIdentifierPart(ch)) {\n\t ++index;\n\t } else {\n\t break;\n\t }\n\t }\n\t\n\t return source.slice(start, index);\n\t }\n\t\n\t function scanIdentifier() {\n\t var start, id, type;\n\t\n\t start = index;\n\t\n\t // Backslash (U+005C) starts an escaped character.\n\t id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\t\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = Token.Identifier;\n\t } else if (isKeyword(id)) {\n\t type = Token.Keyword;\n\t } else if (id === 'null') {\n\t type = Token.NullLiteral;\n\t } else if (id === 'true' || id === 'false') {\n\t type = Token.BooleanLiteral;\n\t } else {\n\t type = Token.Identifier;\n\t }\n\t\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 7.7 Punctuators\n\t\n\t function scanPunctuator() {\n\t var start = index,\n\t code = source.charCodeAt(index),\n\t code2,\n\t ch1 = source[index],\n\t ch2,\n\t ch3,\n\t ch4;\n\t\n\t switch (code) {\n\t\n\t // Check for most common single-character punctuators.\n\t case 0x2E: // . dot\n\t case 0x28: // ( open bracket\n\t case 0x29: // ) close bracket\n\t case 0x3B: // ; semicolon\n\t case 0x2C: // , comma\n\t case 0x7B: // { open curly brace\n\t case 0x7D: // } close curly brace\n\t case 0x5B: // [\n\t case 0x5D: // ]\n\t case 0x3A: // :\n\t case 0x3F: // ?\n\t case 0x7E: // ~\n\t ++index;\n\t if (extra.tokenize) {\n\t if (code === 0x28) {\n\t extra.openParenToken = extra.tokens.length;\n\t } else if (code === 0x7B) {\n\t extra.openCurlyToken = extra.tokens.length;\n\t }\n\t }\n\t return {\n\t type: Token.Punctuator,\n\t value: String.fromCharCode(code),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t\n\t default:\n\t code2 = source.charCodeAt(index + 1);\n\t\n\t // '=' (U+003D) marks an assignment or comparison operator.\n\t if (code2 === 0x3D) {\n\t switch (code) {\n\t case 0x2B: // +\n\t case 0x2D: // -\n\t case 0x2F: // /\n\t case 0x3C: // <\n\t case 0x3E: // >\n\t case 0x5E: // ^\n\t case 0x7C: // |\n\t case 0x25: // %\n\t case 0x26: // &\n\t case 0x2A: // *\n\t index += 2;\n\t return {\n\t type: Token.Punctuator,\n\t value: String.fromCharCode(code) + String.fromCharCode(code2),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t\n\t case 0x21: // !\n\t case 0x3D: // =\n\t index += 2;\n\t\n\t // !== and ===\n\t if (source.charCodeAt(index) === 0x3D) {\n\t ++index;\n\t }\n\t return {\n\t type: Token.Punctuator,\n\t value: source.slice(start, index),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t }\n\t }\n\t\n\t // 4-character punctuator: >>>=\n\t\n\t ch4 = source.substr(index, 4);\n\t\n\t if (ch4 === '>>>=') {\n\t index += 4;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch4,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 3-character punctuators: === !== >>> <<= >>=\n\t\n\t ch3 = ch4.substr(0, 3);\n\t\n\t if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n\t index += 3;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch3,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // Other 2-character punctuators: ++ -- << >> && ||\n\t ch2 = ch3.substr(0, 2);\n\t\n\t if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n\t index += 2;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch2,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 1-character punctuators: < > = ! + - * % & | ^ /\n\t\n\t if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n\t ++index;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch1,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t // 7.8.3 Numeric Literals\n\t\n\t function scanHexLiteral(start) {\n\t var number = '';\n\t\n\t while (index < length) {\n\t if (!isHexDigit(source[index])) {\n\t break;\n\t }\n\t number += source[index++];\n\t }\n\t\n\t if (number.length === 0) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t if (isIdentifierStart(source.charCodeAt(index))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.NumericLiteral,\n\t value: parseInt('0x' + number, 16),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function scanOctalLiteral(start) {\n\t var number = '0' + source[index++];\n\t while (index < length) {\n\t if (!isOctalDigit(source[index])) {\n\t break;\n\t }\n\t number += source[index++];\n\t }\n\t\n\t if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.NumericLiteral,\n\t value: parseInt(number, 8),\n\t octal: true,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function scanNumericLiteral() {\n\t var number, start, ch;\n\t\n\t ch = source[index];\n\t assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n\t 'Numeric literal must start with a decimal digit or a decimal point');\n\t\n\t start = index;\n\t number = '';\n\t if (ch !== '.') {\n\t number = source[index++];\n\t ch = source[index];\n\t\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t if (number === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++index;\n\t return scanHexLiteral(start);\n\t }\n\t if (isOctalDigit(ch)) {\n\t return scanOctalLiteral(start);\n\t }\n\t\n\t // decimal number starts with '0' such as '09' is illegal.\n\t if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t }\n\t\n\t while (isDecimalDigit(source.charCodeAt(index))) {\n\t number += source[index++];\n\t }\n\t ch = source[index];\n\t }\n\t\n\t if (ch === '.') {\n\t number += source[index++];\n\t while (isDecimalDigit(source.charCodeAt(index))) {\n\t number += source[index++];\n\t }\n\t ch = source[index];\n\t }\n\t\n\t if (ch === 'e' || ch === 'E') {\n\t number += source[index++];\n\t\n\t ch = source[index];\n\t if (ch === '+' || ch === '-') {\n\t number += source[index++];\n\t }\n\t if (isDecimalDigit(source.charCodeAt(index))) {\n\t while (isDecimalDigit(source.charCodeAt(index))) {\n\t number += source[index++];\n\t }\n\t } else {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t }\n\t\n\t if (isIdentifierStart(source.charCodeAt(index))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.NumericLiteral,\n\t value: parseFloat(number),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 7.8.4 String Literals\n\t\n\t function scanStringLiteral() {\n\t var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart;\n\t startLineNumber = lineNumber;\n\t startLineStart = lineStart;\n\t\n\t quote = source[index];\n\t assert((quote === '\\'' || quote === '\"'),\n\t 'String literal must starts with a quote');\n\t\n\t start = index;\n\t ++index;\n\t\n\t while (index < length) {\n\t ch = source[index++];\n\t\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t } else if (ch === '\\\\') {\n\t ch = source[index++];\n\t if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t case 'x':\n\t if (source[index] === '{') {\n\t ++index;\n\t str += scanUnicodeCodePointEscape();\n\t } else {\n\t restore = index;\n\t unescaped = scanHexEscape(ch);\n\t if (unescaped) {\n\t str += unescaped;\n\t } else {\n\t index = restore;\n\t str += ch;\n\t }\n\t }\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t\n\t default:\n\t if (isOctalDigit(ch)) {\n\t code = '01234567'.indexOf(ch);\n\t\n\t // \\0 is not octal escape sequence\n\t if (code !== 0) {\n\t octal = true;\n\t }\n\t\n\t if (index < length && isOctalDigit(source[index])) {\n\t octal = true;\n\t code = code * 8 + '01234567'.indexOf(source[index++]);\n\t\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 &&\n\t index < length &&\n\t isOctalDigit(source[index])) {\n\t code = code * 8 + '01234567'.indexOf(source[index++]);\n\t }\n\t }\n\t str += String.fromCharCode(code);\n\t } else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t } else {\n\t ++lineNumber;\n\t if (ch === '\\r' && source[index] === '\\n') {\n\t ++index;\n\t }\n\t lineStart = index;\n\t }\n\t } else if (isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t } else {\n\t str += ch;\n\t }\n\t }\n\t\n\t if (quote !== '') {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.StringLiteral,\n\t value: str,\n\t octal: octal,\n\t startLineNumber: startLineNumber,\n\t startLineStart: startLineStart,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function testRegExp(pattern, flags) {\n\t var tmp = pattern,\n\t value;\n\t\n\t if (flags.indexOf('u') >= 0) {\n\t // Replace each astral symbol and every Unicode code point\n\t // escape sequence with a single ASCII symbol to avoid throwing on\n\t // regular expressions that are only valid in combination with the\n\t // `/u` flag.\n\t // Note: replacing with the ASCII symbol `x` might cause false\n\t // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n\t // perfectly valid pattern that is equivalent to `[a-b]`, but it\n\t // would be replaced by `[x-b]` which throws an error.\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function ($0, $1) {\n\t if (parseInt($1, 16) <= 0x10FFFF) {\n\t return 'x';\n\t }\n\t throwError({}, Messages.InvalidRegExp);\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n\t }\n\t\n\t // First, detect invalid regular expressions.\n\t try {\n\t value = new RegExp(tmp);\n\t } catch (e) {\n\t throwError({}, Messages.InvalidRegExp);\n\t }\n\t\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t } catch (exception) {\n\t return null;\n\t }\n\t }\n\t\n\t function scanRegExpBody() {\n\t var ch, str, classMarker, terminated, body;\n\t\n\t ch = source[index];\n\t assert(ch === '/', 'Regular expression literal must start with a slash');\n\t str = source[index++];\n\t\n\t classMarker = false;\n\t terminated = false;\n\t while (index < length) {\n\t ch = source[index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = source[index++];\n\t // ECMA-262 7.8.5\n\t if (isLineTerminator(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t } else if (isLineTerminator(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnterminatedRegExp);\n\t } else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t } else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t } else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t\n\t if (!terminated) {\n\t throwError({}, Messages.UnterminatedRegExp);\n\t }\n\t\n\t // Exclude leading and trailing slash.\n\t body = str.substr(1, str.length - 2);\n\t return {\n\t value: body,\n\t literal: str\n\t };\n\t }\n\t\n\t function scanRegExpFlags() {\n\t var ch, str, flags, restore;\n\t\n\t str = '';\n\t flags = '';\n\t while (index < length) {\n\t ch = source[index];\n\t if (!isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t\n\t ++index;\n\t if (ch === '\\\\' && index < length) {\n\t ch = source[index];\n\t if (ch === 'u') {\n\t ++index;\n\t restore = index;\n\t ch = scanHexEscape('u');\n\t if (ch) {\n\t flags += ch;\n\t for (str += '\\\\u'; restore < index; ++restore) {\n\t str += source[restore];\n\t }\n\t } else {\n\t index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t } else {\n\t str += '\\\\';\n\t throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t } else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t\n\t return {\n\t value: flags,\n\t literal: str\n\t };\n\t }\n\t\n\t function scanRegExp() {\n\t var start, body, flags, value;\n\t\n\t lookahead = null;\n\t skipComment();\n\t start = index;\n\t\n\t body = scanRegExpBody();\n\t flags = scanRegExpFlags();\n\t value = testRegExp(body.value, flags.value);\n\t\n\t if (extra.tokenize) {\n\t return {\n\t type: Token.RegularExpression,\n\t value: value,\n\t regex: {\n\t pattern: body.value,\n\t flags: flags.value\n\t },\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t return {\n\t literal: body.literal + flags.literal,\n\t value: value,\n\t regex: {\n\t pattern: body.value,\n\t flags: flags.value\n\t },\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function collectRegex() {\n\t var pos, loc, regex, token;\n\t\n\t skipComment();\n\t\n\t pos = index;\n\t loc = {\n\t start: {\n\t line: lineNumber,\n\t column: index - lineStart\n\t }\n\t };\n\t\n\t regex = scanRegExp();\n\t\n\t loc.end = {\n\t line: lineNumber,\n\t column: index - lineStart\n\t };\n\t\n\t if (!extra.tokenize) {\n\t // Pop the previous token, which is likely '/' or '/='\n\t if (extra.tokens.length > 0) {\n\t token = extra.tokens[extra.tokens.length - 1];\n\t if (token.range[0] === pos && token.type === 'Punctuator') {\n\t if (token.value === '/' || token.value === '/=') {\n\t extra.tokens.pop();\n\t }\n\t }\n\t }\n\t\n\t extra.tokens.push({\n\t type: 'RegularExpression',\n\t value: regex.literal,\n\t regex: regex.regex,\n\t range: [pos, index],\n\t loc: loc\n\t });\n\t }\n\t\n\t return regex;\n\t }\n\t\n\t function isIdentifierName(token) {\n\t return token.type === Token.Identifier ||\n\t token.type === Token.Keyword ||\n\t token.type === Token.BooleanLiteral ||\n\t token.type === Token.NullLiteral;\n\t }\n\t\n\t function advanceSlash() {\n\t var prevToken,\n\t checkToken;\n\t // Using the following algorithm:\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t prevToken = extra.tokens[extra.tokens.length - 1];\n\t if (!prevToken) {\n\t // Nothing before that: it cannot be a division.\n\t return collectRegex();\n\t }\n\t if (prevToken.type === 'Punctuator') {\n\t if (prevToken.value === ']') {\n\t return scanPunctuator();\n\t }\n\t if (prevToken.value === ')') {\n\t checkToken = extra.tokens[extra.openParenToken - 1];\n\t if (checkToken &&\n\t checkToken.type === 'Keyword' &&\n\t (checkToken.value === 'if' ||\n\t checkToken.value === 'while' ||\n\t checkToken.value === 'for' ||\n\t checkToken.value === 'with')) {\n\t return collectRegex();\n\t }\n\t return scanPunctuator();\n\t }\n\t if (prevToken.value === '}') {\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t if (extra.tokens[extra.openCurlyToken - 3] &&\n\t extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') {\n\t // Anonymous function.\n\t checkToken = extra.tokens[extra.openCurlyToken - 4];\n\t if (!checkToken) {\n\t return scanPunctuator();\n\t }\n\t } else if (extra.tokens[extra.openCurlyToken - 4] &&\n\t extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') {\n\t // Named function.\n\t checkToken = extra.tokens[extra.openCurlyToken - 5];\n\t if (!checkToken) {\n\t return collectRegex();\n\t }\n\t } else {\n\t return scanPunctuator();\n\t }\n\t return scanPunctuator();\n\t }\n\t return collectRegex();\n\t }\n\t if (prevToken.type === 'Keyword' && prevToken.value !== 'this') {\n\t return collectRegex();\n\t }\n\t return scanPunctuator();\n\t }\n\t\n\t function advance() {\n\t var ch;\n\t\n\t skipComment();\n\t\n\t if (index >= length) {\n\t return {\n\t type: Token.EOF,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: index,\n\t end: index\n\t };\n\t }\n\t\n\t ch = source.charCodeAt(index);\n\t\n\t if (isIdentifierStart(ch)) {\n\t return scanIdentifier();\n\t }\n\t\n\t // Very common: ( and ) and ;\n\t if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n\t return scanPunctuator();\n\t }\n\t\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (ch === 0x27 || ch === 0x22) {\n\t return scanStringLiteral();\n\t }\n\t\n\t\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (ch === 0x2E) {\n\t if (isDecimalDigit(source.charCodeAt(index + 1))) {\n\t return scanNumericLiteral();\n\t }\n\t return scanPunctuator();\n\t }\n\t\n\t if (isDecimalDigit(ch)) {\n\t return scanNumericLiteral();\n\t }\n\t\n\t // Slash (/) U+002F can also start a regex.\n\t if (extra.tokenize && ch === 0x2F) {\n\t return advanceSlash();\n\t }\n\t\n\t return scanPunctuator();\n\t }\n\t\n\t function collectToken() {\n\t var loc, token, value, entry;\n\t\n\t skipComment();\n\t loc = {\n\t start: {\n\t line: lineNumber,\n\t column: index - lineStart\n\t }\n\t };\n\t\n\t token = advance();\n\t loc.end = {\n\t line: lineNumber,\n\t column: index - lineStart\n\t };\n\t\n\t if (token.type !== Token.EOF) {\n\t value = source.slice(token.start, token.end);\n\t entry = {\n\t type: TokenName[token.type],\n\t value: value,\n\t range: [token.start, token.end],\n\t loc: loc\n\t };\n\t if (token.regex) {\n\t entry.regex = {\n\t pattern: token.regex.pattern,\n\t flags: token.regex.flags\n\t };\n\t }\n\t extra.tokens.push(entry);\n\t }\n\t\n\t return token;\n\t }\n\t\n\t function lex() {\n\t var token;\n\t\n\t token = lookahead;\n\t index = token.end;\n\t lineNumber = token.lineNumber;\n\t lineStart = token.lineStart;\n\t\n\t lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n\t\n\t index = token.end;\n\t lineNumber = token.lineNumber;\n\t lineStart = token.lineStart;\n\t\n\t return token;\n\t }\n\t\n\t function peek() {\n\t var pos, line, start;\n\t\n\t pos = index;\n\t line = lineNumber;\n\t start = lineStart;\n\t lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n\t index = pos;\n\t lineNumber = line;\n\t lineStart = start;\n\t }\n\t\n\t function Position() {\n\t this.line = lineNumber;\n\t this.column = index - lineStart;\n\t }\n\t\n\t function SourceLocation() {\n\t this.start = new Position();\n\t this.end = null;\n\t }\n\t\n\t function WrappingSourceLocation(startToken) {\n\t if (startToken.type === Token.StringLiteral) {\n\t this.start = {\n\t line: startToken.startLineNumber,\n\t column: startToken.start - startToken.startLineStart\n\t };\n\t } else {\n\t this.start = {\n\t line: startToken.lineNumber,\n\t column: startToken.start - startToken.lineStart\n\t };\n\t }\n\t this.end = null;\n\t }\n\t\n\t function Node() {\n\t // Skip comment.\n\t index = lookahead.start;\n\t if (lookahead.type === Token.StringLiteral) {\n\t lineNumber = lookahead.startLineNumber;\n\t lineStart = lookahead.startLineStart;\n\t } else {\n\t lineNumber = lookahead.lineNumber;\n\t lineStart = lookahead.lineStart;\n\t }\n\t if (extra.range) {\n\t this.range = [index, 0];\n\t }\n\t if (extra.loc) {\n\t this.loc = new SourceLocation();\n\t }\n\t }\n\t\n\t function WrappingNode(startToken) {\n\t if (extra.range) {\n\t this.range = [startToken.start, 0];\n\t }\n\t if (extra.loc) {\n\t this.loc = new WrappingSourceLocation(startToken);\n\t }\n\t }\n\t\n\t WrappingNode.prototype = Node.prototype = {\n\t\n\t finish: function () {\n\t if (extra.range) {\n\t this.range[1] = index;\n\t }\n\t if (extra.loc) {\n\t this.loc.end = new Position();\n\t if (extra.source) {\n\t this.loc.source = extra.source;\n\t }\n\t }\n\t },\n\t\n\t finishArrayExpression: function (elements) {\n\t this.type = Syntax.ArrayExpression;\n\t this.elements = elements;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishAssignmentExpression: function (operator, left, right) {\n\t this.type = Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishBinaryExpression: function (operator, left, right) {\n\t this.type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishCallExpression: function (callee, args) {\n\t this.type = Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishConditionalExpression: function (test, consequent, alternate) {\n\t this.type = Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishExpressionStatement: function (expression) {\n\t this.type = Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishIdentifier: function (name) {\n\t this.type = Syntax.Identifier;\n\t this.name = name;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishLiteral: function (token) {\n\t this.type = Syntax.Literal;\n\t this.value = token.value;\n\t this.raw = source.slice(token.start, token.end);\n\t if (token.regex) {\n\t if (this.raw == '//') {\n\t this.raw = '/(?:)/';\n\t }\n\t this.regex = token.regex;\n\t }\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishMemberExpression: function (accessor, object, property) {\n\t this.type = Syntax.MemberExpression;\n\t this.computed = accessor === '[';\n\t this.object = object;\n\t this.property = property;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishObjectExpression: function (properties) {\n\t this.type = Syntax.ObjectExpression;\n\t this.properties = properties;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishProgram: function (body) {\n\t this.type = Syntax.Program;\n\t this.body = body;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishProperty: function (kind, key, value) {\n\t this.type = Syntax.Property;\n\t this.key = key;\n\t this.value = value;\n\t this.kind = kind;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishUnaryExpression: function (operator, argument) {\n\t this.type = Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t this.finish();\n\t return this;\n\t }\n\t };\n\t\n\t // Return true if there is a line terminator before the next token.\n\t\n\t function peekLineTerminator() {\n\t var pos, line, start, found;\n\t\n\t pos = index;\n\t line = lineNumber;\n\t start = lineStart;\n\t skipComment();\n\t found = lineNumber !== line;\n\t index = pos;\n\t lineNumber = line;\n\t lineStart = start;\n\t\n\t return found;\n\t }\n\t\n\t // Throw an exception\n\t\n\t function throwError(token, messageFormat) {\n\t var error,\n\t args = Array.prototype.slice.call(arguments, 2),\n\t msg = messageFormat.replace(\n\t /%(\\d)/g,\n\t function (whole, index) {\n\t assert(index < args.length, 'Message reference must be in range');\n\t return args[index];\n\t }\n\t );\n\t\n\t if (typeof token.lineNumber === 'number') {\n\t error = new Error('Line ' + token.lineNumber + ': ' + msg);\n\t error.index = token.start;\n\t error.lineNumber = token.lineNumber;\n\t error.column = token.start - lineStart + 1;\n\t } else {\n\t error = new Error('Line ' + lineNumber + ': ' + msg);\n\t error.index = index;\n\t error.lineNumber = lineNumber;\n\t error.column = index - lineStart + 1;\n\t }\n\t\n\t error.description = msg;\n\t throw error;\n\t }\n\t\n\t function throwErrorTolerant() {\n\t try {\n\t throwError.apply(null, arguments);\n\t } catch (e) {\n\t if (extra.errors) {\n\t extra.errors.push(e);\n\t } else {\n\t throw e;\n\t }\n\t }\n\t }\n\t\n\t\n\t // Throw an exception because of the token.\n\t\n\t function throwUnexpected(token) {\n\t if (token.type === Token.EOF) {\n\t throwError(token, Messages.UnexpectedEOS);\n\t }\n\t\n\t if (token.type === Token.NumericLiteral) {\n\t throwError(token, Messages.UnexpectedNumber);\n\t }\n\t\n\t if (token.type === Token.StringLiteral) {\n\t throwError(token, Messages.UnexpectedString);\n\t }\n\t\n\t if (token.type === Token.Identifier) {\n\t throwError(token, Messages.UnexpectedIdentifier);\n\t }\n\t\n\t if (token.type === Token.Keyword) {\n\t if (isFutureReservedWord(token.value)) {\n\t throwError(token, Messages.UnexpectedReserved);\n\t } else if (strict && isStrictModeReservedWord(token.value)) {\n\t throwErrorTolerant(token, Messages.StrictReservedWord);\n\t return;\n\t }\n\t throwError(token, Messages.UnexpectedToken, token.value);\n\t }\n\t\n\t // BooleanLiteral, NullLiteral, or Punctuator.\n\t throwError(token, Messages.UnexpectedToken, token.value);\n\t }\n\t\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t\n\t function expect(value) {\n\t var token = lex();\n\t if (token.type !== Token.Punctuator || token.value !== value) {\n\t throwUnexpected(token);\n\t }\n\t }\n\t\n\t /**\n\t * @name expectTolerant\n\t * @description Quietly expect the given token value when in tolerant mode, otherwise delegates\n\t * to expect(value)\n\t * @param {String} value The value we are expecting the lookahead token to have\n\t * @since 2.0\n\t */\n\t function expectTolerant(value) {\n\t if (extra.errors) {\n\t var token = lookahead;\n\t if (token.type !== Token.Punctuator && token.value !== value) {\n\t throwErrorTolerant(token, Messages.UnexpectedToken, token.value);\n\t } else {\n\t lex();\n\t }\n\t } else {\n\t expect(value);\n\t }\n\t }\n\t\n\t // Return true if the next token matches the specified punctuator.\n\t\n\t function match(value) {\n\t return lookahead.type === Token.Punctuator && lookahead.value === value;\n\t }\n\t\n\t // Return true if the next token matches the specified keyword\n\t\n\t function matchKeyword(keyword) {\n\t return lookahead.type === Token.Keyword && lookahead.value === keyword;\n\t }\n\t\n\t function consumeSemicolon() {\n\t var line;\n\t\n\t // Catch the very common case first: immediately a semicolon (U+003B).\n\t if (source.charCodeAt(index) === 0x3B || match(';')) {\n\t lex();\n\t return;\n\t }\n\t\n\t line = lineNumber;\n\t skipComment();\n\t if (lineNumber !== line) {\n\t return;\n\t }\n\t\n\t if (lookahead.type !== Token.EOF && !match('}')) {\n\t throwUnexpected(lookahead);\n\t }\n\t }\n\t\n\t // 11.1.4 Array Initialiser\n\t\n\t function parseArrayInitialiser() {\n\t var elements = [], node = new Node();\n\t\n\t expect('[');\n\t\n\t while (!match(']')) {\n\t if (match(',')) {\n\t lex();\n\t elements.push(null);\n\t } else {\n\t elements.push(parseAssignmentExpression());\n\t\n\t if (!match(']')) {\n\t expect(',');\n\t }\n\t }\n\t }\n\t\n\t lex();\n\t\n\t return node.finishArrayExpression(elements);\n\t }\n\t\n\t // 11.1.5 Object Initialiser\n\t\n\t function parseObjectPropertyKey() {\n\t var token, node = new Node();\n\t\n\t token = lex();\n\t\n\t // Note: This function is called only from parseObjectProperty(), where\n\t // EOF and Punctuator tokens are already filtered out.\n\t\n\t if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {\n\t if (strict && token.octal) {\n\t throwErrorTolerant(token, Messages.StrictOctalLiteral);\n\t }\n\t return node.finishLiteral(token);\n\t }\n\t\n\t return node.finishIdentifier(token.value);\n\t }\n\t\n\t function parseObjectProperty() {\n\t var token, key, id, value, node = new Node();\n\t\n\t token = lookahead;\n\t\n\t if (token.type === Token.Identifier) {\n\t id = parseObjectPropertyKey();\n\t expect(':');\n\t value = parseAssignmentExpression();\n\t return node.finishProperty('init', id, value);\n\t }\n\t if (token.type === Token.EOF || token.type === Token.Punctuator) {\n\t throwUnexpected(token);\n\t } else {\n\t key = parseObjectPropertyKey();\n\t expect(':');\n\t value = parseAssignmentExpression();\n\t return node.finishProperty('init', key, value);\n\t }\n\t }\n\t\n\t function parseObjectInitialiser() {\n\t var properties = [], property, name, key, kind, map = {}, toString = String, node = new Node();\n\t\n\t expect('{');\n\t\n\t while (!match('}')) {\n\t property = parseObjectProperty();\n\t\n\t if (property.key.type === Syntax.Identifier) {\n\t name = property.key.name;\n\t } else {\n\t name = toString(property.key.value);\n\t }\n\t kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;\n\t\n\t key = '$' + name;\n\t if (Object.prototype.hasOwnProperty.call(map, key)) {\n\t if (map[key] === PropertyKind.Data) {\n\t if (strict && kind === PropertyKind.Data) {\n\t throwErrorTolerant({}, Messages.StrictDuplicateProperty);\n\t } else if (kind !== PropertyKind.Data) {\n\t throwErrorTolerant({}, Messages.AccessorDataProperty);\n\t }\n\t } else {\n\t if (kind === PropertyKind.Data) {\n\t throwErrorTolerant({}, Messages.AccessorDataProperty);\n\t } else if (map[key] & kind) {\n\t throwErrorTolerant({}, Messages.AccessorGetSet);\n\t }\n\t }\n\t map[key] |= kind;\n\t } else {\n\t map[key] = kind;\n\t }\n\t\n\t properties.push(property);\n\t\n\t if (!match('}')) {\n\t expectTolerant(',');\n\t }\n\t }\n\t\n\t expect('}');\n\t\n\t return node.finishObjectExpression(properties);\n\t }\n\t\n\t // 11.1.6 The Grouping Operator\n\t\n\t function parseGroupExpression() {\n\t var expr;\n\t\n\t expect('(');\n\t\n\t ++state.parenthesisCount;\n\t\n\t expr = parseExpression();\n\t\n\t expect(')');\n\t\n\t return expr;\n\t }\n\t\n\t\n\t // 11.1 Primary Expressions\n\t\n\t var legalKeywords = {\"if\":1, \"this\":1};\n\t\n\t function parsePrimaryExpression() {\n\t var type, token, expr, node;\n\t\n\t if (match('(')) {\n\t return parseGroupExpression();\n\t }\n\t\n\t if (match('[')) {\n\t return parseArrayInitialiser();\n\t }\n\t\n\t if (match('{')) {\n\t return parseObjectInitialiser();\n\t }\n\t\n\t type = lookahead.type;\n\t node = new Node();\n\t\n\t if (type === Token.Identifier || legalKeywords[lookahead.value]) {\n\t expr = node.finishIdentifier(lex().value);\n\t } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {\n\t if (strict && lookahead.octal) {\n\t throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);\n\t }\n\t expr = node.finishLiteral(lex());\n\t } else if (type === Token.Keyword) {\n\t throw new Error(\"Disabled.\");\n\t } else if (type === Token.BooleanLiteral) {\n\t token = lex();\n\t token.value = (token.value === 'true');\n\t expr = node.finishLiteral(token);\n\t } else if (type === Token.NullLiteral) {\n\t token = lex();\n\t token.value = null;\n\t expr = node.finishLiteral(token);\n\t } else if (match('/') || match('/=')) {\n\t if (typeof extra.tokens !== 'undefined') {\n\t expr = node.finishLiteral(collectRegex());\n\t } else {\n\t expr = node.finishLiteral(scanRegExp());\n\t }\n\t peek();\n\t } else {\n\t throwUnexpected(lex());\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.2 Left-Hand-Side Expressions\n\t\n\t function parseArguments() {\n\t var args = [];\n\t\n\t expect('(');\n\t\n\t if (!match(')')) {\n\t while (index < length) {\n\t args.push(parseAssignmentExpression());\n\t if (match(')')) {\n\t break;\n\t }\n\t expectTolerant(',');\n\t }\n\t }\n\t\n\t expect(')');\n\t\n\t return args;\n\t }\n\t\n\t function parseNonComputedProperty() {\n\t var token, node = new Node();\n\t\n\t token = lex();\n\t\n\t if (!isIdentifierName(token)) {\n\t throwUnexpected(token);\n\t }\n\t\n\t return node.finishIdentifier(token.value);\n\t }\n\t\n\t function parseNonComputedMember() {\n\t expect('.');\n\t\n\t return parseNonComputedProperty();\n\t }\n\t\n\t function parseComputedMember() {\n\t var expr;\n\t\n\t expect('[');\n\t\n\t expr = parseExpression();\n\t\n\t expect(']');\n\t\n\t return expr;\n\t }\n\t\n\t function parseLeftHandSideExpressionAllowCall() {\n\t var expr, args, property, startToken, previousAllowIn = state.allowIn;\n\t\n\t startToken = lookahead;\n\t state.allowIn = true;\n\t expr = parsePrimaryExpression();\n\t\n\t for (;;) {\n\t if (match('.')) {\n\t property = parseNonComputedMember();\n\t expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property);\n\t } else if (match('(')) {\n\t args = parseArguments();\n\t expr = new WrappingNode(startToken).finishCallExpression(expr, args);\n\t } else if (match('[')) {\n\t property = parseComputedMember();\n\t expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property);\n\t } else {\n\t break;\n\t }\n\t }\n\t state.allowIn = previousAllowIn;\n\t\n\t return expr;\n\t }\n\t\n\t // 11.3 Postfix Expressions\n\t\n\t function parsePostfixExpression() {\n\t var expr = parseLeftHandSideExpressionAllowCall();\n\t\n\t if (lookahead.type === Token.Punctuator) {\n\t if ((match('++') || match('--')) && !peekLineTerminator()) {\n\t throw new Error(\"Disabled.\");\n\t }\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.4 Unary Operators\n\t\n\t function parseUnaryExpression() {\n\t var token, expr, startToken;\n\t\n\t if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {\n\t expr = parsePostfixExpression();\n\t } else if (match('++') || match('--')) {\n\t throw new Error(\"Disabled.\");\n\t } else if (match('+') || match('-') || match('~') || match('!')) {\n\t startToken = lookahead;\n\t token = lex();\n\t expr = parseUnaryExpression();\n\t expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);\n\t } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n\t throw new Error(\"Disabled.\");\n\t } else {\n\t expr = parsePostfixExpression();\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t function binaryPrecedence(token, allowIn) {\n\t var prec = 0;\n\t\n\t if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n\t return 0;\n\t }\n\t\n\t switch (token.value) {\n\t case '||':\n\t prec = 1;\n\t break;\n\t\n\t case '&&':\n\t prec = 2;\n\t break;\n\t\n\t case '|':\n\t prec = 3;\n\t break;\n\t\n\t case '^':\n\t prec = 4;\n\t break;\n\t\n\t case '&':\n\t prec = 5;\n\t break;\n\t\n\t case '==':\n\t case '!=':\n\t case '===':\n\t case '!==':\n\t prec = 6;\n\t break;\n\t\n\t case '<':\n\t case '>':\n\t case '<=':\n\t case '>=':\n\t case 'instanceof':\n\t prec = 7;\n\t break;\n\t\n\t case 'in':\n\t prec = allowIn ? 7 : 0;\n\t break;\n\t\n\t case '<<':\n\t case '>>':\n\t case '>>>':\n\t prec = 8;\n\t break;\n\t\n\t case '+':\n\t case '-':\n\t prec = 9;\n\t break;\n\t\n\t case '*':\n\t case '/':\n\t case '%':\n\t prec = 11;\n\t break;\n\t\n\t default:\n\t break;\n\t }\n\t\n\t return prec;\n\t }\n\t\n\t // 11.5 Multiplicative Operators\n\t // 11.6 Additive Operators\n\t // 11.7 Bitwise Shift Operators\n\t // 11.8 Relational Operators\n\t // 11.9 Equality Operators\n\t // 11.10 Binary Bitwise Operators\n\t // 11.11 Binary Logical Operators\n\t\n\t function parseBinaryExpression() {\n\t var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\t\n\t marker = lookahead;\n\t left = parseUnaryExpression();\n\t\n\t token = lookahead;\n\t prec = binaryPrecedence(token, state.allowIn);\n\t if (prec === 0) {\n\t return left;\n\t }\n\t token.prec = prec;\n\t lex();\n\t\n\t markers = [marker, lookahead];\n\t right = parseUnaryExpression();\n\t\n\t stack = [left, token, right];\n\t\n\t while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {\n\t\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n\t right = stack.pop();\n\t operator = stack.pop().value;\n\t left = stack.pop();\n\t markers.pop();\n\t expr = new WrappingNode(markers[markers.length - 1]).finishBinaryExpression(operator, left, right);\n\t stack.push(expr);\n\t }\n\t\n\t // Shift.\n\t token = lex();\n\t token.prec = prec;\n\t stack.push(token);\n\t markers.push(lookahead);\n\t expr = parseUnaryExpression();\n\t stack.push(expr);\n\t }\n\t\n\t // Final reduce to clean-up the stack.\n\t i = stack.length - 1;\n\t expr = stack[i];\n\t markers.pop();\n\t while (i > 1) {\n\t expr = new WrappingNode(markers.pop()).finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n\t i -= 2;\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.12 Conditional Operator\n\t\n\t function parseConditionalExpression() {\n\t var expr, previousAllowIn, consequent, alternate, startToken;\n\t\n\t startToken = lookahead;\n\t\n\t expr = parseBinaryExpression();\n\t\n\t if (match('?')) {\n\t lex();\n\t previousAllowIn = state.allowIn;\n\t state.allowIn = true;\n\t consequent = parseAssignmentExpression();\n\t state.allowIn = previousAllowIn;\n\t expect(':');\n\t alternate = parseAssignmentExpression();\n\t\n\t expr = new WrappingNode(startToken).finishConditionalExpression(expr, consequent, alternate);\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.13 Assignment Operators\n\t\n\t function parseAssignmentExpression() {\n\t var oldParenthesisCount, token, expr, startToken;\n\t\n\t oldParenthesisCount = state.parenthesisCount;\n\t\n\t startToken = lookahead;\n\t token = lookahead;\n\t\n\t expr = parseConditionalExpression();\n\t\n\t return expr;\n\t }\n\t\n\t // 11.14 Comma Operator\n\t\n\t function parseExpression() {\n\t var expr = parseAssignmentExpression();\n\t\n\t if (match(',')) {\n\t throw new Error(\"Disabled.\"); // no sequence expressions\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 12.4 Expression Statement\n\t\n\t function parseExpressionStatement(node) {\n\t var expr = parseExpression();\n\t consumeSemicolon();\n\t return node.finishExpressionStatement(expr);\n\t }\n\t\n\t // 12 Statements\n\t\n\t function parseStatement() {\n\t var type = lookahead.type,\n\t expr,\n\t node;\n\t\n\t if (type === Token.EOF) {\n\t throwUnexpected(lookahead);\n\t }\n\t\n\t if (type === Token.Punctuator && lookahead.value === '{') {\n\t throw new Error(\"Disabled.\"); // block statement\n\t }\n\t\n\t node = new Node();\n\t\n\t if (type === Token.Punctuator) {\n\t switch (lookahead.value) {\n\t case ';':\n\t throw new Error(\"Disabled.\"); // empty statement\n\t case '(':\n\t return parseExpressionStatement(node);\n\t default:\n\t break;\n\t }\n\t } else if (type === Token.Keyword) {\n\t throw new Error(\"Disabled.\"); // keyword\n\t }\n\t\n\t expr = parseExpression();\n\t consumeSemicolon();\n\t return node.finishExpressionStatement(expr);\n\t }\n\t\n\t // 14 Program\n\t\n\t function parseSourceElement() {\n\t if (lookahead.type === Token.Keyword) {\n\t switch (lookahead.value) {\n\t case 'const':\n\t case 'let':\n\t throw new Error(\"Disabled.\");\n\t case 'function':\n\t throw new Error(\"Disabled.\");\n\t default:\n\t return parseStatement();\n\t }\n\t }\n\t\n\t if (lookahead.type !== Token.EOF) {\n\t return parseStatement();\n\t }\n\t }\n\t\n\t function parseSourceElements() {\n\t var sourceElement, sourceElements = [], token, directive, firstRestricted;\n\t\n\t while (index < length) {\n\t token = lookahead;\n\t if (token.type !== Token.StringLiteral) {\n\t break;\n\t }\n\t\n\t sourceElement = parseSourceElement();\n\t sourceElements.push(sourceElement);\n\t if (sourceElement.expression.type !== Syntax.Literal) {\n\t // this is not directive\n\t break;\n\t }\n\t directive = source.slice(token.start + 1, token.end - 1);\n\t if (directive === 'use strict') {\n\t strict = true;\n\t if (firstRestricted) {\n\t throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);\n\t }\n\t } else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t\n\t while (index < length) {\n\t sourceElement = parseSourceElement();\n\t if (typeof sourceElement === 'undefined') {\n\t break;\n\t }\n\t sourceElements.push(sourceElement);\n\t }\n\t return sourceElements;\n\t }\n\t\n\t function parseProgram() {\n\t var body, node;\n\t\n\t skipComment();\n\t peek();\n\t node = new Node();\n\t strict = true; // assume strict\n\t\n\t body = parseSourceElements();\n\t return node.finishProgram(body);\n\t }\n\t\n\t function filterTokenLocation() {\n\t var i, entry, token, tokens = [];\n\t\n\t for (i = 0; i < extra.tokens.length; ++i) {\n\t entry = extra.tokens[i];\n\t token = {\n\t type: entry.type,\n\t value: entry.value\n\t };\n\t if (entry.regex) {\n\t token.regex = {\n\t pattern: entry.regex.pattern,\n\t flags: entry.regex.flags\n\t };\n\t }\n\t if (extra.range) {\n\t token.range = entry.range;\n\t }\n\t if (extra.loc) {\n\t token.loc = entry.loc;\n\t }\n\t tokens.push(token);\n\t }\n\t\n\t extra.tokens = tokens;\n\t }\n\t\n\t function tokenize(code, options) {\n\t var toString,\n\t tokens;\n\t\n\t toString = String;\n\t if (typeof code !== 'string' && !(code instanceof String)) {\n\t code = toString(code);\n\t }\n\t\n\t source = code;\n\t index = 0;\n\t lineNumber = (source.length > 0) ? 1 : 0;\n\t lineStart = 0;\n\t length = source.length;\n\t lookahead = null;\n\t state = {\n\t allowIn: true,\n\t labelSet: {},\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t lastCommentStart: -1\n\t };\n\t\n\t extra = {};\n\t\n\t // Options matching.\n\t options = options || {};\n\t\n\t // Of course we collect tokens here.\n\t options.tokens = true;\n\t extra.tokens = [];\n\t extra.tokenize = true;\n\t // The following two fields are necessary to compute the Regex tokens.\n\t extra.openParenToken = -1;\n\t extra.openCurlyToken = -1;\n\t\n\t extra.range = (typeof options.range === 'boolean') && options.range;\n\t extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\t\n\t if (typeof options.tolerant === 'boolean' && options.tolerant) {\n\t extra.errors = [];\n\t }\n\t\n\t try {\n\t peek();\n\t if (lookahead.type === Token.EOF) {\n\t return extra.tokens;\n\t }\n\t\n\t lex();\n\t while (lookahead.type !== Token.EOF) {\n\t try {\n\t lex();\n\t } catch (lexError) {\n\t if (extra.errors) {\n\t extra.errors.push(lexError);\n\t // We have to break on the first error\n\t // to avoid infinite loops.\n\t break;\n\t } else {\n\t throw lexError;\n\t }\n\t }\n\t }\n\t\n\t filterTokenLocation();\n\t tokens = extra.tokens;\n\t if (typeof extra.errors !== 'undefined') {\n\t tokens.errors = extra.errors;\n\t }\n\t } catch (e) {\n\t throw e;\n\t } finally {\n\t extra = {};\n\t }\n\t return tokens;\n\t }\n\t\n\t function parse(code, options) {\n\t var program, toString;\n\t\n\t toString = String;\n\t if (typeof code !== 'string' && !(code instanceof String)) {\n\t code = toString(code);\n\t }\n\t\n\t source = code;\n\t index = 0;\n\t lineNumber = (source.length > 0) ? 1 : 0;\n\t lineStart = 0;\n\t length = source.length;\n\t lookahead = null;\n\t state = {\n\t allowIn: true,\n\t labelSet: {},\n\t parenthesisCount: 0,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t lastCommentStart: -1\n\t };\n\t\n\t extra = {};\n\t if (typeof options !== 'undefined') {\n\t extra.range = (typeof options.range === 'boolean') && options.range;\n\t extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\t\n\t if (extra.loc && options.source !== null && options.source !== undefined) {\n\t extra.source = toString(options.source);\n\t }\n\t\n\t if (typeof options.tokens === 'boolean' && options.tokens) {\n\t extra.tokens = [];\n\t }\n\t if (typeof options.tolerant === 'boolean' && options.tolerant) {\n\t extra.errors = [];\n\t }\n\t }\n\t\n\t try {\n\t program = parseProgram();\n\t if (typeof extra.tokens !== 'undefined') {\n\t filterTokenLocation();\n\t program.tokens = extra.tokens;\n\t }\n\t if (typeof extra.errors !== 'undefined') {\n\t program.errors = extra.errors;\n\t }\n\t } catch (e) {\n\t throw e;\n\t } finally {\n\t extra = {};\n\t }\n\t\n\t return program;\n\t }\n\t\n\t return {\n\t tokenize: tokenize,\n\t parse: parse\n\t };\n\t\n\t})();\n\n/***/ },\n/* 139 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tfunction toMap(list) {\n\t var map = {}, i, n;\n\t for (i=0, n=list.length; i 0) {\n\t return id;\n\t }\n\t if (constants.hasOwnProperty(id)) {\n\t return constants[id];\n\t }\n\t if (idWhiteList) {\n\t if (idWhiteList.hasOwnProperty(id)) {\n\t return id;\n\t } else {\n\t globals[id] = 1;\n\t return lookupGlobal(id);\n\t }\n\t }\n\t if (idBlackList && idBlackList.hasOwnProperty(id)) {\n\t throw new Error('Illegal identifier: ' + id);\n\t }\n\t return id;\n\t },\n\t 'Program': function(n) {\n\t return n.body.map(codegen).join('\\n');\n\t },\n\t 'MemberExpression': function(n) {\n\t var d = !n.computed;\n\t var o = codegen(n.object);\n\t if (d) memberDepth += 1;\n\t var p = codegen(n.property);\n\t if (o === FIELD_VAR) { fields[p] = 1; } // HACKish...\n\t if (d) memberDepth -= 1;\n\t return o + (d ? '.'+p : '['+p+']');\n\t },\n\t 'CallExpression': function(n) {\n\t if (n.callee.type !== 'Identifier') {\n\t throw new Error('Illegal callee type: ' + n.callee.type);\n\t }\n\t var callee = n.callee.name;\n\t var args = n.arguments;\n\t var fn = functions.hasOwnProperty(callee) && functions[callee];\n\t if (!fn) throw new Error('Unrecognized function: ' + callee);\n\t return fn instanceof Function ?\n\t fn(args, globals, fields, dataSources) :\n\t fn + '(' + args.map(codegen).join(',') + ')';\n\t },\n\t 'ArrayExpression': function(n) {\n\t return '[' + n.elements.map(codegen).join(',') + ']';\n\t },\n\t 'BinaryExpression': function(n) {\n\t return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n\t },\n\t 'UnaryExpression': function(n) {\n\t return '(' + n.operator + codegen(n.argument) + ')';\n\t },\n\t 'ConditionalExpression': function(n) {\n\t return '(' + codegen(n.test) +\n\t '?' + codegen(n.consequent) +\n\t ':' + codegen(n.alternate) +\n\t ')';\n\t },\n\t 'LogicalExpression': function(n) {\n\t return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n\t },\n\t 'ObjectExpression': function(n) {\n\t return '{' + n.properties.map(codegen).join(',') + '}';\n\t },\n\t 'Property': function(n) {\n\t memberDepth += 1;\n\t var k = codegen(n.key);\n\t memberDepth -= 1;\n\t return k + ':' + codegen(n.value);\n\t },\n\t 'ExpressionStatement': function(n) {\n\t return codegen(n.expression);\n\t }\n\t };\n\t\n\t codegen_wrap.functions = functions;\n\t codegen_wrap.functionDefs = functionDefs;\n\t codegen_wrap.constants = constants;\n\t return codegen_wrap;\n\t};\n\n\n/***/ },\n/* 140 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t 'NaN': 'NaN',\n\t 'E': 'Math.E',\n\t 'LN2': 'Math.LN2',\n\t 'LN10': 'Math.LN10',\n\t 'LOG2E': 'Math.LOG2E',\n\t 'LOG10E': 'Math.LOG10E',\n\t 'PI': 'Math.PI',\n\t 'SQRT1_2': 'Math.SQRT1_2',\n\t 'SQRT2': 'Math.SQRT2'\n\t};\n\n/***/ },\n/* 141 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(codegen) {\n\t\n\t function fncall(name, args, cast, type) {\n\t var obj = codegen(args[0]);\n\t if (cast) {\n\t obj = cast + '(' + obj + ')';\n\t if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n\t }\n\t return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n\t '()' :\n\t '(' + args.slice(1).map(codegen).join(',') + ')');\n\t }\n\t\n\t function fn(name, cast, type) {\n\t return function(args) {\n\t return fncall(name, args, cast, type);\n\t };\n\t }\n\t\n\t var DATE = 'new Date',\n\t STRING = 'String',\n\t REGEXP = 'RegExp';\n\t\n\t return {\n\t // MATH functions\n\t 'isNaN': 'isNaN',\n\t 'isFinite': 'isFinite',\n\t 'abs': 'Math.abs',\n\t 'acos': 'Math.acos',\n\t 'asin': 'Math.asin',\n\t 'atan': 'Math.atan',\n\t 'atan2': 'Math.atan2',\n\t 'ceil': 'Math.ceil',\n\t 'cos': 'Math.cos',\n\t 'exp': 'Math.exp',\n\t 'floor': 'Math.floor',\n\t 'log': 'Math.log',\n\t 'max': 'Math.max',\n\t 'min': 'Math.min',\n\t 'pow': 'Math.pow',\n\t 'random': 'Math.random',\n\t 'round': 'Math.round',\n\t 'sin': 'Math.sin',\n\t 'sqrt': 'Math.sqrt',\n\t 'tan': 'Math.tan',\n\t\n\t 'clamp': function(args) {\n\t if (args.length < 3)\n\t throw new Error('Missing arguments to clamp function.');\n\t if (args.length > 3)\n\t throw new Error('Too many arguments to clamp function.');\n\t var a = args.map(codegen);\n\t return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n\t },\n\t\n\t // DATE functions\n\t 'now': 'Date.now',\n\t 'utc': 'Date.UTC',\n\t 'datetime': DATE,\n\t 'date': fn('getDate', DATE, 0),\n\t 'day': fn('getDay', DATE, 0),\n\t 'year': fn('getFullYear', DATE, 0),\n\t 'month': fn('getMonth', DATE, 0),\n\t 'hours': fn('getHours', DATE, 0),\n\t 'minutes': fn('getMinutes', DATE, 0),\n\t 'seconds': fn('getSeconds', DATE, 0),\n\t 'milliseconds': fn('getMilliseconds', DATE, 0),\n\t 'time': fn('getTime', DATE, 0),\n\t 'timezoneoffset': fn('getTimezoneOffset', DATE, 0),\n\t 'utcdate': fn('getUTCDate', DATE, 0),\n\t 'utcday': fn('getUTCDay', DATE, 0),\n\t 'utcyear': fn('getUTCFullYear', DATE, 0),\n\t 'utcmonth': fn('getUTCMonth', DATE, 0),\n\t 'utchours': fn('getUTCHours', DATE, 0),\n\t 'utcminutes': fn('getUTCMinutes', DATE, 0),\n\t 'utcseconds': fn('getUTCSeconds', DATE, 0),\n\t 'utcmilliseconds': fn('getUTCMilliseconds', DATE, 0),\n\t\n\t // shared sequence functions\n\t 'length': fn('length', null, -1),\n\t 'indexof': fn('indexOf', null),\n\t 'lastindexof': fn('lastIndexOf', null),\n\t\n\t // STRING functions\n\t 'parseFloat': 'parseFloat',\n\t 'parseInt': 'parseInt',\n\t 'upper': fn('toUpperCase', STRING, 0),\n\t 'lower': fn('toLowerCase', STRING, 0),\n\t 'slice': fn('slice', STRING),\n\t 'substring': fn('substring', STRING),\n\t 'replace': fn('replace', STRING),\n\t\n\t // REGEXP functions\n\t 'regexp': REGEXP,\n\t 'test': fn('test', REGEXP),\n\t\n\t // Control Flow functions\n\t 'if': function(args) {\n\t if (args.length < 3)\n\t throw new Error('Missing arguments to if function.');\n\t if (args.length > 3)\n\t throw new Error('Too many arguments to if function.');\n\t var a = args.map(codegen);\n\t return a[0]+'?'+a[1]+':'+a[2];\n\t }\n\t };\n\t};\n\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar lgnd = __webpack_require__(143);\n\t\n\tfunction parseLegends(model, spec, legends, group) {\n\t (spec || []).forEach(function(def, index) {\n\t legends[index] = legends[index] || lgnd(model);\n\t parseLegend(def, index, legends[index], group);\n\t });\n\t}\n\t\n\tfunction parseLegend(def, index, legend, group) {\n\t // legend scales\n\t legend.size (def.size ? group.scale(def.size) : null);\n\t legend.shape (def.shape ? group.scale(def.shape) : null);\n\t legend.fill (def.fill ? group.scale(def.fill) : null);\n\t legend.stroke(def.stroke ? group.scale(def.stroke) : null);\n\t\n\t // legend orientation\n\t if (def.orient) legend.orient(def.orient);\n\t\n\t // legend offset\n\t if (def.offset != null) legend.offset(def.offset);\n\t\n\t // legend title\n\t legend.title(def.title || null);\n\t\n\t // legend values\n\t legend.values(def.values || null);\n\t\n\t // legend label formatting\n\t legend.format(def.format !== undefined ? def.format : null);\n\t legend.formatType(def.formatType || null);\n\t\n\t // style properties\n\t var p = def.properties;\n\t legend.titleProperties(p && p.title || {});\n\t legend.labelProperties(p && p.labels || {});\n\t legend.legendProperties(p && p.legend || {});\n\t legend.symbolProperties(p && p.symbols || {});\n\t legend.gradientProperties(p && p.gradient || {});\n\t}\n\t\n\tmodule.exports = parseLegends;\n\t\n\tparseLegends.schema = {\n\t \"defs\": {\n\t \"legend\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"size\": {\"type\": \"string\"},\n\t \"shape\": {\"type\": \"string\"},\n\t \"fill\": {\"type\": \"string\"},\n\t \"stroke\": {\"type\": \"string\"},\n\t \"orient\": {\"enum\": [\"left\", \"right\"], \"default\": \"right\"},\n\t \"offset\": {\"type\": \"number\"},\n\t \"title\": {\"type\": \"string\"},\n\t \"values\": {\"type\": \"array\"},\n\t \"format\": {\"type\": \"string\"},\n\t \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n\t \"properties\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"title\": {\"$ref\": \"#/defs/propset\"},\n\t \"labels\": {\"$ref\": \"#/defs/propset\"},\n\t \"legend\": {\"$ref\": \"#/defs/propset\"},\n\t \"symbols\": {\"$ref\": \"#/defs/propset\"},\n\t \"gradient\": {\"$ref\": \"#/defs/propset\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"anyOf\": [\n\t {\"required\": [\"size\"]},\n\t {\"required\": [\"shape\"]},\n\t {\"required\": [\"fill\"]},\n\t {\"required\": [\"stroke\"]}\n\t ]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t Gradient = __webpack_require__(60).Gradient,\n\t parseProperties = __webpack_require__(56),\n\t parseMark = __webpack_require__(55),\n\t util = __webpack_require__(58);\n\t\n\tfunction lgnd(model) {\n\t var size = null,\n\t shape = null,\n\t fill = null,\n\t stroke = null,\n\t spacing = null,\n\t values = null,\n\t formatString = null,\n\t formatType = null,\n\t title = null,\n\t config = model.config().legend,\n\t orient = config.orient,\n\t offset = config.offset,\n\t padding = config.padding,\n\t tickArguments = [5],\n\t legendStyle = {},\n\t symbolStyle = {},\n\t gradientStyle = {},\n\t titleStyle = {},\n\t labelStyle = {},\n\t m = { // Legend marks as references for updates\n\t titles: {},\n\t symbols: {},\n\t labels: {},\n\t gradient: {}\n\t };\n\t\n\t var legend = {},\n\t legendDef = {};\n\t\n\t function reset() { legendDef.type = null; }\n\t function ingest(d, i) { return {data: d, index: i}; }\n\t\n\t legend.def = function() {\n\t var scale = size || shape || fill || stroke;\n\t\n\t if (!legendDef.type) {\n\t legendDef = (scale===fill || scale===stroke) && !discrete(scale.type) ?\n\t quantDef(scale) : ordinalDef(scale);\n\t }\n\t legendDef.orient = orient;\n\t legendDef.offset = offset;\n\t legendDef.padding = padding;\n\t legendDef.margin = config.margin;\n\t return legendDef;\n\t };\n\t\n\t function discrete(type) {\n\t return type==='ordinal' || type==='quantize' ||\n\t type==='quantile' || type==='threshold';\n\t }\n\t\n\t function ordinalDef(scale) {\n\t var def = o_legend_def(size, shape, fill, stroke);\n\t\n\t // generate data\n\t var data = (values == null ?\n\t (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) :\n\t values).map(ingest);\n\t\n\t var fmt = util.getTickFormat(scale, data.length, formatType, formatString);\n\t\n\t // determine spacing between legend entries\n\t var fs, range, offset, pad=5, domain = d3.range(data.length);\n\t if (size) {\n\t range = data.map(function(x) { return Math.sqrt(size(x.data)); });\n\t offset = d3.max(range);\n\t range = range.reduce(function(a,b,i,z) {\n\t if (i > 0) a[i] = a[i-1] + z[i-1]/2 + pad;\n\t return (a[i] += b/2, a); }, [0]).map(Math.round);\n\t } else {\n\t offset = Math.round(Math.sqrt(config.symbolSize));\n\t range = spacing ||\n\t (fs = labelStyle.fontSize) && (fs.value + pad) ||\n\t (config.labelFontSize + pad);\n\t range = domain.map(function(d,i) {\n\t return Math.round(offset/2 + i*range);\n\t });\n\t }\n\t\n\t // account for padding and title size\n\t var sz = padding, ts;\n\t if (title) {\n\t ts = titleStyle.fontSize;\n\t sz += 5 + ((ts && ts.value) || config.titleFontSize);\n\t }\n\t for (var i=0, n=range.length; i': parseComparator,\n\t '>=': parseComparator,\n\t '<': parseComparator,\n\t '<=': parseComparator,\n\t 'and': parseLogical,\n\t '&&': parseLogical,\n\t 'or': parseLogical,\n\t '||': parseLogical,\n\t 'in': parseIn\n\t};\n\t\n\tvar nullScale = function() { return 0; };\n\tnullScale.invert = nullScale;\n\t\n\tfunction parsePredicates(model, spec) {\n\t (spec || []).forEach(function(s) {\n\t var parse = types[s.type](model, s);\n\t\n\t /* jshint evil:true */\n\t var pred = Function(\"args\", \"db\", \"signals\", \"predicates\", parse.code);\n\t pred.root = function() { return model.scene().items[0]; }; // For global scales\n\t pred.nullScale = nullScale;\n\t pred.isFunction = dl.isFunction;\n\t pred.signals = parse.signals;\n\t pred.data = parse.data;\n\t\n\t model.predicate(s.name, pred);\n\t });\n\t\n\t return spec;\n\t}\n\t\n\tfunction parseSignal(signal, signals) {\n\t var s = dl.field(signal),\n\t code = \"signals[\"+s.map(dl.str).join(\"][\")+\"]\";\n\t signals[s[0]] = 1;\n\t return code;\n\t}\n\t\n\tfunction parseOperands(model, operands) {\n\t var decl = [], defs = [],\n\t signals = {}, db = {};\n\t\n\t function setSignal(s) { signals[s] = 1; }\n\t function setData(d) { db[d] = 1; }\n\t\n\t dl.array(operands).forEach(function(o, i) {\n\t var name = \"o\" + i,\n\t def = \"\";\n\t\n\t if (o.value !== undefined) {\n\t def = dl.str(o.value);\n\t } else if (o.arg) {\n\t def = \"args[\"+dl.str(o.arg)+\"]\";\n\t } else if (o.signal) {\n\t def = parseSignal(o.signal, signals);\n\t } else if (o.predicate) {\n\t var ref = o.predicate,\n\t predName = ref && (ref.name || ref),\n\t pred = model.predicate(predName),\n\t p = \"predicates[\"+dl.str(predName)+\"]\";\n\t\n\t pred.signals.forEach(setSignal);\n\t pred.data.forEach(setData);\n\t\n\t if (dl.isObject(ref)) {\n\t dl.keys(ref).forEach(function(k) {\n\t if (k === \"name\") return;\n\t var i = ref[k];\n\t def += \"args[\"+dl.str(k)+\"] = \";\n\t if (i.signal) {\n\t def += parseSignal(i.signal, signals);\n\t } else if (i.arg) {\n\t def += \"args[\"+dl.str(i.arg)+\"]\";\n\t }\n\t def += \", \";\n\t });\n\t }\n\t\n\t def += p+\".call(\"+p+\", args, db, signals, predicates)\";\n\t }\n\t\n\t decl.push(name);\n\t defs.push(name+\"=(\"+def+\")\");\n\t });\n\t\n\t return {\n\t code: \"var \" + decl.join(\", \") + \";\\n\" + defs.join(\";\\n\") + \";\\n\",\n\t signals: dl.keys(signals),\n\t data: dl.keys(db)\n\t };\n\t}\n\t\n\tfunction parseComparator(model, spec) {\n\t var ops = parseOperands(model, spec.operands);\n\t if (spec.type === '=') spec.type = '==';\n\t\n\t ops.code += \"o0 = o0 instanceof Date ? o0.getTime() : o0;\\n\" +\n\t \"o1 = o1 instanceof Date ? o1.getTime() : o1;\\n\";\n\t\n\t return {\n\t code: ops.code + \"return \" + [\"o0\", \"o1\"].join(spec.type) + \";\",\n\t signals: ops.signals,\n\t data: ops.data\n\t };\n\t}\n\t\n\tfunction parseLogical(model, spec) {\n\t var ops = parseOperands(model, spec.operands),\n\t o = [], i = 0, len = spec.operands.length;\n\t\n\t while (o.push(\"o\"+i++) < len);\n\t if (spec.type === 'and') spec.type = '&&';\n\t else if (spec.type === 'or') spec.type = '||';\n\t\n\t return {\n\t code: ops.code + \"return \" + o.join(spec.type) + \";\",\n\t signals: ops.signals,\n\t data: ops.data\n\t };\n\t}\n\t\n\tfunction parseIn(model, spec) {\n\t var o = [spec.item], code = \"\";\n\t if (spec.range) o.push.apply(o, spec.range);\n\t if (spec.scale) {\n\t code = parseScale(spec.scale, o);\n\t }\n\t\n\t var ops = parseOperands(model, o);\n\t code = ops.code + code + \"\\n var ordSet = null;\\n\";\n\t\n\t if (spec.data) {\n\t var field = dl.field(spec.field).map(dl.str);\n\t code += \"var where = function(d) { return d[\"+field.join(\"][\")+\"] == o0 };\\n\";\n\t code += \"return db[\"+dl.str(spec.data)+\"].filter(where).length > 0;\";\n\t } else if (spec.range) {\n\t // TODO: inclusive/exclusive range?\n\t if (spec.scale) {\n\t code += \"if (scale.length == 2) {\\n\" + // inverting ordinal scales\n\t \" ordSet = scale(o1, o2);\\n\" +\n\t \"} else {\\n\" +\n\t \" o1 = scale(o1);\\no2 = scale(o2);\\n\" +\n\t \"}\";\n\t }\n\t\n\t code += \"return ordSet !== null ? ordSet.indexOf(o0) !== -1 :\\n\" +\n\t \" o1 < o2 ? o1 <= o0 && o0 <= o2 : o2 <= o0 && o0 <= o1;\";\n\t }\n\t\n\t return {\n\t code: code,\n\t signals: ops.signals,\n\t data: ops.data.concat(spec.data ? [spec.data] : [])\n\t };\n\t}\n\t\n\t// Populate ops such that ultimate scale/inversion function will be in `scale` var.\n\tfunction parseScale(spec, ops) {\n\t var code = \"var scale = \",\n\t idx = ops.length;\n\t\n\t if (dl.isString(spec)) {\n\t ops.push({ value: spec });\n\t code += \"this.root().scale(o\"+idx+\")\";\n\t } else if (spec.arg) { // Scale function is being passed as an arg\n\t ops.push(spec);\n\t code += \"o\"+idx;\n\t } else if (spec.name) { // Full scale parameter {name: ..}\n\t ops.push(dl.isString(spec.name) ? {value: spec.name} : spec.name);\n\t code += \"(this.isFunction(o\"+idx+\") ? o\"+idx+\" : \";\n\t if (spec.scope) {\n\t ops.push(spec.scope);\n\t code += \"((o\"+(idx+1)+\".scale || this.root().scale)(o\"+idx+\") || this.nullScale)\";\n\t } else {\n\t code += \"this.root().scale(o\"+idx+\")\";\n\t }\n\t code += \")\";\n\t }\n\t\n\t if (spec.invert === true) { // Allow spec.invert.arg?\n\t code += \".invert\";\n\t }\n\t\n\t return code+\";\\n\";\n\t}\n\t\n\tmodule.exports = parsePredicates;\n\tparsePredicates.schema = {\n\t \"refs\": {\n\t \"operand\": {\n\t \"type\": \"object\",\n\t \"oneOf\": [\n\t {\n\t \"properties\": {\"value\": {}},\n\t \"required\": [\"value\"]\n\t },\n\t {\n\t \"properties\": {\"arg\": {\"type\": \"string\"}},\n\t \"required\": [\"arg\"]\n\t },\n\t {\"$ref\": \"#/refs/signal\"},\n\t {\n\t \"properties\": {\n\t \"predicate\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"name\": {\"type\": \"string\"}},\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t }\n\t },\n\t \"required\": [\"predicate\"]\n\t }\n\t ]\n\t }\n\t },\n\t\n\t \"defs\": {\n\t \"predicate\": {\n\t \"type\": \"object\",\n\t \"oneOf\": [{\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"==\", \"!=\", \">\", \"<\", \">=\", \"<=\"]},\n\t \"operands\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/refs/operand\"},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t }\n\t },\n\t \"required\": [\"name\", \"type\", \"operands\"]\n\t }, {\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"and\", \"&&\", \"or\", \"||\"]},\n\t \"operands\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/refs/operand\"},\n\t \"minItems\": 2\n\t }\n\t },\n\t \"required\": [\"name\", \"type\", \"operands\"]\n\t }, {\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"in\"]},\n\t \"item\": {\"$ref\": \"#/refs/operand\"}\n\t },\n\t\n\t \"oneOf\": [\n\t {\n\t \"properties\": {\n\t \"range\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/refs/operand\"},\n\t \"minItems\": 2\n\t },\n\t \"scale\": {\"$ref\": \"#/refs/scopedScale\"}\n\t },\n\t \"required\": [\"range\"]\n\t },\n\t {\n\t \"properties\": {\n\t \"data\": {\"type\": \"string\"},\n\t \"field\": {\"type\": \"string\"}\n\t },\n\t \"required\": [\"data\", \"field\"]\n\t }\n\t ],\n\t\n\t \"required\": [\"name\", \"type\", \"item\"]\n\t }]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 147 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t expr = __webpack_require__(136),\n\t SIGNALS = __webpack_require__(4).Dependencies.SIGNALS;\n\t\n\tvar RESERVED = ['datum', 'event', 'signals', 'width', 'height', 'padding']\n\t .concat(dl.keys(expr.codegen.functions));\n\t\n\tfunction parseSignals(model, spec) {\n\t // process each signal definition\n\t (spec || []).forEach(function(s) {\n\t if (RESERVED.indexOf(s.name) !== -1) {\n\t throw Error('Signal name \"'+s.name+'\" is a '+\n\t 'reserved keyword ('+RESERVED.join(', ')+').');\n\t }\n\t\n\t var signal = model.signal(s.name, s.init)\n\t .verbose(s.verbose);\n\t\n\t if (s.init && s.init.expr) {\n\t s.init.expr = model.expr(s.init.expr);\n\t signal.value(exprVal(model, s.init));\n\t }\n\t\n\t if (s.expr) {\n\t s.expr = model.expr(s.expr);\n\t signal.evaluate = function(input) {\n\t var val = exprVal(model, s),\n\t sg = input.signals;\n\t if (val !== signal.value() || signal.verbose()) {\n\t signal.value(val);\n\t sg[s.name] = 1;\n\t }\n\t return sg[s.name] ? input : model.doNotPropagate;\n\t };\n\t signal.dependency(SIGNALS, s.expr.globals);\n\t s.expr.globals.forEach(function(dep) {\n\t model.signal(dep).addListener(signal);\n\t });\n\t }\n\t });\n\t\n\t return spec;\n\t}\n\t\n\tfunction exprVal(model, spec) {\n\t var e = spec.expr, v = e.fn();\n\t return spec.scale ? parseSignals.scale(model, spec, v) : v;\n\t}\n\t\n\tparseSignals.scale = function scale(model, spec, value, datum, evt) {\n\t var def = spec.scale,\n\t name = def.name || def.signal || def,\n\t scope = def.scope, e;\n\t\n\t if (scope) {\n\t if (scope.signal) {\n\t scope = model.signalRef(scope.signal);\n\t } else if (dl.isString(scope)) { // Scope is an expression\n\t e = def._expr = (def._expr || model.expr(scope));\n\t scope = e.fn(datum, evt);\n\t }\n\t }\n\t\n\t return expr.scale(model, def.invert, name, value, scope);\n\t};\n\t\n\tmodule.exports = parseSignals;\n\tparseSignals.schema = {\n\t \"refs\": {\n\t \"signal\": {\n\t \"title\": \"SignalRef\",\n\t \"type\": \"object\",\n\t \"properties\": {\"signal\": {\"type\": \"string\"}},\n\t \"required\": [\"signal\"]\n\t },\n\t\n\t \"scopedScale\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"name\": {\n\t \"oneOf\": [{\"$ref\": \"#/refs/signal\"}, {\"type\": \"string\"}]\n\t },\n\t \"scope\": {\n\t \"oneOf\": [\n\t {\"$ref\": \"#/refs/signal\"},\n\t {\"type\": \"string\"}\n\t ]\n\t },\n\t \"invert\": {\"type\": \"boolean\", \"default\": false}\n\t },\n\t\n\t \"additionalProperties\": false,\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t }\n\t },\n\t\n\t \"defs\": {\n\t \"signal\": {\n\t \"type\": \"object\",\n\t\n\t \"properties\": {\n\t \"name\": {\n\t \"type\": \"string\",\n\t \"not\": {\"enum\": RESERVED}\n\t },\n\t \"init\": {},\n\t \"verbose\": {\"type\": \"boolean\", \"default\": false},\n\t \"expr\": {\"type\": \"string\"},\n\t \"scale\": {\"$ref\": \"#/refs/scopedScale\"},\n\t \"streams\": {\"$ref\": \"#/defs/streams\"}\n\t },\n\t\n\t \"additionalProperties\": false,\n\t \"required\": [\"name\"]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 148 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t Model = __webpack_require__(149),\n\t View = __webpack_require__(157);\n\t\n\t/**\n\t * Parse graph specification\n\t * @param spec (object)\n\t * @param config (optional object)\n\t * @param viewFactory (optional function)\n\t * @param callback (error, model)\n\t */\n\t function parseSpec(spec /*, [config,] [viewFactory,] callback */) {\n\t // do not assign any values to callback, as it will change arguments\n\t var arglen = arguments.length,\n\t argidx = 2,\n\t cb = arguments[arglen-1],\n\t model = new Model(),\n\t viewFactory = View.factory;\n\t\n\t if (arglen > argidx && dl.isFunction(arguments[arglen - argidx])) {\n\t viewFactory = arguments[arglen - argidx];\n\t ++argidx;\n\t }\n\t if (arglen > argidx && dl.isObject(arguments[arglen - argidx])) {\n\t model.config(arguments[arglen - argidx]);\n\t }\n\t\n\t if (dl.isObject(spec)) {\n\t parse(spec);\n\t } else if (dl.isString(spec)) {\n\t var opts = dl.extend({url: spec}, model.config().load);\n\t dl.json(opts, function(err, spec) {\n\t if (err) done('SPECIFICATION LOAD FAILED: ' + err);\n\t else parse(spec);\n\t });\n\t } else {\n\t done('INVALID SPECIFICATION: Must be a valid JSON object or URL.');\n\t }\n\t\n\t function parse(spec) {\n\t try {\n\t // protect against subsequent spec modification\n\t spec = dl.duplicate(spec);\n\t\n\t var parsers = __webpack_require__(52),\n\t width = spec.width || 500,\n\t height = spec.height || 500,\n\t padding = parsers.padding(spec.padding);\n\t\n\t // create signals for width, height, padding, and cursor\n\t model.signal('width', width);\n\t model.signal('height', height);\n\t model.signal('padding', padding);\n\t cursor(spec);\n\t\n\t // initialize model\n\t model.defs({\n\t width: width,\n\t height: height,\n\t padding: padding,\n\t viewport: spec.viewport || null,\n\t background: parsers.background(spec.background),\n\t signals: parsers.signals(model, spec.signals),\n\t predicates: parsers.predicates(model, spec.predicates),\n\t marks: parsers.marks(model, spec, width, height),\n\t data: parsers.data(model, spec.data, done)\n\t });\n\t } catch (err) { done(err); }\n\t }\n\t\n\t function cursor(spec) {\n\t var signals = spec.signals || (spec.signals=[]), def;\n\t signals.some(function(sg) {\n\t return (sg.name === 'cursor') ? (def=sg, true) : false;\n\t });\n\t\n\t if (!def) signals.push(def={name: 'cursor', streams: []});\n\t\n\t // Add a stream def at the head, so that custom defs can override it.\n\t def.init = def.init || {};\n\t def.streams.unshift({\n\t type: 'mousemove',\n\t expr: 'eventItem().cursor === cursor.default ? cursor : {default: eventItem().cursor}'\n\t });\n\t }\n\t\n\t function done(err) {\n\t var view;\n\t if (err) {\n\t log.error(err);\n\t } else {\n\t view = viewFactory(model.buildIndexes());\n\t }\n\t\n\t if (cb) {\n\t if (cb.length > 1) cb(err, view);\n\t else if (!err) cb(view);\n\t cb = null;\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = parseSpec;\n\t\n\tparseSpec.schema = {\n\t \"defs\": {\n\t \"spec\": {\n\t \"title\": \"Vega visualization specification\",\n\t \"type\": \"object\",\n\t\n\t \"allOf\": [{\"$ref\": \"#/defs/container\"}, {\n\t \"properties\": {\n\t \"width\": {\"type\": \"number\"},\n\t \"height\": {\"type\": \"number\"},\n\t \"viewport\": {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": \"number\"},\n\t \"maxItems\": 2\n\t },\n\t\n\t \"background\": {\"$ref\": \"#/defs/background\"},\n\t \"padding\": {\"$ref\": \"#/defs/padding\"},\n\t\n\t \"signals\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/defs/signal\"}\n\t },\n\t\n\t \"predicates\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/defs/predicate\"}\n\t },\n\t\n\t \"data\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/defs/data\"}\n\t }\n\t }\n\t }]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 149 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t ChangeSet = df.ChangeSet,\n\t Base = df.Graph.prototype,\n\t Node = df.Node, // jshint ignore:line\n\t GroupBuilder = __webpack_require__(150),\n\t visit = __webpack_require__(155),\n\t compiler = __webpack_require__(136),\n\t config = __webpack_require__(156);\n\t\n\tfunction Model(cfg) {\n\t this._defs = {};\n\t this._predicates = {};\n\t\n\t this._scene = null; // Root scenegraph node.\n\t this._groups = null; // Index of group items.\n\t\n\t this._node = null;\n\t this._builder = null; // Top-level scenegraph builder.\n\t\n\t this._reset = {axes: false, legends: false};\n\t\n\t this.config(cfg);\n\t this.expr = compiler(this);\n\t Base.init.call(this);\n\t}\n\t\n\tvar prototype = (Model.prototype = Object.create(Base));\n\tprototype.constructor = Model;\n\t\n\tprototype.defs = function(defs) {\n\t if (!arguments.length) return this._defs;\n\t this._defs = defs;\n\t return this;\n\t};\n\t\n\tprototype.config = function(cfg) {\n\t if (!arguments.length) return this._config;\n\t this._config = Object.create(config);\n\t for (var name in cfg) {\n\t var x = cfg[name], y = this._config[name];\n\t if (dl.isObject(x) && dl.isObject(y)) {\n\t this._config[name] = dl.extend({}, y, x);\n\t } else {\n\t this._config[name] = x;\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tprototype.width = function(width) {\n\t if (this._defs) this._defs.width = width;\n\t if (this._defs && this._defs.marks) this._defs.marks.width = width;\n\t if (this._scene) {\n\t this._scene.items[0].width = width;\n\t this._scene.items[0]._dirty = true;\n\t }\n\t this._reset.axes = true;\n\t return this;\n\t};\n\t\n\tprototype.height = function(height) {\n\t if (this._defs) this._defs.height = height;\n\t if (this._defs && this._defs.marks) this._defs.marks.height = height;\n\t if (this._scene) {\n\t this._scene.items[0].height = height;\n\t this._scene.items[0]._dirty = true;\n\t }\n\t this._reset.axes = true;\n\t return this;\n\t};\n\t\n\tprototype.node = function() {\n\t return this._node || (this._node = new Node(this));\n\t};\n\t\n\tprototype.data = function() {\n\t var data = Base.data.apply(this, arguments);\n\t if (arguments.length > 1) { // new Datasource\n\t this.node().addListener(data.pipeline()[0]);\n\t }\n\t return data;\n\t};\n\t\n\tfunction predicates(name) {\n\t var m = this, pred = {};\n\t if (!dl.isArray(name)) return this._predicates[name];\n\t name.forEach(function(n) { pred[n] = m._predicates[n]; });\n\t return pred;\n\t}\n\t\n\tprototype.predicate = function(name, predicate) {\n\t if (arguments.length === 1) return predicates.call(this, name);\n\t return (this._predicates[name] = predicate);\n\t};\n\t\n\tprototype.predicates = function() { return this._predicates; };\n\t\n\tprototype.scene = function(renderer) {\n\t if (!arguments.length) return this._scene;\n\t\n\t if (this._builder) {\n\t this.node().removeListener(this._builder);\n\t this._builder._groupBuilder.disconnect();\n\t }\n\t\n\t var m = this,\n\t b = this._builder = new Node(this);\n\t\n\t b.evaluate = function(input) {\n\t if (b._groupBuilder) return input;\n\t\n\t var gb = b._groupBuilder = new GroupBuilder(m, m._defs.marks, m._scene={}),\n\t p = gb.pipeline();\n\t\n\t m._groups = {};\n\t this.addListener(gb.connect());\n\t p[p.length-1].addListener(renderer);\n\t return input;\n\t };\n\t\n\t this.addListener(b);\n\t return this;\n\t};\n\t\n\tprototype.group = function(id, item) {\n\t var groups = this._groups;\n\t if (arguments.length === 1) return groups[id];\n\t return (groups[id] = item, this);\n\t};\n\t\n\tprototype.reset = function() {\n\t if (this._scene && this._reset.axes) {\n\t visit(this._scene, function(item) {\n\t if (item.axes) item.axes.forEach(function(axis) { axis.reset(); });\n\t });\n\t this._reset.axes = false;\n\t }\n\t if (this._scene && this._reset.legends) {\n\t visit(this._scene, function(item) {\n\t if (item.legends) item.legends.forEach(function(l) { l.reset(); });\n\t });\n\t this._reset.legends = false;\n\t }\n\t return this;\n\t};\n\t\n\tprototype.addListener = function(l) {\n\t this.node().addListener(l);\n\t};\n\t\n\tprototype.removeListener = function(l) {\n\t this.node().removeListener(l);\n\t};\n\t\n\tprototype.fire = function(cs) {\n\t if (!cs) cs = ChangeSet.create();\n\t this.propagate(cs, this.node());\n\t};\n\t\n\tmodule.exports = Model;\n\n\n/***/ },\n/* 150 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t Node = df.Node, // jshint ignore:line\n\t Deps = df.Dependencies,\n\t Tuple = df.Tuple,\n\t Collector = df.Collector,\n\t log = __webpack_require__(8),\n\t Builder = __webpack_require__(151),\n\t Scale = __webpack_require__(154),\n\t parseAxes = __webpack_require__(53),\n\t parseLegends = __webpack_require__(142);\n\t\n\tfunction GroupBuilder() {\n\t this._children = {};\n\t this._scaler = null;\n\t this._recursor = null;\n\t\n\t this._scales = {};\n\t this.scale = scale.bind(this);\n\t return arguments.length ? this.init.apply(this, arguments) : this;\n\t}\n\t\n\tvar Types = GroupBuilder.TYPES = {\n\t GROUP: \"group\",\n\t MARK: \"mark\",\n\t AXIS: \"axis\",\n\t LEGEND: \"legend\"\n\t};\n\t\n\tvar proto = (GroupBuilder.prototype = new Builder());\n\t\n\tproto.init = function(graph, def) {\n\t var builder = this, name;\n\t\n\t this._scaler = new Node(graph);\n\t\n\t (def.scales||[]).forEach(function(s) {\n\t s = builder.scale((name=s.name), new Scale(graph, s, builder));\n\t builder.scale(name+\":prev\", s);\n\t builder._scaler.addListener(s); // Scales should be computed after group is encoded\n\t });\n\t\n\t this._recursor = new Node(graph);\n\t this._recursor.evaluate = recurse.bind(this);\n\t\n\t var scales = (def.axes||[]).reduce(function(acc, x) {\n\t return (acc[x.scale] = 1, acc);\n\t }, {});\n\t\n\t scales = (def.legends||[]).reduce(function(acc, x) {\n\t return (acc[x.size || x.shape || x.fill || x.stroke], acc);\n\t }, scales);\n\t\n\t this._recursor.dependency(Deps.SCALES, dl.keys(scales));\n\t\n\t // We only need a collector for up-propagation of bounds calculation,\n\t // so only GroupBuilders, and not regular Builders, have collectors.\n\t this._collector = new Collector(graph);\n\t\n\t return Builder.prototype.init.apply(this, arguments);\n\t};\n\t\n\tproto.evaluate = function() {\n\t var output = Builder.prototype.evaluate.apply(this, arguments),\n\t model = this._graph,\n\t builder = this,\n\t scales = this._scales,\n\t items = this._mark.items;\n\t\n\t // If scales need to be reevaluated, we need to send all group items forward.\n\t if (output.mod.length < items.length) {\n\t var fullUpdate = dl.keys(scales).some(function(s) {\n\t return scales[s].reevaluate(output);\n\t });\n\t\n\t if (fullUpdate) {\n\t output.mod = output.mod.concat(Tuple.idFilter(items, output.mod));\n\t }\n\t }\n\t\n\t output.add.forEach(function(group) { buildGroup.call(builder, output, group); });\n\t output.rem.forEach(function(group) { model.group(group._id, null); });\n\t return output;\n\t};\n\t\n\tproto.pipeline = function() {\n\t return [this, this._scaler, this._recursor, this._collector, this._bounder];\n\t};\n\t\n\tproto.disconnect = function() {\n\t var builder = this;\n\t dl.keys(builder._children).forEach(function(group_id) {\n\t builder._children[group_id].forEach(function(c) {\n\t builder._recursor.removeListener(c.builder);\n\t c.builder.disconnect();\n\t });\n\t });\n\t\n\t builder._children = {};\n\t return Builder.prototype.disconnect.call(this);\n\t};\n\t\n\tproto.child = function(name, group_id) {\n\t var children = this._children[group_id],\n\t i = 0, len = children.length,\n\t child;\n\t\n\t for (; i 0,\n\t hasAxes = dl.array(this._def.axes).length > 0,\n\t hasLegends = dl.array(this._def.legends).length > 0,\n\t i, j, c, len, group, pipeline, def, inline = false;\n\t\n\t for (i=0, len=input.add.length; i=0; --i) {\n\t group = input.add[i];\n\t for (j=this._children[group._id].length-1; j>=0; --j) {\n\t c = this._children[group._id][j];\n\t c.builder.connect();\n\t pipeline = c.builder.pipeline();\n\t def = c.builder._def;\n\t\n\t // This new child needs to be built during this propagation cycle.\n\t // We could add its builder as a listener off the _recursor node,\n\t // but try to inline it if we can to minimize graph dispatches.\n\t inline = (def.type !== Types.GROUP);\n\t inline = inline && (this._graph.data(c.from) !== undefined);\n\t inline = inline && (pipeline[pipeline.length-1].listeners().length === 1); // Reactive geom source\n\t inline = inline && (def.from && !def.from.mark); // Reactive geom target\n\t c.inline = inline;\n\t\n\t if (inline) this._graph.evaluate(input, c.builder);\n\t else this._recursor.addListener(c.builder);\n\t }\n\t }\n\t\n\t function removeTemp(c) {\n\t if (c.type == Types.MARK && !c.inline &&\n\t builder._graph.data(c.from) !== undefined) {\n\t builder._recursor.removeListener(c.builder);\n\t }\n\t }\n\t\n\t function updateAxis(a) {\n\t var scale = a.scale();\n\t if (!input.scales[scale.scaleName]) return;\n\t a.reset().def();\n\t }\n\t\n\t function updateLegend(l) {\n\t var scale = l.size() || l.shape() || l.fill() || l.stroke();\n\t if (!input.scales[scale.scaleName]) return;\n\t l.reset().def();\n\t }\n\t\n\t for (i=0, len=input.mod.length; i this._stamp) {\n\t join.call(this, fcs, output, this._ds.values(), true, fullUpdate);\n\t } else if (fullUpdate) {\n\t output.mod = this._mark.items.slice();\n\t }\n\t } else {\n\t data = dl.isFunction(this._def.from) ? this._def.from() : [Sentinel];\n\t join.call(this, input, output, data);\n\t }\n\t\n\t // Stash output before Bounder for downstream reactive geometry.\n\t this._output = output = this._graph.evaluate(output, this._encoder);\n\t\n\t // Add any new scale references to the dependency list, and ensure\n\t // they're connected.\n\t if (update.nested && update.nested.length && this._status === CONNECTED) {\n\t dl.keys(this._mark._scaleRefs).forEach(function(s) {\n\t var scale = self._parent.scale(s);\n\t if (!scale) return;\n\t\n\t scale.addListener(self);\n\t self.dependency(Deps.SCALES, s);\n\t self._encoder.dependency(Deps.SCALES, s);\n\t });\n\t }\n\t\n\t // Supernodes calculate bounds too, but only on items marked dirty.\n\t if (this._isSuper) {\n\t output.mod = output.mod.filter(function(x) { return x._dirty; });\n\t output = this._graph.evaluate(output, this._bounder);\n\t }\n\t\n\t return output;\n\t};\n\t\n\tfunction newItem() {\n\t var item = Tuple.ingest(new Item(this._mark));\n\t\n\t // For the root node's item\n\t if (this._def.width) Tuple.set(item, 'width', this._def.width);\n\t if (this._def.height) Tuple.set(item, 'height', this._def.height);\n\t return item;\n\t}\n\t\n\tfunction join(input, output, data, ds, fullUpdate) {\n\t var keyf = keyFunction(this._def.key || (ds ? '_id' : null)),\n\t prev = this._mark.items || [],\n\t rem = ds ? input.rem : prev,\n\t mod = Tuple.idMap((!ds || fullUpdate) ? data : input.mod),\n\t next = [],\n\t i, key, len, item, datum, enter, diff;\n\t\n\t // Only mark rems as exiting. Due to keyf, there may be an add/mod\n\t // tuple that replaces it.\n\t for (i=0, len=rem.length; i0) s += '|';\n\t s += String(f[i](d));\n\t }\n\t return s;\n\t };\n\t}\n\t\n\tmodule.exports = Builder;\n\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t df = __webpack_require__(4),\n\t Node = df.Node, // jshint ignore:line\n\t Deps = df.Dependencies,\n\t bound = __webpack_require__(60).bound;\n\t\n\tvar EMPTY = {};\n\t\n\tfunction Encoder(graph, mark, builder) {\n\t var props = mark.def.properties || {},\n\t enter = props.enter,\n\t update = props.update,\n\t exit = props.exit;\n\t\n\t Node.prototype.init.call(this, graph);\n\t\n\t this._mark = mark;\n\t this._builder = builder;\n\t var s = this._scales = [];\n\t\n\t // Only scales used in the 'update' property set are set as\n\t // encoder depedencies to have targeted reevaluations. However,\n\t // we still want scales in 'enter' and 'exit' to be evaluated\n\t // before the encoder.\n\t if (enter) s.push.apply(s, enter.scales);\n\t\n\t if (update) {\n\t this.dependency(Deps.DATA, update.data);\n\t this.dependency(Deps.SIGNALS, update.signals);\n\t this.dependency(Deps.FIELDS, update.fields);\n\t this.dependency(Deps.SCALES, update.scales);\n\t s.push.apply(s, update.scales);\n\t }\n\t\n\t if (exit) s.push.apply(s, exit.scales);\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar proto = (Encoder.prototype = new Node());\n\t\n\tproto.evaluate = function(input) {\n\t log.debug(input, ['encoding', this._mark.def.type]);\n\t var graph = this._graph,\n\t props = this._mark.def.properties || {},\n\t items = this._mark.items,\n\t enter = props.enter,\n\t update = props.update,\n\t exit = props.exit,\n\t dirty = input.dirty,\n\t preds = graph.predicates(),\n\t req = input.request,\n\t group = this._mark.group,\n\t guide = group && (group.mark.axis || group.mark.legend),\n\t db = EMPTY, sg = EMPTY, i, len, item, prop;\n\t\n\t if (req && !guide) {\n\t if ((prop = props[req]) && input.mod.length) {\n\t db = prop.data ? graph.values(Deps.DATA, prop.data) : null;\n\t sg = prop.signals ? graph.values(Deps.SIGNALS, prop.signals) : null;\n\t\n\t for (i=0, len=input.mod.length; i this._stamp) return true;\n\t }\n\t\n\t return false;\n\t}\n\t\n\t// Short-circuit encoder if user specifies items\n\tEncoder.update = function(graph, trans, request, items, dirty) {\n\t items = dl.array(items);\n\t var preds = graph.predicates(),\n\t db = graph.values(Deps.DATA),\n\t sg = graph.values(Deps.SIGNALS),\n\t i, len, item, props, prop;\n\t\n\t for (i=0, len=items.length; i 0,\n\t bounds = mark.bounds,\n\t rebound = !bounds || input.rem.length,\n\t i, ilen, j, jlen, group, legend;\n\t\n\t if (type === 'line' || type === 'area') {\n\t bound.mark(mark, null, isGrp && !hasLegends);\n\t } else {\n\t input.add.forEach(function(item) {\n\t bound.item(item);\n\t rebound = rebound || (bounds && !bounds.encloses(item.bounds));\n\t });\n\t\n\t input.mod.forEach(function(item) {\n\t rebound = rebound || (bounds && bounds.alignsWith(item.bounds));\n\t bound.item(item);\n\t });\n\t\n\t if (rebound) {\n\t bounds = mark.bounds && mark.bounds.clear() || (mark.bounds = new Bounds());\n\t for (i=0, ilen=items.length; i rng[1]) {\n\t start = rng[1] || 0;\n\t rng = [start + (bw * len + space), start];\n\t } else {\n\t start = rng[0] || 0;\n\t rng = [start, start + (bw * len + space)];\n\t }\n\t\n\t if (def.reverse) rng = rng.reverse();\n\t }\n\t\n\t str = typeof rng[0] === 'string';\n\t if (str || rng.length > 2 || rng.length===1 || dataDrivenRange) {\n\t scale.range(rng); // color or shape values\n\t spatial = false;\n\t } else if (points && round) {\n\t scale.rangeRoundPoints(rng, pad);\n\t } else if (points) {\n\t scale.rangePoints(rng, pad);\n\t } else if (round) {\n\t scale.rangeRoundBands(rng, pad, outer);\n\t } else {\n\t scale.rangeBands(rng, pad, outer);\n\t }\n\t\n\t prev.range = rng;\n\t this._updated = true;\n\t }\n\t\n\t if (!scale.invert && spatial) invertOrdinal(scale);\n\t}\n\t\n\t// \"Polyfill\" ordinal scale inversion. Currently, only ordinal scales\n\t// with ordered numeric ranges are supported.\n\tvar bisect = d3.bisector(dl.numcmp).right,\n\t findAsc = function(a, x) { return bisect(a,x) - 1; },\n\t findDsc = d3.bisector(function(a,b) { return -1 * dl.numcmp(a,b); }).left;\n\t\n\tfunction invertOrdinal(scale) {\n\t scale.invert = function(x, y) {\n\t var rng = scale.range(),\n\t asc = rng[0] < rng[1],\n\t find = asc ? findAsc : findDsc;\n\t\n\t if (arguments.length === 1) {\n\t if (!dl.isNumber(x)) {\n\t throw Error('Ordinal scale inversion is only supported for numeric input ('+x+').');\n\t }\n\t return scale.domain()[find(rng, x)];\n\t\n\t } else if (arguments.length === 2) { // Invert extents\n\t if (!dl.isNumber(x) || !dl.isNumber(y)) {\n\t throw Error('Extents to ordinal invert are not numbers ('+x+', '+y+').');\n\t }\n\t\n\t var domain = scale.domain(),\n\t a = find(rng, x),\n\t b = find(rng, y),\n\t n = rng.length - 1, r;\n\t if (b < a) { r = a; a = b; b = a; } // ensure a <= b\n\t if (a < 0) a = 0;\n\t if (b > n) b = n;\n\t\n\t return (asc ? dl.range(a, b+1) : dl.range(b, a-1, -1))\n\t .map(function(i) { return domain[i]; });\n\t }\n\t };\n\t}\n\t\n\tfunction quantitative(scale, rng, group) {\n\t var def = this._def,\n\t prev = scale._prev,\n\t round = signal.call(this, def.round),\n\t exponent = signal.call(this, def.exponent),\n\t clamp = signal.call(this, def.clamp),\n\t nice = signal.call(this, def.nice),\n\t domain, interval;\n\t\n\t // domain\n\t domain = (def.type === Types.QUANTILE) ?\n\t dataRef.call(this, DataRef.DOMAIN, def.domain, scale, group) :\n\t domainMinMax.call(this, scale, group);\n\t if (domain && !dl.equal(prev.domain, domain)) {\n\t scale.domain(domain);\n\t prev.domain = domain;\n\t this._updated = true;\n\t }\n\t\n\t // range\n\t // vertical scales should flip by default, so use XOR here\n\t if (signal.call(this, def.range) === 'height') rng = rng.reverse();\n\t if (rng && !dl.equal(prev.range, rng)) {\n\t scale[round && scale.rangeRound ? 'rangeRound' : 'range'](rng);\n\t prev.range = rng;\n\t this._updated = true;\n\t }\n\t\n\t if (exponent && def.type===Types.POWER) scale.exponent(exponent);\n\t if (clamp) scale.clamp(true);\n\t if (nice) {\n\t if (def.type === Types.TIME) {\n\t interval = d3.time[nice];\n\t if (!interval) log.error('Unrecognized interval: ' + interval);\n\t scale.nice(interval);\n\t } else {\n\t scale.nice();\n\t }\n\t }\n\t}\n\t\n\tfunction isUniques(scale) {\n\t return scale.type === Types.ORDINAL || scale.type === Types.QUANTILE;\n\t}\n\t\n\tfunction getRefs(def) {\n\t return def.fields || dl.array(def);\n\t}\n\t\n\tfunction inherits(refs) {\n\t return refs.some(function(r) {\n\t if (!r.data) return true;\n\t return r.data && dl.array(r.field).some(function(f) {\n\t return f.parent;\n\t });\n\t });\n\t}\n\t\n\tfunction getFields(ref, group) {\n\t return dl.array(ref.field).map(function(f) {\n\t return f.parent ?\n\t dl.accessor(f.parent)(group.datum) :\n\t f; // String or {'signal'}\n\t });\n\t}\n\t\n\t// Scale datarefs can be computed over multiple schema types.\n\t// This function determines the type of aggregator created, and\n\t// what data is sent to it: values, tuples, or multi-tuples that must\n\t// be standardized into a consistent schema.\n\tfunction aggrType(def, scale) {\n\t var refs = getRefs(def);\n\t\n\t // If we're operating over only a single domain, send full tuples\n\t // through for efficiency (fewer accessor creations/calls)\n\t if (refs.length == 1 && dl.array(refs[0].field).length == 1) {\n\t return Aggregate.TYPES.TUPLE;\n\t }\n\t\n\t // With quantitative scales, we only care about min/max.\n\t if (!isUniques(scale)) return Aggregate.TYPES.VALUE;\n\t\n\t // If we don't sort, then we can send values directly to aggrs as well\n\t if (!dl.isObject(def.sort)) return Aggregate.TYPES.VALUE;\n\t\n\t return Aggregate.TYPES.MULTI;\n\t}\n\t\n\tfunction getCache(which, def, scale, group) {\n\t var refs = getRefs(def),\n\t inherit = inherits(refs),\n\t atype = aggrType(def, scale),\n\t uniques = isUniques(scale),\n\t sort = def.sort,\n\t ck = '_'+which,\n\t fields = getFields(refs[0], group);\n\t\n\t if (scale[ck] || this[ck]) return scale[ck] || this[ck];\n\t\n\t var cache = new Aggregate(this._graph).type(atype),\n\t groupby, summarize;\n\t\n\t // If a scale's dataref doesn't inherit data from the group, we can\n\t // store the dataref aggregator at the Scale (dataflow node) level.\n\t if (inherit) {\n\t scale[ck] = cache;\n\t } else {\n\t this[ck] = cache;\n\t }\n\t\n\t if (uniques) {\n\t if (atype === Aggregate.TYPES.VALUE) {\n\t groupby = [{ name: DataRef.GROUPBY, get: dl.identity }];\n\t summarize = {'*': DataRef.COUNT};\n\t } else if (atype === Aggregate.TYPES.TUPLE) {\n\t groupby = [{ name: DataRef.GROUPBY, get: dl.$(fields[0]) }];\n\t summarize = dl.isObject(sort) ? [{\n\t field: DataRef.VALUE,\n\t get: dl.$(sort.field),\n\t ops: [sort.op]\n\t }] : {'*': DataRef.COUNT};\n\t } else { // atype === Aggregate.TYPES.MULTI\n\t groupby = DataRef.GROUPBY;\n\t summarize = [{ field: DataRef.VALUE, ops: [sort.op] }];\n\t }\n\t } else {\n\t groupby = [];\n\t summarize = [{\n\t field: DataRef.VALUE,\n\t get: (atype == Aggregate.TYPES.TUPLE) ? dl.$(fields[0]) : dl.identity,\n\t ops: [DataRef.MIN, DataRef.MAX],\n\t as: [DataRef.MIN, DataRef.MAX]\n\t }];\n\t }\n\t\n\t cache.param('groupby', groupby)\n\t .param('summarize', summarize);\n\t\n\t return (cache._lastUpdate = -1, cache);\n\t}\n\t\n\tfunction dataRef(which, def, scale, group) {\n\t if (def == null) { return []; }\n\t if (dl.isArray(def)) return def.map(signal.bind(this));\n\t\n\t var self = this, graph = this._graph,\n\t refs = getRefs(def),\n\t inherit = inherits(refs),\n\t atype = aggrType(def, scale),\n\t cache = getCache.apply(this, arguments),\n\t sort = def.sort,\n\t uniques = isUniques(scale),\n\t i, rlen, j, flen, ref, fields, field, data, from, cmp;\n\t\n\t function addDep(s) {\n\t self.dependency(Deps.SIGNALS, s);\n\t }\n\t\n\t if (inherit || (!inherit && cache._lastUpdate < this._stamp)) {\n\t for (i=0, rlen=refs.length; i this._width ? Math.ceil(+b.x2 - this._width) + inset : 0;\n\t b = b.y2 > this._height ? Math.ceil(+b.y2 - this._height) + inset : 0;\n\t pad = {left:l, top:t, right:r, bottom:b};\n\t\n\t if (this._strict) {\n\t this._autopad = 0;\n\t this._padding = pad;\n\t this._width = Math.max(0, this.__width - (l+r));\n\t this._height = Math.max(0, this.__height - (t+b));\n\t\n\t this._model.width(this._width).height(this._height).reset();\n\t setSignal.call(this, 'width', this._width);\n\t setSignal.call(this, 'height', this._height);\n\t setSignal.call(this, 'padding', pad);\n\t\n\t this.initialize().update({props:'enter'}).update({props:'update'});\n\t } else {\n\t this.padding(pad).update(opt);\n\t }\n\t return this;\n\t};\n\t\n\tprototype.viewport = function(size) {\n\t if (!arguments.length) return this._viewport;\n\t if (this._viewport !== size) {\n\t this._viewport = size;\n\t this.initialize();\n\t }\n\t return this;\n\t};\n\t\n\tprototype.renderer = function(type) {\n\t if (!arguments.length) return this._renderer;\n\t if (this._renderers[type]) type = this._renderers[type];\n\t else if (dl.isString(type)) throw new Error('Unknown renderer: ' + type);\n\t else if (!type) throw new Error('No renderer specified');\n\t\n\t if (this._io !== type) {\n\t this._io = type;\n\t this._renderer = null;\n\t this.initialize();\n\t if (this._build) this.render();\n\t }\n\t return this;\n\t};\n\t\n\tprototype.initialize = function(el) {\n\t var v = this, prevHandler,\n\t w = v._width, h = v._height, pad = v._padding, bg = v._bgcolor,\n\t config = this.model().config();\n\t\n\t if (!arguments.length || el === null) {\n\t el = this._el ? this._el.parentNode : null;\n\t if (!el) return this; // This View cannot init w/o an\n\t }\n\t\n\t // clear pre-existing container\n\t d3.select(el).select('div.vega').remove();\n\t\n\t // add div container\n\t this._el = el = d3.select(el)\n\t .append('div')\n\t .attr('class', 'vega')\n\t .style('position', 'relative')\n\t .node();\n\t if (v._viewport) {\n\t d3.select(el)\n\t .style('width', (v._viewport[0] || w)+'px')\n\t .style('height', (v._viewport[1] || h)+'px')\n\t .style('overflow', 'auto');\n\t }\n\t\n\t // renderer\n\t sg.canvas.Renderer.RETINA = config.render.retina;\n\t v._renderer = (v._renderer || new this._io.Renderer(config.load))\n\t .initialize(el, w, h, pad)\n\t .background(bg);\n\t\n\t // input handler\n\t prevHandler = v._handler;\n\t v._handler = new this._io.Handler()\n\t .initialize(el, pad, v);\n\t\n\t if (prevHandler) {\n\t prevHandler.handlers().forEach(function(h) {\n\t v._handler.on(h.type, h.handler);\n\t });\n\t } else {\n\t // Register event listeners for signal stream definitions.\n\t v._detach = parseStreams(this);\n\t }\n\t\n\t return (this._repaint = true, this);\n\t};\n\t\n\tprototype.destroy = function() {\n\t if (this._detach) this._detach();\n\t};\n\t\n\tfunction build() {\n\t var v = this;\n\t v._renderNode = new df.Node(v._model)\n\t .router(true);\n\t\n\t v._renderNode.evaluate = function(input) {\n\t log.debug(input, ['rendering']);\n\t\n\t var s = v._model.scene(),\n\t h = v._handler;\n\t\n\t if (h && h.scene) h.scene(s);\n\t\n\t if (input.trans) {\n\t input.trans.start(function(items) { v._renderer.render(s, items); });\n\t } else if (v._repaint) {\n\t v._renderer.render(s);\n\t } else if (input.dirty.length) {\n\t v._renderer.render(s, input.dirty);\n\t }\n\t\n\t if (input.dirty.length) {\n\t input.dirty.forEach(function(i) { i._dirty = false; });\n\t s.items[0]._dirty = false;\n\t }\n\t\n\t v._repaint = v._skipSignals = false;\n\t return input;\n\t };\n\t\n\t return (v._model.scene(v._renderNode), true);\n\t}\n\t\n\tprototype.update = function(opt) {\n\t opt = opt || {};\n\t var v = this,\n\t model = this._model,\n\t streamer = this._streamer,\n\t cs = this._changeset,\n\t trans = opt.duration ? new Transition(opt.duration, opt.ease) : null;\n\t\n\t if (trans) cs.trans = trans;\n\t if (opt.props !== undefined) {\n\t if (dl.keys(cs.data).length > 0) {\n\t throw Error(\n\t 'New data values are not reflected in the visualization.' +\n\t ' Please call view.update() before updating a specified property set.'\n\t );\n\t }\n\t\n\t cs.reflow = true;\n\t cs.request = opt.props;\n\t }\n\t\n\t var built = v._build;\n\t v._build = v._build || build.call(this);\n\t\n\t // If specific items are specified, short-circuit dataflow graph.\n\t // Else-If there are streaming updates, perform a targeted propagation.\n\t // Otherwise, re-evaluate the entire model (datasources + scene).\n\t if (opt.items && built) {\n\t Encoder.update(model, opt.trans, opt.props, opt.items, cs.dirty);\n\t v._renderNode.evaluate(cs);\n\t } else if (streamer.listeners().length && built) {\n\t // Include re-evaluation entire model when repaint flag is set\n\t if (this._repaint) streamer.addListener(model.node());\n\t model.propagate(cs, streamer, null, this._skipSignals);\n\t streamer.disconnect();\n\t } else {\n\t model.fire(cs);\n\t }\n\t\n\t v._changeset = df.ChangeSet.create();\n\t\n\t return v.autopad(opt);\n\t};\n\t\n\tprototype.toImageURL = function(type) {\n\t var v = this, Renderer;\n\t\n\t // lookup appropriate renderer\n\t switch (type || 'png') {\n\t case 'canvas':\n\t case 'png':\n\t Renderer = sg.canvas.Renderer; break;\n\t case 'svg':\n\t Renderer = sg.svg.string.Renderer; break;\n\t default: throw Error('Unrecognized renderer type: ' + type);\n\t }\n\t\n\t var retina = sg.canvas.Renderer.RETINA;\n\t sg.canvas.Renderer.RETINA = false; // ignore retina screen\n\t\n\t // render the scenegraph\n\t var ren = new Renderer(v._model.config.load)\n\t .initialize(null, v._width, v._height, v._padding)\n\t .background(v._bgcolor)\n\t .render(v._model.scene());\n\t\n\t sg.canvas.Renderer.RETINA = retina; // restore retina settings\n\t\n\t // return data url\n\t if (type === 'svg') {\n\t var blob = new Blob([ren.svg()], {type: 'image/svg+xml'});\n\t return window.URL.createObjectURL(blob);\n\t } else {\n\t return ren.canvas().toDataURL('image/png');\n\t }\n\t};\n\t\n\tprototype.render = function(items) {\n\t this._renderer.render(this._model.scene(), items);\n\t return this;\n\t};\n\t\n\tprototype.on = function() {\n\t this._handler.on.apply(this._handler, arguments);\n\t return this;\n\t};\n\t\n\tprototype.onSignal = function(name, handler) {\n\t var sg = this._model.signal(name);\n\t return (sg ?\n\t sg.on(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n\t};\n\t\n\tprototype.off = function() {\n\t this._handler.off.apply(this._handler, arguments);\n\t return this;\n\t};\n\t\n\tprototype.offSignal = function(name, handler) {\n\t var sg = this._model.signal(name);\n\t return (sg ?\n\t sg.off(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n\t};\n\t\n\tView.factory = function(model) {\n\t var HeadlessView = __webpack_require__(160);\n\t return function(opt) {\n\t opt = opt || {};\n\t var defs = model.defs();\n\t var v = (opt.el ? new View() : new HeadlessView())\n\t .model(model)\n\t .renderer(opt.renderer || 'canvas')\n\t .width(defs.width)\n\t .height(defs.height)\n\t .background(defs.background)\n\t .padding(defs.padding)\n\t .viewport(defs.viewport)\n\t .initialize(opt.el);\n\t\n\t if (opt.data) v.data(opt.data);\n\t\n\t // Register handlers for the hover propset and cursors.\n\t if (opt.el) {\n\t if (opt.hover !== false) {\n\t v.on('mouseover', function(evt, item) {\n\t if (item && item.hasPropertySet('hover')) {\n\t this.update({props:'hover', items:item});\n\t }\n\t })\n\t .on('mouseout', function(evt, item) {\n\t if (item && item.hasPropertySet('hover')) {\n\t this.update({props:'update', items:item});\n\t }\n\t });\n\t }\n\t\n\t if (opt.cursor !== false) {\n\t // If value is a string, it is a custom value set by the user.\n\t // In this case, the user is responsible for maintaining the cursor state\n\t // and control only reverts back to this handler if set back to 'default'.\n\t v.onSignal('cursor', function(name, value) {\n\t var body = d3.select('body');\n\t if (dl.isString(value)) {\n\t v._cursor = value === 'default';\n\t body.style('cursor', value);\n\t } else if (dl.isObject(value) && v._cursor) {\n\t body.style('cursor', value.default);\n\t }\n\t });\n\t }\n\t }\n\t\n\t return v;\n\t };\n\t};\n\t\n\tmodule.exports = View;\n\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t selector = __webpack_require__(135),\n\t parseSignals = __webpack_require__(147);\n\t\n\tvar GATEKEEPER = '_vgGATEKEEPER',\n\t EVALUATOR = '_vgEVALUATOR';\n\t\n\tvar vgEvent = {\n\t getItem: function() { return this.item; },\n\t getGroup: function(name) { return name ? this.name[name] : this.group; },\n\t getXY: function(item) {\n\t var p = {x: this.x, y: this.y};\n\t if (typeof item === 'string') {\n\t item = this.name[item];\n\t }\n\t for (; item; item = item.mark && item.mark.group) {\n\t p.x -= item.x || 0;\n\t p.y -= item.y || 0;\n\t }\n\t return p;\n\t },\n\t getX: function(item) { return this.getXY(item).x; },\n\t getY: function(item) { return this.getXY(item).y; }\n\t};\n\t\n\tfunction parseStreams(view) {\n\t var model = view.model(),\n\t trueFn = model.expr('true'),\n\t falseFn = model.expr('false'),\n\t spec = model.defs().signals,\n\t registry = {handlers: {}, nodes: {}},\n\t internal = dl.duplicate(registry), // Internal event processing\n\t external = dl.duplicate(registry); // External event processing\n\t\n\t dl.array(spec).forEach(function(sig) {\n\t var signal = model.signal(sig.name);\n\t if (sig.expr) return; // Cannot have an expr and stream definition.\n\t\n\t dl.array(sig.streams).forEach(function(stream) {\n\t var sel = selector.parse(stream.type),\n\t exp = model.expr(stream.expr);\n\t mergedStream(signal, sel, exp, stream);\n\t });\n\t });\n\t\n\t // We register the event listeners all together so that if multiple\n\t // signals are registered on the same event, they will receive the\n\t // new value on the same pulse.\n\t dl.keys(internal.handlers).forEach(function(type) {\n\t view.on(type, function(evt, item) {\n\t evt.preventDefault(); // stop text selection\n\t extendEvent(evt, item);\n\t fire(internal, type, (item && item.datum) || {}, evt);\n\t });\n\t });\n\t\n\t // add external event listeners\n\t dl.keys(external.handlers).forEach(function(type) {\n\t if (typeof window === 'undefined') return; // No external support\n\t\n\t var h = external.handlers[type],\n\t t = type.split(':'), // --> no element pseudo-selectors\n\t elt = (t[0] === 'window') ? [window] :\n\t window.document.querySelectorAll(t[0]);\n\t\n\t function handler(evt) {\n\t extendEvent(evt);\n\t fire(external, type, d3.select(this).datum(), evt);\n\t }\n\t\n\t for (var i=0; i 1) f = 1;\n\t e = curr.ease(f);\n\t\n\t for (i=0, n=curr.length; i 0) { wait(); } else { callback(this.canvas()); }\n\t};\n\t\n\tprototype.svg = function() {\n\t return (this._type === 'svg') ? this._renderer.svg() : null;\n\t};\n\t\n\tprototype.initialize = function() {\n\t var w = this._width,\n\t h = this._height,\n\t bg = this._bgcolor,\n\t pad = this._padding,\n\t config = this.model().config();\n\t\n\t if (this._viewport) {\n\t w = this._viewport[0] - (pad ? pad.left + pad.right : 0);\n\t h = this._viewport[1] - (pad ? pad.top + pad.bottom : 0);\n\t }\n\t\n\t this._renderer = (this._renderer || new this._io.Renderer(config.load))\n\t .initialize(null, w, h, pad)\n\t .background(bg);\n\t\n\t return this;\n\t};\n\t\n\tmodule.exports = HeadlessView;\n\n\n/***/ },\n/* 161 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t parse = __webpack_require__(52),\n\t Scale = __webpack_require__(154),\n\t config = __webpack_require__(156);\n\t\n\tfunction compile(module, opt, schema) {\n\t var s = module.schema;\n\t if (!s) return;\n\t if (s.refs) dl.extend(schema.refs, s.refs);\n\t if (s.defs) dl.extend(schema.defs, s.defs);\n\t}\n\t\n\tmodule.exports = function(opt) {\n\t var schema = null;\n\t opt = opt || {};\n\t\n\t // Compile if we're not loading the schema from a URL.\n\t // Load from a URL to extend the existing base schema.\n\t if (opt.url) {\n\t schema = dl.json(dl.extend({url: opt.url}, config.load));\n\t } else {\n\t schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Vega Visualization Specification Language\",\n\t \"defs\": {},\n\t \"refs\": {},\n\t \"$ref\": \"#/defs/spec\"\n\t };\n\t\n\t dl.keys(parse).forEach(function(k) { compile(parse[k], opt, schema); });\n\t\n\t // Scales aren't in the parser, add schema manually\n\t compile(Scale, opt, schema);\n\t }\n\t\n\t // Extend schema to support custom mark properties or property sets.\n\t if (opt.properties) dl.keys(opt.properties).forEach(function(k) {\n\t schema.defs.propset.properties[k] = {\"$ref\": \"#/refs/\"+opt.properties[k]+\"Value\"};\n\t });\n\t\n\t if (opt.propertySets) dl.keys(opt.propertySets).forEach(function(k) {\n\t schema.defs.mark.properties.properties.properties[k] = {\"$ref\": \"#/defs/propset\"};\n\t });\n\t\n\t return schema;\n\t};\n\n\n/***/ },\n/* 162 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar vlBin = __webpack_require__(163);\n\tvar vlChannel = __webpack_require__(164);\n\tvar vlData = __webpack_require__(171);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar vlFieldDef = __webpack_require__(174);\n\tvar vlCompile = __webpack_require__(177);\n\tvar vlShorthand = __webpack_require__(202);\n\tvar vlSpec = __webpack_require__(203);\n\tvar vlTimeUnit = __webpack_require__(176);\n\tvar vlType = __webpack_require__(172);\n\tvar vlValidate = __webpack_require__(204);\n\tvar vlUtil = __webpack_require__(165);\n\texports.bin = vlBin;\n\texports.channel = vlChannel;\n\texports.compile = vlCompile.compile;\n\texports.data = vlData;\n\texports.encoding = vlEncoding;\n\texports.fieldDef = vlFieldDef;\n\texports.shorthand = vlShorthand;\n\texports.spec = vlSpec;\n\texports.timeUnit = vlTimeUnit;\n\texports.type = vlType;\n\texports.util = vlUtil;\n\texports.validate = vlValidate;\n\texports.version = '__VERSION__';\n\t//# sourceMappingURL=vl.js.map\n\n/***/ },\n/* 163 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tfunction autoMaxBins(channel) {\n\t switch (channel) {\n\t case channel_1.ROW:\n\t case channel_1.COLUMN:\n\t case channel_1.SIZE:\n\t case channel_1.SHAPE:\n\t return 6;\n\t default:\n\t return 10;\n\t }\n\t}\n\texports.autoMaxBins = autoMaxBins;\n\t//# sourceMappingURL=bin.js.map\n\n/***/ },\n/* 164 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\t(function (Channel) {\n\t Channel[Channel[\"X\"] = 'x'] = \"X\";\n\t Channel[Channel[\"Y\"] = 'y'] = \"Y\";\n\t Channel[Channel[\"ROW\"] = 'row'] = \"ROW\";\n\t Channel[Channel[\"COLUMN\"] = 'column'] = \"COLUMN\";\n\t Channel[Channel[\"SHAPE\"] = 'shape'] = \"SHAPE\";\n\t Channel[Channel[\"SIZE\"] = 'size'] = \"SIZE\";\n\t Channel[Channel[\"COLOR\"] = 'color'] = \"COLOR\";\n\t Channel[Channel[\"TEXT\"] = 'text'] = \"TEXT\";\n\t Channel[Channel[\"DETAIL\"] = 'detail'] = \"DETAIL\";\n\t Channel[Channel[\"LABEL\"] = 'label'] = \"LABEL\";\n\t Channel[Channel[\"PATH\"] = 'path'] = \"PATH\";\n\t Channel[Channel[\"ORDER\"] = 'order'] = \"ORDER\";\n\t})(exports.Channel || (exports.Channel = {}));\n\tvar Channel = exports.Channel;\n\texports.X = Channel.X;\n\texports.Y = Channel.Y;\n\texports.ROW = Channel.ROW;\n\texports.COLUMN = Channel.COLUMN;\n\texports.SHAPE = Channel.SHAPE;\n\texports.SIZE = Channel.SIZE;\n\texports.COLOR = Channel.COLOR;\n\texports.TEXT = Channel.TEXT;\n\texports.DETAIL = Channel.DETAIL;\n\texports.LABEL = Channel.LABEL;\n\texports.PATH = Channel.PATH;\n\texports.ORDER = Channel.ORDER;\n\texports.CHANNELS = [exports.X, exports.Y, exports.ROW, exports.COLUMN, exports.SIZE, exports.SHAPE, exports.COLOR, exports.PATH, exports.ORDER, exports.TEXT, exports.DETAIL, exports.LABEL];\n\t;\n\tfunction supportMark(channel, mark) {\n\t return !!getSupportedMark(channel)[mark];\n\t}\n\texports.supportMark = supportMark;\n\tfunction getSupportedMark(channel) {\n\t switch (channel) {\n\t case exports.X:\n\t case exports.Y:\n\t case exports.COLOR:\n\t case exports.DETAIL:\n\t case exports.ORDER:\n\t case exports.ROW:\n\t case exports.COLUMN:\n\t return {\n\t point: true, tick: true, circle: true, square: true,\n\t bar: true, line: true, area: true, text: true\n\t };\n\t case exports.SIZE:\n\t return {\n\t point: true, tick: true, circle: true, square: true,\n\t bar: true, text: true\n\t };\n\t case exports.SHAPE:\n\t return { point: true };\n\t case exports.TEXT:\n\t return { text: true };\n\t case exports.PATH:\n\t return { line: true };\n\t }\n\t return {};\n\t}\n\texports.getSupportedMark = getSupportedMark;\n\t;\n\tfunction getSupportedRole(channel) {\n\t switch (channel) {\n\t case exports.X:\n\t case exports.Y:\n\t case exports.COLOR:\n\t case exports.LABEL:\n\t return {\n\t measure: true,\n\t dimension: true\n\t };\n\t case exports.ROW:\n\t case exports.COLUMN:\n\t case exports.SHAPE:\n\t case exports.DETAIL:\n\t return {\n\t measure: false,\n\t dimension: true\n\t };\n\t case exports.SIZE:\n\t case exports.TEXT:\n\t return {\n\t measure: true,\n\t dimension: false\n\t };\n\t case exports.PATH:\n\t return {\n\t measure: false,\n\t dimension: true\n\t };\n\t }\n\t throw new Error('Invalid encoding channel' + channel);\n\t}\n\texports.getSupportedRole = getSupportedRole;\n\tfunction hasScale(channel) {\n\t return !util_1.contains([exports.DETAIL, exports.PATH, exports.TEXT, exports.LABEL, exports.ORDER], channel);\n\t}\n\texports.hasScale = hasScale;\n\t//# sourceMappingURL=channel.js.map\n\n/***/ },\n/* 165 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(166);\n\texports.keys = util_1.keys;\n\texports.extend = util_1.extend;\n\texports.duplicate = util_1.duplicate;\n\texports.isArray = util_1.isArray;\n\texports.vals = util_1.vals;\n\texports.truncate = util_1.truncate;\n\texports.toMap = util_1.toMap;\n\texports.isObject = util_1.isObject;\n\tvar generate_1 = __webpack_require__(167);\n\texports.range = generate_1.range;\n\tfunction contains(array, item) {\n\t return array.indexOf(item) > -1;\n\t}\n\texports.contains = contains;\n\tfunction without(array, items) {\n\t return array.filter(function (item) {\n\t return !contains(items, item);\n\t });\n\t}\n\texports.without = without;\n\tfunction forEach(obj, f, thisArg) {\n\t if (obj.forEach) {\n\t obj.forEach.call(thisArg, f);\n\t }\n\t else {\n\t for (var k in obj) {\n\t if (obj.hasOwnProperty(k)) {\n\t f.call(thisArg, obj[k], k, obj);\n\t }\n\t }\n\t }\n\t}\n\texports.forEach = forEach;\n\tfunction reduce(obj, f, init, thisArg) {\n\t if (obj.reduce) {\n\t return obj.reduce.call(thisArg, f, init);\n\t }\n\t else {\n\t for (var k in obj) {\n\t if (obj.hasOwnProperty(k)) {\n\t init = f.call(thisArg, init, obj[k], k, obj);\n\t }\n\t }\n\t return init;\n\t }\n\t}\n\texports.reduce = reduce;\n\tfunction map(obj, f, thisArg) {\n\t if (obj.map) {\n\t return obj.map.call(thisArg, f);\n\t }\n\t else {\n\t var output = [];\n\t for (var k in obj) {\n\t if (obj.hasOwnProperty(k)) {\n\t output.push(f.call(thisArg, obj[k], k, obj));\n\t }\n\t }\n\t return output;\n\t }\n\t}\n\texports.map = map;\n\tfunction any(arr, f) {\n\t var i = 0;\n\t for (var k = 0; k < arr.length; k++) {\n\t if (f(arr[k], k, i++)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\texports.any = any;\n\tfunction all(arr, f) {\n\t var i = 0;\n\t for (var k = 0; k < arr.length; k++) {\n\t if (!f(arr[k], k, i++)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\texports.all = all;\n\tfunction mergeDeep(dest) {\n\t var src = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t src[_i - 1] = arguments[_i];\n\t }\n\t for (var i = 0; i < src.length; i++) {\n\t dest = deepMerge_(dest, src[i]);\n\t }\n\t return dest;\n\t}\n\texports.mergeDeep = mergeDeep;\n\t;\n\tfunction deepMerge_(dest, src) {\n\t if (typeof src !== 'object' || src === null) {\n\t return dest;\n\t }\n\t for (var p in src) {\n\t if (!src.hasOwnProperty(p)) {\n\t continue;\n\t }\n\t if (src[p] === undefined) {\n\t continue;\n\t }\n\t if (typeof src[p] !== 'object' || src[p] === null) {\n\t dest[p] = src[p];\n\t }\n\t else if (typeof dest[p] !== 'object' || dest[p] === null) {\n\t dest[p] = mergeDeep(src[p].constructor === Array ? [] : {}, src[p]);\n\t }\n\t else {\n\t mergeDeep(dest[p], src[p]);\n\t }\n\t }\n\t return dest;\n\t}\n\tvar dlBin = __webpack_require__(168);\n\tfunction getbins(stats, maxbins) {\n\t return dlBin({\n\t min: stats.min,\n\t max: stats.max,\n\t maxbins: maxbins\n\t });\n\t}\n\texports.getbins = getbins;\n\tfunction error(message) {\n\t console.error('[VL Error]', message);\n\t}\n\texports.error = error;\n\t//# sourceMappingURL=util.js.map\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var u = module.exports;\n\t\n\t// utility functions\n\t\n\tvar FNAME = '__name__';\n\t\n\tu.namedfunc = function(name, f) { return (f[FNAME] = name, f); };\n\t\n\tu.name = function(f) { return f==null ? null : f[FNAME]; };\n\t\n\tu.identity = function(x) { return x; };\n\t\n\tu.true = u.namedfunc('true', function() { return true; });\n\t\n\tu.false = u.namedfunc('false', function() { return false; });\n\t\n\tu.duplicate = function(obj) {\n\t return JSON.parse(JSON.stringify(obj));\n\t};\n\t\n\tu.equal = function(a, b) {\n\t return JSON.stringify(a) === JSON.stringify(b);\n\t};\n\t\n\tu.extend = function(obj) {\n\t for (var x, name, i=1, len=arguments.length; i 1 ?\n\t function(x, v) {\n\t for (var i=0; i y) return sign[i];\n\t }\n\t return 0;\n\t };\n\t};\n\t\n\tu.cmp = function(a, b) {\n\t if (a < b) {\n\t return -1;\n\t } else if (a > b) {\n\t return 1;\n\t } else if (a >= b) {\n\t return 0;\n\t } else if (a === null) {\n\t return -1;\n\t } else if (b === null) {\n\t return 1;\n\t }\n\t return NaN;\n\t};\n\t\n\tu.numcmp = function(a, b) { return a - b; };\n\t\n\tu.stablesort = function(array, sortBy, keyFn) {\n\t var indices = array.reduce(function(idx, v, i) {\n\t return (idx[keyFn(v)] = i, idx);\n\t }, {});\n\t\n\t array.sort(function(a, b) {\n\t var sa = sortBy(a),\n\t sb = sortBy(b);\n\t return sa < sb ? -1 : sa > sb ? 1\n\t : (indices[keyFn(a)] - indices[keyFn(b)]);\n\t });\n\t\n\t return array;\n\t};\n\t\n\t\n\t// string functions\n\t\n\tu.pad = function(s, length, pos, padchar) {\n\t padchar = padchar || \" \";\n\t var d = length - s.length;\n\t if (d <= 0) return s;\n\t switch (pos) {\n\t case 'left':\n\t return strrep(d, padchar) + s;\n\t case 'middle':\n\t case 'center':\n\t return strrep(Math.floor(d/2), padchar) +\n\t s + strrep(Math.ceil(d/2), padchar);\n\t default:\n\t return s + strrep(d, padchar);\n\t }\n\t};\n\t\n\tfunction strrep(n, str) {\n\t var s = \"\", i;\n\t for (i=0; i stop) range.push(j);\n\t else while ((j = start + step * ++i) < stop) range.push(j);\n\t return range;\n\t};\n\t\n\tgen.random = {};\n\t\n\tgen.random.uniform = function(min, max) {\n\t if (max === undefined) {\n\t max = min === undefined ? 1 : min;\n\t min = 0;\n\t }\n\t var d = max - min;\n\t var f = function() {\n\t return min + d * Math.random();\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x >= min && x <= max) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t return x < min ? 0 : x > max ? 1 : (x - min) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? min + p*d : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.integer = function(a, b) {\n\t if (b === undefined) {\n\t b = a;\n\t a = 0;\n\t }\n\t var d = b - a;\n\t var f = function() {\n\t return a + Math.floor(d * Math.random());\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t var v = Math.floor(x);\n\t return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.normal = function(mean, stdev) {\n\t mean = mean || 0;\n\t stdev = stdev || 1;\n\t var next;\n\t var f = function() {\n\t var x = 0, y = 0, rds, c;\n\t if (next !== undefined) {\n\t x = next;\n\t next = undefined;\n\t return x;\n\t }\n\t do {\n\t x = Math.random()*2-1;\n\t y = Math.random()*2-1;\n\t rds = x*x + y*y;\n\t } while (rds === 0 || rds > 1);\n\t c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n\t next = mean + y*c*stdev;\n\t return mean + x*c*stdev;\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n\t return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n\t };\n\t f.cdf = function(x) {\n\t // Approximation from West (2009)\n\t // Better Approximations to Cumulative Normal Functions\n\t var cd,\n\t z = (x - mean) / stdev,\n\t Z = Math.abs(z);\n\t if (Z > 37) {\n\t cd = 0;\n\t } else {\n\t var sum, exp = Math.exp(-Z*Z/2);\n\t if (Z < 7.07106781186547) {\n\t sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n\t sum = sum * Z + 6.37396220353165;\n\t sum = sum * Z + 33.912866078383;\n\t sum = sum * Z + 112.079291497871;\n\t sum = sum * Z + 221.213596169931;\n\t sum = sum * Z + 220.206867912376;\n\t cd = exp * sum;\n\t sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n\t sum = sum * Z + 16.064177579207;\n\t sum = sum * Z + 86.7807322029461;\n\t sum = sum * Z + 296.564248779674;\n\t sum = sum * Z + 637.333633378831;\n\t sum = sum * Z + 793.826512519948;\n\t sum = sum * Z + 440.413735824752;\n\t cd = cd / sum;\n\t } else {\n\t sum = Z + 0.65;\n\t sum = Z + 4 / sum;\n\t sum = Z + 3 / sum;\n\t sum = Z + 2 / sum;\n\t sum = Z + 1 / sum;\n\t cd = exp / sum / 2.506628274631;\n\t }\n\t }\n\t return z > 0 ? 1 - cd : cd;\n\t };\n\t f.icdf = function(p) {\n\t // Approximation of Probit function using inverse error function.\n\t if (p <= 0 || p >= 1) return NaN;\n\t var x = 2*p - 1,\n\t v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n\t a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n\t b = Math.log(1 - (x*x)) / v,\n\t s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n\t return mean + stdev * Math.SQRT2 * s;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.bootstrap = function(domain, smooth) {\n\t // Generates a bootstrap sample from a set of observations.\n\t // Smooth bootstrapping adds random zero-centered noise to the samples.\n\t var val = domain.filter(util.isValid),\n\t len = val.length,\n\t err = smooth ? gen.random.normal(0, smooth) : null;\n\t var f = function() {\n\t return val[~~(Math.random()*len)] + (err ? err() : 0);\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t return f;\n\t};\n\n/***/ },\n/* 168 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(166),\n\t time = __webpack_require__(169),\n\t EPSILON = 1e-15;\n\t\n\tfunction bins(opt) {\n\t if (!opt) { throw Error(\"Missing binning options.\"); }\n\t\n\t // determine range\n\t var maxb = opt.maxbins || 15,\n\t base = opt.base || 10,\n\t logb = Math.log(base),\n\t div = opt.div || [5, 2],\n\t min = opt.min,\n\t max = opt.max,\n\t span = max - min,\n\t step, level, minstep, precision, v, i, eps;\n\t\n\t if (opt.step) {\n\t // if step size is explicitly given, use that\n\t step = opt.step;\n\t } else if (opt.steps) {\n\t // if provided, limit choice to acceptable step sizes\n\t step = opt.steps[Math.min(\n\t opt.steps.length - 1,\n\t bisect(opt.steps, span/maxb, 0, opt.steps.length)\n\t )];\n\t } else {\n\t // else use span to determine step size\n\t level = Math.ceil(Math.log(maxb) / logb);\n\t minstep = opt.minstep || 0;\n\t step = Math.max(\n\t minstep,\n\t Math.pow(base, Math.round(Math.log(span) / logb) - level)\n\t );\n\t\n\t // increase step size if too many bins\n\t while (Math.ceil(span/step) > maxb) { step *= base; }\n\t\n\t // decrease step size if allowed\n\t for (i=0; i= minstep && span / v <= maxb) step = v;\n\t }\n\t }\n\t\n\t // update precision, min and max\n\t v = Math.log(step);\n\t precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n\t eps = Math.pow(base, -precision - 1);\n\t min = Math.min(min, Math.floor(min / step + eps) * step);\n\t max = Math.ceil(max / step) * step;\n\t\n\t return {\n\t start: min,\n\t stop: max,\n\t step: step,\n\t unit: {precision: precision},\n\t value: value,\n\t index: index\n\t };\n\t}\n\t\n\tfunction bisect(a, x, lo, hi) {\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n\t else { hi = mid; }\n\t }\n\t return lo;\n\t}\n\t\n\tfunction value(v) {\n\t return this.step * Math.floor(v / this.step + EPSILON);\n\t}\n\t\n\tfunction index(v) {\n\t return Math.floor((v - this.start) / this.step + EPSILON);\n\t}\n\t\n\tfunction date_value(v) {\n\t return this.unit.date(value.call(this, v));\n\t}\n\t\n\tfunction date_index(v) {\n\t return index.call(this, this.unit.unit(v));\n\t}\n\t\n\tbins.date = function(opt) {\n\t if (!opt) { throw Error(\"Missing date binning options.\"); }\n\t\n\t // find time step, then bin\n\t var units = opt.utc ? time.utc : time,\n\t dmin = opt.min,\n\t dmax = opt.max,\n\t maxb = opt.maxbins || 20,\n\t minb = opt.minbins || 4,\n\t span = (+dmax) - (+dmin),\n\t unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n\t spec = bins({\n\t min: unit.min != null ? unit.min : unit.unit(dmin),\n\t max: unit.max != null ? unit.max : unit.unit(dmax),\n\t maxbins: maxb,\n\t minstep: unit.minstep,\n\t steps: unit.step\n\t });\n\t\n\t spec.unit = unit;\n\t spec.index = date_index;\n\t if (!opt.raw) spec.value = date_value;\n\t return spec;\n\t};\n\t\n\tmodule.exports = bins;\n\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3_time = __webpack_require__(170);\n\t\n\tvar tempDate = new Date(),\n\t baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n\t utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\t\n\tfunction date(d) {\n\t return (tempDate.setTime(+d), tempDate);\n\t}\n\t\n\t// create a time unit entry\n\tfunction entry(type, date, unit, step, min, max) {\n\t var e = {\n\t type: type,\n\t date: date,\n\t unit: unit\n\t };\n\t if (step) {\n\t e.step = step;\n\t } else {\n\t e.minstep = 1;\n\t }\n\t if (min != null) e.min = min;\n\t if (max != null) e.max = max;\n\t return e;\n\t}\n\t\n\tfunction create(type, unit, base, step, min, max) {\n\t return entry(type,\n\t function(d) { return unit.offset(base, d); },\n\t function(d) { return unit.count(base, d); },\n\t step, min, max);\n\t}\n\t\n\tvar locale = [\n\t create('second', d3_time.second, baseDate),\n\t create('minute', d3_time.minute, baseDate),\n\t create('hour', d3_time.hour, baseDate),\n\t create('day', d3_time.day, baseDate, [1, 7]),\n\t create('month', d3_time.month, baseDate, [1, 3, 6]),\n\t create('year', d3_time.year, baseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n\t function(d) { return date(d).getSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(1970, 0, 1, 0, d); },\n\t function(d) { return date(d).getMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(1970, 0, 1, d); },\n\t function(d) { return date(d).getHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(1970, 0, 4+d); },\n\t function(d) { return date(d).getDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(1970, 0, d); },\n\t function(d) { return date(d).getDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(1970, d % 12, 1); },\n\t function(d) { return date(d).getMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar utc = [\n\t create('second', d3_time.utcSecond, utcBaseDate),\n\t create('minute', d3_time.utcMinute, utcBaseDate),\n\t create('hour', d3_time.utcHour, utcBaseDate),\n\t create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n\t create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n\t create('year', d3_time.utcYear, utcBaseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n\t function(d) { return date(d).getUTCSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n\t function(d) { return date(d).getUTCMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n\t function(d) { return date(d).getUTCHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n\t function(d) { return date(d).getUTCDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(Date.UTC(1970, 0, d)); },\n\t function(d) { return date(d).getUTCDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n\t function(d) { return date(d).getUTCMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar STEPS = [\n\t [31536e6, 5], // 1-year\n\t [7776e6, 4], // 3-month\n\t [2592e6, 4], // 1-month\n\t [12096e5, 3], // 2-week\n\t [6048e5, 3], // 1-week\n\t [1728e5, 3], // 2-day\n\t [864e5, 3], // 1-day\n\t [432e5, 2], // 12-hour\n\t [216e5, 2], // 6-hour\n\t [108e5, 2], // 3-hour\n\t [36e5, 2], // 1-hour\n\t [18e5, 1], // 30-minute\n\t [9e5, 1], // 15-minute\n\t [3e5, 1], // 5-minute\n\t [6e4, 1], // 1-minute\n\t [3e4, 0], // 30-second\n\t [15e3, 0], // 15-second\n\t [5e3, 0], // 5-second\n\t [1e3, 0] // 1-second\n\t];\n\t\n\tfunction find(units, span, minb, maxb) {\n\t var step = STEPS[0], i, n, bins;\n\t\n\t for (i=1, n=STEPS.length; i step[0]) {\n\t bins = span / step[0];\n\t if (bins > maxb) {\n\t return units[STEPS[i-1][1]];\n\t }\n\t if (bins >= minb) {\n\t return units[step[1]];\n\t }\n\t }\n\t }\n\t return units[STEPS[n-1][1]];\n\t}\n\t\n\tfunction toUnitMap(units) {\n\t var map = {}, i, n;\n\t for (i=0, n=units.length; i 0)) return range; // also handles Invalid Date\n\t offseti(start, 1), floori(start);\n\t if (start < stop) range.push(new Date(+start));\n\t while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t while (--step >= 0) while (offseti(date, 1), !test(date));\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t };\n\t\n\t var millisecond = newInterval(function() {\n\t // noop\n\t }, function(date, step) {\n\t date.setTime(+date + step);\n\t }, function(start, end) {\n\t return end - start;\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t millisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t };\n\t\n\t var second = newInterval(function(date) {\n\t date.setMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t\n\t var minute = newInterval(function(date) {\n\t date.setSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t\n\t var hour = newInterval(function(date) {\n\t date.setMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t\n\t var day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t\n\t function weekday(i) {\n\t return newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n\t });\n\t }\n\t\n\t var sunday = weekday(0);\n\t var monday = weekday(1);\n\t var tuesday = weekday(2);\n\t var wednesday = weekday(3);\n\t var thursday = weekday(4);\n\t var friday = weekday(5);\n\t var saturday = weekday(6);\n\t\n\t var month = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(1);\n\t }, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t }, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t\n\t var year = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setMonth(0, 1);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t }, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t\n\t var utcSecond = newInterval(function(date) {\n\t date.setUTCMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getUTCSeconds();\n\t });\n\t\n\t var utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getUTCMinutes();\n\t });\n\t\n\t var utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getUTCHours();\n\t });\n\t\n\t var utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t }, function(start, end) {\n\t return (end - start) / 864e5;\n\t }, function(date) {\n\t return date.getUTCDate() - 1;\n\t });\n\t\n\t function utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / 6048e5;\n\t });\n\t }\n\t\n\t var utcSunday = utcWeekday(0);\n\t var utcMonday = utcWeekday(1);\n\t var utcTuesday = utcWeekday(2);\n\t var utcWednesday = utcWeekday(3);\n\t var utcThursday = utcWeekday(4);\n\t var utcFriday = utcWeekday(5);\n\t var utcSaturday = utcWeekday(6);\n\t\n\t var utcMonth = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(1);\n\t }, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t }, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t }, function(date) {\n\t return date.getUTCMonth();\n\t });\n\t\n\t var utcYear = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCMonth(0, 1);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t }, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t }, function(date) {\n\t return date.getUTCFullYear();\n\t });\n\t\n\t var milliseconds = millisecond.range;\n\t var seconds = second.range;\n\t var minutes = minute.range;\n\t var hours = hour.range;\n\t var days = day.range;\n\t var sundays = sunday.range;\n\t var mondays = monday.range;\n\t var tuesdays = tuesday.range;\n\t var wednesdays = wednesday.range;\n\t var thursdays = thursday.range;\n\t var fridays = friday.range;\n\t var saturdays = saturday.range;\n\t var weeks = sunday.range;\n\t var months = month.range;\n\t var years = year.range;\n\t\n\t var utcMillisecond = millisecond;\n\t var utcMilliseconds = milliseconds;\n\t var utcSeconds = utcSecond.range;\n\t var utcMinutes = utcMinute.range;\n\t var utcHours = utcHour.range;\n\t var utcDays = utcDay.range;\n\t var utcSundays = utcSunday.range;\n\t var utcMondays = utcMonday.range;\n\t var utcTuesdays = utcTuesday.range;\n\t var utcWednesdays = utcWednesday.range;\n\t var utcThursdays = utcThursday.range;\n\t var utcFridays = utcFriday.range;\n\t var utcSaturdays = utcSaturday.range;\n\t var utcWeeks = utcSunday.range;\n\t var utcMonths = utcMonth.range;\n\t var utcYears = utcYear.range;\n\t\n\t var version = \"0.1.1\";\n\t\n\t exports.version = version;\n\t exports.milliseconds = milliseconds;\n\t exports.seconds = seconds;\n\t exports.minutes = minutes;\n\t exports.hours = hours;\n\t exports.days = days;\n\t exports.sundays = sundays;\n\t exports.mondays = mondays;\n\t exports.tuesdays = tuesdays;\n\t exports.wednesdays = wednesdays;\n\t exports.thursdays = thursdays;\n\t exports.fridays = fridays;\n\t exports.saturdays = saturdays;\n\t exports.weeks = weeks;\n\t exports.months = months;\n\t exports.years = years;\n\t exports.utcMillisecond = utcMillisecond;\n\t exports.utcMilliseconds = utcMilliseconds;\n\t exports.utcSeconds = utcSeconds;\n\t exports.utcMinutes = utcMinutes;\n\t exports.utcHours = utcHours;\n\t exports.utcDays = utcDays;\n\t exports.utcSundays = utcSundays;\n\t exports.utcMondays = utcMondays;\n\t exports.utcTuesdays = utcTuesdays;\n\t exports.utcWednesdays = utcWednesdays;\n\t exports.utcThursdays = utcThursdays;\n\t exports.utcFridays = utcFridays;\n\t exports.utcSaturdays = utcSaturdays;\n\t exports.utcWeeks = utcWeeks;\n\t exports.utcMonths = utcMonths;\n\t exports.utcYears = utcYears;\n\t exports.millisecond = millisecond;\n\t exports.second = second;\n\t exports.minute = minute;\n\t exports.hour = hour;\n\t exports.day = day;\n\t exports.sunday = sunday;\n\t exports.monday = monday;\n\t exports.tuesday = tuesday;\n\t exports.wednesday = wednesday;\n\t exports.thursday = thursday;\n\t exports.friday = friday;\n\t exports.saturday = saturday;\n\t exports.week = sunday;\n\t exports.month = month;\n\t exports.year = year;\n\t exports.utcSecond = utcSecond;\n\t exports.utcMinute = utcMinute;\n\t exports.utcHour = utcHour;\n\t exports.utcDay = utcDay;\n\t exports.utcSunday = utcSunday;\n\t exports.utcMonday = utcMonday;\n\t exports.utcTuesday = utcTuesday;\n\t exports.utcWednesday = utcWednesday;\n\t exports.utcThursday = utcThursday;\n\t exports.utcFriday = utcFriday;\n\t exports.utcSaturday = utcSaturday;\n\t exports.utcWeek = utcSunday;\n\t exports.utcMonth = utcMonth;\n\t exports.utcYear = utcYear;\n\t exports.interval = newInterval;\n\t\n\t}));\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar type_1 = __webpack_require__(172);\n\t(function (DataFormat) {\n\t DataFormat[DataFormat[\"JSON\"] = 'json'] = \"JSON\";\n\t DataFormat[DataFormat[\"CSV\"] = 'csv'] = \"CSV\";\n\t DataFormat[DataFormat[\"TSV\"] = 'tsv'] = \"TSV\";\n\t})(exports.DataFormat || (exports.DataFormat = {}));\n\tvar DataFormat = exports.DataFormat;\n\texports.SUMMARY = 'summary';\n\texports.SOURCE = 'source';\n\texports.STACKED_SCALE = 'stacked_scale';\n\texports.LAYOUT = 'layout';\n\texports.types = {\n\t 'boolean': type_1.Type.NOMINAL,\n\t 'number': type_1.Type.QUANTITATIVE,\n\t 'integer': type_1.Type.QUANTITATIVE,\n\t 'date': type_1.Type.TEMPORAL,\n\t 'string': type_1.Type.NOMINAL\n\t};\n\t//# sourceMappingURL=data.js.map\n\n/***/ },\n/* 172 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (Type) {\n\t Type[Type[\"QUANTITATIVE\"] = 'quantitative'] = \"QUANTITATIVE\";\n\t Type[Type[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n\t Type[Type[\"TEMPORAL\"] = 'temporal'] = \"TEMPORAL\";\n\t Type[Type[\"NOMINAL\"] = 'nominal'] = \"NOMINAL\";\n\t})(exports.Type || (exports.Type = {}));\n\tvar Type = exports.Type;\n\texports.QUANTITATIVE = Type.QUANTITATIVE;\n\texports.ORDINAL = Type.ORDINAL;\n\texports.TEMPORAL = Type.TEMPORAL;\n\texports.NOMINAL = Type.NOMINAL;\n\texports.SHORT_TYPE = {\n\t quantitative: 'Q',\n\t temporal: 'T',\n\t nominal: 'N',\n\t ordinal: 'O'\n\t};\n\texports.TYPE_FROM_SHORT_TYPE = {\n\t Q: exports.QUANTITATIVE,\n\t T: exports.TEMPORAL,\n\t O: exports.ORDINAL,\n\t N: exports.NOMINAL\n\t};\n\tfunction getFullName(type) {\n\t var typeString = type;\n\t return exports.TYPE_FROM_SHORT_TYPE[typeString.toUpperCase()] ||\n\t typeString.toLowerCase();\n\t}\n\texports.getFullName = getFullName;\n\t//# sourceMappingURL=type.js.map\n\n/***/ },\n/* 173 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar util_1 = __webpack_require__(165);\n\tfunction countRetinal(encoding) {\n\t var count = 0;\n\t if (encoding.color) {\n\t count++;\n\t }\n\t if (encoding.size) {\n\t count++;\n\t }\n\t if (encoding.shape) {\n\t count++;\n\t }\n\t return count;\n\t}\n\texports.countRetinal = countRetinal;\n\tfunction channels(encoding) {\n\t return channel_1.CHANNELS.filter(function (channel) {\n\t return has(encoding, channel);\n\t });\n\t}\n\texports.channels = channels;\n\tfunction has(encoding, channel) {\n\t var channelEncoding = encoding && encoding[channel];\n\t return channelEncoding && (channelEncoding.field !== undefined ||\n\t (util_1.isArray(channelEncoding) && channelEncoding.length > 0));\n\t}\n\texports.has = has;\n\tfunction isAggregate(encoding) {\n\t return util_1.any(channel_1.CHANNELS, function (channel) {\n\t if (has(encoding, channel) && encoding[channel].aggregate) {\n\t return true;\n\t }\n\t return false;\n\t });\n\t}\n\texports.isAggregate = isAggregate;\n\tfunction fieldDefs(encoding) {\n\t var arr = [];\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t arr.push(fieldDef);\n\t });\n\t }\n\t else {\n\t arr.push(encoding[channel]);\n\t }\n\t }\n\t });\n\t return arr;\n\t}\n\texports.fieldDefs = fieldDefs;\n\t;\n\tfunction forEach(encoding, f, thisArg) {\n\t var i = 0;\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t f.call(thisArg, fieldDef, channel, i++);\n\t });\n\t }\n\t else {\n\t f.call(thisArg, encoding[channel], channel, i++);\n\t }\n\t }\n\t });\n\t}\n\texports.forEach = forEach;\n\tfunction map(encoding, f, thisArg) {\n\t var arr = [];\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t arr.push(f.call(thisArg, fieldDef, channel, encoding));\n\t });\n\t }\n\t else {\n\t arr.push(f.call(thisArg, encoding[channel], channel, encoding));\n\t }\n\t }\n\t });\n\t return arr;\n\t}\n\texports.map = map;\n\tfunction reduce(encoding, f, init, thisArg) {\n\t var r = init;\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t r = f.call(thisArg, r, fieldDef, channel, encoding);\n\t });\n\t }\n\t else {\n\t r = f.call(thisArg, r, encoding[channel], channel, encoding);\n\t }\n\t }\n\t });\n\t return r;\n\t}\n\texports.reduce = reduce;\n\t//# sourceMappingURL=encoding.js.map\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar timeunit_1 = __webpack_require__(176);\n\tvar type_1 = __webpack_require__(172);\n\tvar util_1 = __webpack_require__(165);\n\texports.aggregate = {\n\t type: 'string',\n\t enum: aggregate_1.AGGREGATE_OPS,\n\t supportedEnums: {\n\t quantitative: aggregate_1.AGGREGATE_OPS,\n\t ordinal: ['median', 'min', 'max'],\n\t nominal: [],\n\t temporal: ['mean', 'median', 'min', 'max'],\n\t '': ['count']\n\t },\n\t supportedTypes: util_1.toMap([type_1.QUANTITATIVE, type_1.NOMINAL, type_1.ORDINAL, type_1.TEMPORAL, ''])\n\t};\n\tfunction field(fieldDef, opt) {\n\t if (opt === void 0) { opt = {}; }\n\t var prefix = (opt.datum ? 'datum.' : '') + (opt.prefn || '');\n\t var suffix = opt.suffix || '';\n\t var field = fieldDef.field;\n\t if (isCount(fieldDef)) {\n\t return prefix + 'count' + suffix;\n\t }\n\t else if (opt.fn) {\n\t return prefix + opt.fn + '_' + field + suffix;\n\t }\n\t else if (!opt.nofn && fieldDef.bin) {\n\t return prefix + 'bin_' + field + (opt.binSuffix || suffix || '_start');\n\t }\n\t else if (!opt.nofn && !opt.noAggregate && fieldDef.aggregate) {\n\t return prefix + fieldDef.aggregate + '_' + field + suffix;\n\t }\n\t else if (!opt.nofn && fieldDef.timeUnit) {\n\t return prefix + fieldDef.timeUnit + '_' + field + suffix;\n\t }\n\t else {\n\t return prefix + field;\n\t }\n\t}\n\texports.field = field;\n\tfunction _isFieldDimension(fieldDef) {\n\t return util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) || !!fieldDef.bin ||\n\t (fieldDef.type === type_1.TEMPORAL && !!fieldDef.timeUnit);\n\t}\n\tfunction isDimension(fieldDef) {\n\t return fieldDef && fieldDef.field && _isFieldDimension(fieldDef);\n\t}\n\texports.isDimension = isDimension;\n\tfunction isMeasure(fieldDef) {\n\t return fieldDef && fieldDef.field && !_isFieldDimension(fieldDef);\n\t}\n\texports.isMeasure = isMeasure;\n\texports.COUNT_DISPLAYNAME = 'Number of Records';\n\tfunction count() {\n\t return { field: '*', aggregate: aggregate_1.AggregateOp.COUNT, type: type_1.QUANTITATIVE, displayName: exports.COUNT_DISPLAYNAME };\n\t}\n\texports.count = count;\n\tfunction isCount(fieldDef) {\n\t return fieldDef.aggregate === aggregate_1.AggregateOp.COUNT;\n\t}\n\texports.isCount = isCount;\n\tfunction cardinality(fieldDef, stats, filterNull) {\n\t if (filterNull === void 0) { filterNull = {}; }\n\t var stat = stats[fieldDef.field], type = fieldDef.type;\n\t if (fieldDef.bin) {\n\t var bin_1 = fieldDef.bin;\n\t var maxbins = (typeof bin_1 === 'boolean') ? undefined : bin_1.maxbins;\n\t if (maxbins === undefined) {\n\t maxbins = 10;\n\t }\n\t var bins = util_1.getbins(stat, maxbins);\n\t return (bins.stop - bins.start) / bins.step;\n\t }\n\t if (type === type_1.TEMPORAL) {\n\t var timeUnit = fieldDef.timeUnit;\n\t switch (timeUnit) {\n\t case timeunit_1.TimeUnit.SECONDS: return 60;\n\t case timeunit_1.TimeUnit.MINUTES: return 60;\n\t case timeunit_1.TimeUnit.HOURS: return 24;\n\t case timeunit_1.TimeUnit.DAY: return 7;\n\t case timeunit_1.TimeUnit.DATE: return 31;\n\t case timeunit_1.TimeUnit.MONTH: return 12;\n\t case timeunit_1.TimeUnit.YEAR:\n\t var yearstat = stats['year_' + fieldDef.field];\n\t if (!yearstat) {\n\t return null;\n\t }\n\t return yearstat.distinct -\n\t (stat.missing > 0 && filterNull[type] ? 1 : 0);\n\t }\n\t }\n\t if (fieldDef.aggregate) {\n\t return 1;\n\t }\n\t return stat.distinct -\n\t (stat.missing > 0 && filterNull[type] ? 1 : 0);\n\t}\n\texports.cardinality = cardinality;\n\tfunction title(fieldDef) {\n\t if (isCount(fieldDef)) {\n\t return exports.COUNT_DISPLAYNAME;\n\t }\n\t var fn = fieldDef.aggregate || fieldDef.timeUnit || (fieldDef.bin && 'bin');\n\t if (fn) {\n\t return fn.toString().toUpperCase() + '(' + fieldDef.field + ')';\n\t }\n\t else {\n\t return fieldDef.field;\n\t }\n\t}\n\texports.title = title;\n\t//# sourceMappingURL=fielddef.js.map\n\n/***/ },\n/* 175 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (AggregateOp) {\n\t AggregateOp[AggregateOp[\"VALUES\"] = 'values'] = \"VALUES\";\n\t AggregateOp[AggregateOp[\"COUNT\"] = 'count'] = \"COUNT\";\n\t AggregateOp[AggregateOp[\"VALID\"] = 'valid'] = \"VALID\";\n\t AggregateOp[AggregateOp[\"MISSING\"] = 'missing'] = \"MISSING\";\n\t AggregateOp[AggregateOp[\"DISTINCT\"] = 'distinct'] = \"DISTINCT\";\n\t AggregateOp[AggregateOp[\"SUM\"] = 'sum'] = \"SUM\";\n\t AggregateOp[AggregateOp[\"MEAN\"] = 'mean'] = \"MEAN\";\n\t AggregateOp[AggregateOp[\"AVERAGE\"] = 'average'] = \"AVERAGE\";\n\t AggregateOp[AggregateOp[\"VARIANCE\"] = 'variance'] = \"VARIANCE\";\n\t AggregateOp[AggregateOp[\"VARIANCEP\"] = 'variancep'] = \"VARIANCEP\";\n\t AggregateOp[AggregateOp[\"STDEV\"] = 'stdev'] = \"STDEV\";\n\t AggregateOp[AggregateOp[\"STDEVP\"] = 'stdevp'] = \"STDEVP\";\n\t AggregateOp[AggregateOp[\"MEDIAN\"] = 'median'] = \"MEDIAN\";\n\t AggregateOp[AggregateOp[\"Q1\"] = 'q1'] = \"Q1\";\n\t AggregateOp[AggregateOp[\"Q3\"] = 'q3'] = \"Q3\";\n\t AggregateOp[AggregateOp[\"MODESKEW\"] = 'modeskew'] = \"MODESKEW\";\n\t AggregateOp[AggregateOp[\"MIN\"] = 'min'] = \"MIN\";\n\t AggregateOp[AggregateOp[\"MAX\"] = 'max'] = \"MAX\";\n\t AggregateOp[AggregateOp[\"ARGMIN\"] = 'argmin'] = \"ARGMIN\";\n\t AggregateOp[AggregateOp[\"ARGMAX\"] = 'argmax'] = \"ARGMAX\";\n\t})(exports.AggregateOp || (exports.AggregateOp = {}));\n\tvar AggregateOp = exports.AggregateOp;\n\texports.AGGREGATE_OPS = [\n\t AggregateOp.VALUES,\n\t AggregateOp.COUNT,\n\t AggregateOp.VALID,\n\t AggregateOp.MISSING,\n\t AggregateOp.DISTINCT,\n\t AggregateOp.SUM,\n\t AggregateOp.MEAN,\n\t AggregateOp.AVERAGE,\n\t AggregateOp.VARIANCE,\n\t AggregateOp.VARIANCEP,\n\t AggregateOp.STDEV,\n\t AggregateOp.STDEVP,\n\t AggregateOp.MEDIAN,\n\t AggregateOp.Q1,\n\t AggregateOp.Q3,\n\t AggregateOp.MODESKEW,\n\t AggregateOp.MIN,\n\t AggregateOp.MAX,\n\t AggregateOp.ARGMIN,\n\t AggregateOp.ARGMAX,\n\t];\n\texports.SHARED_DOMAIN_OPS = [\n\t AggregateOp.MEAN,\n\t AggregateOp.AVERAGE,\n\t AggregateOp.STDEV,\n\t AggregateOp.STDEVP,\n\t AggregateOp.MEDIAN,\n\t AggregateOp.Q1,\n\t AggregateOp.Q3,\n\t AggregateOp.MIN,\n\t AggregateOp.MAX,\n\t];\n\t//# sourceMappingURL=aggregate.js.map\n\n/***/ },\n/* 176 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (TimeUnit) {\n\t TimeUnit[TimeUnit[\"YEAR\"] = 'year'] = \"YEAR\";\n\t TimeUnit[TimeUnit[\"MONTH\"] = 'month'] = \"MONTH\";\n\t TimeUnit[TimeUnit[\"DAY\"] = 'day'] = \"DAY\";\n\t TimeUnit[TimeUnit[\"DATE\"] = 'date'] = \"DATE\";\n\t TimeUnit[TimeUnit[\"HOURS\"] = 'hours'] = \"HOURS\";\n\t TimeUnit[TimeUnit[\"MINUTES\"] = 'minutes'] = \"MINUTES\";\n\t TimeUnit[TimeUnit[\"SECONDS\"] = 'seconds'] = \"SECONDS\";\n\t TimeUnit[TimeUnit[\"MILLISECONDS\"] = 'milliseconds'] = \"MILLISECONDS\";\n\t TimeUnit[TimeUnit[\"YEARMONTH\"] = 'yearmonth'] = \"YEARMONTH\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAY\"] = 'yearmonthday'] = \"YEARMONTHDAY\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDATE\"] = 'yearmonthdate'] = \"YEARMONTHDATE\";\n\t TimeUnit[TimeUnit[\"YEARDAY\"] = 'yearday'] = \"YEARDAY\";\n\t TimeUnit[TimeUnit[\"YEARDATE\"] = 'yeardate'] = \"YEARDATE\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAYHOURS\"] = 'yearmonthdayhours'] = \"YEARMONTHDAYHOURS\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTES\"] = 'yearmonthdayhoursminutes'] = \"YEARMONTHDAYHOURSMINUTES\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTESSECONDS\"] = 'yearmonthdayhoursminutesseconds'] = \"YEARMONTHDAYHOURSMINUTESSECONDS\";\n\t TimeUnit[TimeUnit[\"HOURSMINUTES\"] = 'hoursminutes'] = \"HOURSMINUTES\";\n\t TimeUnit[TimeUnit[\"HOURSMINUTESSECONDS\"] = 'hoursminutesseconds'] = \"HOURSMINUTESSECONDS\";\n\t TimeUnit[TimeUnit[\"MINUTESSECONDS\"] = 'minutesseconds'] = \"MINUTESSECONDS\";\n\t TimeUnit[TimeUnit[\"SECONDSMILLISECONDS\"] = 'secondsmilliseconds'] = \"SECONDSMILLISECONDS\";\n\t})(exports.TimeUnit || (exports.TimeUnit = {}));\n\tvar TimeUnit = exports.TimeUnit;\n\texports.TIMEUNITS = [\n\t TimeUnit.YEAR,\n\t TimeUnit.MONTH,\n\t TimeUnit.DAY,\n\t TimeUnit.DATE,\n\t TimeUnit.HOURS,\n\t TimeUnit.MINUTES,\n\t TimeUnit.SECONDS,\n\t TimeUnit.MILLISECONDS,\n\t TimeUnit.YEARMONTH,\n\t TimeUnit.YEARMONTHDAY,\n\t TimeUnit.YEARMONTHDATE,\n\t TimeUnit.YEARDAY,\n\t TimeUnit.YEARDATE,\n\t TimeUnit.YEARMONTHDAYHOURS,\n\t TimeUnit.YEARMONTHDAYHOURSMINUTES,\n\t TimeUnit.YEARMONTHDAYHOURSMINUTESSECONDS,\n\t TimeUnit.HOURSMINUTES,\n\t TimeUnit.HOURSMINUTESSECONDS,\n\t TimeUnit.MINUTESSECONDS,\n\t TimeUnit.SECONDSMILLISECONDS,\n\t];\n\t//# sourceMappingURL=timeunit.js.map\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Model_1 = __webpack_require__(178);\n\tvar axis_1 = __webpack_require__(190);\n\tvar data_1 = __webpack_require__(191);\n\tvar layout_1 = __webpack_require__(192);\n\tvar facet_1 = __webpack_require__(193);\n\tvar legend_1 = __webpack_require__(194);\n\tvar mark_1 = __webpack_require__(195);\n\tvar scale_1 = __webpack_require__(189);\n\tvar common_1 = __webpack_require__(186);\n\tvar util_1 = __webpack_require__(165);\n\tvar data_2 = __webpack_require__(171);\n\tvar channel_1 = __webpack_require__(164);\n\tvar Model_2 = __webpack_require__(178);\n\texports.Model = Model_2.Model;\n\tfunction compile(spec) {\n\t var model = new Model_1.Model(spec);\n\t var config = model.config();\n\t var output = util_1.extend(spec.name ? { name: spec.name } : {}, {\n\t width: 1,\n\t height: 1,\n\t padding: 'auto'\n\t }, config.viewport ? { viewport: config.viewport } : {}, config.background ? { background: config.background } : {}, {\n\t data: data_1.compileData(model).concat([layout_1.compileLayoutData(model)]),\n\t marks: [compileRootGroup(model)]\n\t });\n\t return {\n\t spec: output\n\t };\n\t}\n\texports.compile = compile;\n\tfunction compileRootGroup(model) {\n\t var spec = model.spec();\n\t var rootGroup = util_1.extend({\n\t name: spec.name ? spec.name + '-root' : 'root',\n\t type: 'group',\n\t }, spec.description ? { description: spec.description } : {}, {\n\t from: { data: data_2.LAYOUT },\n\t properties: {\n\t update: {\n\t width: { field: 'width' },\n\t height: { field: 'height' }\n\t }\n\t }\n\t });\n\t var marks = mark_1.compileMark(model);\n\t if (model.has(channel_1.ROW) || model.has(channel_1.COLUMN)) {\n\t util_1.extend(rootGroup, facet_1.facetMixins(model, marks));\n\t }\n\t else {\n\t common_1.applyConfig(rootGroup.properties.update, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n\t rootGroup.marks = marks;\n\t rootGroup.scales = scale_1.compileScales(model);\n\t var axes = (model.has(channel_1.X) && model.axis(channel_1.X) ? [axis_1.compileAxis(channel_1.X, model)] : [])\n\t .concat(model.has(channel_1.Y) && model.axis(channel_1.Y) ? [axis_1.compileAxis(channel_1.Y, model)] : []);\n\t if (axes.length > 0) {\n\t rootGroup.axes = axes;\n\t }\n\t }\n\t var legends = legend_1.compileLegends(model);\n\t if (legends.length > 0) {\n\t rootGroup.legends = legends;\n\t }\n\t return rootGroup;\n\t}\n\texports.compileRootGroup = compileRootGroup;\n\t//# sourceMappingURL=compile.js.map\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar config_1 = __webpack_require__(179);\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar mark_1 = __webpack_require__(183);\n\tvar type_1 = __webpack_require__(172);\n\tvar util_1 = __webpack_require__(165);\n\tvar config_2 = __webpack_require__(184);\n\tvar stack_1 = __webpack_require__(185);\n\tvar scale_1 = __webpack_require__(189);\n\tvar scale_2 = __webpack_require__(180);\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar channel_2 = __webpack_require__(164);\n\t;\n\tvar Model = (function () {\n\t function Model(spec) {\n\t var model = this;\n\t this._spec = spec;\n\t var mark = this._spec.mark;\n\t var encoding = this._spec.encoding = this._spec.encoding || {};\n\t var config = this._config = util_1.mergeDeep(util_1.duplicate(config_1.defaultConfig), spec.config);\n\t vlEncoding.forEach(this._spec.encoding, function (fieldDef, channel) {\n\t if (!channel_1.supportMark(channel, this._spec.mark)) {\n\t console.warn(channel, 'dropped as it is incompatible with', this._spec.mark);\n\t delete this._spec.encoding[channel].field;\n\t }\n\t if (fieldDef.type) {\n\t fieldDef.type = type_1.getFullName(fieldDef.type);\n\t }\n\t if ((channel === channel_1.PATH || channel === channel_1.ORDER) && !fieldDef.aggregate && fieldDef.type === type_1.QUANTITATIVE) {\n\t fieldDef.aggregate = aggregate_1.AggregateOp.MIN;\n\t }\n\t }, this);\n\t var scale = this._scale = [channel_1.X, channel_1.Y, channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE, channel_1.ROW, channel_1.COLUMN].reduce(function (_scale, channel) {\n\t if (vlEncoding.has(encoding, channel)) {\n\t var channelScale = encoding[channel].scale || {};\n\t var channelDef = encoding[channel];\n\t var _scaleType = scale_1.scaleType(channelScale, channelDef, channel, mark);\n\t if (util_1.contains([channel_1.ROW, channel_1.COLUMN], channel)) {\n\t _scale[channel] = util_1.extend({\n\t type: _scaleType,\n\t round: config.facet.scale.round,\n\t padding: (channel === channel_1.ROW && model.has(channel_1.Y)) || (channel === channel_1.COLUMN && model.has(channel_1.X)) ?\n\t config.facet.scale.padding : 0\n\t }, channelScale);\n\t }\n\t else {\n\t _scale[channel] = util_1.extend({\n\t type: _scaleType,\n\t round: config.scale.round,\n\t padding: config.scale.padding,\n\t includeRawDomain: config.scale.includeRawDomain,\n\t bandSize: channel === channel_1.X && _scaleType === scale_2.ScaleType.ORDINAL && mark === mark_1.TEXT ?\n\t config.scale.textBandWidth : config.scale.bandSize\n\t }, channelScale);\n\t }\n\t }\n\t return _scale;\n\t }, {});\n\t this._axis = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (_axis, channel) {\n\t if (vlEncoding.has(encoding, channel)) {\n\t var channelAxis = encoding[channel].axis;\n\t if (channelAxis !== false) {\n\t _axis[channel] = util_1.extend({}, channel === channel_1.X || channel === channel_1.Y ? config.axis : config.facet.axis, channelAxis === true ? {} : channelAxis || {});\n\t }\n\t }\n\t return _axis;\n\t }, {});\n\t this._legend = [channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE].reduce(function (_legend, channel) {\n\t if (vlEncoding.has(encoding, channel)) {\n\t var channelLegend = encoding[channel].legend;\n\t if (channelLegend !== false) {\n\t _legend[channel] = util_1.extend({}, config.legend, channelLegend === true ? {} : channelLegend || {});\n\t }\n\t }\n\t return _legend;\n\t }, {});\n\t this._stack = stack_1.compileStackProperties(mark, encoding, scale, config);\n\t this._config.mark = config_2.compileMarkConfig(mark, encoding, config, this._stack);\n\t }\n\t Model.prototype.stack = function () {\n\t return this._stack;\n\t };\n\t Model.prototype.toSpec = function (excludeConfig, excludeData) {\n\t var encoding = util_1.duplicate(this._spec.encoding);\n\t var spec;\n\t spec = {\n\t mark: this._spec.mark,\n\t encoding: encoding\n\t };\n\t if (!excludeConfig) {\n\t spec.config = util_1.duplicate(this._spec.config);\n\t }\n\t if (!excludeData) {\n\t spec.data = util_1.duplicate(this._spec.data);\n\t }\n\t return spec;\n\t };\n\t Model.prototype.cellWidth = function () {\n\t return (this.isFacet() ? this.config().facet.cell.width : null) ||\n\t this.config().cell.width;\n\t };\n\t Model.prototype.cellHeight = function () {\n\t return (this.isFacet() ? this.config().facet.cell.height : null) ||\n\t this.config().cell.height;\n\t };\n\t Model.prototype.mark = function () {\n\t return this._spec.mark;\n\t };\n\t Model.prototype.spec = function () {\n\t return this._spec;\n\t };\n\t Model.prototype.has = function (channel) {\n\t return vlEncoding.has(this._spec.encoding, channel);\n\t };\n\t Model.prototype.encoding = function () {\n\t return this._spec.encoding;\n\t };\n\t Model.prototype.fieldDef = function (channel) {\n\t return this._spec.encoding[channel] || {};\n\t };\n\t Model.prototype.field = function (channel, opt) {\n\t if (opt === void 0) { opt = {}; }\n\t var fieldDef = this.fieldDef(channel);\n\t var scale = this.scale(channel);\n\t if (fieldDef.bin) {\n\t opt = util_1.extend({\n\t binSuffix: scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL ? '_range' : '_start'\n\t }, opt);\n\t }\n\t return fielddef_1.field(fieldDef, opt);\n\t };\n\t Model.prototype.channelWithScales = function () {\n\t var model = this;\n\t return channel_2.CHANNELS.filter(function (channel) {\n\t return !!model.scale(channel);\n\t });\n\t };\n\t Model.prototype.reduce = function (f, init, t) {\n\t return vlEncoding.reduce(this._spec.encoding, f, init, t);\n\t };\n\t Model.prototype.forEach = function (f, t) {\n\t vlEncoding.forEach(this._spec.encoding, f, t);\n\t };\n\t Model.prototype.isOrdinalScale = function (channel) {\n\t var fieldDef = this.fieldDef(channel);\n\t var scale = this.scale(channel);\n\t return this.has(channel) && scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL;\n\t };\n\t Model.prototype.isFacet = function () {\n\t return this.has(channel_1.ROW) || this.has(channel_1.COLUMN);\n\t };\n\t Model.prototype.dataTable = function () {\n\t return vlEncoding.isAggregate(this._spec.encoding) ? data_1.SUMMARY : data_1.SOURCE;\n\t };\n\t Model.prototype.data = function () {\n\t return this._spec.data;\n\t };\n\t Model.prototype.transform = function () {\n\t return this._spec.transform || {};\n\t };\n\t Model.prototype.config = function () {\n\t return this._config;\n\t };\n\t Model.prototype.sort = function (channel) {\n\t return this._spec.encoding[channel].sort;\n\t };\n\t Model.prototype.scale = function (channel) {\n\t return this._scale[channel];\n\t };\n\t Model.prototype.axis = function (channel) {\n\t return this._axis[channel];\n\t };\n\t Model.prototype.legend = function (channel) {\n\t return this._legend[channel];\n\t };\n\t Model.prototype.scaleName = function (channel) {\n\t var name = this.spec().name;\n\t return (name ? name + '-' : '') + channel;\n\t };\n\t return Model;\n\t}());\n\texports.Model = Model;\n\t//# sourceMappingURL=Model.js.map\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar scale_1 = __webpack_require__(180);\n\tvar axis_1 = __webpack_require__(181);\n\tvar legend_1 = __webpack_require__(182);\n\texports.defaultCellConfig = {\n\t width: 200,\n\t height: 200\n\t};\n\texports.defaultFacetCellConfig = {\n\t stroke: '#ccc',\n\t strokeWidth: 1\n\t};\n\tvar defaultFacetGridConfig = {\n\t color: '#000000',\n\t opacity: 0.4,\n\t offset: 0\n\t};\n\texports.defaultFacetConfig = {\n\t scale: scale_1.defaultFacetScaleConfig,\n\t axis: axis_1.defaultFacetAxisConfig,\n\t grid: defaultFacetGridConfig,\n\t cell: exports.defaultFacetCellConfig\n\t};\n\t(function (FontWeight) {\n\t FontWeight[FontWeight[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n\t FontWeight[FontWeight[\"BOLD\"] = 'bold'] = \"BOLD\";\n\t})(exports.FontWeight || (exports.FontWeight = {}));\n\tvar FontWeight = exports.FontWeight;\n\t(function (Shape) {\n\t Shape[Shape[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n\t Shape[Shape[\"SQUARE\"] = 'square'] = \"SQUARE\";\n\t Shape[Shape[\"CROSS\"] = 'cross'] = \"CROSS\";\n\t Shape[Shape[\"DIAMOND\"] = 'diamond'] = \"DIAMOND\";\n\t Shape[Shape[\"TRIANGLEUP\"] = 'triangle-up'] = \"TRIANGLEUP\";\n\t Shape[Shape[\"TRIANGLEDOWN\"] = 'triangle-down'] = \"TRIANGLEDOWN\";\n\t})(exports.Shape || (exports.Shape = {}));\n\tvar Shape = exports.Shape;\n\t(function (HorizontalAlign) {\n\t HorizontalAlign[HorizontalAlign[\"LEFT\"] = 'left'] = \"LEFT\";\n\t HorizontalAlign[HorizontalAlign[\"RIGHT\"] = 'right'] = \"RIGHT\";\n\t HorizontalAlign[HorizontalAlign[\"CENTER\"] = 'center'] = \"CENTER\";\n\t})(exports.HorizontalAlign || (exports.HorizontalAlign = {}));\n\tvar HorizontalAlign = exports.HorizontalAlign;\n\t(function (VerticalAlign) {\n\t VerticalAlign[VerticalAlign[\"TOP\"] = 'top'] = \"TOP\";\n\t VerticalAlign[VerticalAlign[\"MIDDLE\"] = 'middle'] = \"MIDDLE\";\n\t VerticalAlign[VerticalAlign[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n\t})(exports.VerticalAlign || (exports.VerticalAlign = {}));\n\tvar VerticalAlign = exports.VerticalAlign;\n\t(function (FontStyle) {\n\t FontStyle[FontStyle[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n\t FontStyle[FontStyle[\"ITALIC\"] = 'italic'] = \"ITALIC\";\n\t})(exports.FontStyle || (exports.FontStyle = {}));\n\tvar FontStyle = exports.FontStyle;\n\t(function (StackOffset) {\n\t StackOffset[StackOffset[\"ZERO\"] = 'zero'] = \"ZERO\";\n\t StackOffset[StackOffset[\"CENTER\"] = 'center'] = \"CENTER\";\n\t StackOffset[StackOffset[\"NORMALIZE\"] = 'normalize'] = \"NORMALIZE\";\n\t StackOffset[StackOffset[\"NONE\"] = 'none'] = \"NONE\";\n\t})(exports.StackOffset || (exports.StackOffset = {}));\n\tvar StackOffset = exports.StackOffset;\n\texports.defaultMarkConfig = {\n\t color: '#4682b4',\n\t strokeWidth: 2,\n\t size: 30,\n\t barThinSize: 2,\n\t tickThickness: 1,\n\t fontSize: 10,\n\t baseline: VerticalAlign.MIDDLE,\n\t text: 'Abc',\n\t shortTimeLabels: false,\n\t applyColorToBackground: false\n\t};\n\texports.defaultConfig = {\n\t numberFormat: 's',\n\t timeFormat: '%Y-%m-%d',\n\t cell: exports.defaultCellConfig,\n\t mark: exports.defaultMarkConfig,\n\t scale: scale_1.defaultScaleConfig,\n\t axis: axis_1.defaultAxisConfig,\n\t legend: legend_1.defaultLegendConfig,\n\t facet: exports.defaultFacetConfig,\n\t};\n\t//# sourceMappingURL=config.js.map\n\n/***/ },\n/* 180 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (ScaleType) {\n\t ScaleType[ScaleType[\"LINEAR\"] = 'linear'] = \"LINEAR\";\n\t ScaleType[ScaleType[\"LOG\"] = 'log'] = \"LOG\";\n\t ScaleType[ScaleType[\"POW\"] = 'pow'] = \"POW\";\n\t ScaleType[ScaleType[\"SQRT\"] = 'sqrt'] = \"SQRT\";\n\t ScaleType[ScaleType[\"QUANTILE\"] = 'quantile'] = \"QUANTILE\";\n\t ScaleType[ScaleType[\"QUANTIZE\"] = 'quantize'] = \"QUANTIZE\";\n\t ScaleType[ScaleType[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n\t ScaleType[ScaleType[\"TIME\"] = 'time'] = \"TIME\";\n\t ScaleType[ScaleType[\"UTC\"] = 'utc'] = \"UTC\";\n\t})(exports.ScaleType || (exports.ScaleType = {}));\n\tvar ScaleType = exports.ScaleType;\n\t(function (NiceTime) {\n\t NiceTime[NiceTime[\"SECOND\"] = 'second'] = \"SECOND\";\n\t NiceTime[NiceTime[\"MINUTE\"] = 'minute'] = \"MINUTE\";\n\t NiceTime[NiceTime[\"HOUR\"] = 'hour'] = \"HOUR\";\n\t NiceTime[NiceTime[\"DAY\"] = 'day'] = \"DAY\";\n\t NiceTime[NiceTime[\"WEEK\"] = 'week'] = \"WEEK\";\n\t NiceTime[NiceTime[\"MONTH\"] = 'month'] = \"MONTH\";\n\t NiceTime[NiceTime[\"YEAR\"] = 'year'] = \"YEAR\";\n\t})(exports.NiceTime || (exports.NiceTime = {}));\n\tvar NiceTime = exports.NiceTime;\n\texports.defaultScaleConfig = {\n\t round: true,\n\t textBandWidth: 90,\n\t bandSize: 21,\n\t padding: 1,\n\t includeRawDomain: false,\n\t nominalColorRange: 'category10',\n\t sequentialColorRange: ['#AFC6A3', '#09622A'],\n\t shapeRange: 'shapes',\n\t fontSizeRange: [8, 40]\n\t};\n\texports.defaultFacetScaleConfig = {\n\t round: true,\n\t padding: 16\n\t};\n\t//# sourceMappingURL=scale.js.map\n\n/***/ },\n/* 181 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (AxisOrient) {\n\t AxisOrient[AxisOrient[\"TOP\"] = 'top'] = \"TOP\";\n\t AxisOrient[AxisOrient[\"RIGHT\"] = 'right'] = \"RIGHT\";\n\t AxisOrient[AxisOrient[\"LEFT\"] = 'left'] = \"LEFT\";\n\t AxisOrient[AxisOrient[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n\t})(exports.AxisOrient || (exports.AxisOrient = {}));\n\tvar AxisOrient = exports.AxisOrient;\n\texports.defaultAxisConfig = {\n\t offset: undefined,\n\t grid: undefined,\n\t labels: true,\n\t labelMaxLength: 25,\n\t tickSize: undefined,\n\t characterWidth: 6\n\t};\n\texports.defaultFacetAxisConfig = {\n\t axisWidth: 0,\n\t labels: true,\n\t grid: false,\n\t tickSize: 0\n\t};\n\t//# sourceMappingURL=axis.js.map\n\n/***/ },\n/* 182 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\texports.defaultLegendConfig = {\n\t orient: undefined,\n\t shortTimeLabels: false\n\t};\n\t//# sourceMappingURL=legend.js.map\n\n/***/ },\n/* 183 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (Mark) {\n\t Mark[Mark[\"AREA\"] = 'area'] = \"AREA\";\n\t Mark[Mark[\"BAR\"] = 'bar'] = \"BAR\";\n\t Mark[Mark[\"LINE\"] = 'line'] = \"LINE\";\n\t Mark[Mark[\"POINT\"] = 'point'] = \"POINT\";\n\t Mark[Mark[\"TEXT\"] = 'text'] = \"TEXT\";\n\t Mark[Mark[\"TICK\"] = 'tick'] = \"TICK\";\n\t Mark[Mark[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n\t Mark[Mark[\"SQUARE\"] = 'square'] = \"SQUARE\";\n\t})(exports.Mark || (exports.Mark = {}));\n\tvar Mark = exports.Mark;\n\texports.AREA = Mark.AREA;\n\texports.BAR = Mark.BAR;\n\texports.LINE = Mark.LINE;\n\texports.POINT = Mark.POINT;\n\texports.TEXT = Mark.TEXT;\n\texports.TICK = Mark.TICK;\n\texports.CIRCLE = Mark.CIRCLE;\n\texports.SQUARE = Mark.SQUARE;\n\t//# sourceMappingURL=mark.js.map\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar encoding_1 = __webpack_require__(173);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar mark_1 = __webpack_require__(183);\n\tvar util_1 = __webpack_require__(165);\n\tfunction compileMarkConfig(mark, encoding, config, stack) {\n\t return util_1.extend(['filled', 'opacity', 'orient', 'align'].reduce(function (cfg, property) {\n\t var value = config.mark[property];\n\t switch (property) {\n\t case 'filled':\n\t if (value === undefined) {\n\t cfg[property] = mark !== mark_1.POINT && mark !== mark_1.LINE;\n\t }\n\t break;\n\t case 'opacity':\n\t if (value === undefined && util_1.contains([mark_1.POINT, mark_1.TICK, mark_1.CIRCLE, mark_1.SQUARE], mark)) {\n\t if (!encoding_1.isAggregate(encoding) || encoding_1.has(encoding, channel_1.DETAIL)) {\n\t cfg[property] = 0.7;\n\t }\n\t }\n\t break;\n\t case 'orient':\n\t if (stack) {\n\t cfg[property] = stack.groupbyChannel === channel_1.Y ? 'horizontal' : undefined;\n\t }\n\t if (value === undefined) {\n\t cfg[property] = fielddef_1.isMeasure(encoding[channel_1.X]) && !fielddef_1.isMeasure(encoding[channel_1.Y]) ?\n\t 'horizontal' :\n\t undefined;\n\t }\n\t break;\n\t case 'align':\n\t if (value === undefined) {\n\t cfg[property] = encoding_1.has(encoding, channel_1.X) ? 'center' : 'right';\n\t }\n\t }\n\t return cfg;\n\t }, {}), config.mark);\n\t}\n\texports.compileMarkConfig = compileMarkConfig;\n\t//# sourceMappingURL=config.js.map\n\n/***/ },\n/* 185 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar scale_1 = __webpack_require__(180);\n\tvar config_1 = __webpack_require__(179);\n\tvar mark_1 = __webpack_require__(183);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar encoding_1 = __webpack_require__(173);\n\tvar util_1 = __webpack_require__(165);\n\tvar common_1 = __webpack_require__(186);\n\tvar scale_2 = __webpack_require__(189);\n\tfunction compileStackProperties(mark, encoding, scale, config) {\n\t var stackFields = getStackFields(mark, encoding, scale);\n\t if (stackFields.length > 0 &&\n\t util_1.contains([mark_1.BAR, mark_1.AREA], mark) &&\n\t config.mark.stacked !== config_1.StackOffset.NONE &&\n\t encoding_1.isAggregate(encoding)) {\n\t var isXMeasure = encoding_1.has(encoding, channel_1.X) && fielddef_1.isMeasure(encoding.x), isYMeasure = encoding_1.has(encoding, channel_1.Y) && fielddef_1.isMeasure(encoding.y);\n\t if (isXMeasure && !isYMeasure) {\n\t return {\n\t groupbyChannel: channel_1.Y,\n\t fieldChannel: channel_1.X,\n\t stackFields: stackFields,\n\t offset: config.mark.stacked\n\t };\n\t }\n\t else if (isYMeasure && !isXMeasure) {\n\t return {\n\t groupbyChannel: channel_1.X,\n\t fieldChannel: channel_1.Y,\n\t stackFields: stackFields,\n\t offset: config.mark.stacked\n\t };\n\t }\n\t }\n\t return null;\n\t}\n\texports.compileStackProperties = compileStackProperties;\n\tfunction getStackFields(mark, encoding, scale) {\n\t return [channel_1.COLOR, channel_1.DETAIL].reduce(function (fields, channel) {\n\t var channelEncoding = encoding[channel];\n\t if (encoding_1.has(encoding, channel)) {\n\t if (util_1.isArray(channelEncoding)) {\n\t channelEncoding.forEach(function (fieldDef) {\n\t fields.push(fielddef_1.field(fieldDef));\n\t });\n\t }\n\t else {\n\t var fieldDef = channelEncoding;\n\t fields.push(fielddef_1.field(fieldDef, {\n\t binSuffix: scale_2.scaleType(scale[channel], fieldDef, channel, mark) === scale_1.ScaleType.ORDINAL ? '_range' : '_start'\n\t }));\n\t }\n\t }\n\t return fields;\n\t }, []);\n\t}\n\tfunction imputeTransform(model) {\n\t var stack = model.stack();\n\t return {\n\t type: 'impute',\n\t field: model.field(stack.fieldChannel),\n\t groupby: stack.stackFields,\n\t orderby: [model.field(stack.groupbyChannel)],\n\t method: 'value',\n\t value: 0\n\t };\n\t}\n\texports.imputeTransform = imputeTransform;\n\tfunction stackTransform(model) {\n\t var stack = model.stack();\n\t var encoding = model.encoding();\n\t var sortby = model.has(channel_1.ORDER) ?\n\t (util_1.isArray(encoding[channel_1.ORDER]) ? encoding[channel_1.ORDER] : [encoding[channel_1.ORDER]]).map(common_1.sortField) :\n\t stack.stackFields.map(function (field) {\n\t return '-' + field;\n\t });\n\t var valName = model.field(stack.fieldChannel);\n\t var transform = {\n\t type: 'stack',\n\t groupby: [model.field(stack.groupbyChannel)],\n\t field: model.field(stack.fieldChannel),\n\t sortby: sortby,\n\t output: {\n\t start: valName + '_start',\n\t end: valName + '_end'\n\t }\n\t };\n\t if (stack.offset) {\n\t transform.offset = stack.offset;\n\t }\n\t return transform;\n\t}\n\texports.stackTransform = stackTransform;\n\t//# sourceMappingURL=stack.js.map\n\n/***/ },\n/* 186 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar sort_1 = __webpack_require__(187);\n\tvar type_1 = __webpack_require__(172);\n\tvar time_1 = __webpack_require__(188);\n\tvar util_1 = __webpack_require__(165);\n\texports.FILL_STROKE_CONFIG = ['fill', 'fillOpacity',\n\t 'stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity',\n\t 'opacity'];\n\tfunction applyColorAndOpacity(p, model) {\n\t var filled = model.config().mark.filled;\n\t var fieldDef = model.fieldDef(channel_1.COLOR);\n\t applyMarkConfig(p, model, exports.FILL_STROKE_CONFIG);\n\t var value;\n\t if (model.has(channel_1.COLOR)) {\n\t value = {\n\t scale: model.scaleName(channel_1.COLOR),\n\t field: model.field(channel_1.COLOR, fieldDef.type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n\t };\n\t }\n\t else if (fieldDef && fieldDef.value) {\n\t value = { value: fieldDef.value };\n\t }\n\t if (value !== undefined) {\n\t if (filled) {\n\t p.fill = value;\n\t }\n\t else {\n\t p.stroke = value;\n\t }\n\t }\n\t else {\n\t p[filled ? 'fill' : 'stroke'] = p[filled ? 'fill' : 'stroke'] ||\n\t { value: model.config().mark.color };\n\t }\n\t}\n\texports.applyColorAndOpacity = applyColorAndOpacity;\n\tfunction applyConfig(properties, config, propsList) {\n\t propsList.forEach(function (property) {\n\t var value = config[property];\n\t if (value !== undefined) {\n\t properties[property] = { value: value };\n\t }\n\t });\n\t}\n\texports.applyConfig = applyConfig;\n\tfunction applyMarkConfig(marksProperties, model, propsList) {\n\t applyConfig(marksProperties, model.config().mark, propsList);\n\t}\n\texports.applyMarkConfig = applyMarkConfig;\n\tfunction formatMixins(model, channel, format) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (!util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], fieldDef.type)) {\n\t return {};\n\t }\n\t var def = {};\n\t if (fieldDef.type === type_1.TEMPORAL) {\n\t def.formatType = 'time';\n\t }\n\t if (format !== undefined) {\n\t def.format = format;\n\t }\n\t else {\n\t switch (fieldDef.type) {\n\t case type_1.QUANTITATIVE:\n\t def.format = model.config().numberFormat;\n\t break;\n\t case type_1.TEMPORAL:\n\t def.format = timeFormat(model, channel) || model.config().timeFormat;\n\t break;\n\t }\n\t }\n\t if (channel === channel_1.TEXT) {\n\t var filter = (def.formatType || 'number') + (def.format ? ':\\'' + def.format + '\\'' : '');\n\t return {\n\t text: {\n\t template: '{{' + model.field(channel, { datum: true }) + ' | ' + filter + '}}'\n\t }\n\t };\n\t }\n\t return def;\n\t}\n\texports.formatMixins = formatMixins;\n\tfunction isAbbreviated(model, channel, fieldDef) {\n\t switch (channel) {\n\t case channel_1.ROW:\n\t case channel_1.COLUMN:\n\t case channel_1.X:\n\t case channel_1.Y:\n\t return model.axis(channel).shortTimeLabels;\n\t case channel_1.COLOR:\n\t case channel_1.SHAPE:\n\t case channel_1.SIZE:\n\t return model.legend(channel).shortTimeLabels;\n\t case channel_1.TEXT:\n\t return model.config().mark.shortTimeLabels;\n\t case channel_1.LABEL:\n\t }\n\t return false;\n\t}\n\tfunction sortField(orderChannelDef) {\n\t return (orderChannelDef.sort === sort_1.SortOrder.DESCENDING ? '-' : '') + fielddef_1.field(orderChannelDef);\n\t}\n\texports.sortField = sortField;\n\tfunction timeFormat(model, channel) {\n\t var fieldDef = model.fieldDef(channel);\n\t return time_1.format(fieldDef.timeUnit, isAbbreviated(model, channel, fieldDef));\n\t}\n\texports.timeFormat = timeFormat;\n\t//# sourceMappingURL=common.js.map\n\n/***/ },\n/* 187 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (SortOrder) {\n\t SortOrder[SortOrder[\"ASCENDING\"] = 'ascending'] = \"ASCENDING\";\n\t SortOrder[SortOrder[\"DESCENDING\"] = 'descending'] = \"DESCENDING\";\n\t SortOrder[SortOrder[\"NONE\"] = 'none'] = \"NONE\";\n\t})(exports.SortOrder || (exports.SortOrder = {}));\n\tvar SortOrder = exports.SortOrder;\n\t//# sourceMappingURL=sort.js.map\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\tvar channel_1 = __webpack_require__(164);\n\tvar timeunit_1 = __webpack_require__(176);\n\tfunction format(timeUnit, abbreviated) {\n\t if (abbreviated === void 0) { abbreviated = false; }\n\t if (!timeUnit) {\n\t return undefined;\n\t }\n\t var timeString = timeUnit.toString();\n\t var dateComponents = [];\n\t if (timeString.indexOf('year') > -1) {\n\t dateComponents.push(abbreviated ? '%y' : '%Y');\n\t }\n\t if (timeString.indexOf('month') > -1) {\n\t dateComponents.push(abbreviated ? '%b' : '%B');\n\t }\n\t if (timeString.indexOf('day') > -1) {\n\t dateComponents.push(abbreviated ? '%a' : '%A');\n\t }\n\t else if (timeString.indexOf('date') > -1) {\n\t dateComponents.push('%d');\n\t }\n\t var timeComponents = [];\n\t if (timeString.indexOf('hours') > -1) {\n\t timeComponents.push('%H');\n\t }\n\t if (timeString.indexOf('minutes') > -1) {\n\t timeComponents.push('%M');\n\t }\n\t if (timeString.indexOf('seconds') > -1) {\n\t timeComponents.push('%S');\n\t }\n\t if (timeString.indexOf('milliseconds') > -1) {\n\t timeComponents.push('%L');\n\t }\n\t var out = [];\n\t if (dateComponents.length > 0) {\n\t out.push(dateComponents.join('-'));\n\t }\n\t if (timeComponents.length > 0) {\n\t out.push(timeComponents.join(':'));\n\t }\n\t return out.length > 0 ? out.join(' ') : undefined;\n\t}\n\texports.format = format;\n\tfunction smallestUnit(timeUnit) {\n\t if (!timeUnit) {\n\t return undefined;\n\t }\n\t if (timeUnit.indexOf('second') > -1) {\n\t return 'second';\n\t }\n\t if (timeUnit.indexOf('minute') > -1) {\n\t return 'minute';\n\t }\n\t if (timeUnit.indexOf('hour') > -1) {\n\t return 'hour';\n\t }\n\t if (timeUnit.indexOf('day') > -1 || timeUnit.indexOf('date') > -1) {\n\t return 'day';\n\t }\n\t if (timeUnit.indexOf('month') > -1) {\n\t return 'month';\n\t }\n\t if (timeUnit.indexOf('year') > -1) {\n\t return 'year';\n\t }\n\t return undefined;\n\t}\n\texports.smallestUnit = smallestUnit;\n\tfunction parseExpression(timeUnit, fieldRef, onlyRef) {\n\t if (onlyRef === void 0) { onlyRef = false; }\n\t var out = 'datetime(';\n\t var timeString = timeUnit.toString();\n\t function get(fun, addComma) {\n\t if (addComma === void 0) { addComma = true; }\n\t if (onlyRef) {\n\t return fieldRef + (addComma ? ', ' : '');\n\t }\n\t else {\n\t return fun + '(' + fieldRef + ')' + (addComma ? ', ' : '');\n\t }\n\t }\n\t if (timeString.indexOf('year') > -1) {\n\t out += get('year');\n\t }\n\t else {\n\t out += '2006, ';\n\t }\n\t if (timeString.indexOf('month') > -1) {\n\t out += get('month');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('day') > -1) {\n\t out += get('day', false) + '+1, ';\n\t }\n\t else if (timeString.indexOf('date') > -1) {\n\t out += get('date');\n\t }\n\t else {\n\t out += '1, ';\n\t }\n\t if (timeString.indexOf('hours') > -1) {\n\t out += get('hours');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('minutes') > -1) {\n\t out += get('minutes');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('seconds') > -1) {\n\t out += get('seconds');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('milliseconds') > -1) {\n\t out += get('milliseconds', false);\n\t }\n\t else {\n\t out += '0';\n\t }\n\t return out + ')';\n\t}\n\texports.parseExpression = parseExpression;\n\tfunction rawDomain(timeUnit, channel) {\n\t if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE, channel_1.COLOR], channel)) {\n\t return null;\n\t }\n\t switch (timeUnit) {\n\t case timeunit_1.TimeUnit.SECONDS:\n\t return util_1.range(0, 60);\n\t case timeunit_1.TimeUnit.MINUTES:\n\t return util_1.range(0, 60);\n\t case timeunit_1.TimeUnit.HOURS:\n\t return util_1.range(0, 24);\n\t case timeunit_1.TimeUnit.DAY:\n\t return util_1.range(0, 7);\n\t case timeunit_1.TimeUnit.DATE:\n\t return util_1.range(1, 32);\n\t case timeunit_1.TimeUnit.MONTH:\n\t return util_1.range(0, 12);\n\t }\n\t return null;\n\t}\n\texports.rawDomain = rawDomain;\n\t//# sourceMappingURL=time.js.map\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar type_1 = __webpack_require__(172);\n\tvar mark_1 = __webpack_require__(183);\n\tvar time_1 = __webpack_require__(188);\n\tvar scale_1 = __webpack_require__(180);\n\tvar config_1 = __webpack_require__(179);\n\tvar timeunit_1 = __webpack_require__(176);\n\tvar fielddef_1 = __webpack_require__(174);\n\texports.COLOR_LEGEND = 'color_legend';\n\texports.COLOR_LEGEND_LABEL = 'color_legend_label';\n\tfunction compileScales(model) {\n\t return model.channelWithScales().reduce(function (scales, channel) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (channel === channel_1.COLOR && model.legend(channel_1.COLOR) && (fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit)) {\n\t scales.push(colorLegendScale(model, fieldDef));\n\t if (fieldDef.bin) {\n\t scales.push(binColorLegendLabel(model, fieldDef));\n\t }\n\t }\n\t scales.push(mainScale(model, fieldDef, channel));\n\t return scales;\n\t }, []);\n\t}\n\texports.compileScales = compileScales;\n\tfunction mainScale(model, fieldDef, channel) {\n\t var scale = model.scale(channel);\n\t var sort = model.sort(channel);\n\t var scaleDef = {\n\t name: model.scaleName(channel),\n\t type: scaleType(scale, fieldDef, channel, model.mark()),\n\t };\n\t scaleDef.domain = domain(scale, model, channel, scaleDef.type);\n\t util_1.extend(scaleDef, rangeMixins(scale, model, channel, scaleDef.type));\n\t if (sort && (typeof sort === 'string' ? sort : sort.order) === 'descending') {\n\t scaleDef.reverse = true;\n\t }\n\t [\n\t 'round',\n\t 'clamp', 'nice',\n\t 'exponent', 'zero',\n\t 'padding', 'points'\n\t ].forEach(function (property) {\n\t var value = exports[property](scale[property], scaleDef.type, channel, fieldDef);\n\t if (value !== undefined) {\n\t scaleDef[property] = value;\n\t }\n\t });\n\t return scaleDef;\n\t}\n\tfunction colorLegendScale(model, fieldDef) {\n\t return {\n\t name: model.scaleName(exports.COLOR_LEGEND),\n\t type: 'ordinal',\n\t domain: {\n\t data: model.dataTable(),\n\t field: model.field(channel_1.COLOR, (fieldDef.bin || fieldDef.timeUnit) ? {} : { prefn: 'rank_' }), sort: true\n\t },\n\t range: { data: model.dataTable(), field: model.field(channel_1.COLOR), sort: true }\n\t };\n\t}\n\tfunction binColorLegendLabel(model, fieldDef) {\n\t return {\n\t name: model.scaleName(exports.COLOR_LEGEND_LABEL),\n\t type: 'ordinal',\n\t domain: {\n\t data: model.dataTable(),\n\t field: model.field(channel_1.COLOR, { prefn: 'rank_' }),\n\t sort: true\n\t },\n\t range: {\n\t data: model.dataTable(),\n\t field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n\t sort: {\n\t field: model.field(channel_1.COLOR, { binSuffix: '_start' }),\n\t op: 'min'\n\t }\n\t }\n\t };\n\t}\n\tfunction scaleType(scale, fieldDef, channel, mark) {\n\t if (!channel_1.hasScale(channel)) {\n\t return null;\n\t }\n\t if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE], channel)) {\n\t return scale_1.ScaleType.ORDINAL;\n\t }\n\t if (scale.type !== undefined) {\n\t return scale.type;\n\t }\n\t switch (fieldDef.type) {\n\t case type_1.NOMINAL:\n\t return scale_1.ScaleType.ORDINAL;\n\t case type_1.ORDINAL:\n\t if (channel === channel_1.COLOR) {\n\t return scale_1.ScaleType.LINEAR;\n\t }\n\t return scale_1.ScaleType.ORDINAL;\n\t case type_1.TEMPORAL:\n\t if (channel === channel_1.COLOR) {\n\t return scale_1.ScaleType.TIME;\n\t }\n\t if (fieldDef.timeUnit) {\n\t switch (fieldDef.timeUnit) {\n\t case timeunit_1.TimeUnit.HOURS:\n\t case timeunit_1.TimeUnit.DAY:\n\t case timeunit_1.TimeUnit.MONTH:\n\t return scale_1.ScaleType.ORDINAL;\n\t default:\n\t return scale_1.ScaleType.TIME;\n\t }\n\t }\n\t return scale_1.ScaleType.TIME;\n\t case type_1.QUANTITATIVE:\n\t if (fieldDef.bin) {\n\t return util_1.contains([channel_1.X, channel_1.Y, channel_1.COLOR], channel) ? scale_1.ScaleType.LINEAR : scale_1.ScaleType.ORDINAL;\n\t }\n\t return scale_1.ScaleType.LINEAR;\n\t }\n\t return null;\n\t}\n\texports.scaleType = scaleType;\n\tfunction domain(scale, model, channel, scaleType) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (scale.domain) {\n\t return scale.domain;\n\t }\n\t if (fieldDef.type === type_1.TEMPORAL) {\n\t if (time_1.rawDomain(fieldDef.timeUnit, channel)) {\n\t return {\n\t data: fieldDef.timeUnit,\n\t field: 'date'\n\t };\n\t }\n\t return {\n\t data: model.dataTable(),\n\t field: model.field(channel),\n\t sort: {\n\t field: model.field(channel),\n\t op: 'min'\n\t }\n\t };\n\t }\n\t var stack = model.stack();\n\t if (stack && channel === stack.fieldChannel) {\n\t if (stack.offset === config_1.StackOffset.NORMALIZE) {\n\t return [0, 1];\n\t }\n\t return {\n\t data: data_1.STACKED_SCALE,\n\t field: model.field(channel, { prefn: 'sum_' })\n\t };\n\t }\n\t var includeRawDomain = _includeRawDomain(scale, model, channel, scaleType), sort = domainSort(model, channel, scaleType);\n\t if (includeRawDomain) {\n\t return {\n\t data: data_1.SOURCE,\n\t field: model.field(channel, { noAggregate: true })\n\t };\n\t }\n\t else if (fieldDef.bin) {\n\t return scaleType === scale_1.ScaleType.ORDINAL ? {\n\t data: model.dataTable(),\n\t field: model.field(channel, { binSuffix: '_range' }),\n\t sort: {\n\t field: model.field(channel, { binSuffix: '_start' }),\n\t op: 'min'\n\t }\n\t } : channel === channel_1.COLOR ? {\n\t data: model.dataTable(),\n\t field: model.field(channel, { binSuffix: '_start' })\n\t } : {\n\t data: model.dataTable(),\n\t field: [\n\t model.field(channel, { binSuffix: '_start' }),\n\t model.field(channel, { binSuffix: '_end' })\n\t ]\n\t };\n\t }\n\t else if (sort) {\n\t return {\n\t data: sort.op ? data_1.SOURCE : model.dataTable(),\n\t field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n\t sort: sort\n\t };\n\t }\n\t else {\n\t return {\n\t data: model.dataTable(),\n\t field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n\t };\n\t }\n\t}\n\texports.domain = domain;\n\tfunction domainSort(model, channel, scaleType) {\n\t if (scaleType !== scale_1.ScaleType.ORDINAL) {\n\t return undefined;\n\t }\n\t var sort = model.sort(channel);\n\t if (util_1.contains(['ascending', 'descending', undefined], sort)) {\n\t return true;\n\t }\n\t if (typeof sort !== 'string') {\n\t return {\n\t op: sort.op,\n\t field: sort.field\n\t };\n\t }\n\t return undefined;\n\t}\n\texports.domainSort = domainSort;\n\tfunction _includeRawDomain(scale, model, channel, scaleType) {\n\t var fieldDef = model.fieldDef(channel);\n\t return scale.includeRawDomain &&\n\t fieldDef.aggregate &&\n\t aggregate_1.SHARED_DOMAIN_OPS.indexOf(fieldDef.aggregate) >= 0 &&\n\t ((fieldDef.type === type_1.QUANTITATIVE && !fieldDef.bin) ||\n\t (fieldDef.type === type_1.TEMPORAL && util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)));\n\t}\n\tfunction rangeMixins(scale, model, channel, scaleType) {\n\t var fieldDef = model.fieldDef(channel), scaleConfig = model.config().scale;\n\t if (scaleType === scale_1.ScaleType.ORDINAL && scale.bandSize && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n\t return { bandSize: scale.bandSize };\n\t }\n\t if (scale.range && !util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN], channel)) {\n\t return { range: scale.range };\n\t }\n\t switch (channel) {\n\t case channel_1.X:\n\t return {\n\t rangeMin: 0,\n\t rangeMax: model.cellWidth()\n\t };\n\t case channel_1.Y:\n\t return {\n\t rangeMin: model.cellHeight(),\n\t rangeMax: 0\n\t };\n\t case channel_1.SIZE:\n\t if (model.mark() === mark_1.BAR) {\n\t if (scaleConfig.barSizeRange !== undefined) {\n\t return { range: scaleConfig.barSizeRange };\n\t }\n\t var dimension = model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X;\n\t return { range: [model.config().mark.barThinSize, model.scale(dimension).bandSize] };\n\t }\n\t else if (model.mark() === mark_1.TEXT) {\n\t return { range: scaleConfig.fontSizeRange };\n\t }\n\t if (scaleConfig.pointSizeRange !== undefined) {\n\t return { range: scaleConfig.pointSizeRange };\n\t }\n\t var xIsMeasure = fielddef_1.isMeasure(model.encoding().x);\n\t var yIsMeasure = fielddef_1.isMeasure(model.encoding().y);\n\t var bandSize = xIsMeasure !== yIsMeasure ?\n\t model.scale(xIsMeasure ? channel_1.Y : channel_1.X).bandSize :\n\t Math.min(model.scale(channel_1.X).bandSize || scaleConfig.bandSize, model.scale(channel_1.Y).bandSize || scaleConfig.bandSize);\n\t return { range: [9, (bandSize - 2) * (bandSize - 2)] };\n\t case channel_1.SHAPE:\n\t return { range: scaleConfig.shapeRange };\n\t case channel_1.COLOR:\n\t if (fieldDef.type === type_1.NOMINAL) {\n\t return { range: scaleConfig.nominalColorRange };\n\t }\n\t return { range: scaleConfig.sequentialColorRange };\n\t case channel_1.ROW:\n\t return { range: 'height' };\n\t case channel_1.COLUMN:\n\t return { range: 'width' };\n\t }\n\t return {};\n\t}\n\texports.rangeMixins = rangeMixins;\n\tfunction clamp(prop, scaleType) {\n\t if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT,\n\t scale_1.ScaleType.LOG, scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.clamp = clamp;\n\tfunction exponent(prop, scaleType) {\n\t if (scaleType === scale_1.ScaleType.POW) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.exponent = exponent;\n\tfunction nice(prop, scaleType, channel, fieldDef) {\n\t if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT, scale_1.ScaleType.LOG,\n\t scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.QUANTIZE], scaleType)) {\n\t if (prop !== undefined) {\n\t return prop;\n\t }\n\t if (util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n\t return time_1.smallestUnit(fieldDef.timeUnit);\n\t }\n\t return util_1.contains([channel_1.X, channel_1.Y], channel);\n\t }\n\t return undefined;\n\t}\n\texports.nice = nice;\n\tfunction padding(prop, scaleType, channel) {\n\t if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.padding = padding;\n\tfunction points(__, scaleType, channel) {\n\t if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n\t return true;\n\t }\n\t return undefined;\n\t}\n\texports.points = points;\n\tfunction round(prop, scaleType, channel) {\n\t if (util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN, channel_1.SIZE], channel) && prop !== undefined) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.round = round;\n\tfunction zero(prop, scaleType, channel, fieldDef) {\n\t if (!util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.ORDINAL], scaleType)) {\n\t if (prop !== undefined) {\n\t return prop;\n\t }\n\t return !fieldDef.bin && util_1.contains([channel_1.X, channel_1.Y], channel);\n\t }\n\t return undefined;\n\t}\n\texports.zero = zero;\n\t//# sourceMappingURL=scale.js.map\n\n/***/ },\n/* 190 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar axis_1 = __webpack_require__(181);\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar type_1 = __webpack_require__(172);\n\tvar util_1 = __webpack_require__(165);\n\tvar common_1 = __webpack_require__(186);\n\tfunction compileInnerAxis(channel, model) {\n\t var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n\t var def = {\n\t type: type,\n\t scale: model.scaleName(channel),\n\t grid: true,\n\t tickSize: 0,\n\t properties: {\n\t labels: {\n\t text: { value: '' }\n\t },\n\t axis: {\n\t stroke: { value: 'transparent' }\n\t }\n\t }\n\t };\n\t var axis = model.axis(channel);\n\t ['layer', 'ticks', 'values', 'subdivide'].forEach(function (property) {\n\t var method;\n\t var value = (method = exports[property]) ?\n\t method(model, channel, def) :\n\t axis[property];\n\t if (value !== undefined) {\n\t def[property] = value;\n\t }\n\t });\n\t return def;\n\t}\n\texports.compileInnerAxis = compileInnerAxis;\n\tfunction compileAxis(channel, model) {\n\t var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n\t var axis = model.axis(channel);\n\t var def = {\n\t type: type,\n\t scale: model.scaleName(channel)\n\t };\n\t util_1.extend(def, common_1.formatMixins(model, channel, model.axis(channel).format));\n\t [\n\t 'grid', 'layer', 'offset', 'orient', 'tickSize', 'ticks', 'title',\n\t 'tickPadding', 'tickSize', 'tickSizeMajor', 'tickSizeMinor', 'tickSizeEnd',\n\t 'titleOffset', 'values', 'subdivide'\n\t ].forEach(function (property) {\n\t var method;\n\t var value = (method = exports[property]) ?\n\t method(model, channel, def) :\n\t axis[property];\n\t if (value !== undefined) {\n\t def[property] = value;\n\t }\n\t });\n\t var props = model.axis(channel).properties || {};\n\t [\n\t 'axis', 'labels',\n\t 'grid', 'title', 'ticks', 'majorTicks', 'minorTicks'\n\t ].forEach(function (group) {\n\t var value = properties[group] ?\n\t properties[group](model, channel, props[group] || {}, def) :\n\t props[group];\n\t if (value !== undefined) {\n\t def.properties = def.properties || {};\n\t def.properties[group] = value;\n\t }\n\t });\n\t return def;\n\t}\n\texports.compileAxis = compileAxis;\n\tfunction offset(model, channel) {\n\t return model.axis(channel).offset;\n\t}\n\texports.offset = offset;\n\tfunction gridShow(model, channel) {\n\t var grid = model.axis(channel).grid;\n\t if (grid !== undefined) {\n\t return grid;\n\t }\n\t return !model.isOrdinalScale(channel) && !model.fieldDef(channel).bin;\n\t}\n\texports.gridShow = gridShow;\n\tfunction grid(model, channel) {\n\t if (channel === channel_1.ROW || channel === channel_1.COLUMN) {\n\t return undefined;\n\t }\n\t return gridShow(model, channel) && ((channel === channel_1.Y || channel === channel_1.X) && !(model.has(channel_1.COLUMN) || model.has(channel_1.ROW)));\n\t}\n\texports.grid = grid;\n\tfunction layer(model, channel, def) {\n\t var layer = model.axis(channel).layer;\n\t if (layer !== undefined) {\n\t return layer;\n\t }\n\t if (def.grid) {\n\t return 'back';\n\t }\n\t return undefined;\n\t}\n\texports.layer = layer;\n\t;\n\tfunction orient(model, channel) {\n\t var orient = model.axis(channel).orient;\n\t if (orient) {\n\t return orient;\n\t }\n\t else if (channel === channel_1.COLUMN) {\n\t return axis_1.AxisOrient.TOP;\n\t }\n\t else if (channel === channel_1.ROW) {\n\t if (model.has(channel_1.Y) && model.axis(channel_1.Y).orient !== axis_1.AxisOrient.RIGHT) {\n\t return axis_1.AxisOrient.RIGHT;\n\t }\n\t }\n\t return undefined;\n\t}\n\texports.orient = orient;\n\tfunction ticks(model, channel) {\n\t var ticks = model.axis(channel).ticks;\n\t if (ticks !== undefined) {\n\t return ticks;\n\t }\n\t if (channel === channel_1.X && !model.fieldDef(channel).bin) {\n\t return 5;\n\t }\n\t return undefined;\n\t}\n\texports.ticks = ticks;\n\tfunction tickSize(model, channel) {\n\t var tickSize = model.axis(channel).tickSize;\n\t if (tickSize !== undefined) {\n\t return tickSize;\n\t }\n\t return undefined;\n\t}\n\texports.tickSize = tickSize;\n\tfunction title(model, channel) {\n\t var axis = model.axis(channel);\n\t if (axis.title !== undefined) {\n\t return axis.title;\n\t }\n\t var fieldTitle = fielddef_1.title(model.fieldDef(channel));\n\t var maxLength;\n\t if (axis.titleMaxLength) {\n\t maxLength = axis.titleMaxLength;\n\t }\n\t else if (channel === channel_1.X && !model.isOrdinalScale(channel_1.X)) {\n\t maxLength = model.cellWidth() / model.axis(channel_1.X).characterWidth;\n\t }\n\t else if (channel === channel_1.Y && !model.isOrdinalScale(channel_1.Y)) {\n\t maxLength = model.cellHeight() / model.axis(channel_1.Y).characterWidth;\n\t }\n\t return maxLength ? util_1.truncate(fieldTitle, maxLength) : fieldTitle;\n\t}\n\texports.title = title;\n\tvar properties;\n\t(function (properties) {\n\t function axis(model, channel, axisPropsSpec, def) {\n\t var axis = model.axis(channel);\n\t return util_1.extend(axis.axisWidth !== undefined ?\n\t { strokeWidth: { value: axis.axisWidth } } :\n\t {}, axisPropsSpec || {});\n\t }\n\t properties.axis = axis;\n\t function labels(model, channel, labelsSpec, def) {\n\t var fieldDef = model.fieldDef(channel);\n\t var axis = model.axis(channel);\n\t if (!axis.labels) {\n\t return util_1.extend({\n\t text: ''\n\t }, labelsSpec);\n\t }\n\t if (util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) && axis.labelMaxLength) {\n\t labelsSpec = util_1.extend({\n\t text: {\n\t template: '{{ datum.data | truncate:' + axis.labelMaxLength + '}}'\n\t }\n\t }, labelsSpec || {});\n\t }\n\t if (axis.labelAngle !== undefined) {\n\t labelsSpec.angle = { value: axis.labelAngle };\n\t }\n\t else {\n\t if (channel === channel_1.X && (fielddef_1.isDimension(fieldDef) || fieldDef.type === type_1.TEMPORAL)) {\n\t labelsSpec.angle = { value: 270 };\n\t }\n\t else if (channel === channel_1.ROW && model.has(channel_1.X)) {\n\t labelsSpec.angle = { value: def.orient === 'left' ? 270 : 90 };\n\t }\n\t }\n\t if (axis.labelAlign !== undefined) {\n\t labelsSpec.align = { value: axis.labelAlign };\n\t }\n\t else {\n\t if (labelsSpec.angle) {\n\t if (labelsSpec.angle.value === 270) {\n\t labelsSpec.align = {\n\t value: def.orient === 'top' ? 'left' :\n\t def.type === 'x' ? 'right' :\n\t 'center'\n\t };\n\t }\n\t else if (labelsSpec.angle.value === 90) {\n\t labelsSpec.align = { value: 'center' };\n\t }\n\t }\n\t }\n\t if (axis.labelBaseline !== undefined) {\n\t labelsSpec.baseline = { value: axis.labelBaseline };\n\t }\n\t else {\n\t if (labelsSpec.angle) {\n\t if (labelsSpec.angle.value === 270) {\n\t labelsSpec.baseline = { value: def.type === 'x' ? 'middle' : 'bottom' };\n\t }\n\t else if (labelsSpec.angle.value === 90) {\n\t labelsSpec.baseline = { value: 'bottom' };\n\t }\n\t }\n\t }\n\t return labelsSpec || undefined;\n\t }\n\t properties.labels = labels;\n\t})(properties = exports.properties || (exports.properties = {}));\n\t//# sourceMappingURL=axis.js.map\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar vlFieldDef = __webpack_require__(174);\n\tvar util_1 = __webpack_require__(165);\n\tvar scale_1 = __webpack_require__(180);\n\tvar bin_1 = __webpack_require__(163);\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar type_1 = __webpack_require__(172);\n\tvar scale_2 = __webpack_require__(189);\n\tvar time_1 = __webpack_require__(188);\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar DEFAULT_NULL_FILTERS = {\n\t nominal: false,\n\t ordinal: false,\n\t quantitative: true,\n\t temporal: true\n\t};\n\tfunction compileData(model) {\n\t var def = [source.def(model)];\n\t var summaryDef = summary.def(model);\n\t if (summaryDef) {\n\t def.push(summaryDef);\n\t }\n\t rankTransform(def[def.length - 1], model);\n\t filterNonPositiveForLog(def[def.length - 1], model);\n\t var stackDef = model.stack();\n\t if (stackDef) {\n\t def.push(stack.def(model, stackDef));\n\t }\n\t return def.concat(dates.defs(model));\n\t}\n\texports.compileData = compileData;\n\tvar source;\n\t(function (source_1) {\n\t function def(model) {\n\t var source = { name: data_1.SOURCE };\n\t var data = model.data();\n\t if (data) {\n\t if (data.values && data.values.length > 0) {\n\t source.values = model.data().values;\n\t source.format = { type: 'json' };\n\t }\n\t else if (data.url) {\n\t source.url = data.url;\n\t var defaultExtension = /(?:\\.([^.]+))?$/.exec(source.url)[1];\n\t if (!util_1.contains(['json', 'csv', 'tsv'], defaultExtension)) {\n\t defaultExtension = 'json';\n\t }\n\t source.format = { type: model.data().formatType || defaultExtension };\n\t }\n\t }\n\t var parse = formatParse(model);\n\t if (parse) {\n\t source.format = source.format || {};\n\t source.format.parse = parse;\n\t }\n\t source.transform = transform(model);\n\t return source;\n\t }\n\t source_1.def = def;\n\t function formatParse(model) {\n\t var calcFieldMap = (model.transform().calculate || []).reduce(function (fieldMap, formula) {\n\t fieldMap[formula.field] = true;\n\t return fieldMap;\n\t }, {});\n\t var parse;\n\t model.forEach(function (fieldDef) {\n\t if (fieldDef.type === type_1.TEMPORAL) {\n\t parse = parse || {};\n\t parse[fieldDef.field] = 'date';\n\t }\n\t else if (fieldDef.type === type_1.QUANTITATIVE) {\n\t if (vlFieldDef.isCount(fieldDef) || calcFieldMap[fieldDef.field]) {\n\t return;\n\t }\n\t parse = parse || {};\n\t parse[fieldDef.field] = 'number';\n\t }\n\t });\n\t return parse;\n\t }\n\t function transform(model) {\n\t return nullFilterTransform(model).concat(formulaTransform(model), filterTransform(model), binTransform(model), timeTransform(model));\n\t }\n\t source_1.transform = transform;\n\t function timeTransform(model) {\n\t return model.reduce(function (transform, fieldDef, channel) {\n\t var ref = fielddef_1.field(fieldDef, { nofn: true, datum: true });\n\t if (fieldDef.type === type_1.TEMPORAL && fieldDef.timeUnit) {\n\t transform.push({\n\t type: 'formula',\n\t field: fielddef_1.field(fieldDef),\n\t expr: time_1.parseExpression(fieldDef.timeUnit, ref)\n\t });\n\t }\n\t return transform;\n\t }, []);\n\t }\n\t source_1.timeTransform = timeTransform;\n\t function binTransform(model) {\n\t return model.reduce(function (transform, fieldDef, channel) {\n\t var bin = model.fieldDef(channel).bin;\n\t var scale = model.scale(channel);\n\t if (bin) {\n\t var binTrans = util_1.extend({\n\t type: 'bin',\n\t field: fieldDef.field,\n\t output: {\n\t start: fielddef_1.field(fieldDef, { binSuffix: '_start' }),\n\t mid: fielddef_1.field(fieldDef, { binSuffix: '_mid' }),\n\t end: fielddef_1.field(fieldDef, { binSuffix: '_end' })\n\t }\n\t }, typeof bin === 'boolean' ? {} : bin);\n\t if (!binTrans.maxbins && !binTrans.step) {\n\t binTrans.maxbins = bin_1.autoMaxBins(channel);\n\t }\n\t transform.push(binTrans);\n\t if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL || channel === channel_1.COLOR) {\n\t transform.push({\n\t type: 'formula',\n\t field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n\t expr: fielddef_1.field(fieldDef, { datum: true, binSuffix: '_start' }) +\n\t ' + \\'-\\' + ' +\n\t fielddef_1.field(fieldDef, { datum: true, binSuffix: '_end' })\n\t });\n\t }\n\t }\n\t return transform;\n\t }, []);\n\t }\n\t source_1.binTransform = binTransform;\n\t function nullFilterTransform(model) {\n\t var filterNull = model.transform().filterNull;\n\t var filteredFields = util_1.keys(model.reduce(function (aggregator, fieldDef) {\n\t if (filterNull ||\n\t (filterNull === undefined && fieldDef.field && fieldDef.field !== '*' && DEFAULT_NULL_FILTERS[fieldDef.type])) {\n\t aggregator[fieldDef.field] = true;\n\t }\n\t return aggregator;\n\t }, {}));\n\t return filteredFields.length > 0 ?\n\t [{\n\t type: 'filter',\n\t test: filteredFields.map(function (fieldName) {\n\t return 'datum.' + fieldName + '!==null';\n\t }).join(' && ')\n\t }] : [];\n\t }\n\t source_1.nullFilterTransform = nullFilterTransform;\n\t function filterTransform(model) {\n\t var filter = model.transform().filter;\n\t return filter ? [{\n\t type: 'filter',\n\t test: filter\n\t }] : [];\n\t }\n\t source_1.filterTransform = filterTransform;\n\t function formulaTransform(model) {\n\t return (model.transform().calculate || []).reduce(function (transform, formula) {\n\t transform.push(util_1.extend({ type: 'formula' }, formula));\n\t return transform;\n\t }, []);\n\t }\n\t source_1.formulaTransform = formulaTransform;\n\t})(source = exports.source || (exports.source = {}));\n\tvar summary;\n\t(function (summary) {\n\t function def(model) {\n\t var dims = {};\n\t var meas = {};\n\t var hasAggregate = false;\n\t model.forEach(function (fieldDef, channel) {\n\t if (fieldDef.aggregate) {\n\t hasAggregate = true;\n\t if (fieldDef.aggregate === aggregate_1.AggregateOp.COUNT) {\n\t meas['*'] = meas['*'] || {};\n\t meas['*'].count = true;\n\t }\n\t else {\n\t meas[fieldDef.field] = meas[fieldDef.field] || {};\n\t meas[fieldDef.field][fieldDef.aggregate] = true;\n\t }\n\t }\n\t else {\n\t if (fieldDef.bin) {\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_start' })] = fielddef_1.field(fieldDef, { binSuffix: '_start' });\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_mid' })] = fielddef_1.field(fieldDef, { binSuffix: '_mid' });\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_end' })] = fielddef_1.field(fieldDef, { binSuffix: '_end' });\n\t var scale = model.scale(channel);\n\t if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL) {\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_range' })] = fielddef_1.field(fieldDef, { binSuffix: '_range' });\n\t }\n\t }\n\t else {\n\t dims[fielddef_1.field(fieldDef)] = fielddef_1.field(fieldDef);\n\t }\n\t }\n\t });\n\t var groupby = util_1.vals(dims);\n\t var summarize = util_1.reduce(meas, function (aggregator, fnDictSet, field) {\n\t aggregator[field] = util_1.keys(fnDictSet);\n\t return aggregator;\n\t }, {});\n\t if (hasAggregate) {\n\t return {\n\t name: data_1.SUMMARY,\n\t source: data_1.SOURCE,\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: groupby,\n\t summarize: summarize\n\t }]\n\t };\n\t }\n\t return null;\n\t }\n\t summary.def = def;\n\t ;\n\t})(summary = exports.summary || (exports.summary = {}));\n\tvar stack;\n\t(function (stack) {\n\t function def(model, stackProps) {\n\t var groupbyChannel = stackProps.groupbyChannel, fieldChannel = stackProps.fieldChannel, facetFields = (model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n\t .concat((model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : []));\n\t var stacked = {\n\t name: data_1.STACKED_SCALE,\n\t source: model.dataTable(),\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: [model.field(groupbyChannel)].concat(facetFields),\n\t summarize: [{ ops: ['sum'], field: model.field(fieldChannel) }]\n\t }]\n\t };\n\t return stacked;\n\t }\n\t stack.def = def;\n\t ;\n\t})(stack = exports.stack || (exports.stack = {}));\n\tvar dates;\n\t(function (dates) {\n\t function defs(model) {\n\t var alreadyAdded = {};\n\t return model.reduce(function (aggregator, fieldDef, channel) {\n\t if (fieldDef.timeUnit) {\n\t var domain = time_1.rawDomain(fieldDef.timeUnit, channel);\n\t if (domain && !alreadyAdded[fieldDef.timeUnit]) {\n\t alreadyAdded[fieldDef.timeUnit] = true;\n\t aggregator.push({\n\t name: fieldDef.timeUnit,\n\t values: domain,\n\t transform: [{\n\t type: 'formula',\n\t field: 'date',\n\t expr: time_1.parseExpression(fieldDef.timeUnit, 'datum.data', true)\n\t }]\n\t });\n\t }\n\t }\n\t return aggregator;\n\t }, []);\n\t }\n\t dates.defs = defs;\n\t})(dates = exports.dates || (exports.dates = {}));\n\tfunction rankTransform(dataTable, model) {\n\t if (model.has(channel_1.COLOR) && model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL) {\n\t dataTable.transform = dataTable.transform.concat([{\n\t type: 'sort',\n\t by: model.field(channel_1.COLOR)\n\t }, {\n\t type: 'rank',\n\t field: model.field(channel_1.COLOR),\n\t output: {\n\t rank: model.field(channel_1.COLOR, { prefn: 'rank_' })\n\t }\n\t }]);\n\t }\n\t}\n\texports.rankTransform = rankTransform;\n\tfunction filterNonPositiveForLog(dataTable, model) {\n\t model.forEach(function (_, channel) {\n\t var scale = model.scale(channel);\n\t if (scale && scale.type === scale_1.ScaleType.LOG) {\n\t dataTable.transform.push({\n\t type: 'filter',\n\t test: model.field(channel, { datum: true }) + ' > 0'\n\t });\n\t }\n\t });\n\t}\n\texports.filterNonPositiveForLog = filterNonPositiveForLog;\n\t//# sourceMappingURL=data.js.map\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar mark_1 = __webpack_require__(183);\n\tvar time_1 = __webpack_require__(188);\n\tfunction compileLayoutData(model) {\n\t var distinctSummary = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (summary, channel) {\n\t if (model.has(channel) && model.isOrdinalScale(channel)) {\n\t var scale = model.scale(channel);\n\t if (!(scale.domain instanceof Array)) {\n\t summary.push({\n\t field: model.field(channel),\n\t ops: ['distinct']\n\t });\n\t }\n\t }\n\t return summary;\n\t }, []);\n\t var cellWidthFormula = scaleWidthFormula(model, channel_1.X, model.cellWidth());\n\t var cellHeightFormula = scaleWidthFormula(model, channel_1.Y, model.cellHeight());\n\t var isFacet = model.has(channel_1.COLUMN) || model.has(channel_1.ROW);\n\t var formulas = [{\n\t type: 'formula',\n\t field: 'cellWidth',\n\t expr: cellWidthFormula\n\t }, {\n\t type: 'formula',\n\t field: 'cellHeight',\n\t expr: cellHeightFormula\n\t }, {\n\t type: 'formula',\n\t field: 'width',\n\t expr: isFacet ?\n\t facetScaleWidthFormula(model, channel_1.COLUMN, 'datum.cellWidth') :\n\t cellWidthFormula\n\t }, {\n\t type: 'formula',\n\t field: 'height',\n\t expr: isFacet ?\n\t facetScaleWidthFormula(model, channel_1.ROW, 'datum.cellHeight') :\n\t cellHeightFormula\n\t }];\n\t return distinctSummary.length > 0 ? {\n\t name: data_1.LAYOUT,\n\t source: model.dataTable(),\n\t transform: [].concat([{\n\t type: 'aggregate',\n\t summarize: distinctSummary\n\t }], formulas)\n\t } : {\n\t name: data_1.LAYOUT,\n\t values: [{}],\n\t transform: formulas\n\t };\n\t}\n\texports.compileLayoutData = compileLayoutData;\n\tfunction cardinalityFormula(model, channel) {\n\t var scale = model.scale(channel);\n\t if (scale.domain instanceof Array) {\n\t return scale.domain.length;\n\t }\n\t var timeUnit = model.fieldDef(channel).timeUnit;\n\t var timeUnitDomain = timeUnit ? time_1.rawDomain(timeUnit, channel) : null;\n\t return timeUnitDomain !== null ? timeUnitDomain.length :\n\t model.field(channel, { datum: true, prefn: 'distinct_' });\n\t}\n\tfunction scaleWidthFormula(model, channel, nonOrdinalSize) {\n\t if (model.has(channel)) {\n\t if (model.isOrdinalScale(channel)) {\n\t var scale = model.scale(channel);\n\t return '(' + cardinalityFormula(model, channel) +\n\t ' + ' + scale.padding +\n\t ') * ' + scale.bandSize;\n\t }\n\t else {\n\t return nonOrdinalSize + '';\n\t }\n\t }\n\t else {\n\t if (model.mark() === mark_1.TEXT && channel === channel_1.X) {\n\t return model.config().scale.textBandWidth + '';\n\t }\n\t return model.config().scale.bandSize + '';\n\t }\n\t}\n\tfunction facetScaleWidthFormula(model, channel, innerWidth) {\n\t var scale = model.scale(channel);\n\t if (model.has(channel)) {\n\t var cardinality = scale.domain instanceof Array ? scale.domain.length :\n\t model.field(channel, { datum: true, prefn: 'distinct_' });\n\t return '(' + innerWidth + ' + ' + scale.padding + ')' + ' * ' + cardinality;\n\t }\n\t else {\n\t return innerWidth + ' + ' + model.config().facet.scale.padding;\n\t }\n\t}\n\t//# sourceMappingURL=layout.js.map\n\n/***/ },\n/* 193 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util = __webpack_require__(165);\n\tvar util_1 = __webpack_require__(165);\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar axis_1 = __webpack_require__(190);\n\tvar scale_1 = __webpack_require__(189);\n\tvar common_1 = __webpack_require__(186);\n\tfunction facetMixins(model, marks) {\n\t var hasRow = model.has(channel_1.ROW), hasCol = model.has(channel_1.COLUMN);\n\t if (model.has(channel_1.ROW) && !fielddef_1.isDimension(model.encoding().row)) {\n\t util.error('Row encoding should be ordinal.');\n\t }\n\t if (model.has(channel_1.COLUMN) && !fielddef_1.isDimension(model.encoding().column)) {\n\t util.error('Col encoding should be ordinal.');\n\t }\n\t return {\n\t marks: [].concat(getFacetGuideGroups(model), [getFacetGroup(model, marks)]),\n\t scales: scale_1.compileScales(model),\n\t axes: [].concat(hasRow && model.axis(channel_1.ROW) ? [axis_1.compileAxis(channel_1.ROW, model)] : [], hasCol && model.axis(channel_1.COLUMN) ? [axis_1.compileAxis(channel_1.COLUMN, model)] : [])\n\t };\n\t}\n\texports.facetMixins = facetMixins;\n\tfunction getCellAxes(model) {\n\t var cellAxes = [];\n\t if (model.has(channel_1.X) && model.axis(channel_1.X) && axis_1.gridShow(model, channel_1.X)) {\n\t cellAxes.push(axis_1.compileInnerAxis(channel_1.X, model));\n\t }\n\t if (model.has(channel_1.Y) && model.axis(channel_1.Y) && axis_1.gridShow(model, channel_1.Y)) {\n\t cellAxes.push(axis_1.compileInnerAxis(channel_1.Y, model));\n\t }\n\t return cellAxes;\n\t}\n\tfunction getFacetGroup(model, marks) {\n\t var name = model.spec().name;\n\t var facetGroup = {\n\t name: (name ? name + '-' : '') + 'cell',\n\t type: 'group',\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{\n\t type: 'facet',\n\t groupby: [].concat(model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : [], model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n\t }]\n\t },\n\t properties: {\n\t update: getFacetGroupProperties(model)\n\t },\n\t marks: marks\n\t };\n\t var cellAxes = getCellAxes(model);\n\t if (cellAxes.length > 0) {\n\t facetGroup.axes = cellAxes;\n\t }\n\t return facetGroup;\n\t}\n\tfunction getFacetGroupProperties(model) {\n\t var facetGroupProperties = {\n\t x: model.has(channel_1.COLUMN) ? {\n\t scale: model.scaleName(channel_1.COLUMN),\n\t field: model.field(channel_1.COLUMN),\n\t offset: model.scale(channel_1.COLUMN).padding / 2\n\t } : { value: model.config().facet.scale.padding / 2 },\n\t y: model.has(channel_1.ROW) ? {\n\t scale: model.scaleName(channel_1.ROW),\n\t field: model.field(channel_1.ROW),\n\t offset: model.scale(channel_1.ROW).padding / 2\n\t } : { value: model.config().facet.scale.padding / 2 },\n\t width: { field: { parent: 'cellWidth' } },\n\t height: { field: { parent: 'cellHeight' } }\n\t };\n\t common_1.applyConfig(facetGroupProperties, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n\t common_1.applyConfig(facetGroupProperties, model.config().facet.cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n\t return facetGroupProperties;\n\t}\n\tfunction getFacetGuideGroups(model) {\n\t var rootAxesGroups = [];\n\t if (model.has(channel_1.X)) {\n\t if (model.axis(channel_1.X)) {\n\t rootAxesGroups.push(getXAxesGroup(model));\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.ROW)) {\n\t rootAxesGroups.push.apply(rootAxesGroups, getRowGridGroups(model));\n\t }\n\t }\n\t if (model.has(channel_1.Y)) {\n\t if (model.axis(channel_1.Y)) {\n\t rootAxesGroups.push(getYAxesGroup(model));\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.COLUMN)) {\n\t rootAxesGroups.push.apply(rootAxesGroups, getColumnGridGroups(model));\n\t }\n\t }\n\t return rootAxesGroups;\n\t}\n\tfunction getXAxesGroup(model) {\n\t var hasCol = model.has(channel_1.COLUMN);\n\t var name = model.spec().name;\n\t return util_1.extend({\n\t name: (name ? name + '-' : '') + 'x-axes',\n\t type: 'group'\n\t }, hasCol ? {\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: [model.field(channel_1.COLUMN)],\n\t summarize: { '*': ['count'] }\n\t }]\n\t }\n\t } : {}, {\n\t properties: {\n\t update: {\n\t width: { field: { parent: 'cellWidth' } },\n\t height: {\n\t field: { group: 'height' }\n\t },\n\t x: hasCol ? {\n\t scale: model.scaleName(channel_1.COLUMN),\n\t field: model.field(channel_1.COLUMN),\n\t offset: model.scale(channel_1.COLUMN).padding / 2\n\t } : {\n\t value: model.config().facet.scale.padding / 2\n\t }\n\t }\n\t }\n\t }, model.axis(channel_1.X) ? {\n\t axes: [axis_1.compileAxis(channel_1.X, model)]\n\t } : {});\n\t}\n\tfunction getYAxesGroup(model) {\n\t var hasRow = model.has(channel_1.ROW);\n\t var name = model.spec().name;\n\t return util_1.extend({\n\t name: (name ? name + '-' : '') + 'y-axes',\n\t type: 'group'\n\t }, hasRow ? {\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: [model.field(channel_1.ROW)],\n\t summarize: { '*': ['count'] }\n\t }]\n\t }\n\t } : {}, {\n\t properties: {\n\t update: {\n\t width: {\n\t field: { group: 'width' }\n\t },\n\t height: { field: { parent: 'cellHeight' } },\n\t y: hasRow ? {\n\t scale: model.scaleName(channel_1.ROW),\n\t field: model.field(channel_1.ROW),\n\t offset: model.scale(channel_1.ROW).padding / 2\n\t } : {\n\t value: model.config().facet.scale.padding / 2\n\t }\n\t }\n\t },\n\t }, model.axis(channel_1.Y) ? {\n\t axes: [axis_1.compileAxis(channel_1.Y, model)]\n\t } : {});\n\t}\n\tfunction getRowGridGroups(model) {\n\t var name = model.spec().name;\n\t var facetGridConfig = model.config().facet.grid;\n\t var rowGrid = {\n\t name: (name ? name + '-' : '') + 'row-grid',\n\t type: 'rule',\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{ type: 'facet', groupby: [model.field(channel_1.ROW)] }]\n\t },\n\t properties: {\n\t update: {\n\t y: {\n\t scale: model.scaleName(channel_1.ROW),\n\t field: model.field(channel_1.ROW)\n\t },\n\t x: { value: 0, offset: -facetGridConfig.offset },\n\t x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t };\n\t return [rowGrid, {\n\t name: (name ? name + '-' : '') + 'row-grid-end',\n\t type: 'rule',\n\t properties: {\n\t update: {\n\t y: { field: { group: 'height' } },\n\t x: { value: 0, offset: -facetGridConfig.offset },\n\t x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t }];\n\t}\n\tfunction getColumnGridGroups(model) {\n\t var name = model.spec().name;\n\t var facetGridConfig = model.config().facet.grid;\n\t var columnGrid = {\n\t name: (name ? name + '-' : '') + 'column-grid',\n\t type: 'rule',\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{ type: 'facet', groupby: [model.field(channel_1.COLUMN)] }]\n\t },\n\t properties: {\n\t update: {\n\t x: {\n\t scale: model.scaleName(channel_1.COLUMN),\n\t field: model.field(channel_1.COLUMN)\n\t },\n\t y: { value: 0, offset: -facetGridConfig.offset },\n\t y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t };\n\t return [columnGrid, {\n\t name: (name ? name + '-' : '') + 'column-grid-end',\n\t type: 'rule',\n\t properties: {\n\t update: {\n\t x: { field: { group: 'width' } },\n\t y: { value: 0, offset: -facetGridConfig.offset },\n\t y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t }];\n\t}\n\t//# sourceMappingURL=facet.js.map\n\n/***/ },\n/* 194 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar mark_1 = __webpack_require__(183);\n\tvar util_1 = __webpack_require__(165);\n\tvar common_1 = __webpack_require__(186);\n\tvar type_1 = __webpack_require__(172);\n\tvar scale_1 = __webpack_require__(189);\n\tfunction compileLegends(model) {\n\t var defs = [];\n\t if (model.has(channel_1.COLOR) && model.legend(channel_1.COLOR)) {\n\t var fieldDef = model.fieldDef(channel_1.COLOR);\n\t var scale = model.scaleName(useColorLegendScale(fieldDef) ?\n\t scale_1.COLOR_LEGEND :\n\t channel_1.COLOR);\n\t var def = model.config().mark.filled ? { fill: scale } : { stroke: scale };\n\t defs.push(compileLegend(model, channel_1.COLOR, def));\n\t }\n\t if (model.has(channel_1.SIZE) && model.legend(channel_1.SIZE)) {\n\t defs.push(compileLegend(model, channel_1.SIZE, {\n\t size: model.scaleName(channel_1.SIZE)\n\t }));\n\t }\n\t if (model.has(channel_1.SHAPE) && model.legend(channel_1.SHAPE)) {\n\t defs.push(compileLegend(model, channel_1.SHAPE, {\n\t shape: model.scaleName(channel_1.SHAPE)\n\t }));\n\t }\n\t return defs;\n\t}\n\texports.compileLegends = compileLegends;\n\tfunction compileLegend(model, channel, def) {\n\t var fieldDef = model.fieldDef(channel);\n\t var legend = model.legend(channel);\n\t def.title = title(legend, fieldDef);\n\t util_1.extend(def, formatMixins(legend, model, channel));\n\t ['orient', 'values'].forEach(function (property) {\n\t var value = legend[property];\n\t if (value !== undefined) {\n\t def[property] = value;\n\t }\n\t });\n\t var props = (typeof legend !== 'boolean' && legend.properties) || {};\n\t ['title', 'symbols', 'legend', 'labels'].forEach(function (group) {\n\t var value = properties[group] ?\n\t properties[group](fieldDef, props[group], model, channel) :\n\t props[group];\n\t if (value !== undefined) {\n\t def.properties = def.properties || {};\n\t def.properties[group] = value;\n\t }\n\t });\n\t return def;\n\t}\n\texports.compileLegend = compileLegend;\n\tfunction title(legend, fieldDef) {\n\t if (typeof legend !== 'boolean' && legend.title) {\n\t return legend.title;\n\t }\n\t return fielddef_1.title(fieldDef);\n\t}\n\texports.title = title;\n\tfunction formatMixins(legend, model, channel) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (fieldDef.bin) {\n\t return {};\n\t }\n\t return common_1.formatMixins(model, channel, typeof legend !== 'boolean' ? legend.format : undefined);\n\t}\n\texports.formatMixins = formatMixins;\n\tfunction useColorLegendScale(fieldDef) {\n\t return fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit;\n\t}\n\texports.useColorLegendScale = useColorLegendScale;\n\tvar properties;\n\t(function (properties) {\n\t function symbols(fieldDef, symbolsSpec, model, channel) {\n\t var symbols = {};\n\t var mark = model.mark();\n\t switch (mark) {\n\t case mark_1.BAR:\n\t case mark_1.TICK:\n\t case mark_1.TEXT:\n\t symbols.shape = { value: 'square' };\n\t break;\n\t case mark_1.CIRCLE:\n\t case mark_1.SQUARE:\n\t symbols.shape = { value: mark };\n\t break;\n\t case mark_1.POINT:\n\t case mark_1.LINE:\n\t case mark_1.AREA:\n\t break;\n\t }\n\t var filled = model.config().mark.filled;\n\t common_1.applyMarkConfig(symbols, model, util_1.without(common_1.FILL_STROKE_CONFIG, [filled ? 'fill' : 'stroke']));\n\t if (filled) {\n\t symbols.strokeWidth = { value: 0 };\n\t }\n\t var value;\n\t if (model.has(channel_1.COLOR) && channel === channel_1.COLOR) {\n\t if (useColorLegendScale(fieldDef)) {\n\t value = { scale: model.scaleName(channel_1.COLOR), field: 'data' };\n\t }\n\t }\n\t else if (model.fieldDef(channel_1.COLOR).value) {\n\t value = { value: model.fieldDef(channel_1.COLOR).value };\n\t }\n\t if (value !== undefined) {\n\t if (filled) {\n\t symbols.fill = value;\n\t }\n\t else {\n\t symbols.stroke = value;\n\t }\n\t }\n\t else if (channel !== channel_1.COLOR) {\n\t symbols[filled ? 'fill' : 'stroke'] = symbols[filled ? 'fill' : 'stroke'] ||\n\t { value: model.config().mark.color };\n\t }\n\t symbols = util_1.extend(symbols, symbolsSpec || {});\n\t return util_1.keys(symbols).length > 0 ? symbols : undefined;\n\t }\n\t properties.symbols = symbols;\n\t function labels(fieldDef, symbolsSpec, model, channel) {\n\t if (channel === channel_1.COLOR) {\n\t if (fieldDef.type === type_1.ORDINAL) {\n\t return {\n\t text: {\n\t scale: model.scaleName(scale_1.COLOR_LEGEND),\n\t field: 'data'\n\t }\n\t };\n\t }\n\t else if (fieldDef.bin) {\n\t return {\n\t text: {\n\t scale: model.scaleName(scale_1.COLOR_LEGEND_LABEL),\n\t field: 'data'\n\t }\n\t };\n\t }\n\t else if (fieldDef.timeUnit) {\n\t return {\n\t text: {\n\t template: '{{ datum.data | time:\\'' + common_1.timeFormat(model, channel) + '\\'}}'\n\t }\n\t };\n\t }\n\t }\n\t return undefined;\n\t }\n\t properties.labels = labels;\n\t})(properties || (properties = {}));\n\t//# sourceMappingURL=legend.js.map\n\n/***/ },\n/* 195 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar mark_1 = __webpack_require__(183);\n\tvar stack_1 = __webpack_require__(185);\n\tvar util_1 = __webpack_require__(165);\n\tvar area_1 = __webpack_require__(196);\n\tvar bar_1 = __webpack_require__(197);\n\tvar line_1 = __webpack_require__(198);\n\tvar point_1 = __webpack_require__(199);\n\tvar text_1 = __webpack_require__(200);\n\tvar tick_1 = __webpack_require__(201);\n\tvar common_1 = __webpack_require__(186);\n\tvar markCompiler = {\n\t area: area_1.area,\n\t bar: bar_1.bar,\n\t line: line_1.line,\n\t point: point_1.point,\n\t text: text_1.text,\n\t tick: tick_1.tick,\n\t circle: point_1.circle,\n\t square: point_1.square\n\t};\n\tfunction compileMark(model) {\n\t if (util_1.contains([mark_1.LINE, mark_1.AREA], model.mark())) {\n\t return compilePathMark(model);\n\t }\n\t else {\n\t return compileNonPathMark(model);\n\t }\n\t}\n\texports.compileMark = compileMark;\n\tfunction compilePathMark(model) {\n\t var mark = model.mark();\n\t var name = model.spec().name;\n\t var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n\t var dataFrom = { data: model.dataTable() };\n\t var details = detailFields(model);\n\t var pathMarks = [util_1.extend(name ? { name: name + '-marks' } : {}, {\n\t type: markCompiler[mark].markType(),\n\t from: util_1.extend(hasParentData || details.length > 0 ? {} : dataFrom, { transform: [{ type: 'sort', by: sortPathBy(model) }] }),\n\t properties: { update: markCompiler[mark].properties(model) }\n\t })];\n\t if (details.length > 0) {\n\t var facetTransform = { type: 'facet', groupby: details };\n\t var transform = mark === mark_1.AREA && model.stack() ?\n\t [stack_1.imputeTransform(model), stack_1.stackTransform(model), facetTransform] :\n\t [].concat(facetTransform, model.has(channel_1.ORDER) ? [{ type: 'sort', by: sortBy(model) }] : []);\n\t return [{\n\t name: (name ? name + '-' : '') + mark + '-facet',\n\t type: 'group',\n\t from: util_1.extend(hasParentData ? {} : dataFrom, { transform: transform }),\n\t properties: {\n\t update: {\n\t width: { field: { group: 'width' } },\n\t height: { field: { group: 'height' } }\n\t }\n\t },\n\t marks: pathMarks\n\t }];\n\t }\n\t else {\n\t return pathMarks;\n\t }\n\t}\n\tfunction compileNonPathMark(model) {\n\t var mark = model.mark();\n\t var name = model.spec().name;\n\t var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n\t var dataFrom = { data: model.dataTable() };\n\t var marks = [];\n\t if (mark === mark_1.TEXT &&\n\t model.has(channel_1.COLOR) &&\n\t model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n\t marks.push(util_1.extend(name ? { name: name + '-background' } : {}, { type: 'rect' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: text_1.text.background(model) } }));\n\t }\n\t marks.push(util_1.extend(name ? { name: name + '-marks' } : {}, { type: markCompiler[mark].markType() }, (!hasParentData || model.stack() || model.has(channel_1.ORDER)) ? {\n\t from: util_1.extend(hasParentData ? {} : dataFrom, model.stack() ?\n\t { transform: [stack_1.stackTransform(model)] } :\n\t model.has(channel_1.ORDER) ?\n\t { transform: [{ type: 'sort', by: sortBy(model) }] } :\n\t {})\n\t } : {}, { properties: { update: markCompiler[mark].properties(model) } }));\n\t if (model.has(channel_1.LABEL) && markCompiler[mark].labels) {\n\t var labelProperties = markCompiler[mark].labels(model);\n\t if (labelProperties !== undefined) {\n\t marks.push(util_1.extend(name ? { name: name + '-label' } : {}, { type: 'text' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: labelProperties } }));\n\t }\n\t }\n\t return marks;\n\t}\n\tfunction sortBy(model) {\n\t if (model.has(channel_1.ORDER)) {\n\t var channelDef = model.encoding().order;\n\t if (channelDef instanceof Array) {\n\t return channelDef.map(common_1.sortField);\n\t }\n\t else {\n\t return common_1.sortField(channelDef);\n\t }\n\t }\n\t return null;\n\t}\n\tfunction sortPathBy(model) {\n\t if (model.mark() === mark_1.LINE && model.has(channel_1.PATH)) {\n\t var channelDef = model.encoding().path;\n\t if (channelDef instanceof Array) {\n\t return channelDef.map(common_1.sortField);\n\t }\n\t else {\n\t return common_1.sortField(channelDef);\n\t }\n\t }\n\t else {\n\t return '-' + model.field(model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X);\n\t }\n\t}\n\tfunction detailFields(model) {\n\t return [channel_1.COLOR, channel_1.DETAIL, channel_1.SHAPE].reduce(function (details, channel) {\n\t if (model.has(channel) && !model.fieldDef(channel).aggregate) {\n\t details.push(model.field(channel));\n\t }\n\t return details;\n\t }, []);\n\t}\n\t//# sourceMappingURL=mark.js.map\n\n/***/ },\n/* 196 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar common_1 = __webpack_require__(186);\n\tvar area;\n\t(function (area) {\n\t function markType() {\n\t return 'area';\n\t }\n\t area.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t var orient = model.config().mark.orient;\n\t if (orient !== undefined) {\n\t p.orient = { value: orient };\n\t }\n\t var stack = model.stack();\n\t var xFieldDef = model.encoding().x;\n\t if (stack && channel_1.X === stack.fieldChannel) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_start' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(xFieldDef)) {\n\t p.x = { scale: model.scaleName(channel_1.X), field: model.field(channel_1.X) };\n\t }\n\t else if (fielddef_1.isDimension(xFieldDef)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t if (orient === 'horizontal') {\n\t if (stack && channel_1.X === stack.fieldChannel) {\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_end' })\n\t };\n\t }\n\t else {\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t value: 0\n\t };\n\t }\n\t }\n\t var yFieldDef = model.encoding().y;\n\t if (stack && channel_1.Y === stack.fieldChannel) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_start' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(yFieldDef)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t }\n\t else if (fielddef_1.isDimension(yFieldDef)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t if (orient !== 'horizontal') {\n\t if (stack && channel_1.Y === stack.fieldChannel) {\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_end' })\n\t };\n\t }\n\t else {\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t value: 0\n\t };\n\t }\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n\t return p;\n\t }\n\t area.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t area.labels = labels;\n\t})(area = exports.area || (exports.area = {}));\n\t//# sourceMappingURL=area.js.map\n\n/***/ },\n/* 197 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar common_1 = __webpack_require__(186);\n\tvar bar;\n\t(function (bar) {\n\t function markType() {\n\t return 'rect';\n\t }\n\t bar.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t var orient = model.config().mark.orient;\n\t var stack = model.stack();\n\t var xFieldDef = model.encoding().x;\n\t if (stack && channel_1.X === stack.fieldChannel) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_start' })\n\t };\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_end' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(xFieldDef)) {\n\t if (orient === 'horizontal') {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X)\n\t };\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t value: 0\n\t };\n\t }\n\t else {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X)\n\t };\n\t p.width = { value: sizeValue(model, channel_1.X) };\n\t }\n\t }\n\t else if (model.fieldDef(channel_1.X).bin) {\n\t if (model.has(channel_1.SIZE) && orient !== 'horizontal') {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t p.width = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_start' }),\n\t offset: 1\n\t };\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_end' })\n\t };\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.X)) {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X)\n\t };\n\t }\n\t else {\n\t p.x = { value: 0, offset: 2 };\n\t }\n\t p.width = model.has(channel_1.SIZE) && orient !== 'horizontal' ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, (channel_1.X))\n\t };\n\t }\n\t var yFieldDef = model.encoding().y;\n\t if (stack && channel_1.Y === stack.fieldChannel) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_start' })\n\t };\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_end' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(yFieldDef)) {\n\t if (orient !== 'horizontal') {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t value: 0\n\t };\n\t }\n\t else {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t p.height = { value: sizeValue(model, channel_1.Y) };\n\t }\n\t }\n\t else if (model.fieldDef(channel_1.Y).bin) {\n\t if (model.has(channel_1.SIZE) && orient === 'horizontal') {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t p.height = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_start' })\n\t };\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_end' }),\n\t offset: 1\n\t };\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.Y)) {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t }\n\t else {\n\t p.y2 = {\n\t field: { group: 'height' },\n\t offset: -1\n\t };\n\t }\n\t p.height = model.has(channel_1.SIZE) && orient === 'horizontal' ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, channel_1.Y)\n\t };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t return p;\n\t }\n\t bar.properties = properties;\n\t function sizeValue(model, channel) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t var markConfig = model.config().mark;\n\t if (markConfig.barSize) {\n\t return markConfig.barSize;\n\t }\n\t return model.isOrdinalScale(channel) ?\n\t model.scale(channel).bandSize - 1 :\n\t !model.has(channel) ?\n\t model.config().scale.bandSize - 1 :\n\t markConfig.barThinSize;\n\t }\n\t function labels(model) {\n\t return undefined;\n\t }\n\t bar.labels = labels;\n\t})(bar = exports.bar || (exports.bar = {}));\n\t//# sourceMappingURL=bar.js.map\n\n/***/ },\n/* 198 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar line;\n\t(function (line) {\n\t function markType() {\n\t return 'line';\n\t }\n\t line.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t if (model.has(channel_1.X)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.x = { value: 0 };\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.y = { field: { group: 'height' } };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n\t return p;\n\t }\n\t line.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t line.labels = labels;\n\t})(line = exports.line || (exports.line = {}));\n\t//# sourceMappingURL=line.js.map\n\n/***/ },\n/* 199 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar point;\n\t(function (point) {\n\t function markType() {\n\t return 'symbol';\n\t }\n\t point.markType = markType;\n\t function properties(model, fixedShape) {\n\t var p = {};\n\t if (model.has(channel_1.X)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.x = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.y = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.SIZE)) {\n\t p.size = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.size = { value: sizeValue(model) };\n\t }\n\t if (fixedShape) {\n\t p.shape = { value: fixedShape };\n\t }\n\t else if (model.has(channel_1.SHAPE)) {\n\t p.shape = {\n\t scale: model.scaleName(channel_1.SHAPE),\n\t field: model.field(channel_1.SHAPE)\n\t };\n\t }\n\t else if (model.fieldDef(channel_1.SHAPE).value) {\n\t p.shape = { value: model.fieldDef(channel_1.SHAPE).value };\n\t }\n\t else if (model.config().mark.shape) {\n\t p.shape = { value: model.config().mark.shape };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t return p;\n\t }\n\t point.properties = properties;\n\t function sizeValue(model) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t return model.config().mark.size;\n\t }\n\t function labels(model) {\n\t }\n\t point.labels = labels;\n\t})(point = exports.point || (exports.point = {}));\n\tvar circle;\n\t(function (circle) {\n\t function markType() {\n\t return 'symbol';\n\t }\n\t circle.markType = markType;\n\t function properties(model) {\n\t return point.properties(model, 'circle');\n\t }\n\t circle.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t circle.labels = labels;\n\t})(circle = exports.circle || (exports.circle = {}));\n\tvar square;\n\t(function (square) {\n\t function markType() {\n\t return 'symbol';\n\t }\n\t square.markType = markType;\n\t function properties(model) {\n\t return point.properties(model, 'square');\n\t }\n\t square.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t square.labels = labels;\n\t})(square = exports.square || (exports.square = {}));\n\t//# sourceMappingURL=point.js.map\n\n/***/ },\n/* 200 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar util_1 = __webpack_require__(165);\n\tvar type_1 = __webpack_require__(172);\n\tvar text;\n\t(function (text) {\n\t function markType() {\n\t return 'text';\n\t }\n\t text.markType = markType;\n\t function background(model) {\n\t return {\n\t x: { value: 0 },\n\t y: { value: 0 },\n\t width: { field: { group: 'width' } },\n\t height: { field: { group: 'height' } },\n\t fill: {\n\t scale: model.scaleName(channel_1.COLOR),\n\t field: model.field(channel_1.COLOR, model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n\t }\n\t };\n\t }\n\t text.background = background;\n\t function properties(model) {\n\t var p = {};\n\t common_1.applyMarkConfig(p, model, ['angle', 'align', 'baseline', 'dx', 'dy', 'font', 'fontWeight',\n\t 'fontStyle', 'radius', 'theta', 'text']);\n\t var fieldDef = model.fieldDef(channel_1.TEXT);\n\t if (model.has(channel_1.X)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t if (model.has(channel_1.TEXT) && model.fieldDef(channel_1.TEXT).type === type_1.QUANTITATIVE) {\n\t p.x = { field: { group: 'width' }, offset: -5 };\n\t }\n\t else {\n\t p.x = { value: model.config().scale.textBandWidth / 2 };\n\t }\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.y = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.SIZE)) {\n\t p.fontSize = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.fontSize = { value: sizeValue(model) };\n\t }\n\t if (model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n\t p.fill = { value: 'black' };\n\t var opacity = model.config().mark.opacity;\n\t if (opacity) {\n\t p.opacity = { value: opacity };\n\t }\n\t ;\n\t }\n\t else {\n\t common_1.applyColorAndOpacity(p, model);\n\t }\n\t if (model.has(channel_1.TEXT)) {\n\t if (util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], model.fieldDef(channel_1.TEXT).type)) {\n\t var format = model.config().mark.format;\n\t util_1.extend(p, common_1.formatMixins(model, channel_1.TEXT, format));\n\t }\n\t else {\n\t p.text = { field: model.field(channel_1.TEXT) };\n\t }\n\t }\n\t else if (fieldDef.value) {\n\t p.text = { value: fieldDef.value };\n\t }\n\t return p;\n\t }\n\t text.properties = properties;\n\t function sizeValue(model) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t return model.config().mark.fontSize;\n\t }\n\t})(text = exports.text || (exports.text = {}));\n\t//# sourceMappingURL=text.js.map\n\n/***/ },\n/* 201 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar tick;\n\t(function (tick) {\n\t function markType() {\n\t return 'rect';\n\t }\n\t tick.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t if (model.has(channel_1.X)) {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.xc = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.yc = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.config().mark.orient === 'horizontal') {\n\t p.width = { value: model.config().mark.tickThickness };\n\t p.height = model.has(channel_1.SIZE) ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, channel_1.Y)\n\t };\n\t }\n\t else {\n\t p.width = model.has(channel_1.SIZE) ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, channel_1.X)\n\t };\n\t p.height = { value: model.config().mark.tickThickness };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t return p;\n\t }\n\t tick.properties = properties;\n\t function sizeValue(model, channel) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t var scaleConfig = model.config().scale;\n\t var markConfig = model.config().mark;\n\t if (markConfig.tickSize) {\n\t return markConfig.tickSize;\n\t }\n\t var bandSize = model.has(channel) ?\n\t model.scale(channel).bandSize :\n\t scaleConfig.bandSize;\n\t return bandSize / 1.5;\n\t }\n\t function labels(model) {\n\t return undefined;\n\t }\n\t tick.labels = labels;\n\t})(tick = exports.tick || (exports.tick = {}));\n\t//# sourceMappingURL=tick.js.map\n\n/***/ },\n/* 202 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar timeunit_1 = __webpack_require__(176);\n\tvar type_1 = __webpack_require__(172);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar mark_1 = __webpack_require__(183);\n\texports.DELIM = '|';\n\texports.ASSIGN = '=';\n\texports.TYPE = ',';\n\texports.FUNC = '_';\n\tfunction shorten(spec) {\n\t return 'mark' + exports.ASSIGN + spec.mark +\n\t exports.DELIM + shortenEncoding(spec.encoding);\n\t}\n\texports.shorten = shorten;\n\tfunction parse(shorthand, data, config) {\n\t var split = shorthand.split(exports.DELIM), mark = split.shift().split(exports.ASSIGN)[1].trim(), encoding = parseEncoding(split.join(exports.DELIM));\n\t var spec = {\n\t mark: mark_1.Mark[mark],\n\t encoding: encoding\n\t };\n\t if (data !== undefined) {\n\t spec.data = data;\n\t }\n\t if (config !== undefined) {\n\t spec.config = config;\n\t }\n\t return spec;\n\t}\n\texports.parse = parse;\n\tfunction shortenEncoding(encoding) {\n\t return vlEncoding.map(encoding, function (fieldDef, channel) {\n\t return channel + exports.ASSIGN + shortenFieldDef(fieldDef);\n\t }).join(exports.DELIM);\n\t}\n\texports.shortenEncoding = shortenEncoding;\n\tfunction parseEncoding(encodingShorthand) {\n\t return encodingShorthand.split(exports.DELIM).reduce(function (m, e) {\n\t var split = e.split(exports.ASSIGN), enctype = split[0].trim(), fieldDefShorthand = split[1];\n\t m[enctype] = parseFieldDef(fieldDefShorthand);\n\t return m;\n\t }, {});\n\t}\n\texports.parseEncoding = parseEncoding;\n\tfunction shortenFieldDef(fieldDef) {\n\t return (fieldDef.aggregate ? fieldDef.aggregate + exports.FUNC : '') +\n\t (fieldDef.timeUnit ? fieldDef.timeUnit + exports.FUNC : '') +\n\t (fieldDef.bin ? 'bin' + exports.FUNC : '') +\n\t (fieldDef.field || '') + exports.TYPE + type_1.SHORT_TYPE[fieldDef.type];\n\t}\n\texports.shortenFieldDef = shortenFieldDef;\n\tfunction shortenFieldDefs(fieldDefs, delim) {\n\t if (delim === void 0) { delim = exports.DELIM; }\n\t return fieldDefs.map(shortenFieldDef).join(delim);\n\t}\n\texports.shortenFieldDefs = shortenFieldDefs;\n\tfunction parseFieldDef(fieldDefShorthand) {\n\t var split = fieldDefShorthand.split(exports.TYPE);\n\t var fieldDef = {\n\t field: split[0].trim(),\n\t type: type_1.TYPE_FROM_SHORT_TYPE[split[1].trim()]\n\t };\n\t for (var i = 0; i < aggregate_1.AGGREGATE_OPS.length; i++) {\n\t var a = aggregate_1.AGGREGATE_OPS[i];\n\t if (fieldDef.field.indexOf(a + '_') === 0) {\n\t fieldDef.field = fieldDef.field.substr(a.toString().length + 1);\n\t if (a === aggregate_1.AggregateOp.COUNT && fieldDef.field.length === 0) {\n\t fieldDef.field = '*';\n\t }\n\t fieldDef.aggregate = a;\n\t break;\n\t }\n\t }\n\t for (var i = 0; i < timeunit_1.TIMEUNITS.length; i++) {\n\t var tu = timeunit_1.TIMEUNITS[i];\n\t if (fieldDef.field && fieldDef.field.indexOf(tu + '_') === 0) {\n\t fieldDef.field = fieldDef.field.substr(fieldDef.field.length + 1);\n\t fieldDef.timeUnit = tu;\n\t break;\n\t }\n\t }\n\t if (fieldDef.field && fieldDef.field.indexOf('bin_') === 0) {\n\t fieldDef.field = fieldDef.field.substr(4);\n\t fieldDef.bin = true;\n\t }\n\t return fieldDef;\n\t}\n\texports.parseFieldDef = parseFieldDef;\n\t//# sourceMappingURL=shorthand.js.map\n\n/***/ },\n/* 203 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar mark_1 = __webpack_require__(183);\n\tvar util_1 = __webpack_require__(165);\n\tfunction alwaysNoOcclusion(spec) {\n\t return vlEncoding.isAggregate(spec.encoding);\n\t}\n\texports.alwaysNoOcclusion = alwaysNoOcclusion;\n\tfunction fieldDefs(spec) {\n\t return vlEncoding.fieldDefs(spec.encoding);\n\t}\n\texports.fieldDefs = fieldDefs;\n\t;\n\tfunction getCleanSpec(spec) {\n\t return spec;\n\t}\n\texports.getCleanSpec = getCleanSpec;\n\tfunction isStack(spec) {\n\t return (vlEncoding.has(spec.encoding, channel_1.COLOR) || vlEncoding.has(spec.encoding, channel_1.SHAPE)) &&\n\t (spec.mark === mark_1.BAR || spec.mark === mark_1.AREA) &&\n\t (!spec.config || !spec.config.mark.stacked !== false) &&\n\t vlEncoding.isAggregate(spec.encoding);\n\t}\n\texports.isStack = isStack;\n\tfunction transpose(spec) {\n\t var oldenc = spec.encoding;\n\t var encoding = util_1.duplicate(spec.encoding);\n\t encoding.x = oldenc.y;\n\t encoding.y = oldenc.x;\n\t encoding.row = oldenc.column;\n\t encoding.column = oldenc.row;\n\t spec.encoding = encoding;\n\t return spec;\n\t}\n\texports.transpose = transpose;\n\t//# sourceMappingURL=spec.js.map\n\n/***/ },\n/* 204 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\tvar mark_1 = __webpack_require__(183);\n\texports.DEFAULT_REQUIRED_CHANNEL_MAP = {\n\t text: ['text'],\n\t line: ['x', 'y'],\n\t area: ['x', 'y']\n\t};\n\texports.DEFAULT_SUPPORTED_CHANNEL_TYPE = {\n\t bar: util_1.toMap(['row', 'column', 'x', 'y', 'size', 'color', 'detail']),\n\t line: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n\t area: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n\t tick: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n\t circle: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n\t square: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n\t point: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail', 'shape']),\n\t text: util_1.toMap(['row', 'column', 'size', 'color', 'text'])\n\t};\n\tfunction getEncodingMappingError(spec, requiredChannelMap, supportedChannelMap) {\n\t if (requiredChannelMap === void 0) { requiredChannelMap = exports.DEFAULT_REQUIRED_CHANNEL_MAP; }\n\t if (supportedChannelMap === void 0) { supportedChannelMap = exports.DEFAULT_SUPPORTED_CHANNEL_TYPE; }\n\t var mark = spec.mark;\n\t var encoding = spec.encoding;\n\t var requiredChannels = requiredChannelMap[mark];\n\t var supportedChannels = supportedChannelMap[mark];\n\t for (var i in requiredChannels) {\n\t if (!(requiredChannels[i] in encoding)) {\n\t return 'Missing encoding channel \\\"' + requiredChannels[i] +\n\t '\\\" for mark \\\"' + mark + '\\\"';\n\t }\n\t }\n\t for (var channel in encoding) {\n\t if (!supportedChannels[channel]) {\n\t return 'Encoding channel \\\"' + channel +\n\t '\\\" is not supported by mark type \\\"' + mark + '\\\"';\n\t }\n\t }\n\t if (mark === mark_1.BAR && !encoding.x && !encoding.y) {\n\t return 'Missing both x and y for bar';\n\t }\n\t return null;\n\t}\n\texports.getEncodingMappingError = getEncodingMappingError;\n\t//# sourceMappingURL=validate.js.map\n\n/***/ },\n/* 205 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(2),\n\t $ = __webpack_require__(3).util.mutator;\n\t\n\tmodule.exports = {\n\t init: function(el, param, spec) {\n\t return (rewrite(param, spec), handle(el, param));\n\t },\n\t bind: function(param, view) {\n\t param.dom.forEach(function(el) { el.__vega__ = view; });\n\t view.onSignal(param.dom[0].name, function(k, v) { param.set(v); });\n\t }\n\t};\n\t\n\t// spec re-write\n\t\n\tfunction rewrite(param, spec) {\n\t // add signal to top-level if not defined\n\t var sg = spec.signals || (spec.signals = []);\n\t for (var i=0; i' + '
';\n  var footer = '
' + config.source_footer + '';\n var win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = 'Vega JSON Source';\n}\n\n// make config externally visible\nembed.config = config;\n\nmodule.exports = embed;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-embed/src/embed.js\n ** module id = 1\n ** module chunks = 0\n **/","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ 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 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/d3/d3.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = {\n version: '__VERSION__',\n dataflow: require('vega-dataflow'),\n parse: require('./src/parse/'),\n scene: {\n Bounder: require('./src/scene/Bounder'),\n Builder: require('./src/scene/Builder'),\n Encoder: require('./src/scene/Encoder'),\n GroupBuilder: require('./src/scene/GroupBuilder'),\n visit: require('./src/scene/visit')\n },\n transforms: require('./src/transforms'),\n Transform: require('./src/transforms/Transform'),\n BatchTransform: require('./src/transforms/BatchTransform'),\n Parameter: require('./src/transforms/Parameter'),\n schema: require('./src/core/schema'),\n config: require('./src/core/config'),\n util: require('./src/util'),\n logging: require('vega-logging'),\n debug: require('vega-logging').debug\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/index.js\n ** module id = 3\n ** module chunks = 0\n **/","module.exports = {\n ChangeSet: require('./ChangeSet'),\n Collector: require('./Collector'),\n DataSource: require('./DataSource'),\n Dependencies: require('./Dependencies'),\n Graph: require('./Graph'),\n Node: require('./Node'),\n Signal: require('./Signal'),\n Tuple: require('./Tuple'),\n debug: require('vega-logging').debug\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/index.js\n ** module id = 4\n ** module chunks = 0\n **/","var DEPS = require('./Dependencies').ALL;\n\nfunction create(cs, reflow) {\n var out = {};\n copy(cs, out);\n\n out.add = [];\n out.mod = [];\n out.rem = [];\n\n out.reflow = reflow;\n\n return out;\n}\n\nfunction copy(a, b) {\n b.stamp = a ? a.stamp : 0;\n b.sort = a ? a.sort : null;\n b.facet = a ? a.facet : null;\n b.trans = a ? a.trans : null;\n b.dirty = a ? a.dirty : [];\n b.request = a ? a.request : null;\n for (var d, i=0, n=DEPS.length; i0;) {\n idMap(arguments[i], ids);\n }\n return data.filter(function(x) { return !ids[x._id]; });\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Tuple.js\n ** module id = 9\n ** module chunks = 0\n **/","var DEPS = require('./Dependencies').ALL,\n nodeID = 0;\n\nfunction Node(graph) {\n if (graph) this.init(graph);\n}\n\nvar Flags = Node.Flags = {\n Router: 0x01, // Responsible for propagating tuples, cannot be skipped.\n Collector: 0x02, // Holds a materialized dataset, pulse node to reflow.\n Produces: 0x04, // Produces new tuples. \n Mutates: 0x08, // Sets properties of incoming tuples.\n Reflows: 0x10, // Forwards a reflow pulse.\n Batch: 0x20 // Performs batch data processing, needs collector.\n};\n\nvar prototype = Node.prototype;\n\nprototype.init = function(graph) {\n this._id = ++nodeID;\n this._graph = graph;\n this._rank = graph.rank(); // Topological sort by rank\n this._qrank = null; // Rank when enqueued for propagation\n this._stamp = 0; // Last stamp seen\n\n this._listeners = [];\n this._listeners._ids = {}; // To prevent duplicate listeners\n\n // Initialize dependencies.\n this._deps = {};\n for (var i=0, n=DEPS.length; i l._rank) {\n l.rerank();\n }\n\n return this;\n};\n\nprototype.removeListener = function(l) {\n if (!this._listeners._ids[l._id]) return false;\n \n var idx = this._listeners.indexOf(l),\n b = idx >= 0;\n\n if (b) {\n this._listeners.splice(idx, 1);\n this._listeners._ids[l._id] = null;\n }\n return b;\n};\n\nprototype.disconnect = function() {\n this._listeners = [];\n this._listeners._ids = {};\n};\n\n// Evaluate this dataflow node for the current pulse.\n// Subclasses should override to perform custom processing.\nprototype.evaluate = function(pulse) {\n return pulse;\n};\n\n// Should this node be re-evaluated for the current pulse?\n// Searches pulse to see if any dependencies have updated.\nprototype.reevaluate = function(pulse) {\n var prop, dep, i, n, j, m;\n\n for (i=0, n=DEPS.length; i 1 ?\n function(x, v) {\n for (var i=0; i y) return sign[i];\n }\n return 0;\n };\n};\n\nu.cmp = function(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else if (a >= b) {\n return 0;\n } else if (a === null) {\n return -1;\n } else if (b === null) {\n return 1;\n }\n return NaN;\n};\n\nu.numcmp = function(a, b) { return a - b; };\n\nu.stablesort = function(array, sortBy, keyFn) {\n var indices = array.reduce(function(idx, v, i) {\n return (idx[keyFn(v)] = i, idx);\n }, {});\n\n array.sort(function(a, b) {\n var sa = sortBy(a),\n sb = sortBy(b);\n return sa < sb ? -1 : sa > sb ? 1\n : (indices[keyFn(a)] - indices[keyFn(b)]);\n });\n\n return array;\n};\n\n\n// string functions\n\nu.pad = function(s, length, pos, padchar) {\n padchar = padchar || \" \";\n var d = length - s.length;\n if (d <= 0) return s;\n switch (pos) {\n case 'left':\n return strrep(d, padchar) + s;\n case 'middle':\n case 'center':\n return strrep(Math.floor(d/2), padchar) +\n s + strrep(Math.ceil(d/2), padchar);\n default:\n return s + strrep(d, padchar);\n }\n};\n\nfunction strrep(n, str) {\n var s = \"\", i;\n for (i=0; i \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n * on objects.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\nfunction typedArraySupport () {\n function Bar () {}\n try {\n var arr = new Uint8Array(1)\n arr.foo = function () { return 42 }\n arr.constructor = Bar\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Bar && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n this.length = 0\n this.parent = undefined\n }\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined') {\n if (object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n if (object instanceof ArrayBuffer) {\n return fromArrayBuffer(that, object)\n }\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n array.byteLength\n that = Buffer._augment(new Uint8Array(array))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromTypedArray(that, new Uint8Array(array))\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n} else {\n // pre-set for values that may exist in the future\n Buffer.prototype.length = undefined\n Buffer.prototype.parent = undefined\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` is deprecated\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` is deprecated\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; i--) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/index.js\n ** module id = 14\n ** module chunks = 0\n **/","var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/base64-js/lib/b64.js\n ** module id = 15\n ** module chunks = 0\n **/","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js\n ** module id = 16\n ** module chunks = 0\n **/","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/isarray/index.js\n ** module id = 17\n ** module chunks = 0\n **/","var util = require('../util');\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n// Validate and cleanup URL to ensure that it is allowed to be accessed\n// Returns cleaned up URL, or false if access is not allowed\nfunction sanitizeUrl(opt) {\n var url = opt.url;\n if (!url && opt.file) { return fileProtocol + opt.file; }\n\n // In case this is a relative url (has no host), prepend opt.baseURL\n if (opt.baseURL && !protocol_re.test(url)) {\n if (!startsWith(url, '/') && opt.baseURL[opt.baseURL.length-1] !== '/') {\n url = '/' + url; // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n }\n url = opt.baseURL + url;\n }\n // relative protocol, starts with '//'\n if (!load.useXHR && startsWith(url, '//')) {\n url = (opt.defaultProtocol || 'http') + ':' + url;\n }\n // If opt.domainWhiteList is set, only allows url, whose hostname\n // * Is the same as the origin (window.location.hostname)\n // * Equals one of the values in the whitelist\n // * Is a proper subdomain of one of the values in the whitelist\n if (opt.domainWhiteList) {\n var domain, origin;\n if (load.useXHR) {\n var a = document.createElement('a');\n a.href = url;\n // From http://stackoverflow.com/questions/736513/how-do-i-parse-a-url-into-hostname-and-path-in-javascript\n // IE doesn't populate all link properties when setting .href with a relative URL,\n // however .href will return an absolute URL which then can be used on itself\n // to populate these additional fields.\n if (a.host === '') {\n a.href = a.href;\n }\n domain = a.hostname.toLowerCase();\n origin = window.location.hostname;\n } else {\n // relative protocol is broken: https://github.com/defunctzombie/node-url/issues/5\n var parts = require('url').parse(url);\n domain = parts.hostname;\n origin = null;\n }\n\n if (origin !== domain) {\n var whiteListed = opt.domainWhiteList.some(function(d) {\n var idx = domain.length - d.length;\n return d === domain ||\n (idx > 1 && domain[idx-1] === '.' && domain.lastIndexOf(d) === idx);\n });\n if (!whiteListed) {\n throw 'URL is not whitelisted: ' + url;\n }\n }\n }\n return url;\n}\n\nfunction load(opt, callback) {\n return load.loader(opt, callback);\n}\n\nfunction loader(opt, callback) {\n var error = callback || function(e) { throw e; }, url;\n\n try {\n url = load.sanitizeUrl(opt); // enable override\n } catch (err) {\n error(err);\n return;\n }\n\n if (!url) {\n error('Invalid URL: ' + opt.url);\n } else if (load.useXHR) {\n // on client, use xhr\n return load.xhr(url, opt, callback);\n } else if (startsWith(url, fileProtocol)) {\n // on server, if url starts with 'file://', strip it and load from file\n return load.file(url.slice(fileProtocol.length), opt, callback);\n } else if (url.indexOf('://') < 0) { // TODO better protocol check?\n // on server, if no protocol assume file\n return load.file(url, opt, callback);\n } else {\n // for regular URLs on server\n return load.http(url, opt, callback);\n }\n}\n\nfunction xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== 'text' ?\n request.response : // null on error\n request.responseText; // '' on error\n}\n\nfunction xhr(url, opt, callback) {\n var async = !!callback;\n var request = new XMLHttpRequest();\n // If IE does not support CORS, use XDomainRequest (copied from d3.xhr)\n if (typeof XDomainRequest !== 'undefined' &&\n !('withCredentials' in request) &&\n /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\n function respond() {\n var status = request.status;\n if (!status && xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n callback(null, request.responseText);\n } else {\n callback(request, null);\n }\n }\n\n if (async) {\n if ('onload' in request) {\n request.onload = request.onerror = respond;\n } else {\n request.onreadystatechange = function() {\n if (request.readyState > 3) respond();\n };\n }\n }\n\n request.open('GET', url, async);\n /* istanbul ignore else */\n if (request.setRequestHeader) {\n var headers = util.extend({}, load.headers, opt.headers);\n for (var name in headers) {\n request.setRequestHeader(name, headers[name]);\n }\n }\n request.send();\n\n if (!async && xhrHasResponse(request)) {\n return request.responseText;\n }\n}\n\nfunction file(filename, opt, callback) {\n var fs = require('fs');\n if (!callback) {\n return fs.readFileSync(filename, 'utf8');\n }\n fs.readFile(filename, callback);\n}\n\nfunction http(url, opt, callback) {\n var headers = util.extend({}, load.headers, opt.headers);\n\n if (!callback) {\n return require('sync-request')('GET', url, {headers: headers}).getBody();\n }\n\n var options = {url: url, encoding: null, gzip: true, headers: headers};\n require('request')(options, function(error, response, body) {\n if (!error && response.statusCode === 200) {\n callback(null, body);\n } else {\n error = error ||\n 'Load failed with response code ' + response.statusCode + '.';\n callback(error, null);\n }\n });\n}\n\nfunction startsWith(string, searchString) {\n return string == null ? false : string.lastIndexOf(searchString, 0) === 0;\n}\n\n// Allow these functions to be overriden by the user of the library\nload.loader = loader;\nload.sanitizeUrl = sanitizeUrl;\nload.xhr = xhr;\nload.file = file;\nload.http = http;\n\n// Default settings\nload.useXHR = (typeof XMLHttpRequest !== 'undefined');\nload.headers = {};\n\nmodule.exports = load;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/load.js\n ** module id = 18\n ** module chunks = 0\n **/","var util = require('../util'),\n type = require('./type'),\n formats = require('./formats'),\n timeF = require('../format').time;\n\nfunction read(data, format) {\n var type = (format && format.type) || 'json';\n data = formats[type](data, format);\n if (format && format.parse) parse(data, format.parse);\n return data;\n}\n\nfunction parse(data, types) {\n var cols, parsers, d, i, j, clen, len = data.length;\n\n types = (types==='auto') ? type.inferAll(data) : util.duplicate(types);\n cols = util.keys(types);\n parsers = cols.map(function(c) {\n var t = types[c];\n if (t && t.indexOf('date:') === 0) {\n var parts = t.split(':', 2),\n pattern = parts[1];\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n } else {\n throw Error('Format pattern must be quoted: ' + pattern);\n }\n pattern = timeF(pattern);\n return function(v) { return pattern.parse(v); };\n }\n if (!type.parsers[t]) {\n throw Error('Illegal format pattern: ' + c + ':' + t);\n }\n return type.parsers[t];\n });\n\n for (i=0, clen=cols.length; i= N) return EOF; // special case: end of file\n if (eol) return eol = false, EOL; // special case: end of line\n\n // special case: quotes\n var j = I, c;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, \"\\\"\");\n }\n\n // common case: find next delimiter or newline\n while (I < N) {\n var k = 1;\n c = text.charCodeAt(I++);\n if (c === 10) eol = true; // \\n\n else if (c === 13) { eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } // \\r|\\r\\n\n else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n\n // special case: last token before EOF\n return text.slice(j);\n }\n\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n\n return rows;\n }\n\n this.format = function(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n\n this.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return reFormat.test(text) ? \"\\\"\" + text.replace(/\\\"/g, \"\\\"\\\"\") + \"\\\"\" : text;\n }\n }\n\n dsv.prototype = Dsv.prototype;\n\n var csv = dsv(\",\");\n var tsv = dsv(\"\\t\");\n\n var version = \"0.1.14\";\n\n exports.version = version;\n exports.dsv = dsv;\n exports.csv = csv;\n exports.tsv = tsv;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-dsv/build/d3-dsv.js\n ** module id = 27\n ** module chunks = 0\n **/","var util = require('../../util');\n\nmodule.exports = function(data, format) {\n var d = util.isObject(data) && !util.isBuffer(data) ?\n data : JSON.parse(data);\n if (format && format.property) {\n d = util.accessor(format.property)(d);\n }\n return d;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/formats/json.js\n ** module id = 28\n ** module chunks = 0\n **/","var json = require('./json');\n\nvar reader = function(data, format) {\n var topojson = reader.topojson;\n if (topojson == null) { throw Error('TopoJSON library not loaded.'); }\n\n var t = json(data, format), obj;\n\n if (format && format.feature) {\n if ((obj = t.objects[format.feature])) {\n return topojson.feature(t, obj).features;\n } else {\n throw Error('Invalid TopoJSON object: ' + format.feature);\n }\n } else if (format && format.mesh) {\n if ((obj = t.objects[format.mesh])) {\n return [topojson.mesh(t, t.objects[format.mesh])];\n } else {\n throw Error('Invalid TopoJSON object: ' + format.mesh);\n }\n } else {\n throw Error('Missing TopoJSON feature or mesh parameter.');\n }\n};\n\nreader.topojson = require('topojson');\nmodule.exports = reader;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/formats/topojson.js\n ** module id = 29\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.topojson = global.topojson || {})));\n}(this, function (exports) { 'use strict';\n\n function noop() {}\n\n function transformAbsolute(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n point[0] = (x0 += point[0]) * kx + dx;\n point[1] = (y0 += point[1]) * ky + dy;\n };\n }\n\n function transformRelative(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n var x1 = Math.round((point[0] - dx) / kx),\n y1 = Math.round((point[1] - dy) / ky);\n point[0] = x1 - x0;\n point[1] = y1 - y0;\n x0 = x1;\n y0 = y1;\n };\n }\n\n function reverse(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n }\n\n function bisect(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function feature(topology, o) {\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function(o) { return feature$1(topology, o); })\n } : feature$1(topology, o);\n }\n\n function feature$1(topology, o) {\n var f = {\n type: \"Feature\",\n id: o.id,\n properties: o.properties || {},\n geometry: object(topology, o)\n };\n if (o.id == null) delete f.id;\n return f;\n }\n\n function object(topology, o) {\n var absolute = transformAbsolute(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n points.push(p = a[k].slice());\n absolute(p, k);\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n p = p.slice();\n absolute(p, 0);\n return p;\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0].slice());\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0].slice());\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var t = o.type;\n return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n : null;\n }\n\n var geometryType = {\n Point: function(o) { return point(o.coordinates); },\n MultiPoint: function(o) { return o.coordinates.map(point); },\n LineString: function(o) { return line(o.arcs); },\n MultiLineString: function(o) { return o.arcs.map(line); },\n Polygon: function(o) { return polygon(o.arcs); },\n MultiPolygon: function(o) { return o.arcs.map(polygon); }\n };\n\n return geometry(o);\n }\n\n function stitchArcs(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n }\n\n function mesh(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n }\n\n function meshArcs(topology, o, filter) {\n var arcs = [];\n\n function arc(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function line(arcs) {\n arcs.forEach(arc);\n }\n\n function polygon(arcs) {\n arcs.forEach(line);\n }\n\n function geometry(o) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n }\n\n if (arguments.length > 1) {\n var geomsByArc = [],\n geom;\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n };\n\n geometry(o);\n\n geomsByArc.forEach(arguments.length < 3\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n } else {\n for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n }\n\n return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n }\n\n function cartesianTriangleArea(triangle) {\n var a = triangle[0], b = triangle[1], c = triangle[2];\n return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n }\n\n function ring(ring) {\n var i = -1,\n n = ring.length,\n a,\n b = ring[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = ring[i];\n area += a[0] * b[1] - a[1] * b[0];\n }\n\n return area / 2;\n }\n\n function merge(topology) {\n return object(topology, mergeArcs.apply(this, arguments));\n }\n\n function mergeArcs(topology, objects) {\n var polygonsByArc = {},\n polygons = [],\n components = [];\n\n objects.forEach(function(o) {\n if (o.type === \"Polygon\") register(o.arcs);\n else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n });\n\n function register(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n });\n });\n polygons.push(polygon);\n }\n\n function area(ring$$) {\n return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n }\n\n polygons.forEach(function(polygon) {\n if (!polygon._) {\n var component = [],\n neighbors = [polygon];\n polygon._ = 1;\n components.push(component);\n while (polygon = neighbors.pop()) {\n component.push(polygon);\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n if (!polygon._) {\n polygon._ = 1;\n neighbors.push(polygon);\n }\n });\n });\n });\n }\n }\n });\n\n polygons.forEach(function(polygon) {\n delete polygon._;\n });\n\n return {\n type: \"MultiPolygon\",\n arcs: components.map(function(polygons) {\n var arcs = [], n;\n\n // Extract the exterior (unique) arcs.\n polygons.forEach(function(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n arcs.push(arc);\n }\n });\n });\n });\n\n // Stitch the arcs into one or more rings.\n arcs = stitchArcs(topology, arcs);\n\n // If more than one ring is returned,\n // at most one of these rings can be the exterior;\n // choose the one with the greatest absolute area.\n if ((n = arcs.length) > 1) {\n for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n if ((ki = area(arcs[i])) > k) {\n t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n }\n }\n }\n\n return arcs;\n })\n };\n }\n\n function neighbors(objects) {\n var indexesByArc = {}, // arc index -> array of object indexes\n neighbors = objects.map(function() { return []; });\n\n function line(arcs, i) {\n arcs.forEach(function(a) {\n if (a < 0) a = ~a;\n var o = indexesByArc[a];\n if (o) o.push(i);\n else indexesByArc[a] = [i];\n });\n }\n\n function polygon(arcs, i) {\n arcs.forEach(function(arc) { line(arc, i); });\n }\n\n function geometry(o, i) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n }\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n };\n\n objects.forEach(geometry);\n\n for (var i in indexesByArc) {\n for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n for (var k = j + 1; k < m; ++k) {\n var ij = indexes[j], ik = indexes[k], n;\n if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n }\n }\n }\n\n return neighbors;\n }\n\n function compareArea(a, b) {\n return a[1][2] - b[1][2];\n }\n\n function minAreaHeap() {\n var heap = {},\n array = [],\n size = 0;\n\n heap.push = function(object) {\n up(array[object._ = size] = object, size++);\n return size;\n };\n\n heap.pop = function() {\n if (size <= 0) return;\n var removed = array[0], object;\n if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n return removed;\n };\n\n heap.remove = function(removed) {\n var i = removed._, object;\n if (array[i] !== removed) return; // invalid request\n if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n return i;\n };\n\n function up(object, i) {\n while (i > 0) {\n var j = ((i + 1) >> 1) - 1,\n parent = array[j];\n if (compareArea(object, parent) >= 0) break;\n array[parent._ = i] = parent;\n array[object._ = i = j] = object;\n }\n }\n\n function down(object, i) {\n while (true) {\n var r = (i + 1) << 1,\n l = r - 1,\n j = i,\n child = array[j];\n if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n if (j === i) break;\n array[child._ = i] = child;\n array[object._ = i = j] = object;\n }\n }\n\n return heap;\n }\n\n function presimplify(topology, triangleArea) {\n var absolute = transformAbsolute(topology.transform),\n relative = transformRelative(topology.transform),\n heap = minAreaHeap();\n\n if (!triangleArea) triangleArea = cartesianTriangleArea;\n\n topology.arcs.forEach(function(arc) {\n var triangles = [],\n maxArea = 0,\n triangle,\n i,\n n,\n p;\n\n // To store each point’s effective area, we create a new array rather than\n // extending the passed-in point to workaround a Chrome/V8 bug (getting\n // stuck in smi mode). For midpoints, the initial effective area of\n // Infinity will be computed in the next step.\n for (i = 0, n = arc.length; i < n; ++i) {\n p = arc[i];\n absolute(arc[i] = [p[0], p[1], Infinity], i);\n }\n\n for (i = 1, n = arc.length - 1; i < n; ++i) {\n triangle = arc.slice(i - 1, i + 2);\n triangle[1][2] = triangleArea(triangle);\n triangles.push(triangle);\n heap.push(triangle);\n }\n\n for (i = 0, n = triangles.length; i < n; ++i) {\n triangle = triangles[i];\n triangle.previous = triangles[i - 1];\n triangle.next = triangles[i + 1];\n }\n\n while (triangle = heap.pop()) {\n var previous = triangle.previous,\n next = triangle.next;\n\n // If the area of the current point is less than that of the previous point\n // to be eliminated, use the latter's area instead. This ensures that the\n // current point cannot be eliminated without eliminating previously-\n // eliminated points.\n if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n else maxArea = triangle[1][2];\n\n if (previous) {\n previous.next = next;\n previous[2] = triangle[2];\n update(previous);\n }\n\n if (next) {\n next.previous = previous;\n next[0] = triangle[0];\n update(next);\n }\n }\n\n arc.forEach(relative);\n });\n\n function update(triangle) {\n heap.remove(triangle);\n triangle[1][2] = triangleArea(triangle);\n heap.push(triangle);\n }\n\n return topology;\n }\n\n var version = \"1.6.26\";\n\n exports.version = version;\n exports.mesh = mesh;\n exports.meshArcs = meshArcs;\n exports.merge = merge;\n exports.mergeArcs = mergeArcs;\n exports.feature = feature;\n exports.neighbors = neighbors;\n exports.presimplify = presimplify;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/topojson/build/topojson.js\n ** module id = 30\n ** module chunks = 0\n **/","var json = require('./json');\n\nmodule.exports = function(tree, format) {\n return toTable(json(tree, format), format);\n};\n\nfunction toTable(root, fields) {\n var childrenField = fields && fields.children || 'children',\n parentField = fields && fields.parent || 'parent',\n table = [];\n\n function visit(node, parent) {\n node[parentField] = parent;\n table.push(node);\n var children = node[childrenField];\n if (children) {\n for (var i=0; i 4 && 'locale' + (\n l[0].toUpperCase() + l[1].toLowerCase() +\n l[3].toUpperCase() + l[4].toLowerCase()\n );\n}\n\nfunction numberLocale(l) {\n var f = util.isString(l) ? d3_numberF[localeRef(l)] : d3_numberF.locale(l);\n if (f == null) throw Error('Unrecognized locale: ' + l);\n numberF = f;\n}\n\nfunction timeLocale(l) {\n var f = util.isString(l) ? d3_timeF[localeRef(l)] : d3_timeF.locale(l);\n if (f == null) throw Error('Unrecognized locale: ' + l);\n timeF = f;\n monthFull = monthAbbr = dayFull = dayAbbr = null;\n}\n\n// -- Number Formatting ----\n\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction linearRange(domain, count) {\n if (!domain.length) domain = [0];\n if (count == null) count = 10;\n\n var start = domain[0],\n stop = domain[domain.length - 1];\n\n if (stop < start) { error = stop; stop = start; start = error; }\n\n var span = (stop - start) || (count = 1, start || stop || 1),\n step = Math.pow(10, Math.floor(Math.log(span / count) / Math.LN10)),\n error = span / count / step;\n\n // Filter ticks to get closer to the desired count.\n if (error >= e10) step *= 10;\n else if (error >= e5) step *= 5;\n else if (error >= e2) step *= 2;\n\n // Round start and stop values to step interval.\n return [\n Math.ceil(start / step) * step,\n Math.floor(stop / step) * step + step / 2, // inclusive\n step\n ];\n}\n\nfunction trimZero(f, decimal) {\n return function(x) {\n var s = f(x),\n n = s.indexOf(decimal);\n if (n < 0) return s;\n\n var idx = rightmostDigit(s, n),\n end = idx < s.length ? s.slice(idx) : '';\n\n while (--idx > n) {\n if (s[idx] !== '0') { ++idx; break; }\n }\n return s.slice(0, idx) + end;\n };\n}\n\nfunction rightmostDigit(s, n) {\n var i = s.lastIndexOf('e'), c;\n if (i > 0) return i;\n for (i=s.length; --i > n;) {\n c = s.charCodeAt(i);\n if (c >= 48 && c <= 57) return i+1; // is digit\n }\n}\n\nfunction autoNumberFormat(f) {\n var decimal = numberF.format('.1f')(1)[1]; // get decimal char\n if (f == null) f = ',';\n f = d3_numberF.formatSpecifier(f);\n if (f.precision == null) f.precision = 12;\n switch (f.type) {\n case '%': f.precision -= 2; break;\n case 'e': f.precision -= 1; break;\n }\n return trimZero(numberF.format(f), decimal);\n}\n\nfunction linearNumberFormat(domain, count, f) {\n var range = linearRange(domain, count);\n\n if (f == null) f = ',f';\n\n switch (f = d3_numberF.formatSpecifier(f), f.type) {\n case 's': {\n var value = Math.max(Math.abs(range[0]), Math.abs(range[1]));\n if (f.precision == null) f.precision = d3_numberF.precisionPrefix(range[2], value);\n return numberF.formatPrefix(f, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r': {\n if (f.precision == null) f.precision = d3_numberF.precisionRound(range[2], Math.max(Math.abs(range[0]), Math.abs(range[1]))) - (f.type === 'e');\n break;\n }\n case 'f':\n case '%': {\n if (f.precision == null) f.precision = d3_numberF.precisionFixed(range[2]) - 2 * (f.type === '%');\n break;\n }\n }\n return numberF.format(f);\n}\n\n// -- Datetime Formatting ----\n\nfunction timeAutoFormat() {\n var f = timeF.format,\n formatMillisecond = f('.%L'),\n formatSecond = f(':%S'),\n formatMinute = f('%I:%M'),\n formatHour = f('%I %p'),\n formatDay = f('%a %d'),\n formatWeek = f('%b %d'),\n formatMonth = f('%B'),\n formatYear = f('%Y');\n\n return function(date) {\n var d = +date;\n return (d3_time.second(date) < d ? formatMillisecond\n : d3_time.minute(date) < d ? formatSecond\n : d3_time.hour(date) < d ? formatMinute\n : d3_time.day(date) < d ? formatHour\n : d3_time.month(date) < d ?\n (d3_time.week(date) < d ? formatDay : formatWeek)\n : d3_time.year(date) < d ? formatMonth\n : formatYear)(date);\n };\n}\n\nfunction utcAutoFormat() {\n var f = timeF.utcFormat,\n formatMillisecond = f('.%L'),\n formatSecond = f(':%S'),\n formatMinute = f('%I:%M'),\n formatHour = f('%I %p'),\n formatDay = f('%a %d'),\n formatWeek = f('%b %d'),\n formatMonth = f('%B'),\n formatYear = f('%Y');\n\n return function(date) {\n var d = +date;\n return (d3_time.utcSecond(date) < d ? formatMillisecond\n : d3_time.utcMinute(date) < d ? formatSecond\n : d3_time.utcHour(date) < d ? formatMinute\n : d3_time.utcDay(date) < d ? formatHour\n : d3_time.utcMonth(date) < d ?\n (d3_time.utcWeek(date) < d ? formatDay : formatWeek)\n : d3_time.utcYear(date) < d ? formatMonth\n : formatYear)(date);\n };\n}\n\nfunction monthFormat(month, abbreviate) {\n var f = abbreviate ?\n (monthAbbr || (monthAbbr = timeF.format('%b'))) :\n (monthFull || (monthFull = timeF.format('%B')));\n return (tmpDate.setMonth(month), f(tmpDate));\n}\n\nfunction dayFormat(day, abbreviate) {\n var f = abbreviate ?\n (dayAbbr || (dayAbbr = timeF.format('%a'))) :\n (dayFull || (dayFull = timeF.format('%A')));\n return (tmpDate.setMonth(0), tmpDate.setDate(2 + day), f(tmpDate));\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/format.js\n ** module id = 32\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('d3-time', ['exports'], factory) :\n factory((global.d3_time = {}));\n}(this, function (exports) { 'use strict';\n\n var t0 = new Date;\n var t1 = new Date;\n function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.round = function(date) {\n var d0 = new Date(+date),\n d1 = new Date(date - 1);\n floori(d0), floori(d1), offseti(d1, 1);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), date;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = new Date(start - 1);\n stop = new Date(+stop);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n offseti(start, 1), floori(start);\n if (start < stop) range.push(new Date(+start));\n while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n while (--step >= 0) while (offseti(date, 1), !test(date));\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n };\n\n var millisecond = newInterval(function() {\n // noop\n }, function(date, step) {\n date.setTime(+date + step);\n }, function(start, end) {\n return end - start;\n });\n\n // An optimized implementation for this simple case.\n millisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n };\n\n var second = newInterval(function(date) {\n date.setMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getSeconds();\n });\n\n var minute = newInterval(function(date) {\n date.setSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getMinutes();\n });\n\n var hour = newInterval(function(date) {\n date.setMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getHours();\n });\n\n var day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n }, function(date) {\n return date.getDate() - 1;\n });\n\n function weekday(i) {\n return newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n });\n }\n\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n\n var month = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(1);\n }, function(date, step) {\n date.setMonth(date.getMonth() + step);\n }, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function(date) {\n return date.getMonth();\n });\n\n var year = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setMonth(0, 1);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function(date) {\n return date.getFullYear();\n });\n\n var utcSecond = newInterval(function(date) {\n date.setUTCMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getUTCSeconds();\n });\n\n var utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getUTCMinutes();\n });\n\n var utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getUTCHours();\n });\n\n var utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function(start, end) {\n return (end - start) / 864e5;\n }, function(date) {\n return date.getUTCDate() - 1;\n });\n\n function utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / 6048e5;\n });\n }\n\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n\n var utcMonth = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(1);\n }, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function(date) {\n return date.getUTCMonth();\n });\n\n var utcYear = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCMonth(0, 1);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function(date) {\n return date.getUTCFullYear();\n });\n\n var milliseconds = millisecond.range;\n var seconds = second.range;\n var minutes = minute.range;\n var hours = hour.range;\n var days = day.range;\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n var weeks = sunday.range;\n var months = month.range;\n var years = year.range;\n\n var utcMillisecond = millisecond;\n var utcMilliseconds = milliseconds;\n var utcSeconds = utcSecond.range;\n var utcMinutes = utcMinute.range;\n var utcHours = utcHour.range;\n var utcDays = utcDay.range;\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n var utcWeeks = utcSunday.range;\n var utcMonths = utcMonth.range;\n var utcYears = utcYear.range;\n\n var version = \"0.1.1\";\n\n exports.version = version;\n exports.milliseconds = milliseconds;\n exports.seconds = seconds;\n exports.minutes = minutes;\n exports.hours = hours;\n exports.days = days;\n exports.sundays = sundays;\n exports.mondays = mondays;\n exports.tuesdays = tuesdays;\n exports.wednesdays = wednesdays;\n exports.thursdays = thursdays;\n exports.fridays = fridays;\n exports.saturdays = saturdays;\n exports.weeks = weeks;\n exports.months = months;\n exports.years = years;\n exports.utcMillisecond = utcMillisecond;\n exports.utcMilliseconds = utcMilliseconds;\n exports.utcSeconds = utcSeconds;\n exports.utcMinutes = utcMinutes;\n exports.utcHours = utcHours;\n exports.utcDays = utcDays;\n exports.utcSundays = utcSundays;\n exports.utcMondays = utcMondays;\n exports.utcTuesdays = utcTuesdays;\n exports.utcWednesdays = utcWednesdays;\n exports.utcThursdays = utcThursdays;\n exports.utcFridays = utcFridays;\n exports.utcSaturdays = utcSaturdays;\n exports.utcWeeks = utcWeeks;\n exports.utcMonths = utcMonths;\n exports.utcYears = utcYears;\n exports.millisecond = millisecond;\n exports.second = second;\n exports.minute = minute;\n exports.hour = hour;\n exports.day = day;\n exports.sunday = sunday;\n exports.monday = monday;\n exports.tuesday = tuesday;\n exports.wednesday = wednesday;\n exports.thursday = thursday;\n exports.friday = friday;\n exports.saturday = saturday;\n exports.week = sunday;\n exports.month = month;\n exports.year = year;\n exports.utcSecond = utcSecond;\n exports.utcMinute = utcMinute;\n exports.utcHour = utcHour;\n exports.utcDay = utcDay;\n exports.utcSunday = utcSunday;\n exports.utcMonday = utcMonday;\n exports.utcTuesday = utcTuesday;\n exports.utcWednesday = utcWednesday;\n exports.utcThursday = utcThursday;\n exports.utcFriday = utcFriday;\n exports.utcSaturday = utcSaturday;\n exports.utcWeek = utcSunday;\n exports.utcMonth = utcMonth;\n exports.utcYear = utcYear;\n exports.interval = newInterval;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-time/build/d3-time.js\n ** module id = 33\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :\n typeof define === 'function' && define.amd ? define('d3-time-format', ['exports', 'd3-time'], factory) :\n factory((global.d3_time_format = {}),global.d3_time);\n}(this, function (exports,d3Time) { 'use strict';\n\n function localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n }\n\n function utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n }\n\n function newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n }\n\n function locale$1(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.parse = newParse(specifier, localDate);\n f.toString = function() { return specifier; };\n return f;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.parse = newParse(specifier, utcDate);\n f.toString = function() { return specifier; };\n return f;\n }\n };\n };\n\n var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n var numberRe = /^\\s*\\d+/;\n var percentRe = /^%/;\n var requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n function pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n\n function requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n }\n\n function formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n }\n\n function formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n }\n\n function parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n\n function parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n }\n\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n }\n\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n\n function formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n }\n\n function formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n }\n\n function formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n }\n\n function formatDayOfYear(d, p) {\n return pad(1 + d3Time.day.count(d3Time.year(d), d), p, 3);\n }\n\n function formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n }\n\n function formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n }\n\n function formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n }\n\n function formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n }\n\n function formatWeekNumberSunday(d, p) {\n return pad(d3Time.sunday.count(d3Time.year(d), d), p, 2);\n }\n\n function formatWeekdayNumber(d) {\n return d.getDay();\n }\n\n function formatWeekNumberMonday(d, p) {\n return pad(d3Time.monday.count(d3Time.year(d), d), p, 2);\n }\n\n function formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n }\n\n function formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n }\n\n function formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n }\n\n function formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n }\n\n function formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n }\n\n function formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n }\n\n function formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n }\n\n function formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n }\n\n function formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n }\n\n function formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n }\n\n function formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n }\n\n function formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n }\n\n function formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n }\n\n function formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n }\n\n function formatUTCZone() {\n return \"+0000\";\n }\n\n function formatLiteralPercent() {\n return \"%\";\n }\n\n var locale = locale$1({\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n var caES = locale$1({\n dateTime: \"%A, %e de %B de %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"diumenge\", \"dilluns\", \"dimarts\", \"dimecres\", \"dijous\", \"divendres\", \"dissabte\"],\n shortDays: [\"dg.\", \"dl.\", \"dt.\", \"dc.\", \"dj.\", \"dv.\", \"ds.\"],\n months: [\"gener\", \"febrer\", \"març\", \"abril\", \"maig\", \"juny\", \"juliol\", \"agost\", \"setembre\", \"octubre\", \"novembre\", \"desembre\"],\n shortMonths: [\"gen.\", \"febr.\", \"març\", \"abr.\", \"maig\", \"juny\", \"jul.\", \"ag.\", \"set.\", \"oct.\", \"nov.\", \"des.\"]\n });\n\n var deCH = locale$1({\n dateTime: \"%A, der %e. %B %Y, %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n });\n\n var deDE = locale$1({\n dateTime: \"%A, der %e. %B %Y, %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n });\n\n var enCA = locale$1({\n dateTime: \"%a %b %e %X %Y\",\n date: \"%Y-%m-%d\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n var enGB = locale$1({\n dateTime: \"%a %e %b %X %Y\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n var esES = locale$1({\n dateTime: \"%A, %e de %B de %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"],\n shortDays: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\n months: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"],\n shortMonths: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\", \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"]\n });\n\n var fiFI = locale$1({\n dateTime: \"%A, %-d. %Bta %Y klo %X\",\n date: \"%-d.%-m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"a.m.\", \"p.m.\"],\n days: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"],\n shortDays: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n months: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n shortMonths: [\"Tammi\", \"Helmi\", \"Maalis\", \"Huhti\", \"Touko\", \"Kesä\", \"Heinä\", \"Elo\", \"Syys\", \"Loka\", \"Marras\", \"Joulu\"]\n });\n\n var frCA = locale$1({\n dateTime: \"%a %e %b %Y %X\",\n date: \"%Y-%m-%d\",\n time: \"%H:%M:%S\",\n periods: [\"\", \"\"],\n days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n shortDays: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n shortMonths: [\"jan\", \"fév\", \"mar\", \"avr\", \"mai\", \"jui\", \"jul\", \"aoû\", \"sep\", \"oct\", \"nov\", \"déc\"]\n });\n\n var frFR = locale$1({\n dateTime: \"%A, le %e %B %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n shortDays: [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"],\n months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n shortMonths: [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"]\n });\n\n var heIL = locale$1({\n dateTime: \"%A, %e ב%B %Y %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\n shortDays: [\"א׳\", \"ב׳\", \"ג׳\", \"ד׳\", \"ה׳\", \"ו׳\", \"ש׳\"],\n months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n shortMonths: [\"ינו׳\", \"פבר׳\", \"מרץ\", \"אפר׳\", \"מאי\", \"יוני\", \"יולי\", \"אוג׳\", \"ספט׳\", \"אוק׳\", \"נוב׳\", \"דצמ׳\"]\n });\n\n var huHU = locale$1({\n dateTime: \"%Y. %B %-e., %A %X\",\n date: \"%Y. %m. %d.\",\n time: \"%H:%M:%S\",\n periods: [\"de.\", \"du.\"], // unused\n days: [\"vasárnap\", \"hétfő\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"],\n shortDays: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\"],\n months: [\"január\", \"február\", \"március\", \"április\", \"május\", \"június\", \"július\", \"augusztus\", \"szeptember\", \"október\", \"november\", \"december\"],\n shortMonths: [\"jan.\", \"feb.\", \"már.\", \"ápr.\", \"máj.\", \"jún.\", \"júl.\", \"aug.\", \"szept.\", \"okt.\", \"nov.\", \"dec.\"]\n });\n\n var itIT = locale$1({\n dateTime: \"%A %e %B %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n shortDays: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n months: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n shortMonths: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"]\n });\n\n var jaJP = locale$1({\n dateTime: \"%Y %b %e %a %X\",\n date: \"%Y/%m/%d\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\n shortDays: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n months: [\"睦月\", \"如月\", \"弥生\", \"卯月\", \"皐月\", \"水無月\", \"文月\", \"葉月\", \"長月\", \"神無月\", \"霜月\", \"師走\"],\n shortMonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"]\n });\n\n var koKR = locale$1({\n dateTime: \"%Y/%m/%d %a %X\",\n date: \"%Y/%m/%d\",\n time: \"%H:%M:%S\",\n periods: [\"오전\", \"오후\"],\n days: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n shortDays: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n months: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n shortMonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"]\n });\n\n var mkMK = locale$1({\n dateTime: \"%A, %e %B %Y г. %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"недела\", \"понеделник\", \"вторник\", \"среда\", \"четврток\", \"петок\", \"сабота\"],\n shortDays: [\"нед\", \"пон\", \"вто\", \"сре\", \"чет\", \"пет\", \"саб\"],\n months: [\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"август\", \"септември\", \"октомври\", \"ноември\", \"декември\"],\n shortMonths: [\"јан\", \"фев\", \"мар\", \"апр\", \"мај\", \"јун\", \"јул\", \"авг\", \"сеп\", \"окт\", \"ное\", \"дек\"]\n });\n\n var nlNL = locale$1({\n dateTime: \"%a %e %B %Y %T\",\n date: \"%d-%m-%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"],\n shortDays: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n shortMonths: [\"jan\", \"feb\", \"mrt\", \"apr\", \"mei\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n });\n\n var plPL = locale$1({\n dateTime: \"%A, %e %B %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n shortDays: [\"Niedz.\", \"Pon.\", \"Wt.\", \"Śr.\", \"Czw.\", \"Pt.\", \"Sob.\"],\n months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n shortMonths: [\"Stycz.\", \"Luty\", \"Marz.\", \"Kwie.\", \"Maj\", \"Czerw.\", \"Lipc.\", \"Sierp.\", \"Wrz.\", \"Paźdz.\", \"Listop.\", \"Grudz.\"]/* In Polish language abbraviated months are not commonly used so there is a dispute about the proper abbraviations. */\n });\n\n var ptBR = locale$1({\n dateTime: \"%A, %e de %B de %Y. %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n shortDays: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n shortMonths: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"]\n });\n\n var ruRU = locale$1({\n dateTime: \"%A, %e %B %Y г. %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"воскресенье\", \"понедельник\", \"вторник\", \"среда\", \"четверг\", \"пятница\", \"суббота\"],\n shortDays: [\"вс\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"],\n months: [\"января\", \"февраля\", \"марта\", \"апреля\", \"мая\", \"июня\", \"июля\", \"августа\", \"сентября\", \"октября\", \"ноября\", \"декабря\"],\n shortMonths: [\"янв\", \"фев\", \"мар\", \"апр\", \"май\", \"июн\", \"июл\", \"авг\", \"сен\", \"окт\", \"ноя\", \"дек\"]\n });\n\n var svSE = locale$1({\n dateTime: \"%A den %d %B %Y %X\",\n date: \"%Y-%m-%d\",\n time: \"%H:%M:%S\",\n periods: [\"fm\", \"em\"],\n days: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\n shortDays: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"]\n });\n\n var zhCN = locale$1({\n dateTime: \"%a %b %e %X %Y\",\n date: \"%Y/%-m/%-d\",\n time: \"%H:%M:%S\",\n periods: [\"上午\", \"下午\"],\n days: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n shortDays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n shortMonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"]\n });\n\n var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\n function formatIsoNative(date) {\n return date.toISOString();\n }\n\n formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n\n formatIsoNative.toString = function() {\n return isoSpecifier;\n };\n\n var formatIso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\")\n ? formatIsoNative\n : locale.utcFormat(isoSpecifier);\n\n var format = locale.format;\n var utcFormat = locale.utcFormat;\n\n var version = \"0.2.1\";\n\n exports.version = version;\n exports.format = format;\n exports.utcFormat = utcFormat;\n exports.locale = locale$1;\n exports.localeCaEs = caES;\n exports.localeDeCh = deCH;\n exports.localeDeDe = deDE;\n exports.localeEnCa = enCA;\n exports.localeEnGb = enGB;\n exports.localeEnUs = locale;\n exports.localeEsEs = esES;\n exports.localeFiFi = fiFI;\n exports.localeFrCa = frCA;\n exports.localeFrFr = frFR;\n exports.localeHeIl = heIL;\n exports.localeHuHu = huHU;\n exports.localeItIt = itIT;\n exports.localeJaJp = jaJP;\n exports.localeKoKr = koKR;\n exports.localeMkMk = mkMK;\n exports.localeNlNl = nlNL;\n exports.localePlPl = plPL;\n exports.localePtBr = ptBR;\n exports.localeRuRu = ruRU;\n exports.localeSvSe = svSE;\n exports.localeZhCn = zhCN;\n exports.isoFormat = formatIso;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-time-format/build/d3-time-format.js\n ** module id = 34\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('d3-format', ['exports'], factory) :\n factory((global.d3_format = {}));\n}(this, function (exports) { 'use strict';\n\n // Computes the decimal coefficient and exponent of the specified number x with\n // significant digits p, where x is positive and p is in [1, 21] or undefined.\n // For example, formatDecimal(1.23) returns [\"123\", 0].\n function formatDecimal(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n };\n\n function exponent(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n };\n\n function formatGroup(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n };\n\n var prefixExponent;\n\n function formatPrefixAuto(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n };\n\n function formatRounded(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n };\n\n function formatDefault(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n };\n\n var formatTypes = {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n };\n\n // [[fill]align][sign][symbol][0][width][,][.precision][type]\n var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\n function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n };\n\n function FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n }\n\n FormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n };\n\n var prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n function identity(x) {\n return x;\n }\n\n function locale(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal;\n\n function format(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? \"%\" : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n return function(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Convert negative to positive, and compute the prefix.\n // Note that -0 is not less than 0, but 1 / -0 is!\n var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);\n\n // Perform the initial formatting.\n value = formatType(value, precision);\n\n // If the original value was negative, it may be rounded to zero during\n // formatting; treat this as (positive) zero.\n if (valueNegative) {\n var i = -1, n = value.length, c;\n valueNegative = false;\n while (++i < n) {\n if (c = value.charCodeAt(i), (48 < c && c < 58)\n || (type === \"x\" && 96 < c && c < 103)\n || (type === \"X\" && 64 < c && c < 71)) {\n valueNegative = true;\n break;\n }\n }\n }\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n var i = -1, n = value.length, c;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": return valuePrefix + value + valueSuffix + padding;\n case \"=\": return valuePrefix + padding + value + valueSuffix;\n case \"^\": return padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n }\n return padding + valuePrefix + value + valueSuffix;\n };\n }\n\n function formatPrefix(specifier, value) {\n var f = format((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: format,\n formatPrefix: formatPrefix\n };\n };\n\n var defaultLocale = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n });\n\n var caES = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var csCZ = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0Kč\"],\n });\n\n var deCH = locale({\n decimal: \",\",\n thousands: \"'\",\n grouping: [3],\n currency: [\"\", \"\\xa0CHF\"]\n });\n\n var deDE = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var enCA = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n });\n\n var enGB = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"£\", \"\"]\n });\n\n var esES = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var fiFI = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var frCA = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"$\"]\n });\n\n var frFR = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var heIL = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"₪\", \"\"]\n });\n\n var huHU = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0Ft\"]\n });\n\n var itIT = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"]\n });\n\n var jaJP = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"\", \"円\"]\n });\n\n var koKR = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"₩\", \"\"]\n });\n\n var mkMK = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0ден.\"]\n });\n\n var nlNL = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\\xa0\", \"\"]\n });\n\n var plPL = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"zł\"]\n });\n\n var ptBR = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"R$\", \"\"]\n });\n\n var ruRU = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0руб.\"]\n });\n\n var svSE = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"SEK\"]\n });\n\n var zhCN = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"¥\", \"\"]\n });\n\n function precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n };\n\n function precisionPrefix(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n };\n\n function precisionRound(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n };\n\n var format = defaultLocale.format;\n var formatPrefix = defaultLocale.formatPrefix;\n\n var version = \"0.4.2\";\n\n exports.version = version;\n exports.format = format;\n exports.formatPrefix = formatPrefix;\n exports.locale = locale;\n exports.localeCaEs = caES;\n exports.localeCsCz = csCZ;\n exports.localeDeCh = deCH;\n exports.localeDeDe = deDE;\n exports.localeEnCa = enCA;\n exports.localeEnGb = enGB;\n exports.localeEnUs = defaultLocale;\n exports.localeEsEs = esES;\n exports.localeFiFi = fiFI;\n exports.localeFrCa = frCA;\n exports.localeFrFr = frFR;\n exports.localeHeIl = heIL;\n exports.localeHuHu = huHU;\n exports.localeItIt = itIT;\n exports.localeJaJp = jaJP;\n exports.localeKoKr = koKR;\n exports.localeMkMk = mkMK;\n exports.localeNlNl = nlNL;\n exports.localePlPl = plPL;\n exports.localePtBr = ptBR;\n exports.localeRuRu = ruRU;\n exports.localeSvSe = svSE;\n exports.localeZhCn = zhCN;\n exports.formatSpecifier = formatSpecifier;\n exports.precisionFixed = precisionFixed;\n exports.precisionPrefix = precisionPrefix;\n exports.precisionRound = precisionRound;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-format/build/d3-format.js\n ** module id = 35\n ** module chunks = 0\n **/","var util = require('../util'),\n Measures = require('./measures'),\n Collector = require('./collector');\n\nfunction Aggregator() {\n this._cells = {};\n this._aggr = [];\n this._stream = false;\n}\n\nvar Flags = Aggregator.Flags = {\n ADD_CELL: 1,\n MOD_CELL: 2\n};\n\nvar proto = Aggregator.prototype;\n\n// Parameters\n\nproto.stream = function(v) {\n if (v == null) return this._stream;\n this._stream = !!v;\n this._aggr = [];\n return this;\n};\n\n// key accessor to use for streaming removes\nproto.key = function(key) {\n if (key == null) return this._key;\n this._key = util.$(key);\n return this;\n};\n\n// Input: array of objects of the form\n// {name: string, get: function}\nproto.groupby = function(dims) {\n this._dims = util.array(dims).map(function(d, i) {\n d = util.isString(d) ? {name: d, get: util.$(d)}\n : util.isFunction(d) ? {name: util.name(d) || d.name || ('_' + i), get: d}\n : (d.name && util.isFunction(d.get)) ? d : null;\n if (d == null) throw 'Invalid groupby argument: ' + d;\n return d;\n });\n return this.clear();\n};\n\n// Input: array of objects of the form\n// {name: string, ops: [string, ...]}\nproto.summarize = function(fields) {\n fields = summarize_args(fields);\n this._count = true;\n var aggr = (this._aggr = []),\n m, f, i, j, op, as, get;\n\n for (i=0; i 0) {\n // consolidate collector values\n if (cell.collect) {\n cell.data.values();\n }\n // update tuple properties\n for (i=0; i 1 ? this.dev / (this.valid-1) : 0',\n req: ['mean'], idx: 1\n }),\n 'variancep': measure({\n name: 'variancep',\n set: 'this.valid > 1 ? this.dev / this.valid : 0',\n req: ['variance'], idx: 2\n }),\n 'stdev': measure({\n name: 'stdev',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : 0',\n req: ['variance'], idx: 2\n }),\n 'stdevp': measure({\n name: 'stdevp',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : 0',\n req: ['variance'], idx: 2\n }),\n 'median': measure({\n name: 'median',\n set: 'cell.data.q2(this.get)',\n req: ['values'], idx: 3\n }),\n 'q1': measure({\n name: 'q1',\n set: 'cell.data.q1(this.get)',\n req: ['values'], idx: 3\n }),\n 'q3': measure({\n name: 'q3',\n set: 'cell.data.q3(this.get)',\n req: ['values'], idx: 3\n }),\n 'distinct': measure({\n name: 'distinct',\n set: 'this.distinct(cell.data.values(), this.get)',\n req: ['values'], idx: 3\n }),\n 'argmin': measure({\n name: 'argmin',\n add: 'if (v < this.min) this.argmin = t;',\n rem: 'if (v <= this.min) this.argmin = null;',\n set: 'this.argmin = this.argmin || cell.data.argmin(this.get)',\n req: ['min'], str: ['values'], idx: 3\n }),\n 'argmax': measure({\n name: 'argmax',\n add: 'if (v > this.max) this.argmax = t;',\n rem: 'if (v >= this.max) this.argmax = null;',\n set: 'this.argmax = this.argmax || cell.data.argmax(this.get)',\n req: ['max'], str: ['values'], idx: 3\n }),\n 'min': measure({\n name: 'min',\n init: 'this.min = +Infinity;',\n add: 'if (v < this.min) this.min = v;',\n rem: 'if (v <= this.min) this.min = NaN;',\n set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n str: ['values'], idx: 4\n }),\n 'max': measure({\n name: 'max',\n init: 'this.max = -Infinity;',\n add: 'if (v > this.max) this.max = v;',\n rem: 'if (v >= this.max) this.max = NaN;',\n set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n str: ['values'], idx: 4\n }),\n 'modeskew': measure({\n name: 'modeskew',\n set: 'this.dev===0 ? 0 : (this.mean - cell.data.q2(this.get)) / Math.sqrt(this.dev/(this.valid-1))',\n req: ['mean', 'stdev', 'median'], idx: 5\n })\n};\n\nfunction measure(base) {\n return function(out) {\n var m = util.extend({init:'', add:'', rem:'', idx:0}, base);\n m.out = out || base.name;\n return m;\n };\n}\n\nfunction resolve(agg, stream) {\n function collect(m, a) {\n function helper(r) { if (!m[r]) collect(m, m[r] = types[r]()); }\n if (a.req) a.req.forEach(helper);\n if (stream && a.str) a.str.forEach(helper);\n return m;\n }\n var map = agg.reduce(\n collect,\n agg.reduce(function(m, a) { return (m[a.name] = a, m); }, {})\n );\n return util.vals(map).sort(function(a, b) { return a.idx - b.idx; });\n}\n\nfunction create(agg, stream, accessor, mutator) {\n var all = resolve(agg, stream),\n ctr = 'this.cell = cell; this.tuple = t; this.valid = 0; this.missing = 0;',\n add = 'if (v==null) this.missing++; if (!this.isValid(v)) return; ++this.valid;',\n rem = 'if (v==null) this.missing--; if (!this.isValid(v)) return; --this.valid;',\n set = 'var t = this.tuple; var cell = this.cell;';\n\n all.forEach(function(a) {\n if (a.idx < 0) {\n ctr = a.init + ctr;\n add = a.add + add;\n rem = a.rem + rem;\n } else {\n ctr += a.init;\n add += a.add;\n rem += a.rem;\n }\n });\n agg.slice()\n .sort(function(a, b) { return a.idx - b.idx; })\n .forEach(function(a) {\n set += 'this.assign(t,\\''+a.out+'\\','+a.set+');';\n });\n set += 'return t;';\n\n /* jshint evil: true */\n ctr = Function('cell', 't', ctr);\n ctr.prototype.assign = mutator;\n ctr.prototype.add = Function('t', 'var v = this.get(t);' + add);\n ctr.prototype.rem = Function('t', 'var v = this.get(t);' + rem);\n ctr.prototype.set = Function(set);\n ctr.prototype.get = accessor;\n ctr.prototype.distinct = require('../stats').count.distinct;\n ctr.prototype.isValid = util.isValid;\n ctr.fields = agg.map(util.$('out'));\n return ctr;\n}\n\ntypes.create = create;\nmodule.exports = types;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/aggregate/measures.js\n ** module id = 37\n ** module chunks = 0\n **/","var util = require('./util');\nvar type = require('./import/type');\nvar gen = require('./generate');\n\nvar stats = module.exports;\n\n// Collect unique values.\n// Output: an array of unique values, in first-observed order\nstats.unique = function(values, f, results) {\n f = util.$(f);\n results = results || [];\n var u = {}, v, i, n;\n for (i=0, n=values.length; i 0 ? Math.pow(mean, 1/c) : 0;\n return mean;\n};\n\n// Compute the harmonic mean of an array of numbers.\nstats.mean.harmonic = function(values, f) {\n f = util.$(f);\n var mean = 0, c, n, v, i;\n for (i=0, c=0, n=values.length; i b) b = v;\n }\n }\n return [a, b];\n};\n\n// Find the integer indices of the minimum and maximum values.\nstats.extent.index = function(values, f) {\n f = util.$(f);\n var x = -1, y = -1, a, b, v, i, n = values.length;\n for (i=0; i b) { b = v; y = i; }\n }\n }\n return [x, y];\n};\n\n// Compute the dot product of two arrays of numbers.\nstats.dot = function(values, a, b) {\n var sum = 0, i, v;\n if (!b) {\n if (values.length !== a.length) {\n throw Error('Array lengths must match.');\n }\n for (i=0; i -1 && p !== v) {\n mu = 1 + (i-1 + tie) / 2;\n for (; tie -1) {\n mu = 1 + (n-1 + tie) / 2;\n for (; tie max) max = x;\n delta = x - mean;\n mean = mean + delta / (++valid);\n M2 = M2 + delta * (x - mean);\n vals.push(x);\n }\n }\n M2 = M2 / (valid - 1);\n sd = Math.sqrt(M2);\n\n // sort values for median and iqr\n vals.sort(util.cmp);\n\n return {\n type: type(values, f),\n unique: u,\n count: values.length,\n valid: valid,\n missing: missing,\n distinct: distinct,\n min: min,\n max: max,\n mean: mean,\n stdev: sd,\n median: (v = stats.quantile(vals, 0.5)),\n q1: stats.quantile(vals, 0.25),\n q3: stats.quantile(vals, 0.75),\n modeskew: sd === 0 ? 0 : (mean - v) / sd\n };\n};\n\n// Compute profiles for all variables in a data set.\nstats.summary = function(data, fields) {\n fields = fields || util.keys(data[0]);\n var s = fields.map(function(f) {\n var p = stats.profile(data, util.$(f));\n return (p.field = f, p);\n });\n return (s.__summary__ = true, s);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/stats.js\n ** module id = 38\n ** module chunks = 0\n **/","var util = require('./util'),\n gen = module.exports;\n\ngen.repeat = function(val, n) {\n var a = Array(n), i;\n for (i=0; i stop) range.push(j);\n else while ((j = start + step * ++i) < stop) range.push(j);\n return range;\n};\n\ngen.random = {};\n\ngen.random.uniform = function(min, max) {\n if (max === undefined) {\n max = min === undefined ? 1 : min;\n min = 0;\n }\n var d = max - min;\n var f = function() {\n return min + d * Math.random();\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x >= min && x <= max) ? 1/d : 0;\n };\n f.cdf = function(x) {\n return x < min ? 0 : x > max ? 1 : (x - min) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? min + p*d : NaN;\n };\n return f;\n};\n\ngen.random.integer = function(a, b) {\n if (b === undefined) {\n b = a;\n a = 0;\n }\n var d = b - a;\n var f = function() {\n return a + Math.floor(d * Math.random());\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n };\n f.cdf = function(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n };\n return f;\n};\n\ngen.random.normal = function(mean, stdev) {\n mean = mean || 0;\n stdev = stdev || 1;\n var next;\n var f = function() {\n var x = 0, y = 0, rds, c;\n if (next !== undefined) {\n x = next;\n next = undefined;\n return x;\n }\n do {\n x = Math.random()*2-1;\n y = Math.random()*2-1;\n rds = x*x + y*y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n next = mean + y*c*stdev;\n return mean + x*c*stdev;\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n };\n f.cdf = function(x) {\n // Approximation from West (2009)\n // Better Approximations to Cumulative Normal Functions\n var cd,\n z = (x - mean) / stdev,\n Z = Math.abs(z);\n if (Z > 37) {\n cd = 0;\n } else {\n var sum, exp = Math.exp(-Z*Z/2);\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n };\n f.icdf = function(p) {\n // Approximation of Probit function using inverse error function.\n if (p <= 0 || p >= 1) return NaN;\n var x = 2*p - 1,\n v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n b = Math.log(1 - (x*x)) / v,\n s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n return mean + stdev * Math.SQRT2 * s;\n };\n return f;\n};\n\ngen.random.bootstrap = function(domain, smooth) {\n // Generates a bootstrap sample from a set of observations.\n // Smooth bootstrapping adds random zero-centered noise to the samples.\n var val = domain.filter(util.isValid),\n len = val.length,\n err = smooth ? gen.random.normal(0, smooth) : null;\n var f = function() {\n return val[~~(Math.random()*len)] + (err ? err() : 0);\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n return f;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/generate.js\n ** module id = 39\n ** module chunks = 0\n **/","var util = require('../util');\nvar stats = require('../stats');\n\nvar REM = '__dl_rem__';\n\nfunction Collector(key) {\n this._add = [];\n this._rem = [];\n this._key = key || null;\n this._last = null;\n}\n\nvar proto = Collector.prototype;\n\nproto.add = function(v) {\n this._add.push(v);\n};\n\nproto.rem = function(v) {\n this._rem.push(v);\n};\n\nproto.values = function() {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n\n var a = this._add,\n r = this._rem,\n k = this._key,\n x = Array(a.length - r.length),\n i, j, n, m;\n\n if (!util.isObject(r[0])) {\n // processing raw values\n m = stats.count.map(r);\n for (i=0, j=0, n=a.length; i 0) {\n m[a[i]] -= 1;\n } else {\n x[j++] = a[i];\n }\n }\n } else if (k) {\n // has unique key field, so use that\n m = util.toMap(r, k);\n for (i=0, j=0, n=a.length; i maxb) { step *= base; }\n\n // decrease step size if allowed\n for (i=0; i= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n eps = Math.pow(base, -precision - 1);\n min = Math.min(min, Math.floor(min / step + eps) * step);\n max = Math.ceil(max / step) * step;\n\n return {\n start: min,\n stop: max,\n step: step,\n unit: {precision: precision},\n value: value,\n index: index\n };\n}\n\nfunction bisect(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n else { hi = mid; }\n }\n return lo;\n}\n\nfunction value(v) {\n return this.step * Math.floor(v / this.step + EPSILON);\n}\n\nfunction index(v) {\n return Math.floor((v - this.start) / this.step + EPSILON);\n}\n\nfunction date_value(v) {\n return this.unit.date(value.call(this, v));\n}\n\nfunction date_index(v) {\n return index.call(this, this.unit.unit(v));\n}\n\nbins.date = function(opt) {\n if (!opt) { throw Error(\"Missing date binning options.\"); }\n\n // find time step, then bin\n var units = opt.utc ? time.utc : time,\n dmin = opt.min,\n dmax = opt.max,\n maxb = opt.maxbins || 20,\n minb = opt.minbins || 4,\n span = (+dmax) - (+dmin),\n unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n spec = bins({\n min: unit.min != null ? unit.min : unit.unit(dmin),\n max: unit.max != null ? unit.max : unit.unit(dmax),\n maxbins: maxb,\n minstep: unit.minstep,\n steps: unit.step\n });\n\n spec.unit = unit;\n spec.index = date_index;\n if (!opt.raw) spec.value = date_value;\n return spec;\n};\n\nmodule.exports = bins;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/bins/bins.js\n ** module id = 42\n ** module chunks = 0\n **/","var d3_time = require('d3-time');\n\nvar tempDate = new Date(),\n baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\nfunction date(d) {\n return (tempDate.setTime(+d), tempDate);\n}\n\n// create a time unit entry\nfunction entry(type, date, unit, step, min, max) {\n var e = {\n type: type,\n date: date,\n unit: unit\n };\n if (step) {\n e.step = step;\n } else {\n e.minstep = 1;\n }\n if (min != null) e.min = min;\n if (max != null) e.max = max;\n return e;\n}\n\nfunction create(type, unit, base, step, min, max) {\n return entry(type,\n function(d) { return unit.offset(base, d); },\n function(d) { return unit.count(base, d); },\n step, min, max);\n}\n\nvar locale = [\n create('second', d3_time.second, baseDate),\n create('minute', d3_time.minute, baseDate),\n create('hour', d3_time.hour, baseDate),\n create('day', d3_time.day, baseDate, [1, 7]),\n create('month', d3_time.month, baseDate, [1, 3, 6]),\n create('year', d3_time.year, baseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n function(d) { return date(d).getSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(1970, 0, 1, 0, d); },\n function(d) { return date(d).getMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(1970, 0, 1, d); },\n function(d) { return date(d).getHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(1970, 0, 4+d); },\n function(d) { return date(d).getDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(1970, 0, d); },\n function(d) { return date(d).getDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(1970, d % 12, 1); },\n function(d) { return date(d).getMonth(); },\n [1], 0, 11\n )\n];\n\nvar utc = [\n create('second', d3_time.utcSecond, utcBaseDate),\n create('minute', d3_time.utcMinute, utcBaseDate),\n create('hour', d3_time.utcHour, utcBaseDate),\n create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n create('year', d3_time.utcYear, utcBaseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n function(d) { return date(d).getUTCSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n function(d) { return date(d).getUTCMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n function(d) { return date(d).getUTCHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n function(d) { return date(d).getUTCDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(Date.UTC(1970, 0, d)); },\n function(d) { return date(d).getUTCDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n function(d) { return date(d).getUTCMonth(); },\n [1], 0, 11\n )\n];\n\nvar STEPS = [\n [31536e6, 5], // 1-year\n [7776e6, 4], // 3-month\n [2592e6, 4], // 1-month\n [12096e5, 3], // 2-week\n [6048e5, 3], // 1-week\n [1728e5, 3], // 2-day\n [864e5, 3], // 1-day\n [432e5, 2], // 12-hour\n [216e5, 2], // 6-hour\n [108e5, 2], // 3-hour\n [36e5, 2], // 1-hour\n [18e5, 1], // 30-minute\n [9e5, 1], // 15-minute\n [3e5, 1], // 5-minute\n [6e4, 1], // 1-minute\n [3e4, 0], // 30-second\n [15e3, 0], // 15-second\n [5e3, 0], // 5-second\n [1e3, 0] // 1-second\n];\n\nfunction find(units, span, minb, maxb) {\n var step = STEPS[0], i, n, bins;\n\n for (i=1, n=STEPS.length; i step[0]) {\n bins = span / step[0];\n if (bins > maxb) {\n return units[STEPS[i-1][1]];\n }\n if (bins >= minb) {\n return units[step[1]];\n }\n }\n }\n return units[STEPS[n-1][1]];\n}\n\nfunction toUnitMap(units) {\n var map = {}, i, n;\n for (i=0, n=units.length; i= h.length || !isFinite(j)) continue;\n h[j].count += 1;\n }\n }\n h.bins = b;\n return h;\n}\n\nfunction categorical(values, f, sort) {\n var u = stats.unique(values, f),\n c = stats.count.map(values, f);\n return u.map(function(k) { return {value: k, count: c[k]}; })\n .sort(util.comparator(sort ? '-count' : '+value'));\n}\n\nmodule.exports = {\n $bin: $bin,\n histogram: histogram\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/bins/histogram.js\n ** module id = 44\n ** module chunks = 0\n **/","var util = require('./util'),\n format = require('./format');\n\nvar context = {\n formats: [],\n format_map: {},\n truncate: util.truncate,\n pad: util.pad,\n day: format.day,\n month: format.month\n};\n\nfunction template(text) {\n var src = source(text, 'd');\n src = 'var __t; return ' + src + ';';\n\n /* jshint evil: true */\n return (new Function('d', src)).bind(context);\n}\n\ntemplate.source = source;\ntemplate.context = context;\ntemplate.format = get_format;\nmodule.exports = template;\n\n// Clear cache of format objects.\n// This can *break* prior template functions, so invoke with care!\ntemplate.clearFormatCache = function() {\n context.formats = [];\n context.format_map = {};\n};\n\n// Generate property access code for use within template source.\n// object: the name of the object (variable) containing template data\n// property: the property access string, verbatim from template tag\ntemplate.property = function(object, property) {\n var src = util.field(property).map(util.str).join('][');\n return object + '[' + src + ']';\n};\n\n// Generate source code for a template function.\n// text: the template text\n// variable: the name of the data object variable ('obj' by default)\n// properties: optional hash for collecting all accessed properties\nfunction source(text, variable, properties) {\n variable = variable || 'obj';\n var index = 0;\n var src = '\\'';\n var regex = template_re;\n\n // Compile the template source, escaping string literals appropriately.\n text.replace(regex, function(match, interpolate, offset) {\n src += text\n .slice(index, offset)\n .replace(template_escaper, template_escapeChar);\n index = offset + match.length;\n\n if (interpolate) {\n src += '\\'\\n+((__t=(' +\n template_var(interpolate, variable, properties) +\n '))==null?\\'\\':__t)+\\n\\'';\n }\n\n // Adobe VMs need the match returned to produce the correct offest.\n return match;\n });\n return src + '\\'';\n}\n\nfunction template_var(text, variable, properties) {\n var filters = text.match(filter_re);\n var prop = filters.shift().trim();\n var stringCast = true;\n\n function strcall(fn) {\n fn = fn || '';\n if (stringCast) {\n stringCast = false;\n src = 'String(' + src + ')' + fn;\n } else {\n src += fn;\n }\n return src;\n }\n\n function date() {\n return '(typeof ' + src + '===\"number\"?new Date('+src+'):'+src+')';\n }\n\n function formatter(type) {\n var pattern = args[0];\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n } else {\n throw Error('Format pattern must be quoted: ' + pattern);\n }\n a = template_format(pattern, type);\n stringCast = false;\n var arg = type === 'number' ? src : date();\n src = 'this.formats['+a+']('+arg+')';\n }\n\n if (properties) properties[prop] = 1;\n var src = template.property(variable, prop);\n\n for (var i=0; i 0) {\n f = f.slice(0, pidx);\n args = filters[i].slice(pidx+1)\n .match(args_re)\n .map(function(s) { return s.trim(); });\n }\n f = f.trim();\n\n switch (f) {\n case 'length':\n strcall('.length');\n break;\n case 'lower':\n strcall('.toLowerCase()');\n break;\n case 'upper':\n strcall('.toUpperCase()');\n break;\n case 'lower-locale':\n strcall('.toLocaleLowerCase()');\n break;\n case 'upper-locale':\n strcall('.toLocaleUpperCase()');\n break;\n case 'trim':\n strcall('.trim()');\n break;\n case 'left':\n a = util.number(args[0]);\n strcall('.slice(0,' + a + ')');\n break;\n case 'right':\n a = util.number(args[0]);\n strcall('.slice(-' + a +')');\n break;\n case 'mid':\n a = util.number(args[0]);\n b = a + util.number(args[1]);\n strcall('.slice(+'+a+','+b+')');\n break;\n case 'slice':\n a = util.number(args[0]);\n strcall('.slice('+ a +\n (args.length > 1 ? ',' + util.number(args[1]) : '') +\n ')');\n break;\n case 'truncate':\n a = util.number(args[0]);\n b = args[1];\n b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n src = 'this.truncate(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n break;\n case 'pad':\n a = util.number(args[0]);\n b = args[1];\n b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n src = 'this.pad(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n break;\n case 'number':\n formatter('number');\n break;\n case 'time':\n formatter('time');\n break;\n case 'time-utc':\n formatter('utc');\n break;\n case 'month':\n src = 'this.month(' + src + ')';\n break;\n case 'month-abbrev':\n src = 'this.month(' + src + ',true)';\n break;\n case 'day':\n src = 'this.day(' + src + ')';\n break;\n case 'day-abbrev':\n src = 'this.day(' + src + ',true)';\n break;\n default:\n throw Error('Unrecognized template filter: ' + f);\n }\n }\n\n return src;\n}\n\nvar template_re = /\\{\\{(.+?)\\}\\}|$/g,\n filter_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^\\|\"]+|[^\\|\\']+)+/g,\n args_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^,\"]+|[^,\\']+)+/g;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar template_escapes = {\n '\\'': '\\'',\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar template_escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction template_escapeChar(match) {\n return '\\\\' + template_escapes[match];\n}\n\nfunction template_format(pattern, type) {\n var key = type + ':' + pattern;\n if (context.format_map[key] == null) {\n var f = format[type](pattern);\n var i = context.formats.length;\n context.formats.push(f);\n context.format_map[key] = i;\n return i;\n }\n return context.format_map[key];\n}\n\nfunction get_format(pattern, type) {\n return context.formats[template_format(pattern, type)];\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/template.js\n ** module id = 45\n ** module chunks = 0\n **/","var util = require('./util'),\n time = require('./time'),\n utc = time.utc;\n\nvar u = module.exports;\n\nu.$year = util.$func('year', time.year.unit);\nu.$month = util.$func('month', time.months.unit);\nu.$date = util.$func('date', time.dates.unit);\nu.$day = util.$func('day', time.weekdays.unit);\nu.$hour = util.$func('hour', time.hours.unit);\nu.$minute = util.$func('minute', time.minutes.unit);\nu.$second = util.$func('second', time.seconds.unit);\n\nu.$utcYear = util.$func('utcYear', utc.year.unit);\nu.$utcMonth = util.$func('utcMonth', utc.months.unit);\nu.$utcDate = util.$func('utcDate', utc.dates.unit);\nu.$utcDay = util.$func('utcDay', utc.weekdays.unit);\nu.$utcHour = util.$func('utcHour', utc.hours.unit);\nu.$utcMinute = util.$func('utcMinute', utc.minutes.unit);\nu.$utcSecond = util.$func('utcSecond', utc.seconds.unit);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/accessor.js\n ** module id = 46\n ** module chunks = 0\n **/","var util = require('../util');\nvar load = require('./load');\nvar read = require('./read');\n\nmodule.exports = util\n .keys(read.formats)\n .reduce(function(out, type) {\n out[type] = function(opt, format, callback) {\n // process arguments\n if (util.isString(opt)) { opt = {url: opt}; }\n if (arguments.length === 2 && util.isFunction(format)) {\n callback = format;\n format = undefined;\n }\n\n // set up read format\n format = util.extend({parse: 'auto'}, format);\n format.type = type;\n\n // load data\n var data = load(opt, callback ? function(error, data) {\n if (error) { callback(error, null); return; }\n try {\n // data loaded, now parse it (async)\n data = read(data, format);\n callback(null, data);\n } catch (e) {\n callback(e, null);\n }\n } : undefined);\n\n // data loaded, now parse it (sync)\n if (!callback) return read(data, format);\n };\n return out;\n }, {});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/readers.js\n ** module id = 47\n ** module chunks = 0\n **/","var util = require('./util'),\n type = require('./import/type'),\n stats = require('./stats'),\n template = require('./template');\n\nmodule.exports = {\n table: formatTable, // format a data table\n summary: formatSummary // format a data table summary\n};\n\nvar FMT = {\n 'date': '|time:\"%m/%d/%Y %H:%M:%S\"',\n 'number': '|number:\".4f\"',\n 'integer': '|number:\"d\"'\n};\n\nvar POS = {\n 'number': 'left',\n 'integer': 'left'\n};\n\nfunction formatTable(data, opt) {\n opt = util.extend({separator:' ', minwidth: 8, maxwidth: 15}, opt);\n var fields = opt.fields || util.keys(data[0]),\n types = type.all(data);\n\n if (opt.start || opt.limit) {\n var a = opt.start || 0,\n b = opt.limit ? a + opt.limit : data.length;\n data = data.slice(a, b);\n }\n\n // determine char width of fields\n var lens = fields.map(function(name) {\n var format = FMT[types[name]] || '',\n t = template('{{' + name + format + '}}'),\n l = stats.max(data, function(x) { return t(x).length; });\n l = Math.max(Math.min(name.length, opt.minwidth), l);\n return opt.maxwidth > 0 ? Math.min(l, opt.maxwidth) : l;\n });\n\n // print header row\n var head = fields.map(function(name, i) {\n return util.truncate(util.pad(name, lens[i], 'center'), lens[i]);\n }).join(opt.separator);\n\n // build template function for each row\n var tmpl = template(fields.map(function(name, i) {\n return '{{' +\n name +\n (FMT[types[name]] || '') +\n ('|pad:' + lens[i] + ',' + (POS[types[name]] || 'right')) +\n ('|truncate:' + lens[i]) +\n '}}';\n }).join(opt.separator));\n\n // print table\n return head + \"\\n\" + data.map(tmpl).join('\\n');\n}\n\nfunction formatSummary(s) {\n s = s ? s.__summary__ ? s : stats.summary(s) : this;\n var str = [], i, n;\n for (i=0, n=s.length; i 1) {\n for (var i=1, n=ref.length; i 0) {\n node = pq.peek();\n isSg = node instanceof Signal;\n pulse = pulses[node._id];\n\n if (node.rank() !== node.qrank()) {\n // A node's rank might change during a propagation. Re-queue if so.\n pq.replace(node.qrank(true));\n } else {\n // Evaluate node and propagate pulse.\n pq.pop();\n pulses[node._id] = null;\n listeners = node._listeners;\n\n if (!isSg || (isSg && !skipSignals)) {\n pulse = this.evaluate(pulse, node);\n }\n\n // Propagate the pulse.\n if (pulse !== this.doNotPropagate) {\n // Ensure reflow pulses always send reflow pulses even if skipped.\n if (!pulse.reflow && node.reflows()) {\n pulse = ChangeSet.create(pulse, true);\n }\n\n for (i=0, len=listeners.length; i 0) branch[i-1].addListener(node);\n }\n\n return branch;\n};\n\nprototype.disconnect = function(branch) {\n var collector, node, data, signals, i, n, j, m;\n\n for (i=0, n=branch.length; i= pulse.stamp,\n run = node.router() || pulse.add.length || pulse.rem.length;\n\n return run || !reflowed || node.reevaluate(pulse);\n};\n\nprototype.evaluate = function(pulse, node) {\n if (!this.reevaluate(pulse, node)) return pulse;\n pulse = node.evaluate(pulse);\n node.last(pulse.stamp);\n return pulse;\n};\n\nmodule.exports = Graph;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Graph.js\n ** module id = 49\n ** module chunks = 0\n **/","function Heap(comparator) {\n this.cmp = comparator;\n this.nodes = [];\n}\n\nvar prototype = Heap.prototype;\n\nprototype.size = function() {\n return this.nodes.length;\n};\n\nprototype.clear = function() {\n return (this.nodes = [], this);\n};\n\nprototype.peek = function() {\n return this.nodes[0];\n};\n\nprototype.push = function(x) {\n var array = this.nodes;\n array.push(x);\n return _siftdown(array, 0, array.length-1, this.cmp);\n};\n\nprototype.pop = function() {\n var array = this.nodes,\n last = array.pop(),\n item;\n\n if (array.length) {\n item = array[0];\n array[0] = last;\n _siftup(array, 0, this.cmp);\n } else {\n item = last;\n }\n return item;\n};\n\nprototype.replace = function(item) {\n var array = this.nodes,\n retval = array[0];\n array[0] = item;\n _siftup(array, 0, this.cmp);\n return retval;\n};\n\nprototype.pushpop = function(item) {\n var array = this.nodes, ref = array[0];\n if (array.length && this.cmp(ref, item) < 0) {\n array[0] = item;\n item = ref;\n _siftup(array, 0, this.cmp);\n }\n return item;\n};\n\nfunction _siftdown(array, start, idx, cmp) {\n var item, parent, pidx;\n\n item = array[idx];\n while (idx > start) {\n pidx = (idx - 1) >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return (array[idx] = item);\n}\n\nfunction _siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx],\n cidx = 2 * idx + 1, ridx;\n\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = 2 * idx + 1;\n }\n array[idx] = item;\n return _siftdown(array, start, idx, cmp);\n}\n\nmodule.exports = Heap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Heap.js\n ** module id = 50\n ** module chunks = 0\n **/","var ChangeSet = require('./ChangeSet'),\n Node = require('./Node'), // jshint ignore:line\n Base = Node.prototype;\n\nfunction Signal(graph, name, initialValue) {\n Base.init.call(this, graph);\n this._name = name;\n this._value = initialValue;\n this._verbose = false; // Verbose signals re-pulse the graph even if prev === val.\n this._handlers = [];\n return this;\n}\n\nvar prototype = (Signal.prototype = Object.create(Base));\nprototype.constructor = Signal;\n\nprototype.name = function() {\n return this._name;\n};\n\nprototype.value = function(val) {\n if (!arguments.length) return this._value;\n return (this._value = val, this);\n};\n\n// Alias to value, for shared API with DataSource\nprototype.values = prototype.value;\n\nprototype.verbose = function(v) {\n if (!arguments.length) return this._verbose;\n return (this._verbose = !!v, this);\n};\n\nprototype.evaluate = function(input) {\n return input.signals[this._name] ? input : this._graph.doNotPropagate;\n};\n\nprototype.fire = function(cs) {\n if (!cs) cs = ChangeSet.create(null, true);\n cs.signals[this._name] = 1;\n this._graph.propagate(cs, this);\n};\n\nprototype.on = function(handler) {\n var signal = this,\n node = new Node(this._graph);\n\n node.evaluate = function(input) {\n handler(signal.name(), signal.value());\n return input;\n };\n\n this._handlers.push({\n handler: handler,\n node: node\n });\n\n return this.addListener(node);\n};\n\nprototype.off = function(handler) {\n var h = this._handlers, i, x;\n\n for (i=h.length; --i>=0;) {\n if (!handler || h[i].handler === handler) {\n x = h.splice(i, 1)[0];\n this.removeListener(x.node);\n }\n }\n\n return this;\n};\n\nmodule.exports = Signal;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Signal.js\n ** module id = 51\n ** module chunks = 0\n **/","module.exports = {\n axes: require('./axes'),\n background: require('./background'),\n data: require('./data'),\n events: require('vega-event-selector'),\n expr: require('./expr'),\n legends: require('./legends'),\n mark: require('./mark'),\n marks: require('./marks'),\n modify: require('./modify'),\n padding: require('./padding'),\n predicates: require('./predicates'),\n properties: require('./properties'),\n signals: require('./signals'),\n spec: require('./spec'),\n streams: require('./streams'),\n transforms: require('./transforms')\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/index.js\n ** module id = 52\n ** module chunks = 0\n **/","var dl = require('datalib'),\n axs = require('../scene/axis');\n\nvar ORIENT = {\n \"x\": \"bottom\",\n \"y\": \"left\",\n \"top\": \"top\",\n \"bottom\": \"bottom\",\n \"left\": \"left\",\n \"right\": \"right\"\n};\n\nfunction parseAxes(model, spec, axes, group) {\n var config = model.config();\n (spec || []).forEach(function(def, index) {\n axes[index] = axes[index] || axs(model);\n parseAxis(config, def, index, axes[index], group);\n });\n}\n\nfunction parseAxis(config, def, index, axis, group) {\n // axis scale\n if (def.scale !== undefined) {\n axis.scale(group.scale(def.scale));\n }\n\n // axis orientation\n axis.orient(def.orient || ORIENT[def.type]);\n // axis offset\n axis.offset(def.offset || 0);\n // axis layer\n axis.layer(def.layer || \"front\");\n // axis grid lines\n axis.grid(def.grid || false);\n // axis title\n axis.title(def.title || null);\n // axis title offset\n axis.titleOffset(def.titleOffset != null ?\n def.titleOffset : config.axis.titleOffset);\n // axis values\n axis.tickValues(def.values || null);\n // axis label formatting\n axis.tickFormat(def.format || null);\n axis.tickFormatType(def.formatType || null);\n // axis tick subdivision\n axis.tickSubdivide(def.subdivide || 0);\n // axis tick padding\n axis.tickPadding(def.tickPadding || config.axis.padding);\n\n // axis tick size(s)\n var size = [];\n if (def.tickSize !== undefined) {\n for (var i=0; i<3; ++i) size.push(def.tickSize);\n } else {\n var ts = config.axis.tickSize;\n size = [ts, ts, ts];\n }\n if (def.tickSizeMajor != null) size[0] = def.tickSizeMajor;\n if (def.tickSizeMinor != null) size[1] = def.tickSizeMinor;\n if (def.tickSizeEnd != null) size[2] = def.tickSizeEnd;\n if (size.length) {\n axis.tickSize.apply(axis, size);\n }\n\n // axis tick count\n axis.tickCount(def.ticks || config.axis.ticks);\n\n // style properties\n var p = def.properties;\n if (p && p.ticks) {\n axis.majorTickProperties(p.majorTicks ?\n dl.extend({}, p.ticks, p.majorTicks) : p.ticks);\n axis.minorTickProperties(p.minorTicks ?\n dl.extend({}, p.ticks, p.minorTicks) : p.ticks);\n } else {\n axis.majorTickProperties(p && p.majorTicks || {});\n axis.minorTickProperties(p && p.minorTicks || {});\n }\n axis.tickLabelProperties(p && p.labels || {});\n axis.titleProperties(p && p.title || {});\n axis.gridLineProperties(p && p.grid || {});\n axis.domainProperties(p && p.axis || {});\n}\n\nmodule.exports = parseAxes;\n\nparseAxes.schema = {\n \"defs\": {\n \"axis\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"x\", \"y\"]},\n \"scale\": {\"type\": \"string\"},\n \"orient\": {\"enum\": [\"top\", \"bottom\", \"left\", \"right\"]},\n \"title\": {\"type\": \"string\"},\n \"titleOffset\": {\"type\": \"number\"},\n \"format\": {\"type\": \"string\"},\n \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n \"ticks\": {\"type\": \"number\"},\n \"values\": {\n \"type\": \"array\",\n \"items\": {\"type\": [\"string\", \"number\"]}\n },\n \"subdivide\": {\"type\": \"number\"},\n \"tickPadding\": {\"type\": \"number\"},\n \"tickSize\": {\"type\": \"number\"},\n \"tickSizeMajor\": {\"type\": \"number\"},\n \"tickSizeMinor\": {\"type\": \"number\"},\n \"tickSizeEnd\": {\"type\": \"number\"},\n \"offset\": {\n \"oneOf\": [{\"type\": \"number\"}, {\n \"type\": \"object\",\n \"properties\": {\n \"scale\": {\"type\": \"string\"},\n \"value\": {\"type\": [\"string\", \"number\"]}\n },\n \"required\": [\"scale\", \"value\"],\n \"additionalProperties\": false\n }]\n },\n \"layer\": {\"enum\": [\"front\", \"back\"], \"default\": \"front\"},\n \"grid\": {\"type\": \"boolean\"},\n \"properties\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticks\": {\"$ref\": \"#/defs/propset\"},\n \"majorTicks\": {\"$ref\": \"#/defs/propset\"},\n \"minorTicks\": {\"$ref\": \"#/defs/propset\"},\n \"labels\": {\"$ref\": \"#/defs/propset\"},\n \"title\": {\"$ref\": \"#/defs/propset\"},\n \"grid\": {\"$ref\": \"#/defs/propset\"},\n \"axis\": {\"$ref\": \"#/defs/propset\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"scale\"]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/axes.js\n ** module id = 53\n ** module chunks = 0\n **/","var dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n parseMark = require('../parse/mark'),\n util = require('../util');\n\nvar axisBounds = new (require('vega-scenegraph').Bounds)();\nvar ORDINAL = 'ordinal';\n\nfunction axs(model) {\n var scale,\n config = model.config().axis,\n orient = config.orient,\n offset = 0,\n titleOffset = config.titleOffset,\n axisDef = {},\n layer = 'front',\n grid = false,\n title = null,\n tickMajorSize = config.tickSize,\n tickMinorSize = config.tickSize,\n tickEndSize = config.tickSize,\n tickPadding = config.padding,\n tickValues = null,\n tickFormatString = null,\n tickFormatType = null,\n tickSubdivide = 0,\n tickCount = config.ticks,\n gridLineStyle = {},\n tickLabelStyle = {},\n majorTickStyle = {},\n minorTickStyle = {},\n titleStyle = {},\n domainStyle = {},\n m = { // Axis marks as references for updates\n gridLines: {},\n majorTicks: {},\n minorTicks: {},\n tickLabels: {},\n domain: {},\n title: {}\n };\n\n var axis = {};\n\n function reset() {\n axisDef.type = null;\n }\n\n function ingest(d) {\n return {data: d};\n }\n\n function getTicks(format) {\n var major = tickValues || (scale.ticks ? scale.ticks(tickCount) : scale.domain()),\n minor = axisSubdivide(scale, major, tickSubdivide).map(ingest);\n major = major.map(function(d) { return (d = ingest(d), d.label = format(d.data), d); });\n return [major, minor];\n }\n\n axis.def = function() {\n if (!axisDef.type) axis_def(scale);\n\n var format = util.getTickFormat(scale, tickCount, tickFormatType, tickFormatString),\n ticks = getTicks(format),\n tdata = title ? [title].map(ingest) : [];\n\n axisDef.marks[0].from = function() { return grid ? ticks[0] : []; };\n axisDef.marks[1].from = function() { return ticks[0]; };\n axisDef.marks[2].from = function() { return ticks[1]; };\n axisDef.marks[3].from = axisDef.marks[1].from;\n axisDef.marks[4].from = function() { return [1]; };\n axisDef.marks[5].from = function() { return tdata; };\n axisDef.offset = offset;\n axisDef.orient = orient;\n axisDef.layer = layer;\n if (titleOffset === 'auto') titleAutoOffset(axisDef);\n\n return axisDef;\n };\n\n function titleAutoOffset(axisDef) {\n var orient = axisDef.orient,\n update = axisDef.marks[5].properties.update,\n fn = update.encode,\n min = config.titleOffsetAutoMin,\n max = config.titleOffsetAutoMax,\n pad = config.titleOffsetAutoMargin;\n\n // Offset axis title using bounding box of axis domain and labels\n // Assumes other components are **encoded and bounded** beforehand\n update.encode = function(item, group, trans, db, signals, preds) {\n var dirty = fn.call(fn, item, group, trans, db, signals, preds),\n field = (orient==='bottom' || orient==='top') ? 'y' : 'x';\n if (titleStyle[field] != null) return dirty;\n\n axisBounds.clear()\n .union(group.items[3].bounds)\n .union(group.items[4].bounds);\n\n var o = trans ? {} : item,\n method = (orient==='left' || orient==='right') ? 'width' : 'height',\n sign = (orient==='top' || orient==='left') ? -1 : 1,\n off = ~~(axisBounds[method]() + item.fontSize/2 + pad);\n\n Tuple.set(o, field, sign * Math.min(Math.max(min, off), max));\n if (trans) trans.interpolate(item, o);\n return true;\n };\n }\n\n function axis_def(scale) {\n // setup scale mapping\n var newScale, oldScale, range;\n if (scale.type === ORDINAL) {\n newScale = {scale: scale.scaleName, offset: 0.5 + scale.rangeBand()/2};\n oldScale = newScale;\n } else {\n newScale = {scale: scale.scaleName, offset: 0.5};\n oldScale = {scale: scale.scaleName+':prev', offset: 0.5};\n }\n range = axisScaleRange(scale);\n\n // setup axis marks\n dl.extend(m.gridLines, axisTicks(config));\n dl.extend(m.majorTicks, axisTicks(config));\n dl.extend(m.minorTicks, axisTicks(config));\n dl.extend(m.tickLabels, axisTickLabels(config));\n dl.extend(m.domain, axisDomain(config));\n dl.extend(m.title, axisTitle(config));\n m.gridLines.properties.enter.stroke = {value: config.gridColor};\n m.gridLines.properties.enter.strokeOpacity = {value: config.gridOpacity};\n\n // extend axis marks based on axis orientation\n axisTicksExtend(orient, m.gridLines, oldScale, newScale, Infinity, offset);\n axisTicksExtend(orient, m.majorTicks, oldScale, newScale, tickMajorSize);\n axisTicksExtend(orient, m.minorTicks, oldScale, newScale, tickMinorSize);\n axisLabelExtend(orient, m.tickLabels, oldScale, newScale, tickMajorSize, tickPadding);\n\n axisDomainExtend(orient, m.domain, range, tickEndSize);\n axisTitleExtend(orient, m.title, range, +titleOffset || -1);\n\n // add / override custom style properties\n dl.extend(m.gridLines.properties.update, gridLineStyle);\n dl.extend(m.majorTicks.properties.update, majorTickStyle);\n dl.extend(m.minorTicks.properties.update, minorTickStyle);\n dl.extend(m.tickLabels.properties.update, tickLabelStyle);\n dl.extend(m.domain.properties.update, domainStyle);\n dl.extend(m.title.properties.update, titleStyle);\n\n var marks = [m.gridLines, m.majorTicks, m.minorTicks, m.tickLabels, m.domain, m.title];\n dl.extend(axisDef, {\n type: 'group',\n interactive: false,\n properties: {\n enter: {\n encode: axisUpdate,\n scales: [scale.scaleName],\n signals: [], data: []\n },\n update: {\n encode: axisUpdate,\n scales: [scale.scaleName],\n signals: [], data: []\n }\n }\n });\n\n axisDef.marks = marks.map(function(m) { return parseMark(model, m); });\n }\n\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n if (scale !== x) { scale = x; reset(); }\n return axis;\n };\n\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n if (orient !== x) {\n orient = x in axisOrients ? x + '' : config.orient;\n reset();\n }\n return axis;\n };\n\n axis.title = function(x) {\n if (!arguments.length) return title;\n if (title !== x) { title = x; reset(); }\n return axis;\n };\n\n axis.tickCount = function(x) {\n if (!arguments.length) return tickCount;\n tickCount = x;\n return axis;\n };\n\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormatString;\n if (tickFormatString !== x) {\n tickFormatString = x;\n reset();\n }\n return axis;\n };\n\n axis.tickFormatType = function(x) {\n if (!arguments.length) return tickFormatType;\n if (tickFormatType !== x) {\n tickFormatType = x;\n reset();\n }\n return axis;\n };\n\n axis.tickSize = function(x, y) {\n if (!arguments.length) return tickMajorSize;\n var n = arguments.length - 1,\n major = +x,\n minor = n > 1 ? +y : tickMajorSize,\n end = n > 0 ? +arguments[n] : tickMajorSize;\n\n if (tickMajorSize !== major ||\n tickMinorSize !== minor ||\n tickEndSize !== end) {\n reset();\n }\n\n tickMajorSize = major;\n tickMinorSize = minor;\n tickEndSize = end;\n return axis;\n };\n\n axis.tickSubdivide = function(x) {\n if (!arguments.length) return tickSubdivide;\n tickSubdivide = +x;\n return axis;\n };\n\n axis.offset = function(x) {\n if (!arguments.length) return offset;\n offset = dl.isObject(x) ? x : +x;\n return axis;\n };\n\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n if (tickPadding !== +x) { tickPadding = +x; reset(); }\n return axis;\n };\n\n axis.titleOffset = function(x) {\n if (!arguments.length) return titleOffset;\n if (titleOffset !== x) { titleOffset = x; reset(); }\n return axis;\n };\n\n axis.layer = function(x) {\n if (!arguments.length) return layer;\n if (layer !== x) { layer = x; reset(); }\n return axis;\n };\n\n axis.grid = function(x) {\n if (!arguments.length) return grid;\n if (grid !== x) { grid = x; reset(); }\n return axis;\n };\n\n axis.gridLineProperties = function(x) {\n if (!arguments.length) return gridLineStyle;\n if (gridLineStyle !== x) { gridLineStyle = x; }\n return axis;\n };\n\n axis.majorTickProperties = function(x) {\n if (!arguments.length) return majorTickStyle;\n if (majorTickStyle !== x) { majorTickStyle = x; }\n return axis;\n };\n\n axis.minorTickProperties = function(x) {\n if (!arguments.length) return minorTickStyle;\n if (minorTickStyle !== x) { minorTickStyle = x; }\n return axis;\n };\n\n axis.tickLabelProperties = function(x) {\n if (!arguments.length) return tickLabelStyle;\n if (tickLabelStyle !== x) { tickLabelStyle = x; }\n return axis;\n };\n\n axis.titleProperties = function(x) {\n if (!arguments.length) return titleStyle;\n if (titleStyle !== x) { titleStyle = x; }\n return axis;\n };\n\n axis.domainProperties = function(x) {\n if (!arguments.length) return domainStyle;\n if (domainStyle !== x) { domainStyle = x; }\n return axis;\n };\n\n axis.reset = function() {\n reset();\n return axis;\n };\n\n return axis;\n}\n\nvar axisOrients = {top: 1, right: 1, bottom: 1, left: 1};\n\nfunction axisSubdivide(scale, ticks, m) {\n var subticks = [];\n if (m && ticks.length > 1) {\n var extent = axisScaleExtent(scale.domain()),\n i = -1,\n n = ticks.length,\n d = (ticks[1] - ticks[0]) / ++m,\n j,\n v;\n while (++i < n) {\n for (j = m; --j > 0;) {\n if ((v = +ticks[i] - j * d) >= extent[0]) {\n subticks.push(v);\n }\n }\n }\n for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1];) {\n subticks.push(v);\n }\n }\n return subticks;\n}\n\nfunction axisScaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n}\n\nfunction axisScaleRange(scale) {\n return scale.rangeExtent ?\n scale.rangeExtent() :\n axisScaleExtent(scale.range());\n}\n\nvar axisAlign = {\n bottom: 'center',\n top: 'center',\n left: 'right',\n right: 'left'\n};\n\nvar axisBaseline = {\n bottom: 'top',\n top: 'bottom',\n left: 'middle',\n right: 'middle'\n};\n\nfunction axisLabelExtend(orient, labels, oldScale, newScale, size, pad) {\n size = Math.max(size, 0) + pad;\n if (orient === 'left' || orient === 'top') {\n size *= -1;\n }\n if (orient === 'top' || orient === 'bottom') {\n dl.extend(labels.properties.enter, {\n x: oldScale,\n y: {value: size},\n });\n dl.extend(labels.properties.update, {\n x: newScale,\n y: {value: size},\n align: {value: 'center'},\n baseline: {value: axisBaseline[orient]}\n });\n } else {\n dl.extend(labels.properties.enter, {\n x: {value: size},\n y: oldScale,\n });\n dl.extend(labels.properties.update, {\n x: {value: size},\n y: newScale,\n align: {value: axisAlign[orient]},\n baseline: {value: 'middle'}\n });\n }\n}\n\nfunction axisTicksExtend(orient, ticks, oldScale, newScale, size, offset) {\n var sign = (orient === 'left' || orient === 'top') ? -1 : 1;\n if (size === Infinity) {\n size = (orient === 'top' || orient === 'bottom') ?\n {field: {group: 'height', level: 2}, mult: -sign, offset: offset*-sign} :\n {field: {group: 'width', level: 2}, mult: -sign, offset: offset*-sign};\n } else {\n size = {value: sign * size, offset: offset};\n }\n if (orient === 'top' || orient === 'bottom') {\n dl.extend(ticks.properties.enter, {\n x: oldScale,\n y: {value: 0},\n y2: size\n });\n dl.extend(ticks.properties.update, {\n x: newScale,\n y: {value: 0},\n y2: size\n });\n dl.extend(ticks.properties.exit, {\n x: newScale,\n });\n } else {\n dl.extend(ticks.properties.enter, {\n x: {value: 0},\n x2: size,\n y: oldScale\n });\n dl.extend(ticks.properties.update, {\n x: {value: 0},\n x2: size,\n y: newScale\n });\n dl.extend(ticks.properties.exit, {\n y: newScale,\n });\n }\n}\n\nfunction axisTitleExtend(orient, title, range, offset) {\n var update = title.properties.update,\n mid = ~~((range[0] + range[1]) / 2),\n sign = (orient === 'top' || orient === 'left') ? -1 : 1;\n\n if (orient === 'bottom' || orient === 'top') {\n update.x = {value: mid};\n update.angle = {value: 0};\n if (offset >= 0) update.y = {value: sign * offset};\n } else {\n update.y = {value: mid};\n update.angle = {value: orient === 'left' ? -90 : 90};\n if (offset >= 0) update.x = {value: sign * offset};\n }\n}\n\nfunction axisDomainExtend(orient, domain, range, size) {\n var path;\n if (orient === 'top' || orient === 'left') {\n size = -1 * size;\n }\n if (orient === 'bottom' || orient === 'top') {\n path = 'M' + range[0] + ',' + size + 'V0H' + range[1] + 'V' + size;\n } else {\n path = 'M' + size + ',' + range[0] + 'H0V' + range[1] + 'H' + size;\n }\n domain.properties.update.path = {value: path};\n}\n\nfunction axisUpdate(item, group, trans) {\n var o = trans ? {} : item,\n offset = item.mark.def.offset,\n orient = item.mark.def.orient,\n width = group.width,\n height = group.height; // TODO fallback to global w,h?\n\n if (dl.isArray(offset)) {\n var ofx = offset[0],\n ofy = offset[1];\n\n switch (orient) {\n case 'left': { Tuple.set(o, 'x', -ofx); Tuple.set(o, 'y', ofy); break; }\n case 'right': { Tuple.set(o, 'x', width + ofx); Tuple.set(o, 'y', ofy); break; }\n case 'bottom': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', height + ofy); break; }\n case 'top': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', -ofy); break; }\n default: { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', ofy); }\n }\n } else {\n if (dl.isObject(offset)) {\n offset = -group.scale(offset.scale)(offset.value);\n }\n\n switch (orient) {\n case 'left': { Tuple.set(o, 'x', -offset); Tuple.set(o, 'y', 0); break; }\n case 'right': { Tuple.set(o, 'x', width + offset); Tuple.set(o, 'y', 0); break; }\n case 'bottom': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', height + offset); break; }\n case 'top': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', -offset); break; }\n default: { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', 0); }\n }\n }\n\n if (trans) trans.interpolate(item, o);\n return true;\n}\n\nfunction axisTicks(config) {\n return {\n type: 'rule',\n interactive: false,\n key: 'data',\n properties: {\n enter: {\n stroke: {value: config.tickColor},\n strokeWidth: {value: config.tickWidth},\n opacity: {value: 1e-6}\n },\n exit: { opacity: {value: 1e-6} },\n update: { opacity: {value: 1} }\n }\n };\n}\n\nfunction axisTickLabels(config) {\n return {\n type: 'text',\n interactive: true,\n key: 'data',\n properties: {\n enter: {\n fill: {value: config.tickLabelColor},\n font: {value: config.tickLabelFont},\n fontSize: {value: config.tickLabelFontSize},\n opacity: {value: 1e-6},\n text: {field: 'label'}\n },\n exit: { opacity: {value: 1e-6} },\n update: { opacity: {value: 1} }\n }\n };\n}\n\nfunction axisTitle(config) {\n return {\n type: 'text',\n interactive: true,\n properties: {\n enter: {\n font: {value: config.titleFont},\n fontSize: {value: config.titleFontSize},\n fontWeight: {value: config.titleFontWeight},\n fill: {value: config.titleColor},\n align: {value: 'center'},\n baseline: {value: 'middle'},\n text: {field: 'data'}\n },\n update: {}\n }\n };\n}\n\nfunction axisDomain(config) {\n return {\n type: 'path',\n interactive: false,\n properties: {\n enter: {\n x: {value: 0.5},\n y: {value: 0.5},\n stroke: {value: config.axisColor},\n strokeWidth: {value: config.axisWidth}\n },\n update: {}\n }\n };\n}\n\nmodule.exports = axs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/scene/axis.js\n ** module id = 54\n ** module chunks = 0\n **/","var dl = require('datalib'),\n parseProperties = require('./properties');\n\nfunction parseMark(model, mark) {\n var props = mark.properties,\n group = mark.marks;\n\n // parse mark property definitions\n dl.keys(props).forEach(function(k) {\n props[k] = parseProperties(model, mark.type, props[k]);\n });\n\n // parse delay function\n if (mark.delay) {\n mark.delay = parseProperties(model, mark.type, {delay: mark.delay});\n }\n\n // recurse if group type\n if (group) {\n mark.marks = group.map(function(g) { return parseMark(model, g); });\n }\n\n return mark;\n}\n\nmodule.exports = parseMark;\n\nparseMark.schema = {\n \"defs\": {\n \"mark\": {\n \"type\": \"object\",\n\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"key\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"rect\", \"symbol\", \"path\", \"arc\",\n \"area\", \"line\", \"rule\", \"image\", \"text\", \"group\"]},\n\n \"from\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\"type\": \"string\"},\n \"mark\": {\"type\": \"string\"},\n \"transform\": {\"$ref\": \"#/defs/transform\"}\n },\n \"additionalProperties\": false\n },\n\n \"delay\": {\"$ref\": \"#/refs/numberValue\"},\n \"ease\": {\n \"enum\": [\"linear\", \"quad\", \"cubic\", \"sin\",\n \"exp\", \"circle\", \"bounce\"].reduce(function(acc, e) {\n [\"in\", \"out\", \"in-out\", \"out-in\"].forEach(function(m) {\n acc.push(e+\"-\"+m);\n });\n return acc;\n }, [])\n },\n\n \"interactive\": {\"type\": \"boolean\"},\n\n \"properties\": {\n \"type\": \"object\",\n \"properties\": {\n \"enter\": {\"$ref\": \"#/defs/propset\"},\n \"update\": {\"$ref\": \"#/defs/propset\"},\n \"exit\": {\"$ref\": \"#/defs/propset\"},\n \"hover\": {\"$ref\": \"#/defs/propset\"}\n },\n \"additionalProperties\": false,\n \"anyOf\": [{\"required\": [\"enter\"]}, {\"required\": [\"update\"]}]\n }\n },\n\n // \"additionalProperties\": false,\n \"required\": [\"type\"]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/mark.js\n ** module id = 55\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n log = require('vega-logging'),\n Tuple = require('vega-dataflow').Tuple;\n\nvar DEPS = [\"signals\", \"scales\", \"data\", \"fields\"];\n\nfunction properties(model, mark, spec) {\n var config = model.config(),\n code = \"\",\n names = dl.keys(spec),\n exprs = [], // parsed expressions injected in the generated code\n i, len, name, ref, vars = {},\n deps = {\n signals: {},\n scales: {},\n data: {},\n fields: {},\n nested: [],\n _nRefs: {}, // Temp stash to de-dupe nested refs.\n reflow: false\n };\n\n code += \"var o = trans ? {} : item, d=0, exprs=this.exprs, set=this.tpl.set, tmpl=signals||{}, t;\\n\" +\n // Stash for dl.template\n \"tmpl.datum = item.datum;\\n\" +\n \"tmpl.group = group;\\n\" +\n \"tmpl.parent = group.datum;\\n\";\n\n function handleDep(p) {\n if (ref[p] == null) return;\n var k = dl.array(ref[p]), i, n;\n for (i=0, n=k.length; i 0) ? \"\\n \" : \" \";\n if (ref.rule) {\n // a production rule valueref\n ref = rule(model, name, ref.rule, exprs);\n code += \"\\n \" + ref.code;\n } else if (dl.isArray(ref)) {\n // a production rule valueref as an array\n ref = rule(model, name, ref, exprs);\n code += \"\\n \" + ref.code;\n } else {\n // a simple valueref\n ref = valueRef(config, name, ref);\n code += \"d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n }\n\n vars[name] = true;\n DEPS.forEach(handleDep);\n deps.reflow = deps.reflow || ref.reflow;\n if (ref.nested.length) ref.nested.forEach(handleNestedRefs);\n }\n\n // If nested references are present, sort them based on their level\n // to speed up determination of whether encoders should be reeval'd.\n dl.keys(deps._nRefs).forEach(function(k) { deps.nested.push(deps._nRefs[k]); });\n deps.nested.sort(function(a, b) {\n a = a.level;\n b = b.level;\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n\n if (vars.x2) {\n if (vars.x) {\n code += \"\\n if (o.x > o.x2) { \" +\n \"\\n t = o.x;\" +\n \"\\n d += set(o, 'x', o.x2);\" +\n \"\\n d += set(o, 'x2', t); \" +\n \"\\n };\";\n code += \"\\n d += set(o, 'width', (o.x2 - o.x));\";\n } else if (vars.width) {\n code += \"\\n d += set(o, 'x', (o.x2 - o.width));\";\n } else {\n code += \"\\n d += set(o, 'x', o.x2);\";\n }\n }\n\n if (vars.xc) {\n if (vars.width) {\n code += \"\\n d += set(o, 'x', (o.xc - o.width/2));\" ;\n } else {\n code += \"\\n d += set(o, 'x', o.xc);\" ;\n }\n }\n\n if (vars.y2) {\n if (vars.y) {\n code += \"\\n if (o.y > o.y2) { \" +\n \"\\n t = o.y;\" +\n \"\\n d += set(o, 'y', o.y2);\" +\n \"\\n d += set(o, 'y2', t);\" +\n \"\\n };\";\n code += \"\\n d += set(o, 'height', (o.y2 - o.y));\";\n } else if (vars.height) {\n code += \"\\n d += set(o, 'y', (o.y2 - o.height));\";\n } else {\n code += \"\\n d += set(o, 'y', o.y2);\";\n }\n }\n\n if (vars.yc) {\n if (vars.height) {\n code += \"\\n d += set(o, 'y', (o.yc - o.height/2));\" ;\n } else {\n code += \"\\n d += set(o, 'y', o.yc);\" ;\n }\n }\n\n if (hasPath(mark, vars)) code += \"\\n d += (item.touch(), 1);\";\n code += \"\\n if (trans) trans.interpolate(item, o);\";\n code += \"\\n return d > 0;\";\n\n try {\n /* jshint evil:true */\n var encoder = Function('item', 'group', 'trans', 'db',\n 'signals', 'predicates', code);\n\n encoder.tpl = Tuple;\n encoder.exprs = exprs;\n encoder.util = dl;\n encoder.d3 = d3; // For color spaces\n dl.extend(encoder, dl.template.context);\n return {\n encode: encoder,\n signals: dl.keys(deps.signals),\n scales: dl.keys(deps.scales),\n data: dl.keys(deps.data),\n fields: dl.keys(deps.fields),\n nested: deps.nested,\n reflow: deps.reflow\n };\n } catch (e) {\n log.error(e);\n log.log(code);\n }\n}\n\nfunction dependencies(a, b) {\n if (!dl.isObject(a)) {\n a = {reflow: false, nested: []};\n DEPS.forEach(function(d) { a[d] = []; });\n }\n\n if (dl.isObject(b)) {\n a.reflow = a.reflow || b.reflow;\n a.nested.push.apply(a.nested, b.nested);\n DEPS.forEach(function(d) { a[d].push.apply(a[d], b[d]); });\n }\n\n return a;\n}\n\nfunction hasPath(mark, vars) {\n return vars.path ||\n ((mark==='area' || mark==='line') &&\n (vars.x || vars.x2 || vars.width ||\n vars.y || vars.y2 || vars.height ||\n vars.tension || vars.interpolate));\n}\n\nfunction rule(model, name, rules, exprs) {\n var config = model.config(),\n deps = dependencies(),\n inputs = [],\n code = '';\n\n (rules||[]).forEach(function(r, i) {\n var ref = valueRef(config, name, r);\n dependencies(deps, ref);\n\n if (r.test) {\n // rule uses an expression instead of a predicate.\n var exprFn = model.expr(r.test);\n deps.signals.push.apply(deps.signals, exprFn.globals);\n deps.data.push.apply(deps.data, exprFn.dataSources);\n\n code += \"if (exprs[\" + exprs.length + \"](item.datum, null)) {\" +\n \"\\n d += set(o, \"+dl.str(name)+\", \" +ref.val+\");\";\n code += rules[i+1] ? \"\\n } else \" : \" }\";\n\n exprs.push(exprFn.fn);\n } else {\n var def = r.predicate,\n predName = def && (def.name || def),\n pred = model.predicate(predName),\n p = 'predicates['+dl.str(predName)+']',\n input = [], args = name+'_arg'+i;\n\n if (dl.isObject(def)) {\n dl.keys(def).forEach(function(k) {\n if (k === 'name') return;\n var ref = valueRef(config, i, def[k], true);\n input.push(dl.str(k)+': '+ref.val);\n dependencies(deps, ref);\n });\n }\n\n if (predName) {\n // append the predicates dependencies to our dependencies\n deps.signals.push.apply(deps.signals, pred.signals);\n deps.data.push.apply(deps.data, pred.data);\n inputs.push(args+\" = {\\n \"+input.join(\",\\n \")+\"\\n }\");\n code += \"if (\"+p+\".call(\"+p+\",\"+args+\", db, signals, predicates)) {\" +\n \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n code += rules[i+1] ? \"\\n } else \" : \" }\";\n } else {\n code += \"{\" +\n \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\"+\n \"\\n }\\n\";\n }\n }\n });\n\n if (inputs.length) code = \"var \" + inputs.join(\",\\n \") + \";\\n \" + code;\n return (deps.code = code, deps);\n}\n\nfunction valueRef(config, name, ref, predicateArg) {\n if (ref == null) return null;\n\n if (name==='fill' || name==='stroke') {\n if (ref.c) {\n return colorRef(config, 'hcl', ref.h, ref.c, ref.l);\n } else if (ref.h || ref.s) {\n return colorRef(config, 'hsl', ref.h, ref.s, ref.l);\n } else if (ref.l || ref.a) {\n return colorRef(config, 'lab', ref.l, ref.a, ref.b);\n } else if (ref.r || ref.g || ref.b) {\n return colorRef(config, 'rgb', ref.r, ref.g, ref.b);\n }\n }\n\n // initialize value\n var val = null, scale = null,\n deps = dependencies(),\n sgRef = null, fRef = null, sRef = null, tmpl = {};\n\n if (ref.template !== undefined) {\n val = dl.template.source(ref.template, 'tmpl', tmpl);\n dl.keys(tmpl).forEach(function(k) {\n var f = dl.field(k),\n a = f.shift();\n if (a === 'parent' || a === 'group') {\n deps.nested.push({\n parent: a === 'parent',\n group: a === 'group',\n level: 1\n });\n } else if (a === 'datum') {\n deps.fields.push(f[0]);\n } else {\n deps.signals.push(a);\n }\n });\n }\n\n if (ref.value !== undefined) {\n val = dl.str(ref.value);\n }\n\n if (ref.signal !== undefined) {\n sgRef = dl.field(ref.signal);\n val = 'signals['+sgRef.map(dl.str).join('][')+']';\n deps.signals.push(sgRef.shift());\n }\n\n if (ref.field !== undefined) {\n ref.field = dl.isString(ref.field) ? {datum: ref.field} : ref.field;\n fRef = fieldRef(ref.field);\n val = fRef.val;\n dependencies(deps, fRef);\n }\n\n if (ref.scale !== undefined) {\n sRef = scaleRef(ref.scale);\n scale = sRef.val;\n dependencies(deps, sRef);\n deps.scales.push(ref.scale.name || ref.scale);\n\n // run through scale function if val specified.\n // if no val, scale function is predicate arg.\n if (val !== null || ref.band || ref.mult || ref.offset || !predicateArg) {\n val = scale + (ref.band ? '.rangeBand()' :\n '('+(val !== null ? val : 'item.datum.data')+')');\n } else if (predicateArg) {\n val = scale;\n }\n }\n\n // multiply, offset, return value\n val = '(' + (ref.mult?(dl.number(ref.mult)+' * '):'') + val + ')' +\n (ref.offset ? ' + ' + dl.number(ref.offset) : '');\n\n // Collate dependencies\n return (deps.val = val, deps);\n}\n\nfunction colorRef(config, type, x, y, z) {\n var xx = x ? valueRef(config, '', x) : config.color[type][0],\n yy = y ? valueRef(config, '', y) : config.color[type][1],\n zz = z ? valueRef(config, '', z) : config.color[type][2],\n deps = dependencies();\n\n [xx, yy, zz].forEach(function(v) {\n if (dl.isArray) return;\n dependencies(deps, v);\n });\n\n var val = '(this.d3.' + type + '(' + [xx.val, yy.val, zz.val].join(',') + ') + \"\")';\n return (deps.val = val, deps);\n}\n\n// {field: {datum: \"foo\"} } -> item.datum.foo\n// {field: {group: \"foo\"} } -> group.foo\n// {field: {parent: \"foo\"} } -> group.datum.foo\nfunction fieldRef(ref) {\n if (dl.isString(ref)) {\n return {val: dl.field(ref).map(dl.str).join('][')};\n }\n\n // Resolve nesting/parent lookups\n var l = ref.level || 1,\n nested = (ref.group || ref.parent) && l,\n scope = nested ? Array(l).join('group.mark.') : '',\n r = fieldRef(ref.datum || ref.group || ref.parent || ref.signal),\n val = r.val,\n deps = dependencies(null, r);\n\n if (ref.datum) {\n val = 'item.datum['+val+']';\n deps.fields.push(ref.datum);\n } else if (ref.group) {\n val = scope+'group['+val+']';\n deps.nested.push({ level: l, group: true });\n } else if (ref.parent) {\n val = scope+'group.datum['+val+']';\n deps.nested.push({ level: l, parent: true });\n } else if (ref.signal) {\n val = 'signals['+val+']';\n deps.signals.push(dl.field(ref.signal)[0]);\n deps.reflow = true;\n }\n\n return (deps.val = val, deps);\n}\n\n// {scale: \"x\"}\n// {scale: {name: \"x\"}},\n// {scale: fieldRef}\nfunction scaleRef(ref) {\n var scale = null,\n fr = null,\n deps = dependencies();\n\n if (dl.isString(ref)) {\n scale = dl.str(ref);\n } else if (ref.name) {\n scale = dl.isString(ref.name) ? dl.str(ref.name) : (fr = fieldRef(ref.name)).val;\n } else {\n scale = (fr = fieldRef(ref)).val;\n }\n\n scale = '(item.mark._scaleRefs['+scale+'] = 1, group.scale('+scale+'))';\n if (ref.invert) scale += '.invert';\n\n // Mark scale refs as they're dealt with separately in mark._scaleRefs.\n if (fr) fr.nested.forEach(function(g) { g.scale = true; });\n return fr ? (fr.val = scale, fr) : (deps.val = scale, deps);\n}\n\nmodule.exports = properties;\n\nfunction valueSchema(type) {\n type = dl.isArray(type) ? {\"enum\": type} : {\"type\": type};\n var modType = type.type === \"number\" && type.type || \"string\";\n var valRef = {\n \"type\": \"object\",\n \"allOf\": [{\"$ref\": \"#/refs/\" + modType + \"Modifiers\"}, {\n \"oneOf\": [{\n \"$ref\": \"#/refs/signal\",\n \"required\": [\"signal\"]\n }, {\n \"properties\": {\"value\": type},\n \"required\": [\"value\"]\n }, {\n \"properties\": {\"field\": {\"$ref\": \"#/refs/field\"}},\n \"required\": [\"field\"]\n }, {\n \"properties\": {\"band\": {\"type\": \"boolean\"}},\n \"required\": [\"band\"]\n }]\n }]\n };\n\n if (type.type === \"string\") {\n valRef.allOf[1].oneOf.push({\n \"properties\": {\"template\": {\"type\": \"string\"}},\n \"required\": [\"template\"]\n });\n }\n\n return {\n \"oneOf\": [{\n \"type\": \"object\",\n \"properties\": {\n \"rule\": {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"rule\"]\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n }\n },\n valRef]\n };\n}\n\nproperties.schema = {\n \"refs\": {\n \"field\": {\n \"title\": \"FieldRef\",\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"oneOf\": [\n {\"$ref\": \"#/refs/signal\"},\n {\n \"type\": \"object\",\n \"properties\": {\"datum\": {\"$ref\": \"#/refs/field\"}},\n \"required\": [\"datum\"],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"group\": {\"$ref\": \"#/refs/field\"},\n \"level\": {\"type\": \"number\"}\n },\n \"required\": [\"group\"],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"parent\": {\"$ref\": \"#/refs/field\"},\n \"level\": {\"type\": \"number\"}\n },\n \"required\": [\"parent\"],\n \"additionalProperties\": false\n }\n ]\n }\n ]\n },\n\n \"scale\": {\n \"title\": \"ScaleRef\",\n \"oneOf\": [\n {\"$ref\": \"#/refs/field\"},\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\"$ref\": \"#/refs/field\"},\n \"invert\": {\"type\": \"boolean\", \"default\": false}\n },\n \"required\": [\"name\"]\n }\n ]\n },\n\n \"stringModifiers\": {\n \"properties\": {\n \"scale\": {\"$ref\": \"#/refs/scale\"}\n }\n },\n\n \"numberModifiers\": {\n \"properties\": {\n \"mult\": {\"type\": \"number\"},\n \"offset\": {\"type\": \"number\"},\n \"scale\": {\"$ref\": \"#/refs/scale\"}\n }\n },\n\n \"value\": valueSchema({}, \"value\"),\n \"numberValue\": valueSchema(\"number\", \"numberValue\"),\n \"stringValue\": valueSchema(\"string\", \"stringValue\"),\n \"booleanValue\": valueSchema(\"boolean\", \"booleanValue\"),\n \"arrayValue\": valueSchema(\"array\", \"arrayValue\"),\n\n \"colorValue\": {\n \"title\": \"ColorRef\",\n \"oneOf\": [{\"$ref\": \"#/refs/stringValue\"}, {\n \"type\": \"object\",\n \"properties\": {\n \"r\": {\"$ref\": \"#/refs/numberValue\"},\n \"g\": {\"$ref\": \"#/refs/numberValue\"},\n \"b\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"r\", \"g\", \"b\"]\n }, {\n \"type\": \"object\",\n \"properties\": {\n \"h\": {\"$ref\": \"#/refs/numberValue\"},\n \"s\": {\"$ref\": \"#/refs/numberValue\"},\n \"l\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"h\", \"s\", \"l\"]\n }, {\n \"type\": \"object\",\n \"properties\": {\n \"l\": {\"$ref\": \"#/refs/numberValue\"},\n \"a\": {\"$ref\": \"#/refs/numberValue\"},\n \"b\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"l\", \"a\", \"b\"]\n }, {\n \"type\": \"object\",\n \"properties\": {\n \"h\": {\"$ref\": \"#/refs/numberValue\"},\n \"c\": {\"$ref\": \"#/refs/numberValue\"},\n \"l\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"h\", \"c\", \"l\"]\n }]\n }\n },\n\n \"defs\": {\n \"rule\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"predicate\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"type\": \"object\",\n \"properties\": {\"name\": { \"type\": \"string\" }},\n \"required\": [\"name\"]\n }\n ]\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\"test\": {\"type\": \"string\"}}\n }\n ]\n },\n \"propset\": {\n \"title\": \"Mark property set\",\n \"type\": \"object\",\n \"properties\": {\n // Common Properties\n \"x\": {\"$ref\": \"#/refs/numberValue\"},\n \"x2\": {\"$ref\": \"#/refs/numberValue\"},\n \"xc\": {\"$ref\": \"#/refs/numberValue\"},\n \"width\": {\"$ref\": \"#/refs/numberValue\"},\n \"y\": {\"$ref\": \"#/refs/numberValue\"},\n \"y2\": {\"$ref\": \"#/refs/numberValue\"},\n \"yc\": {\"$ref\": \"#/refs/numberValue\"},\n \"height\": {\"$ref\": \"#/refs/numberValue\"},\n \"opacity\": {\"$ref\": \"#/refs/numberValue\"},\n \"fill\": {\"$ref\": \"#/refs/colorValue\"},\n \"fillOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n \"stroke\": {\"$ref\": \"#/refs/colorValue\"},\n \"strokeWidth\": {\"$ref\": \"#/refs/numberValue\"},\n \"strokeOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n \"strokeDash\": {\"$ref\": \"#/refs/arrayValue\"},\n \"strokeDashOffset\": {\"$ref\": \"#/refs/numberValue\"},\n \"cursor\": {\"$ref\": \"#/refs/stringValue\"},\n\n // Group-mark properties\n \"clip\": {\"$ref\": \"#/refs/booleanValue\"},\n\n // Symbol-mark properties\n \"size\": {\"$ref\": \"#/refs/numberValue\"},\n \"shape\": valueSchema([\"circle\", \"square\",\n \"cross\", \"diamond\", \"triangle-up\", \"triangle-down\"]),\n\n // Path-mark properties\n \"path\": {\"$ref\": \"#/refs/stringValue\"},\n\n // Arc-mark properties\n \"innerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n \"outerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n \"startAngle\": {\"$ref\": \"#/refs/numberValue\"},\n \"endAngle\": {\"$ref\": \"#/refs/numberValue\"},\n\n // Area- and line-mark properties\n \"interpolate\": valueSchema([\"linear\", \"step-before\", \"step-after\",\n \"basis\", \"basis-open\", \"cardinal\", \"cardinal-open\", \"monotone\"]),\n \"tension\": {\"$ref\": \"#/refs/numberValue\"},\n \"orient\": valueSchema([\"horizontal\", \"vertical\"]),\n\n // Image-mark properties\n \"url\": {\"$ref\": \"#/refs/stringValue\"},\n \"align\": valueSchema([\"left\", \"right\", \"center\"]),\n \"baseline\": valueSchema([\"top\", \"middle\", \"bottom\", \"alphabetic\"]),\n\n // Text-mark properties\n \"text\": {\"$ref\": \"#/refs/stringValue\"},\n \"dx\": {\"$ref\": \"#/refs/numberValue\"},\n \"dy\": {\"$ref\": \"#/refs/numberValue\"},\n \"radius\":{\"$ref\": \"#/refs/numberValue\"},\n \"theta\": {\"$ref\": \"#/refs/numberValue\"},\n \"angle\": {\"$ref\": \"#/refs/numberValue\"},\n \"font\": {\"$ref\": \"#/refs/stringValue\"},\n \"fontSize\": {\"$ref\": \"#/refs/numberValue\"},\n \"fontWeight\": {\"$ref\": \"#/refs/stringValue\"},\n \"fontStyle\": {\"$ref\": \"#/refs/stringValue\"}\n },\n\n \"additionalProperties\": false\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/properties.js\n ** module id = 56\n ** module chunks = 0\n **/","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ 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 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/d3/d3.js\n ** module id = 57\n ** module chunks = 0\n **/","var dl = require('datalib'),\n u = {};\n\ndl.extend(u, require('./format'));\nmodule.exports = dl.extend(u, dl);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/util/index.js\n ** module id = 58\n ** module chunks = 0\n **/","var dl = require('datalib');\n\nvar TIME = 'time',\n UTC = 'utc',\n STRING = 'string',\n ORDINAL = 'ordinal',\n NUMBER = 'number';\n\nfunction getTickFormat(scale, tickCount, tickFormatType, tickFormatString) {\n var formatType = tickFormatType || inferFormatType(scale);\n return getFormatter(scale, tickCount, formatType, tickFormatString);\n}\n\nfunction inferFormatType(scale) {\n switch (scale.type) {\n case TIME: return TIME;\n case UTC: return UTC;\n case ORDINAL: return STRING;\n default: return NUMBER;\n }\n}\n\n// Adapted from d3 log scale\n// TODO customize? replace with range-size-aware filtering?\nfunction logFilter(scale, domain, count, f) {\n if (count == null) return f;\n var base = scale.base(),\n k = Math.min(base, scale.ticks().length / count),\n v = domain[0] > 0 ? (e = 1e-12, Math.ceil) : (e = -1e-12, Math.floor),\n e;\n function log(x) {\n return (domain[0] < 0 ?\n -Math.log(x > 0 ? 0 : -x) :\n Math.log(x < 0 ? 0 : x)) / Math.log(base);\n }\n function pow(x) {\n return domain[0] < 0 ? -Math.pow(base, -x) : Math.pow(base, x);\n }\n return function(d) {\n return pow(v(log(d) + e)) / d >= k ? f(d) : '';\n };\n}\n\nfunction getFormatter(scale, tickCount, formatType, str) {\n var fmt = dl.format,\n log = scale.type === 'log',\n domain;\n\n switch (formatType) {\n case NUMBER:\n domain = scale.domain();\n return log ?\n logFilter(scale, domain, tickCount, fmt.auto.number(str || null)) :\n fmt.auto.linear(domain, tickCount, str || null);\n case TIME: return (str ? fmt : fmt.auto).time(str);\n case UTC: return (str ? fmt : fmt.auto).utc(str);\n default: return String;\n }\n}\n\nmodule.exports = {\n getTickFormat: getTickFormat\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/util/format.js\n ** module id = 59\n ** module chunks = 0\n **/","module.exports = {\n path: require('./path'),\n render: require('./render'),\n Item: require('./util/Item'),\n bound: require('./util/bound'),\n Bounds: require('./util/Bounds'),\n canvas: require('./util/canvas'),\n Gradient: require('./util/Gradient'),\n toJSON: require('./util/scene').toJSON,\n fromJSON: require('./util/scene').fromJSON\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/index.js\n ** module id = 60\n ** module chunks = 0\n **/","module.exports = {\n parse: require('./parse'),\n render: require('./render')\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/path/index.js\n ** module id = 61\n ** module chunks = 0\n **/","// Path parsing and rendering code adapted from fabric.js -- Thanks!\nvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\nmodule.exports = function(pathstr) {\n var result = [],\n path,\n curr,\n chunks,\n parsed, param,\n cmd, len, i, j, n, m;\n\n // First, break path into command sequence\n path = pathstr\n .slice()\n .replace(regexp[0], '###$1')\n .split(regexp[1])\n .slice(1);\n\n // Next, parse each command in turn\n for (i=0, n=path.length; i len) {\n for (j=1, m=parsed.length; j 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = (-sin_th) / ry;\n var a11 = (cos_th) / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n\n var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\n var th0 = Math.atan2(y0-yc, x0-xc);\n var th1 = Math.atan2(y1-yc, x1-xc);\n\n var th_arc = th1-th0;\n if (th_arc < 0 && sweep === 1){\n th_arc += 2 * Math.PI;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= 2 * Math.PI;\n }\n\n var segs = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n var result = [];\n for (var i=0; i=0;) {\n if (h[i].type !== type) continue;\n if (!handler || h[i].handler === handler) h.splice(i, 1);\n }\n return this;\n};\n\nprototype.pickEvent = function(evt) {\n var rect = this._canvas.getBoundingClientRect(),\n pad = this._padding, x, y;\n return this.pick(this._scene,\n x = (evt.clientX - rect.left),\n y = (evt.clientY - rect.top),\n x - pad.left, y - pad.top);\n};\n\n// find the scenegraph item at the current mouse position\n// x, y -- the absolute x, y mouse coordinates on the canvas element\n// gx, gy -- the relative coordinates within the current group\nprototype.pick = function(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n};\n\nmodule.exports = CanvasHandler;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/CanvasHandler.js\n ** module id = 67\n ** module chunks = 0\n **/","// create a new DOM element\nfunction create(doc, tag, ns) {\n return ns ? doc.createElementNS(ns, tag) : doc.createElement(tag);\n}\n\n// remove element from DOM\n// recursively remove parent elements if empty\nfunction remove(el) {\n if (!el) return;\n var p = el.parentNode;\n if (p) {\n p.removeChild(el);\n if (!p.childNodes || !p.childNodes.length) remove(p);\n }\n}\n\nmodule.exports = {\n // find first child element with matching tag\n find: function(el, tag) {\n tag = tag.toLowerCase();\n for (var i=0, n=el.childNodes.length; i index) {\n el.removeChild(el.childNodes[--curr]);\n }\n return el;\n },\n remove: remove,\n // generate css class name for mark\n cssClass: function(mark) {\n return 'mark-' + mark.marktype + (mark.name ? ' '+mark.name : '');\n },\n // generate string for an opening xml tag\n // tag: the name of the xml tag\n // attr: hash of attribute name-value pairs to include\n // raw: additional raw string to include in tag markup\n openTag: function(tag, attr, raw) {\n var s = '<' + tag, key, val;\n if (attr) {\n for (key in attr) {\n val = attr[key];\n if (val != null) {\n s += ' ' + key + '=\"' + val + '\"';\n }\n }\n }\n if (raw) s += ' ' + raw;\n return s + '>';\n },\n // generate string for closing xml tag\n // tag: the name of the xml tag\n closeTag: function(tag) {\n return '';\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/dom.js\n ** module id = 68\n ** module chunks = 0\n **/","function Handler() {\n this._active = null;\n this._handlers = {};\n}\n\nvar prototype = Handler.prototype;\n\nprototype.initialize = function(el, pad, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.padding(pad);\n};\n\nprototype.element = function() {\n return this._el;\n};\n\nprototype.padding = function(pad) {\n this._padding = pad || {top:0, left:0, bottom:0, right:0};\n return this;\n};\n\nprototype.scene = function(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n};\n\n// add an event handler\n// subclasses should override\nprototype.on = function(/*type, handler*/) {};\n\n// remove an event handler\n// subclasses should override\nprototype.off = function(/*type, handler*/) {};\n\n// return an array with all registered event handlers\nprototype.handlers = function() {\n var h = this._handlers, a = [], k;\n for (k in h) { a.push.apply(a, h[k]); }\n return a;\n};\n\nprototype.eventName = function(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0,i);\n};\n\nmodule.exports = Handler;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/Handler.js\n ** module id = 69\n ** module chunks = 0\n **/","module.exports = {\n arc: require('./arc'),\n area: require('./area'),\n group: require('./group'),\n image: require('./image'),\n line: require('./line'),\n path: require('./path'),\n rect: require('./rect'),\n rule: require('./rule'),\n symbol: require('./symbol'),\n text: require('./text')\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/marks/index.js\n ** module id = 70\n ** module chunks = 0\n **/","var util = require('./util');\nvar halfpi = Math.PI / 2;\n\nfunction path(g, o) {\n var x = o.x || 0,\n y = o.y || 0,\n ir = o.innerRadius || 0,\n or = o.outerRadius || 0,\n sa = (o.startAngle || 0) - halfpi,\n ea = (o.endAngle || 0) - halfpi;\n g.beginPath();\n if (ir === 0) g.moveTo(x, y);\n else g.arc(x, y, ir, sa, ea, 0);\n g.arc(x, y, or, ea, sa, 1);\n g.closePath();\n}\n\nmodule.exports = {\n draw: util.drawAll(path),\n pick: util.pickPath(path)\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/marks/arc.js\n ** module id = 71\n ** module chunks = 0\n **/","function drawPathOne(path, g, o, items) {\n if (path(g, items)) return;\n\n var opac = o.opacity == null ? 1 : o.opacity;\n if (opac===0) return;\n\n if (o.fill && fill(g, o, opac)) { g.fill(); }\n if (o.stroke && stroke(g, o, opac)) { g.stroke(); }\n}\n\nfunction drawPathAll(path, g, scene, bounds) {\n var i, len, item;\n for (i=0, len=scene.items.length; i= 0;) {\n o = scene.items[i]; b = o.bounds;\n // first hit test against bounding box\n if ((b && !b.contains(gx, gy)) || !b) continue;\n // if in bounding box, perform more careful test\n if (test(g, o, x, y, gx, gy)) return o;\n }\n return null;\n };\n}\n\nfunction testPath(path, filled) {\n return function(g, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = (filled == null) ? item.fill : filled,\n stroke = item.stroke && g.isPointInStroke, lw, lc;\n\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n g.lineWidth = lw != null ? lw : 1;\n g.lineCap = lc != null ? lc : 'butt';\n }\n\n return path(g, o) ? false :\n (fill && g.isPointInPath(x, y)) ||\n (stroke && g.isPointInStroke(x, y));\n };\n}\n\nfunction pickPath(path) {\n return pick(testPath(path));\n}\n\nfunction fill(g, o, opacity) {\n opacity *= (o.fillOpacity==null ? 1 : o.fillOpacity);\n if (opacity > 0) {\n g.globalAlpha = opacity;\n g.fillStyle = color(g, o, o.fill);\n return true;\n } else {\n return false;\n }\n}\n\nfunction stroke(g, o, opacity) {\n var lw = (lw = o.strokeWidth) != null ? lw : 1, lc;\n if (lw <= 0) return false;\n\n opacity *= (o.strokeOpacity==null ? 1 : o.strokeOpacity);\n if (opacity > 0) {\n g.globalAlpha = opacity;\n g.strokeStyle = color(g, o, o.stroke);\n g.lineWidth = lw;\n g.lineCap = (lc = o.strokeCap) != null ? lc : 'butt';\n g.vgLineDash(o.strokeDash || null);\n g.vgLineDashOffset(o.strokeDashOffset || 0);\n return true;\n } else {\n return false;\n }\n}\n\nfunction color(g, o, value) {\n return (value.id) ?\n gradient(g, value, o.bounds) :\n value;\n}\n\nfunction gradient(g, p, b) {\n var w = b.width(),\n h = b.height(),\n x1 = b.x1 + p.x1 * w,\n y1 = b.y1 + p.y1 * h,\n x2 = b.x1 + p.x2 * w,\n y2 = b.y1 + p.y2 * h,\n grad = g.createLinearGradient(x1, y1, x2, y2),\n stop = p.stops,\n i, n;\n\n for (i=0, n=stop.length; i 0) {\n if (group.fill && util.fill(g, group, opac)) {\n g.fillRect(gx, gy, w, h);\n }\n if (group.stroke && util.stroke(g, group, opac)) {\n g.strokeRect(gx, gy, w, h);\n }\n }\n }\n\n // setup graphics context\n g.save();\n g.translate(gx, gy);\n if (group.clip) {\n g.beginPath();\n g.rect(0, 0, w, h);\n g.clip();\n }\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n for (j=0, m=axes.length; j=0;) {\n group = groups[i];\n\n // first hit test against bounding box\n // if a group is clipped, that should be handled by the bounds check.\n b = group.bounds;\n if (b && !b.contains(gx, gy)) continue;\n\n // passed bounds check, so test sub-groups\n axes = group.axisItems || EMPTY;\n items = group.items || EMPTY;\n legends = group.legendItems || EMPTY;\n dx = (group.x || 0);\n dy = (group.y || 0);\n\n g.save();\n g.translate(dx, dy);\n dx = gx - dx;\n dy = gy - dy;\n for (j=legends.length; --j>=0;) {\n subscene = legends[j];\n if (subscene.interactive !== false) {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n for (j=axes.length; --j>=0;) {\n subscene = axes[j];\n if (subscene.interactive !== false && subscene.layer !== 'back') {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n for (j=items.length; --j>=0;) {\n subscene = items[j];\n if (subscene.interactive !== false) {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n for (j=axes.length; --j>=0;) {\n subscene = axes[j];\n if (subscene.interative !== false && subscene.layer === 'back') {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n g.restore();\n\n if (scene.interactive !== false && (group.fill || group.stroke) &&\n dx >= 0 && dx <= group.width && dy >= 0 && dy <= group.height) {\n return group;\n }\n }\n\n return null;\n}\n\nmodule.exports = {\n draw: draw,\n pick: pick\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/marks/group.js\n ** module id = 75\n ** module chunks = 0\n **/","var util = require('./util');\n\nfunction draw(g, scene, bounds) {\n if (!scene.items || !scene.items.length) return;\n\n var renderer = this,\n items = scene.items, o;\n\n for (var i=0, len=items.length; i this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n};\n\nprototype.expand = function(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n};\n\nprototype.round = function() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n};\n\nprototype.translate = function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n};\n\nprototype.rotate = function(angle, x, y) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x*cos + y*sin,\n cy = y - x*sin - y*cos,\n x1 = this.x1, x2 = this.x2,\n y1 = this.y1, y2 = this.y2;\n\n return this.clear()\n .add(cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy)\n .add(cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy)\n .add(cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy)\n .add(cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy);\n};\n\nprototype.union = function(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.encloses = function(b) {\n return b && (\n this.x1 <= b.x1 &&\n this.x2 >= b.x2 &&\n this.y1 <= b.y1 &&\n this.y2 >= b.y2\n );\n};\n\nprototype.alignsWith = function(b) {\n return b && (\n this.x1 == b.x1 ||\n this.x2 == b.x2 ||\n this.y1 == b.y1 ||\n this.y2 == b.y2\n );\n};\n\nprototype.intersects = function(b) {\n return b && !(\n this.x2 < b.x1 ||\n this.x1 > b.x2 ||\n this.y2 < b.y1 ||\n this.y1 > b.y2\n );\n};\n\nprototype.contains = function(x, y) {\n return !(\n x < this.x1 ||\n x > this.x2 ||\n y < this.y1 ||\n y > this.y2\n );\n};\n\nprototype.width = function() {\n return this.x2 - this.x1;\n};\n\nprototype.height = function() {\n return this.y2 - this.y1;\n};\n\nmodule.exports = Bounds;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/Bounds.js\n ** module id = 83\n ** module chunks = 0\n **/","var BoundsContext = require('./BoundsContext'),\n Bounds = require('./Bounds'),\n canvas = require('./canvas'),\n svg = require('./svg'),\n text = require('./text'),\n paths = require('../path'),\n parse = paths.parse,\n drawPath = paths.render,\n areaPath = svg.path.area,\n linePath = svg.path.line,\n halfpi = Math.PI / 2,\n sqrt3 = Math.sqrt(3),\n tan30 = Math.tan(30 * Math.PI / 180),\n g2D = null,\n bc = BoundsContext();\n\nfunction context() {\n return g2D || (g2D = canvas.instance(1,1).getContext('2d'));\n}\n\nfunction strokeBounds(o, bounds) {\n if (o.stroke && o.opacity !== 0 && o.stokeOpacity !== 0) {\n bounds.expand(o.strokeWidth != null ? o.strokeWidth : 1);\n }\n return bounds;\n}\n\nfunction pathBounds(o, path, bounds, x, y) {\n if (path == null) {\n bounds.set(0, 0, 0, 0);\n } else {\n drawPath(bc.bounds(bounds), path, x, y);\n strokeBounds(o, bounds);\n }\n return bounds;\n}\n\nfunction path(o, bounds) {\n var p = o.path ? o.pathCache || (o.pathCache = parse(o.path)) : null;\n return pathBounds(o, p, bounds, o.x, o.y);\n}\n\nfunction area(mark, bounds) {\n if (mark.items.length === 0) return bounds;\n var items = mark.items,\n item = items[0],\n p = item.pathCache || (item.pathCache = parse(areaPath(items)));\n return pathBounds(item, p, bounds);\n}\n\nfunction line(mark, bounds) {\n if (mark.items.length === 0) return bounds;\n var items = mark.items,\n item = items[0],\n p = item.pathCache || (item.pathCache = parse(linePath(items)));\n return pathBounds(item, p, bounds);\n}\n\nfunction rect(o, bounds) {\n var x, y;\n return strokeBounds(o, bounds.set(\n x = o.x || 0,\n y = o.y || 0,\n (x + o.width) || 0,\n (y + o.height) || 0\n ));\n}\n\nfunction image(o, bounds) {\n var x = o.x || 0,\n y = o.y || 0,\n w = o.width || 0,\n h = o.height || 0;\n x = x - (o.align === 'center' ? w/2 : (o.align === 'right' ? w : 0));\n y = y - (o.baseline === 'middle' ? h/2 : (o.baseline === 'bottom' ? h : 0));\n return bounds.set(x, y, x+w, y+h);\n}\n\nfunction rule(o, bounds) {\n var x1, y1;\n return strokeBounds(o, bounds.set(\n x1 = o.x || 0,\n y1 = o.y || 0,\n o.x2 != null ? o.x2 : x1,\n o.y2 != null ? o.y2 : y1\n ));\n}\n\nfunction arc(o, bounds) {\n var cx = o.x || 0,\n cy = o.y || 0,\n ir = o.innerRadius || 0,\n or = o.outerRadius || 0,\n sa = (o.startAngle || 0) - halfpi,\n ea = (o.endAngle || 0) - halfpi,\n xmin = Infinity, xmax = -Infinity,\n ymin = Infinity, ymax = -Infinity,\n a, i, n, x, y, ix, iy, ox, oy;\n\n var angles = [sa, ea],\n s = sa - (sa % halfpi);\n for (i=0; i<4 && s=0;) {\n if (h[i].type === type && !handler || h[i].handler === handler) {\n svg.removeEventListener(name, h[i].listener);\n h.splice(i, 1);\n }\n }\n return this;\n};\n\nmodule.exports = SVGHandler;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/svg/SVGHandler.js\n ** module id = 93\n ** module chunks = 0\n **/","var ImageLoader = require('../../util/ImageLoader'),\n Renderer = require('../Renderer'),\n text = require('../../util/text'),\n DOM = require('../../util/dom'),\n SVG = require('../../util/svg'),\n ns = SVG.metadata.xmlns,\n marks = require('./marks');\n\nfunction SVGRenderer(loadConfig) {\n Renderer.call(this);\n this._loader = new ImageLoader(loadConfig);\n this._dirtyID = 0;\n}\n\nvar base = Renderer.prototype;\nvar prototype = (SVGRenderer.prototype = Object.create(base));\nprototype.constructor = SVGRenderer;\n\nprototype.initialize = function(el, width, height, padding) {\n if (el) {\n this._svg = DOM.child(el, 0, 'svg', ns, 'marks');\n DOM.clear(el, 1);\n // set the svg root group\n this._root = DOM.child(this._svg, 0, 'g', ns);\n DOM.clear(this._svg, 1);\n }\n\n // create the svg definitions cache\n this._defs = {\n clip_id: 1,\n gradient: {},\n clipping: {}\n };\n\n // set background color if defined\n this.background(this._bgcolor);\n\n return base.initialize.call(this, el, width, height, padding);\n};\n\nprototype.background = function(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n};\n\nprototype.resize = function(width, height, padding) {\n base.resize.call(this, width, height, padding);\n \n if (this._svg) {\n var w = this._width,\n h = this._height,\n p = this._padding;\n \n this._svg.setAttribute('width', w + p.left + p.right);\n this._svg.setAttribute('height', h + p.top + p.bottom);\n \n this._root.setAttribute('transform', 'translate('+p.left+','+p.top+')');\n }\n\n return this;\n};\n\nprototype.svg = function() {\n if (!this._svg) return null;\n\n var attr = {\n 'class': 'marks',\n 'width': this._width + this._padding.left + this._padding.right,\n 'height': this._height + this._padding.top + this._padding.bottom,\n };\n for (var key in SVG.metadata) {\n attr[key] = SVG.metadata[key];\n }\n\n return DOM.openTag('svg', attr) + this._svg.innerHTML + DOM.closeTag('svg');\n};\n\nprototype.imageURL = function(url) {\n return this._loader.imageURL(url);\n};\n\n\n// -- Render entry point --\n\nprototype.render = function(scene, items) {\n if (this._dirtyCheck(items)) {\n if (this._dirtyAll) this._resetDefs();\n this.draw(this._root, scene, -1);\n DOM.clear(this._root, 1);\n }\n this.updateDefs();\n return this;\n};\n\nprototype.draw = function(el, scene, index) {\n this.drawMark(el, scene, index, marks[scene.marktype]);\n};\n\n\n// -- Manage SVG definitions ('defs') block --\n\nprototype.updateDefs = function() {\n var svg = this._svg,\n defs = this._defs,\n el = defs.el,\n index = 0, id;\n\n for (id in defs.gradient) {\n if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n updateGradient(el, defs.gradient[id], index++);\n }\n\n for (id in defs.clipping) {\n if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n updateClipping(el, defs.clipping[id], index++);\n }\n\n // clean-up\n if (el) {\n if (index === 0) {\n svg.removeChild(el);\n defs.el = null;\n } else {\n DOM.clear(el, index); \n }\n }\n};\n\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n\n el = DOM.child(el, index, 'linearGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('x1', grad.x1);\n el.setAttribute('x2', grad.x2);\n el.setAttribute('y1', grad.y1);\n el.setAttribute('y2', grad.y2);\n \n for (i=0, n=grad.stops.length; i 0) ? openTag('defs') + defs + closeTag('defs') : '';\n};\n\nprototype.imageURL = function(url) {\n return this._loader.imageURL(url);\n};\n\nvar object;\n\nfunction emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n}\n\nprototype.attributes = function(attr, item) {\n object = {};\n attr(emit, item, this);\n return object;\n};\n\nprototype.mark = function(scene) {\n var mdef = MARKS[scene.marktype],\n tag = mdef.tag,\n attr = mdef.attr,\n nest = mdef.nest || false,\n data = nest ?\n (scene.items && scene.items.length ? [scene.items[0]] : []) :\n (scene.items || []),\n defs = this._defs,\n str = '',\n style, i, item;\n\n if (tag !== 'g' && scene.interactive === false) {\n style = 'style=\"pointer-events: none;\"';\n }\n\n // render opening group tag\n str += openTag('g', {\n 'class': DOM.cssClass(scene)\n }, style);\n\n // render contained elements\n for (i=0; i/g, '>');\n}\n\nmodule.exports = SVGStringRenderer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/svg/SVGStringRenderer.js\n ** module id = 96\n ** module chunks = 0\n **/","function Item(mark) {\n this.mark = mark;\n}\n\nvar prototype = Item.prototype;\n\nprototype.hasPropertySet = function(name) {\n var props = this.mark.def.properties;\n return props && props[name] != null;\n};\n\nprototype.cousin = function(offset, index) {\n if (offset === 0) return this;\n offset = offset || -1;\n var mark = this.mark,\n group = mark.group,\n iidx = index==null ? mark.items.indexOf(this) : index,\n midx = group.items.indexOf(mark) + offset;\n return group.items[midx].items[iidx];\n};\n\nprototype.sibling = function(offset) {\n if (offset === 0) return this;\n offset = offset || -1;\n var mark = this.mark,\n iidx = mark.items.indexOf(this) + offset;\n return mark.items[iidx];\n};\n\nprototype.remove = function() {\n var item = this,\n list = item.mark.items,\n i = list.indexOf(item);\n if (i >= 0) {\n if (i===list.length-1) {\n list.pop();\n } else {\n list.splice(i, 1);\n }\n }\n return item;\n};\n\nprototype.touch = function() {\n if (this.pathCache) this.pathCache = null;\n};\n\nmodule.exports = Item;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/Item.js\n ** module id = 97\n ** module chunks = 0\n **/","var gradient_id = 0;\n\nfunction Gradient(type) {\n this.id = 'gradient_' + (gradient_id++);\n this.type = type || 'linear';\n this.stops = [];\n this.x1 = 0;\n this.x2 = 1;\n this.y1 = 0;\n this.y2 = 0;\n}\n\nvar prototype = Gradient.prototype;\n\nprototype.stop = function(offset, color) {\n this.stops.push({\n offset: offset,\n color: color\n });\n return this;\n};\n\nmodule.exports = Gradient;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/Gradient.js\n ** module id = 98\n ** module chunks = 0\n **/","var bound = require('../util/bound');\n\nvar sets = [\n 'items',\n 'axisItems',\n 'legendItems'\n];\n\nvar keys = [\n 'marktype', 'name', 'interactive', 'clip',\n 'items', 'axisItems', 'legendItems', 'layer',\n 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n 'fill', 'fillOpacity', 'opacity', // fill\n 'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n 'strokeDash', 'strokeDashOffset', // stroke dash\n 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n 'interpolate', 'tension', 'orient', // area, line\n 'url', // image\n 'path', // path\n 'x2', 'y2', // rule\n 'size', 'shape', // symbol\n 'text', 'angle', 'theta', 'radius', 'dx', 'dy', // text\n 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant' // font\n];\n\nfunction toJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\n\nfunction fromJSON(json) {\n var scene = (typeof json === 'string' ? JSON.parse(json) : json);\n return initialize(scene);\n}\n\nfunction initialize(scene) {\n var type = scene.marktype,\n i, n, s, m, items;\n\n for (s=0, m=sets.length; s 0) {\n try {\n model.data(d.name).values(dl.read(data, d.format));\n if (--count === 0) callback();\n } catch (err) {\n onError(err, d);\n }\n }\n };\n }\n\n // process each data set definition\n (spec || []).forEach(function(d) {\n if (d.url) {\n count += 1;\n dl.load(dl.extend({url: d.url}, config.load), onLoad(d));\n }\n try {\n parseData.datasource(model, d);\n } catch (err) {\n onError(err, d);\n }\n });\n\n if (count === 0) setTimeout(callback, 1);\n return spec;\n}\n\nparseData.datasource = function(model, d) {\n var transform = (d.transform || []).map(function(t) {\n return parseTransforms(model, t);\n }),\n mod = (d.modify || []).map(function(m) {\n return parseModify(model, m, d);\n }),\n ds = model.data(d.name, mod.concat(transform));\n\n if (d.values) {\n ds.values(dl.read(d.values, d.format));\n } else if (d.source) {\n // Derived ds will be pulsed by its src rather than the model.\n ds.source(d.source).addListener(ds);\n model.removeListener(ds.pipeline()[0]);\n }\n\n return ds;\n};\n\nmodule.exports = parseData;\n\nvar parseDef = {\n \"oneOf\": [\n {\"enum\": [\"auto\"]},\n {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"enum\": [\"number\", \"boolean\", \"date\", \"string\"]\n }\n }\n ]\n};\n\nparseData.schema = {\n \"defs\": {\n \"data\": {\n \"title\": \"Input data set definition\",\n \"type\": \"object\",\n\n \"allOf\": [{\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"transform\": {\"$ref\": \"#/defs/transform\"},\n \"modify\": {\"$ref\": \"#/defs/modify\"},\n \"format\": {\n \"type\": \"object\",\n \"oneOf\": [{\n \"properties\": {\n \"type\": {\"enum\": [\"json\"]},\n \"parse\": parseDef,\n \"property\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }, {\n \"properties\": {\n \"type\": {\"enum\": [\"csv\", \"tsv\"]},\n \"parse\": parseDef\n },\n \"additionalProperties\": false\n }, {\n \"oneOf\": [{\n \"properties\": {\n \"type\": {\"enum\": [\"topojson\"]},\n \"feature\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }, {\n \"properties\": {\n \"type\": {\"enum\": [\"topojson\"]},\n \"mesh\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }]\n }, {\n \"properties\": {\n \"type\": {\"enum\": [\"treejson\"]},\n \"children\": {\"type\": \"string\"},\n \"parse\": parseDef\n },\n \"additionalProperties\": false\n }]\n }\n },\n \"required\": [\"name\"]\n }, {\n \"anyOf\": [{\n \"required\": [\"name\", \"modify\"]\n }, {\n \"oneOf\": [{\n \"properties\": {\"source\": {\"type\": \"string\"}},\n \"required\": [\"source\"]\n }, {\n \"properties\": {\"values\": {\"type\": \"array\"}},\n \"required\": [\"values\"]\n }, {\n \"properties\": {\"url\": {\"type\": \"string\"}},\n \"required\": [\"url\"]\n }]\n }]\n }]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/data.js\n ** module id = 101\n ** module chunks = 0\n **/","var dl = require('datalib'),\n transforms = require('../transforms/index');\n\nfunction parseTransforms(model, def) {\n var transform = transforms[def.type],\n tx;\n\n if (!transform) throw new Error('\"' + def.type + '\" is not a valid transformation');\n\n tx = new transform(model);\n // We want to rename output fields before setting any other properties,\n // as subsequent properties may require output to be set (e.g. group by).\n if(def.output) tx.output(def.output);\n\n dl.keys(def).forEach(function(k) {\n if(k === 'type' || k === 'output') return;\n tx.param(k, def[k]);\n });\n\n return tx;\n}\n\nmodule.exports = parseTransforms;\n\nvar keys = dl.keys(transforms)\n .filter(function(k) { return transforms[k].schema; });\n\nvar defs = keys.reduce(function(acc, k) {\n return (acc[k+'Transform'] = transforms[k].schema, acc);\n}, {});\n\nparseTransforms.schema = {\n \"defs\": dl.extend(defs, {\n \"transform\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": keys.map(function(k) {\n return {\"$ref\": \"#/defs/\"+k+\"Transform\"};\n })\n }\n }\n })\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/transforms.js\n ** module id = 102\n ** module chunks = 0\n **/","module.exports = {\n aggregate: require('./Aggregate'),\n bin: require('./Bin'),\n cross: require('./Cross'),\n countpattern: require('./CountPattern'),\n linkpath: require('./LinkPath'),\n facet: require('./Facet'),\n filter: require('./Filter'),\n fold: require('./Fold'),\n force: require('./Force'),\n formula: require('./Formula'),\n geo: require('./Geo'),\n geopath: require('./GeoPath'),\n hierarchy: require('./Hierarchy'),\n impute: require('./Impute'),\n lookup: require('./Lookup'),\n pie: require('./Pie'),\n rank: require('./Rank'),\n sort: require('./Sort'),\n stack: require('./Stack'),\n treeify: require('./Treeify'),\n treemap: require('./Treemap'),\n voronoi: require('./Voronoi'),\n wordcloud: require('./Wordcloud')\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/index.js\n ** module id = 103\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n log = require('vega-logging'),\n ChangeSet = df.ChangeSet,\n Tuple = df.Tuple,\n Deps = df.Dependencies,\n Transform = require('./Transform'),\n Facetor = require('./Facetor');\n\nfunction Aggregate(graph) {\n Transform.prototype.init.call(this, graph);\n\n Transform.addParameters(this, {\n groupby: {type: 'array'},\n summarize: {\n type: 'custom',\n set: function(summarize) {\n var signalDeps = {},\n tx = this._transform,\n i, len, f, fields, name, ops;\n\n if (!dl.isArray(fields = summarize)) { // Object syntax from dl\n fields = [];\n for (name in summarize) {\n ops = dl.array(summarize[name]);\n fields.push({field: name, ops: ops});\n }\n }\n\n function sg(x) { if (x.signal) signalDeps[x.signal] = 1; }\n\n for (i=0, len=fields.length; i', default: [5, 2]}\n });\n\n this._output = {\n start: 'bin_start',\n end: 'bin_end',\n mid: 'bin_mid'\n };\n return this.mutates(true);\n}\n\nvar prototype = (Bin.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Bin;\n\nprototype.extent = function(data) {\n // TODO only recompute extent upon data or field change?\n var e = [this.param('min'), this.param('max')], d;\n if (e[0] == null || e[1] == null) {\n d = dl.extent(data, this.param('field').accessor);\n if (e[0] == null) e[0] = d[0];\n if (e[1] == null) e[1] = d[1];\n }\n return e;\n};\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['binning']);\n\n var extent = this.extent(data),\n output = this._output,\n step = this.param('step'),\n steps = this.param('steps'),\n minstep = this.param('minstep'),\n get = this.param('field').accessor,\n opt = {\n min: extent[0],\n max: extent[1],\n base: this.param('base'),\n maxbins: this.param('maxbins'),\n div: this.param('div')\n };\n\n if (step) opt.step = step;\n if (steps) opt.steps = steps;\n if (minstep) opt.minstep = minstep;\n var b = dl.bins(opt),\n s = b.step;\n\n function update(d) {\n var v = get(d);\n v = v == null ? null\n : b.start + s * ~~((v - b.start) / s);\n Tuple.set(d, output.start, v);\n Tuple.set(d, output.end, v + s);\n Tuple.set(d, output.mid, v + s/2);\n }\n input.add.forEach(update);\n input.mod.forEach(update);\n input.rem.forEach(update);\n\n input.fields[output.start] = 1;\n input.fields[output.end] = 1;\n input.fields[output.mid] = 1;\n return input;\n};\n\nmodule.exports = Bin;\n\nBin.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Bin transform\",\n \"description\": \"Bins values into quantitative bins (e.g., for a histogram).\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"bin\"]},\n \"field\": {\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The name of the field to bin values from.\"\n },\n \"min\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The minimum bin value to consider.\"\n },\n \"max\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The maximum bin value to consider.\"\n },\n \"base\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The number base to use for automatic bin determination.\",\n \"default\": 10\n },\n \"maxbins\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The maximum number of allowable bins.\",\n \"default\": 20\n },\n \"step\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"An exact step size to use between bins. If provided, options such as maxbins will be ignored.\"\n },\n \"steps\": {\n \"description\": \"An array of allowable step sizes to choose from.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"type\": \"number\"}\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"minstep\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"A minimum allowable step size (particularly useful for integer values).\"\n },\n \"div\": {\n \"description\": \"An array of scale factors indicating allowable subdivisions.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"type\": \"number\"},\n \"default\": [5, 2]\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"start\": {\"type\": \"string\", \"default\": \"bin_start\"},\n \"end\": {\"type\": \"string\", \"default\": \"bin_end\"},\n \"mid\": {\"type\": \"string\", \"default\": \"bin_mid\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"field\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Bin.js\n ** module id = 108\n ** module chunks = 0\n **/","var Base = require('./Transform').prototype;\n\nfunction BatchTransform() {\n // Nearest appropriate collector.\n // Set by the dataflow Graph during connection.\n this._collector = null;\n}\n\nvar prototype = (BatchTransform.prototype = Object.create(Base));\nprototype.constructor = BatchTransform;\n\nprototype.init = function(graph) {\n Base.init.call(this, graph);\n return this.batch(true);\n};\n\nprototype.transform = function(input, reset) {\n return this.batchTransform(input, this._collector.data(), reset);\n};\n\nprototype.batchTransform = function(/* input, data, reset */) {\n};\n\nmodule.exports = BatchTransform;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/BatchTransform.js\n ** module id = 109\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n ChangeSet = df.ChangeSet,\n Tuple = df.Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Cross(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n with: {type: 'data'},\n diagonal: {type: 'value', default: 'true'},\n filter: {type: 'expr'}\n });\n\n this._output = {'left': 'a', 'right': 'b'};\n this._lastWith = null; // Last time we crossed w/with-ds.\n this._cids = {};\n this._cache = {};\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (Cross.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Cross;\n\n// Each cached incoming tuple also has a flag to determine whether\n// any tuples were filtered.\nfunction _cache(x, t) {\n var c = this._cache,\n cross = c[x._id] || (c[x._id] = {c: [], f: false});\n cross.c.push(t);\n}\n\nfunction _cid(left, x, y) {\n return left ? x._id+'_'+y._id : y._id+'_'+x._id;\n}\n\nfunction add(output, left, data, diag, test, mids, x) {\n var as = this._output,\n cache = this._cache,\n cids = this._cids,\n oadd = output.add,\n fltrd = false,\n i = 0, len = data.length,\n t = {}, y, cid;\n\n for (; i=0; --i) {\n t = tpls[i];\n l = x === t[as.left]; // Cache has tpls w/x both on left & right.\n y = l ? t[as.right] : t[as.left];\n cid = _cid(l, x, y);\n\n // Lazy removal: y was previously rem'd, so clean up the cache.\n if (!cache[y._id]) {\n cids[cid] = false;\n tpls.splice(i, 1);\n continue;\n }\n\n if (!test || test(t)) {\n if (mids[t._id]) continue;\n omod.push(t);\n mids[t._id] = 1;\n } else {\n if (!rids[t._id]) orem.push.apply(orem, tpls.splice(i, 1));\n rids[t._id] = 1;\n cids[cid] = false;\n cross.f = true;\n }\n }\n }\n\n // If we have a filter param, call add to catch any tuples that may\n // have previously been filtered.\n if (test && fltrd) add.call(this, output, left, data, diag, test, mids, x);\n}\n\nfunction rem(output, left, rids, x) {\n var as = this._output,\n cross = this._cache[x._id],\n cids = this._cids,\n orem = output.rem,\n i, len, t, y, l;\n if (!cross) return;\n\n for (i=0, len=cross.c.length; i this._lastWith) {\n woutput.rem.forEach(rem.bind(this, output, false, rids));\n woutput.add.forEach(add.bind(this, output, false, data, diag, test, mids));\n woutput.mod.forEach(mod.bind(this, output, false, data, diag, test, mids, rids));\n this._lastWith = woutput.stamp;\n }\n\n // Mods need to come after all removals have been run.\n input.mod.forEach(mod.bind(this, output, true, wdata, diag, test, mids, rids));\n }\n\n output.fields[as.left] = 1;\n output.fields[as.right] = 1;\n return output;\n};\n\nmodule.exports = Cross;\n\nCross.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Cross transform\",\n \"description\": \"Compute the cross-product of two data sets.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"cross\"]},\n \"with\": {\n \"type\": \"string\",\n \"description\": \"The name of the secondary data set to cross with the primary data. \" +\n \"If unspecified, the primary data is crossed with itself.\"\n },\n \"diagonal\": {\n \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"If false, items along the \\\"diagonal\\\" of the cross-product \" +\n \"(those elements with the same index in their respective array) \" +\n \"will not be included in the output.\",\n \"default\": true\n },\n \"filter\": {\n \"type\": \"string\",\n \"description\": \"A string containing an expression (in JavaScript syntax) \" +\n \"to filter the resulting data elements.\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"left\": {\"type\": \"string\", \"default\": \"a\"},\n \"right\": {\"type\": \"string\", \"default\": \"b\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Cross.js\n ** module id = 110\n ** module chunks = 0\n **/","var df = require('vega-dataflow'),\n Tuple = df.Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform');\n\nfunction CountPattern(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n field: {type: 'field', default: 'data'},\n pattern: {type: 'value', default: '[\\\\w\\']+'},\n case: {type: 'value', default: 'lower'},\n stopwords: {type: 'value', default: ''}\n });\n\n this._output = {text: 'text', count: 'count'};\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (CountPattern.prototype = Object.create(Transform.prototype));\nprototype.constructor = CountPattern;\n\nprototype.transform = function(input, reset) {\n log.debug(input, ['countpattern']);\n\n var get = this.param('field').accessor,\n pattern = this.param('pattern'),\n stop = this.param('stopwords'),\n rem = false;\n\n // update parameters\n if (this._stop !== stop) {\n this._stop = stop;\n this._stop_re = new RegExp('^' + stop + '$', 'i');\n reset = true;\n }\n\n if (this._pattern !== pattern) {\n this._pattern = pattern;\n this._match = new RegExp(this._pattern, 'g');\n reset = true;\n }\n\n if (reset) this._counts = {};\n\n function curr(t) { return (Tuple.prev_init(t), get(t)); }\n function prev(t) { return get(Tuple.prev(t)); }\n\n this._add(input.add, curr);\n if (!reset) this._rem(input.rem, prev);\n if (reset || (rem = input.fields[get.field])) {\n if (rem) this._rem(input.mod, prev);\n this._add(input.mod, curr);\n }\n\n // generate output tuples\n return this._changeset(input);\n};\n\nprototype._changeset = function(input) {\n var counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n change = df.ChangeSet.create(input),\n out = this._output, w, t, c;\n\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = (t = Tuple.ingest({}));\n t[out.text] = w;\n t[out.count] = c;\n change.add.push(t);\n } else if (c === 0) {\n if (t) change.rem.push(t);\n delete counts[w];\n delete tuples[w];\n } else if (t[out.count] !== c) {\n Tuple.set(t, out.count, c);\n change.mod.push(t);\n }\n }\n return change;\n};\n\nprototype._tokenize = function(text) {\n switch (this.param('case')) {\n case 'upper': text = text.toUpperCase(); break;\n case 'lower': text = text.toLowerCase(); break;\n }\n return text.match(this._match);\n};\n\nprototype._add = function(tuples, get) {\n var counts = this._counts,\n stop = this._stop_re,\n tok, i, j, t;\n\n for (j=0; j Math.PI ? ta <= sa : ta > sa;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n ' ' + (sr*tc) + ',' + (sr*ts) +\n 'L' + (tr*tc) + ',' + (tr*ts);\n}\n\nfunction diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + m + ',' + sy +\n ' ' + m + ',' + ty +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + sx + ',' + m +\n ' ' + tx + ',' + m +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'C' + (mr*sc) + ',' + (mr*ss) +\n ' ' + (mr*tc) + ',' + (mr*ts) +\n ' ' + (tr*tc) + ',' + (tr*ts);\n}\n\nvar shapes = {\n line: line,\n curve: curve,\n cornerX: cornerX,\n cornerY: cornerY,\n cornerR: cornerR,\n diagonalX: diagonalX,\n diagonalY: diagonalY,\n diagonalR: diagonalR\n};\n\nprototype.transform = function(input) {\n log.debug(input, ['linkpath']);\n\n var output = this._output,\n shape = shapes[this.param('shape')] || shapes.line,\n sourceX = this.param('sourceX').accessor,\n sourceY = this.param('sourceY').accessor,\n targetX = this.param('targetX').accessor,\n targetY = this.param('targetY').accessor,\n tension = this.param('tension');\n\n function set(t) {\n var path = shape(sourceX(t), sourceY(t), targetX(t), targetY(t), tension);\n Tuple.set(t, output.path, path);\n }\n\n input.add.forEach(set);\n if (this.reevaluate(input)) {\n input.mod.forEach(set);\n input.rem.forEach(set);\n }\n\n input.fields[output.path] = 1;\n return input;\n};\n\nmodule.exports = LinkPath;\n\nLinkPath.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"LinkPath transform\",\n \"description\": \"Computes a path definition for connecting nodes within a node-link network or tree diagram.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"linkpath\"]},\n \"sourceX\": {\n \"description\": \"The data field that references the source x-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_source\"\n },\n \"sourceY\": {\n \"description\": \"The data field that references the source y-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_source\"\n },\n \"targetX\": {\n \"description\": \"The data field that references the target x-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_target\"\n },\n \"targetY\": {\n \"description\": \"The data field that references the target y-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_target\"\n },\n \"tension\": {\n \"description\": \"A tension parameter for the \\\"tightness\\\" of \\\"curve\\\"-shaped links.\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": 0.2\n },\n \"shape\": {\n \"description\": \"The path shape to use\",\n \"oneOf\": [\n {\"enum\": [\"line\", \"curve\", \"cornerX\", \"cornerY\", \"cornerR\", \"diagonalX\", \"diagonalY\", \"diagonalR\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"line\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/LinkPath.js\n ** module id = 112\n ** module chunks = 0\n **/","var Transform = require('./Transform'),\n Aggregate = require('./Aggregate');\n\nfunction Facet(graph) {\n Transform.addParameters(this, {\n transform: {\n type: \"custom\",\n set: function(pipeline) {\n return (this._transform._pipeline = pipeline, this._transform);\n },\n get: function() {\n var parse = require('../parse/transforms'),\n facet = this._transform;\n return facet._pipeline.map(function(t) {\n return parse(facet._graph, t);\n });\n }\n }\n });\n\n this._pipeline = [];\n return Aggregate.call(this, graph);\n}\n\nvar prototype = (Facet.prototype = Object.create(Aggregate.prototype));\nprototype.constructor = Facet;\n\nprototype.aggr = function() {\n return Aggregate.prototype.aggr.call(this).facet(this);\n};\n\nprototype.transform = function(input, reset) {\n var output = Aggregate.prototype.transform.call(this, input, reset);\n\n // New facet cells should trigger a re-ranking of the dataflow graph.\n // This ensures facet datasources are computed before scenegraph nodes.\n // We rerank the Facet's first listener, which is the next node in the\n // datasource's pipeline.\n if (input.add.length) {\n this.listeners()[0].rerank();\n }\n\n return output;\n};\n\nmodule.exports = Facet;\n\nvar dl = require('datalib');\n\nFacet.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Facet transform\",\n \"description\": \"A special aggregate transform that organizes a data set into groups or \\\"facets\\\".\",\n \"type\": \"object\",\n \"properties\": dl.extend({}, Aggregate.schema.properties, {\n \"type\": {\"enum\": [\"facet\"]},\n \"transform\": {\"$ref\": \"#/defs/transform\"}\n }),\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Facet.js\n ** module id = 113\n ** module chunks = 0\n **/","var df = require('vega-dataflow'),\n log = require('vega-logging'),\n Transform = require('./Transform');\n\nfunction Filter(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, {test: {type: 'expr'}});\n\n this._skip = {};\n return this.router(true);\n}\n\nvar prototype = (Filter.prototype = Object.create(Transform.prototype));\nprototype.constructor = Filter;\n\nprototype.transform = function(input) {\n log.debug(input, ['filtering']);\n\n var output = df.ChangeSet.create(input),\n skip = this._skip,\n test = this.param('test');\n\n input.rem.forEach(function(x) {\n if (skip[x._id] !== 1) output.rem.push(x);\n else skip[x._id] = 0;\n });\n\n input.add.forEach(function(x) {\n if (test(x)) output.add.push(x);\n else skip[x._id] = 1;\n });\n\n input.mod.forEach(function(x) {\n var b = test(x),\n s = (skip[x._id] === 1);\n if (b && s) {\n skip[x._id] = 0;\n output.add.push(x);\n } else if (b && !s) {\n output.mod.push(x);\n } else if (!b && s) {\n // do nothing, keep skip true\n } else { // !b && !s\n output.rem.push(x);\n skip[x._id] = 1;\n }\n });\n\n return output;\n};\n\nmodule.exports = Filter;\n\nFilter.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Filter transform\",\n \"description\": \"Filters elements from a data set to remove unwanted items.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"filter\"]},\n \"test\": {\n \"type\": \"string\",\n \"description\": \"A string containing an expression (in JavaScript syntax) for the filter predicate.\"\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"test\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Filter.js\n ** module id = 114\n ** module chunks = 0\n **/","var df = require('vega-dataflow'),\n Tuple = df.Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform');\n\nfunction Fold(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n fields: {type: 'array'}\n });\n\n this._output = {key: 'key', value: 'value'};\n this._cache = {};\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (Fold.prototype = Object.create(Transform.prototype));\nprototype.constructor = Fold;\n\nprototype._reset = function(input, output) {\n for (var id in this._cache) {\n output.rem.push.apply(output.rem, this._cache[id]);\n }\n this._cache = {};\n};\n\nprototype._tuple = function(x, i, len) {\n var list = this._cache[x._id] || (this._cache[x._id] = Array(len));\n return list[i] ? Tuple.rederive(x, list[i]) : (list[i] = Tuple.derive(x));\n};\n\nprototype._fn = function(data, on, out) {\n var i, j, n, m, d, t;\n for (i=0, n=data.length; i', default: require('./screen').size},\n bound: {type: 'value', default: true},\n links: {type: 'data'},\n\n // TODO: for now force these to be value params only (pun-intended)\n // Can update to include fields after Parameter refactoring.\n linkStrength: {type: 'value', default: 1},\n linkDistance: {type: 'value', default: 20},\n charge: {type: 'value', default: -30},\n\n chargeDistance: {type: 'value', default: Infinity},\n friction: {type: 'value', default: 0.9},\n theta: {type: 'value', default: 0.8},\n gravity: {type: 'value', default: 0.1},\n alpha: {type: 'value', default: 0.1},\n iterations: {type: 'value', default: 500},\n\n interactive: {type: 'value', default: this._interactive},\n active: {type: 'value', default: this._prev},\n fixed: {type: 'data'}\n });\n\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y'\n };\n\n return this.mutates(true);\n}\n\nvar prototype = (Force.prototype = Object.create(Transform.prototype));\nprototype.constructor = Force;\n\nprototype.transform = function(nodeInput, reset) {\n log.debug(nodeInput, ['force']);\n reset = reset - (nodeInput.signals.active ? 1 : 0);\n\n // get variables\n var interactive = this.param('interactive'),\n linkSource = this.param('links').source,\n linkInput = linkSource.last(),\n active = this.param('active'),\n output = this._output,\n layout = this._layout,\n nodes = this._nodes,\n links = this._links;\n\n // configure nodes, links and layout\n if (linkInput.stamp < nodeInput.stamp) linkInput = null;\n this.configure(nodeInput, linkInput, interactive, reset);\n\n // run batch layout\n if (!interactive) {\n var iterations = this.param('iterations');\n for (var i=0; i'},\n translate: {type: 'array', default: require('./screen').center},\n rotate: {type: 'array'},\n scale: {type: 'value'},\n precision: {type: 'value'},\n clipAngle: {type: 'value'},\n clipExtent: {type: 'value'}\n};\n\nGeo.d3Projection = function() {\n var p = this.param('projection'),\n param = Geo.Parameters,\n proj, name, value;\n\n if (p !== this._mode) {\n this._mode = p;\n this._projection = d3.geo[p]();\n }\n proj = this._projection;\n\n for (name in param) {\n if (name === 'projection' || !proj[name]) continue;\n value = this.param(name);\n if (value === undefined || (dl.isArray(value) && value.length === 0)) {\n continue;\n }\n if (value !== proj[name]()) {\n proj[name](value);\n }\n }\n\n return proj;\n};\n\nvar prototype = (Geo.prototype = Object.create(Transform.prototype));\nprototype.constructor = Geo;\n\nprototype.transform = function(input) {\n log.debug(input, ['geo']);\n\n var output = this._output,\n lon = this.param('lon').accessor,\n lat = this.param('lat').accessor,\n proj = Geo.d3Projection.call(this);\n\n function set(t) {\n var ll = [lon(t), lat(t)];\n var xy = proj(ll) || [null, null];\n Tuple.set(t, output.x, xy[0]);\n Tuple.set(t, output.y, xy[1]);\n }\n\n input.add.forEach(set);\n if (this.reevaluate(input)) {\n input.mod.forEach(set);\n input.rem.forEach(set);\n }\n\n input.fields[output.x] = 1;\n input.fields[output.y] = 1;\n return input;\n};\n\nmodule.exports = Geo;\n\nGeo.baseSchema = {\n \"projection\": {\n \"description\": \"The type of cartographic projection to use.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"mercator\"\n },\n \"center\": {\n \"description\": \"The center of the projection.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"translate\": {\n \"description\": \"The translation of the projection.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"rotate\": {\n \"description\": \"The rotation of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"scale\": {\n \"description\": \"The scale of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"precision\": {\n \"description\": \"The desired precision of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"clipAngle\": {\n \"description\": \"The clip angle of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"clipExtent\": {\n \"description\": \"The clip extent of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n }\n};\n\nGeo.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Geo transform\",\n \"description\": \"Performs a cartographic projection. Given longitude and latitude values, sets corresponding x and y properties for a mark.\",\n \"type\": \"object\",\n \"properties\": dl.extend({\n \"type\": {\"enum\": [\"geo\"]},\n \"lon\": {\n \"description\": \"The input longitude values.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"lat\": {\n \"description\": \"The input latitude values.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n \"y\": {\"type\": \"string\", \"default\": \"layout_y\"}\n },\n \"additionalProperties\": false\n }\n }, Geo.baseSchema),\n \"required\": [\"type\", \"lon\", \"lat\"],\n \"additionalProperties\": false\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Geo.js\n ** module id = 119\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Geo = require('./Geo'),\n Transform = require('./Transform');\n\nfunction GeoPath(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, Geo.Parameters);\n Transform.addParameters(this, {\n field: {type: 'field', default: null},\n });\n\n this._output = {\n 'path': 'layout_path'\n };\n return this.mutates(true);\n}\n\nvar prototype = (GeoPath.prototype = Object.create(Transform.prototype));\nprototype.constructor = GeoPath;\n\nprototype.transform = function(input) {\n log.debug(input, ['geopath']);\n\n var output = this._output,\n geojson = this.param('field').accessor || dl.identity,\n proj = Geo.d3Projection.call(this),\n path = d3.geo.path().projection(proj);\n\n function set(t) {\n Tuple.set(t, output.path, path(geojson(t)));\n }\n\n input.add.forEach(set);\n if (this.reevaluate(input)) {\n input.mod.forEach(set);\n input.rem.forEach(set);\n }\n\n input.fields[output.path] = 1;\n return input;\n};\n\nmodule.exports = GeoPath;\n\nGeoPath.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"GeoPath transform\",\n \"description\": \"Creates paths for geographic regions, such as countries, states and counties.\",\n \"type\": \"object\",\n \"properties\": dl.extend({\n \"type\": {\"enum\": [\"geopath\"]},\n \"field\": {\n \"description\": \"The data field containing GeoJSON Feature data.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n },\n \"additionalProperties\": false\n }\n }, Geo.baseSchema),\n \"required\": [\"type\"],\n \"additionalProperties\": false\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/GeoPath.js\n ** module id = 120\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Hierarchy(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n // hierarchy parameters\n sort: {type: 'array', default: null},\n children: {type: 'field', default: 'children'},\n parent: {type: 'field', default: 'parent'},\n field: {type: 'value', default: null},\n // layout parameters\n mode: {type: 'value', default: 'tidy'}, // tidy, cluster, partition\n size: {type: 'array', default: require('./screen').size},\n nodesize: {type: 'array', default: null},\n orient: {type: 'value', default: 'cartesian'}\n });\n\n this._mode = null;\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y',\n 'width': 'layout_width',\n 'height': 'layout_height',\n 'depth': 'layout_depth'\n };\n return this.mutates(true);\n}\n\nvar PARTITION = 'partition';\n\nvar SEPARATION = {\n cartesian: function(a, b) { return (a.parent === b.parent ? 1 : 2); },\n radial: function(a, b) { return (a.parent === b.parent ? 1 : 2) / a.depth; }\n};\n\nvar prototype = (Hierarchy.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Hierarchy;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['hierarchy layout']);\n\n // get variables\n var layout = this._layout,\n output = this._output,\n mode = this.param('mode'),\n sort = this.param('sort'),\n nodesz = this.param('nodesize'),\n parent = this.param('parent').accessor,\n root = data.filter(function(d) { return parent(d) === null; })[0];\n\n if (mode !== this._mode) {\n this._mode = mode;\n if (mode === 'tidy') mode = 'tree';\n layout = (this._layout = d3.layout[mode]());\n }\n\n input.fields[output.x] = 1;\n input.fields[output.y] = 1;\n input.fields[output.depth] = 1;\n if (mode === PARTITION) {\n input.fields[output.width] = 1;\n input.fields[output.height] = 1;\n layout.value(this.param('field').accessor);\n } else {\n layout.separation(SEPARATION[this.param('orient')]);\n }\n\n if (nodesz.length && mode !== PARTITION) {\n layout.nodeSize(nodesz);\n } else {\n layout.size(this.param('size'));\n }\n\n layout\n .sort(sort.field.length ? dl.comparator(sort.field) : null)\n .children(this.param('children').accessor)\n .nodes(root);\n\n // copy layout values to nodes\n data.forEach(function(n) {\n Tuple.set(n, output.x, n.x);\n Tuple.set(n, output.y, n.y);\n Tuple.set(n, output.depth, n.depth);\n if (mode === PARTITION) {\n Tuple.set(n, output.width, n.dx);\n Tuple.set(n, output.height, n.dy);\n }\n });\n\n // return changeset\n return input;\n};\n\nmodule.exports = Hierarchy;\n\nHierarchy.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Hierarchy transform\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"hierarchy\"]},\n \"sort\": {\n \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"children\": {\n \"description\": \"The data field for the children node array\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"children\"\n },\n \"parent\": {\n \"description\": \"The data field for the parent node\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"parent\"\n },\n \"field\": {\n \"description\": \"The value for the area of each leaf-level node for partition layouts.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"mode\": {\n \"description\": \"The layout algorithm mode to use.\",\n \"oneOf\": [\n {\"enum\": [\"tidy\", \"cluster\", \"partition\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"tidy\"\n },\n \"orient\": {\n \"description\": \"The layout orientation to use.\",\n \"oneOf\": [\n {\"enum\": [\"cartesian\", \"radial\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"cartesian\"\n },\n \"size\": {\n \"description\": \"The dimensions of the tree layout\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": [500, 500]\n },\n \"nodesize\": {\n \"description\": \"Sets a fixed x,y size for each node (overrides the size parameter)\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": null\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Hierarchy.js\n ** module id = 121\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n Tuple = require('vega-dataflow').Tuple,\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Impute(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n groupby: {type: 'array'},\n orderby: {type: 'array'},\n field: {type: 'field'},\n method: {type: 'value', default: 'value'},\n value: {type: 'value', default: 0}\n });\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (Impute.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Impute;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['imputing']);\n\n var groupby = this.param('groupby'),\n orderby = this.param('orderby'),\n method = this.param('method'),\n value = this.param('value'),\n field = this.param('field'),\n get = field.accessor,\n name = field.field,\n prev = this._imputed || [], curr = [],\n groups = partition(data, groupby.accessor, orderby.accessor),\n domain = groups.domain,\n group, i, j, n, m, t;\n\n function getval(x) {\n return x == null ? null : get(x);\n }\n\n for (j=0, m=groups.length; j'},\n keys: {type: 'array', default: ['data']},\n default: {type: 'value'}\n });\n\n return this.mutates(true);\n}\n\nvar prototype = (Lookup.prototype = Object.create(Transform.prototype));\nprototype.constructor = Lookup;\n\nprototype.transform = function(input, reset) {\n log.debug(input, ['lookup']);\n\n var on = this.param('on'),\n onLast = on.source.last(),\n onData = on.source.values(),\n onKey = this.param('onKey'),\n onF = onKey.field,\n keys = this.param('keys'),\n get = keys.accessor,\n as = this.param('as'),\n defaultValue = this.param('default'),\n lut = this._lut,\n i, v;\n\n // build lookup table on init, withKey modified, or tuple add/rem\n if (lut == null || this._on !== onF || onF && onLast.fields[onF] ||\n onLast.add.length || onLast.rem.length)\n {\n if (onF) { // build hash from withKey field\n onKey = onKey.accessor;\n for (lut={}, i=0; i'} });\n this.router(true);\n}\n\nvar prototype = (Sort.prototype = Object.create(Transform.prototype));\nprototype.constructor = Sort;\n\nprototype.transform = function(input) {\n log.debug(input, ['sorting']);\n\n if (input.add.length || input.mod.length || input.rem.length) {\n input.sort = dl.comparator(this.param('by').field);\n }\n return input;\n};\n\nmodule.exports = Sort;\n\nSort.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Sort transform\",\n \"description\": \"Sorts the values of a data set.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"sort\"]},\n \"by\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n ],\n \"description\": \"A list of fields to use as sort criteria.\"\n }\n },\n \"required\": [\"type\", \"by\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Sort.js\n ** module id = 126\n ** module chunks = 0\n **/","var dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Stack(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n groupby: {type: 'array'},\n sortby: {type: 'array'},\n field: {type: 'field'},\n offset: {type: 'value', default: 'zero'}\n });\n\n this._output = {\n 'start': 'layout_start',\n 'end': 'layout_end',\n 'mid': 'layout_mid'\n };\n return this.mutates(true);\n}\n\nvar prototype = (Stack.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Stack;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['stacking']);\n\n var groupby = this.param('groupby').accessor,\n sortby = dl.comparator(this.param('sortby').field),\n field = this.param('field').accessor,\n offset = this.param('offset'),\n output = this._output;\n\n // partition, sum, and sort the stack groups\n var groups = partition(data, groupby, sortby, field);\n\n // compute stack layouts per group\n for (var i=0, max=groups.max; i max) max = s;\n if (sortby != null) g.sort(sortby);\n }\n groups.max = max;\n\n return groups;\n}\n\nmodule.exports = Stack;\n\nStack.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Stack transform\",\n \"description\": \"Computes layout values for stacked graphs, as in stacked bar charts or stream graphs.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"stack\"]},\n \"groupby\": {\n \"description\": \"A list of fields to split the data into groups (stacks).\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n },\n \"sortby\": {\n \"description\": \"A list of fields to determine the sort order of stacks.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n },\n \"field\": {\n \"description\": \"The data field that determines the thickness/height of stacks.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"offset\": {\n \"description\": \"The baseline offset\",\n \"oneOf\": [{\"enum\": [\"zero\", \"center\", \"normalize\"]}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"zero\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"start\": {\"type\": \"string\", \"default\": \"layout_start\"},\n \"end\": {\"type\": \"string\", \"default\": \"layout_end\"},\n \"mid\": {\"type\": \"string\", \"default\": \"layout_mid\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"groupby\", \"field\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Stack.js\n ** module id = 127\n ** module chunks = 0\n **/","var dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Treeify(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n groupby: {type: 'array'}\n });\n\n this._output = {\n 'children': 'children',\n 'parent': 'parent'\n };\n return this.router(true).produces(true);\n}\n\nvar prototype = (Treeify.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Treeify;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['treeifying']);\n\n var fields = this.param('groupby').field,\n childField = this._output.children,\n parentField = this._output.parent,\n summary = [{name:'*', ops: ['values'], as: [childField]}],\n aggrs = fields.map(function(f) {\n return dl.groupby(f).summarize(summary);\n }),\n prev = this._internal || [], curr = [], i, n;\n\n function level(index, node, values) {\n var vals = aggrs[index].execute(values);\n\n node[childField] = vals;\n vals.forEach(function(n) {\n n[parentField] = node;\n curr.push(Tuple.ingest(n));\n if (index+1 < fields.length) level(index+1, n, n[childField]);\n else n[childField].forEach(function(c) { c[parentField] = n; });\n });\n }\n\n var root = Tuple.ingest({});\n root[parentField] = null;\n curr.push(root);\n level(0, root, data);\n\n // update changeset with internal nodes\n for (i=0, n=curr.length; i', default: ['-value']},\n children: {type: 'field', default: 'children'},\n parent: {type: 'field', default: 'parent'},\n field: {type: 'field', default: 'value'},\n // treemap parameters\n size: {type: 'array', default: require('./screen').size},\n round: {type: 'value', default: true},\n sticky: {type: 'value', default: false},\n ratio: {type: 'value', default: defaultRatio},\n padding: {type: 'value', default: null},\n mode: {type: 'value', default: 'squarify'}\n });\n\n this._layout = d3.layout.treemap();\n\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y',\n 'width': 'layout_width',\n 'height': 'layout_height',\n 'depth': 'layout_depth',\n };\n return this.mutates(true);\n}\n\nvar prototype = (Treemap.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Treemap;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['treemap']);\n\n // get variables\n var layout = this._layout,\n output = this._output,\n sticky = this.param('sticky'),\n parent = this.param('parent').accessor,\n root = data.filter(function(d) { return parent(d) === null; })[0];\n\n // layout.sticky resets state _regardless_ of input value\n // so, we perform out own check first\n if (layout.sticky() !== sticky) { layout.sticky(sticky); }\n\n // configure layout\n layout\n .sort(dl.comparator(this.param('sort').field))\n .children(this.param('children').accessor)\n .value(this.param('field').accessor)\n .size(this.param('size'))\n .round(this.param('round'))\n .ratio(this.param('ratio'))\n .padding(this.param('padding'))\n .mode(this.param('mode'))\n .nodes(root);\n\n // copy layout values to nodes\n data.forEach(function(n) {\n Tuple.set(n, output.x, n.x);\n Tuple.set(n, output.y, n.y);\n Tuple.set(n, output.width, n.dx);\n Tuple.set(n, output.height, n.dy);\n Tuple.set(n, output.depth, n.depth);\n });\n\n // return changeset\n input.fields[output.x] = 1;\n input.fields[output.y] = 1;\n input.fields[output.width] = 1;\n input.fields[output.height] = 1;\n input.fields[output.depth] = 1;\n return input;\n};\n\nmodule.exports = Treemap;\n\nTreemap.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Treemap transform\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"treemap\"]},\n \"sort\": {\n \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": [\"-value\"]\n },\n \"children\": {\n \"description\": \"The data field for the children node array\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"children\"\n },\n \"parent\": {\n \"description\": \"The data field for the parent node\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"parent\"\n },\n \"field\": {\n \"description\": \"The values to use to determine the area of each leaf-level treemap cell.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"mode\": {\n \"description\": \"The treemap layout algorithm to use.\",\n \"oneOf\": [\n {\"enum\": [\"squarify\", \"slice\", \"dice\", \"slice-dice\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"squarify\"\n },\n \"size\": {\n \"description\": \"The dimensions of the treemap layout\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": [500, 500]\n },\n \"round\": {\n \"description\": \"If true, treemap cell dimensions will be rounded to integer pixels.\",\n \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": true\n },\n \"sticky\": {\n \"description\": \"If true, repeated runs of the treemap will use cached partition boundaries.\",\n \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": false\n },\n \"ratio\": {\n \"description\": \"The target aspect ratio for the layout to optimize.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": defaultRatio\n },\n \"padding\": {\n \"oneOf\": [\n {\"type\": \"number\"},\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 4,\n \"maxItems\": 4\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"description\": \"he padding (in pixels) to provide around internal nodes in the treemap.\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Treemap.js\n ** module id = 129\n ** module chunks = 0\n **/","var d3 = require('d3'),\n Tuple = require('vega-dataflow/src/Tuple'),\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Voronoi(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n clipExtent: {type: 'array', default: require('./screen').extent},\n x: {type: 'field', default: 'layout_x'},\n y: {type: 'field', default: 'layout_y'}\n });\n\n this._layout = d3.geom.voronoi();\n this._output = {'path': 'layout_path'};\n\n return this.mutates(true);\n}\n\nvar prototype = (Voronoi.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Voronoi;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['voronoi']);\n\n // get variables\n var pathname = this._output.path;\n\n // configure layout\n var polygons = this._layout\n .clipExtent(this.param('clipExtent'))\n .x(this.param('x').accessor)\n .y(this.param('y').accessor)\n (data);\n\n // build and assign path strings\n for (var i=0; i', default: require('./screen').size},\n text: {type: 'field', default: 'data'},\n rotate: {type: 'field|value', default: 0},\n font: {type: 'field|value', default: {value: 'sans-serif'}},\n fontSize: {type: 'field|value', default: 14},\n fontStyle: {type: 'field|value', default: {value: 'normal'}},\n fontWeight: {type: 'field|value', default: {value: 'normal'}},\n fontScale: {type: 'array', default: [10, 50]},\n padding: {type: 'value', default: 1},\n spiral: {type: 'value', default: 'archimedean'}\n });\n\n this._layout = d3_cloud().canvas(canvas.instance);\n\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y',\n 'font': 'layout_font',\n 'fontSize': 'layout_fontSize',\n 'fontStyle': 'layout_fontStyle',\n 'fontWeight': 'layout_fontWeight',\n 'rotate': 'layout_rotate',\n };\n\n return this.mutates(true);\n}\n\nvar prototype = (Wordcloud.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Wordcloud;\n\nfunction get(p) {\n return (p && p.accessor) || p;\n}\n\nfunction wrap(tuple) {\n var x = Object.create(tuple);\n x._tuple = tuple;\n return x;\n}\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['wordcloud']);\n\n // get variables\n var layout = this._layout,\n output = this._output,\n fontSize = this.param('fontSize'),\n range = fontSize.accessor && this.param('fontScale'),\n size, scale;\n fontSize = fontSize.accessor || d3.functor(fontSize);\n\n // create font size scaling function as needed\n if (range.length) {\n scale = d3.scale.sqrt()\n .domain(dl.extent(data, size=fontSize))\n .range(range);\n fontSize = function(x) { return scale(size(x)); };\n }\n\n // configure layout\n layout\n .size(this.param('size'))\n .text(get(this.param('text')))\n .padding(this.param('padding'))\n .spiral(this.param('spiral'))\n .rotate(get(this.param('rotate')))\n .font(get(this.param('font')))\n .fontStyle(get(this.param('fontStyle')))\n .fontWeight(get(this.param('fontWeight')))\n .fontSize(fontSize)\n .words(data.map(wrap)) // wrap to avoid tuple writes\n .on('end', function(words) {\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n w, t, i, len;\n\n for (i=0, len=words.length; i> 5,\n ch = 1 << 11;\n\nmodule.exports = function() {\n var size = [256, 256],\n text = cloudText,\n font = cloudFont,\n fontSize = cloudFontSize,\n fontStyle = cloudFontNormal,\n fontWeight = cloudFontNormal,\n rotate = cloudRotate,\n padding = cloudPadding,\n spiral = archimedeanSpiral,\n words = [],\n timeInterval = Infinity,\n event = dispatch(\"word\", \"end\"),\n timer = null,\n random = Math.random,\n cloud = {},\n canvas = cloudCanvas;\n\n cloud.canvas = function(_) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function() {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function(d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function(a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n var start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n var d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.word(d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.end(tags, bounds);\n }\n }\n }\n\n cloud.stop = function() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n var context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return {context: context, ratio: ratio};\n }\n\n function place(board, tag, bounds) {\n var perimeter = [{x: 0, y: 0}, {x: size[0], y: size[1]}],\n startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function(_) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function(_) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function(_) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function(_) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function(_) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function(_) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function(_) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function(_) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function(_) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function(_) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function(_) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function(_) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function() {\n var value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n};\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n var w = c.measureText(d.text + \"m\").width * ratio,\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n var w = d.width,\n w32 = w >> 5,\n h = d.y1 - d.y0;\n // Zero the buffer\n for (var i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (var j = 0; j < h; j++) {\n for (var i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function(t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function(t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function() { return d; };\n}\n\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/d3-cloud/index.js\n ** module id = 132\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.d3_dispatch = {})));\n}(this, function (exports) { 'use strict';\n\n function dispatch() {\n return new Dispatch(arguments);\n }\n\n function Dispatch(types) {\n var i = -1,\n n = types.length,\n callbacksByType = {},\n callbackByName = {},\n type,\n that = this;\n\n that.on = function(type, callback) {\n type = parseType(type);\n\n // Return the current callback, if any.\n if (arguments.length < 2) {\n return (callback = callbackByName[type.name]) && callback.value;\n }\n\n // If a type was specified…\n if (type.type) {\n var callbacks = callbacksByType[type.type],\n callback0 = callbackByName[type.name],\n i;\n\n // Remove the current callback, if any, using copy-on-remove.\n if (callback0) {\n callback0.value = null;\n i = callbacks.indexOf(callback0);\n callbacksByType[type.type] = callbacks = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n delete callbackByName[type.name];\n }\n\n // Add the new callback, if any.\n if (callback) {\n callback = {value: callback};\n callbackByName[type.name] = callback;\n callbacks.push(callback);\n }\n }\n\n // Otherwise, if a null callback was specified, remove all callbacks with the given name.\n else if (callback == null) {\n for (var otherType in callbacksByType) {\n if (callback = callbackByName[otherType + type.name]) {\n callback.value = null;\n callbacks = callbacksByType[otherType];\n i = callbacks.indexOf(callback);\n callbacksByType[otherType] = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n delete callbackByName[callback.name];\n }\n }\n }\n\n return that;\n };\n\n while (++i < n) {\n type = types[i] + \"\";\n if (!type || (type in that)) throw new Error(\"illegal or duplicate type: \" + type);\n callbacksByType[type] = [];\n that[type] = applier(type);\n }\n\n function parseType(type) {\n var i = (type += \"\").indexOf(\".\"), name = type;\n if (i >= 0) type = type.slice(0, i); else name += \".\";\n if (type && !callbacksByType.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n return {type: type, name: name};\n }\n\n function applier(type) {\n return function() {\n var callbacks = callbacksByType[type], // Defensive reference; copy-on-remove.\n callbackValue,\n i = -1,\n n = callbacks.length;\n\n while (++i < n) {\n if (callbackValue = callbacks[i].value) {\n callbackValue.apply(this, arguments);\n }\n }\n\n return that;\n };\n }\n }\n\n dispatch.prototype = Dispatch.prototype;\n\n var version = \"0.2.6\";\n\n exports.version = version;\n exports.dispatch = dispatch;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/d3-cloud/~/d3-dispatch/build/d3-dispatch.js\n ** module id = 133\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n df = require('vega-dataflow'),\n Node = df.Node, // jshint ignore:line\n Tuple = df.Tuple,\n Deps = df.Dependencies;\n\nvar Types = {\n INSERT: \"insert\",\n REMOVE: \"remove\",\n UPSERT: \"upsert\",\n TOGGLE: \"toggle\",\n CLEAR: \"clear\"\n};\n\nvar EMPTY = [];\n\nfunction filter(fields, value, src, dest) {\n var splice = true, len = fields.length, i, j, f, v;\n for (i = src.length - 1; i >= 0; --i) {\n for (j=0; j 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = \",\",\n peg$c1 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c2 = function(o, m) { return [o].concat(m); },\n peg$c3 = function(o) { return [o]; },\n peg$c4 = \"[\",\n peg$c5 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c6 = \"]\",\n peg$c7 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c8 = \">\",\n peg$c9 = { type: \"literal\", value: \">\", description: \"\\\">\\\"\" },\n peg$c10 = function(f1, f2, o) {\n return {\n start: f1, middle: o, end: f2,\n str: '['+f1.str+', '+f2.str+'] > '+o.str};\n },\n peg$c11 = function(s, f) {\n s.filters = f;\n s.str += f.map(function(x) { return '['+x+']'; }).join('');\n return s;\n },\n peg$c12 = function(s) { return s; },\n peg$c13 = \"(\",\n peg$c14 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c15 = \")\",\n peg$c16 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c17 = function(m) {\n return {\n stream: m,\n str: '('+m.map(function(m) { return m.str; }).join(', ')+')'\n };\n },\n peg$c18 = \"@\",\n peg$c19 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n peg$c20 = \":\",\n peg$c21 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c22 = function(n, e) { return {event: e, name: n, str: '@'+n+':'+e}; },\n peg$c23 = function(m, e) { return {event: e, mark: m, str: m+':'+e}; },\n peg$c24 = function(t, e) { return {event: e, target: t, str: t+':'+e}; },\n peg$c25 = function(e) { return {event: e, str: e}; },\n peg$c26 = function(s) { return {signal: s, str: s}; },\n peg$c27 = \"rect\",\n peg$c28 = { type: \"literal\", value: \"rect\", description: \"\\\"rect\\\"\" },\n peg$c29 = \"symbol\",\n peg$c30 = { type: \"literal\", value: \"symbol\", description: \"\\\"symbol\\\"\" },\n peg$c31 = \"path\",\n peg$c32 = { type: \"literal\", value: \"path\", description: \"\\\"path\\\"\" },\n peg$c33 = \"arc\",\n peg$c34 = { type: \"literal\", value: \"arc\", description: \"\\\"arc\\\"\" },\n peg$c35 = \"area\",\n peg$c36 = { type: \"literal\", value: \"area\", description: \"\\\"area\\\"\" },\n peg$c37 = \"line\",\n peg$c38 = { type: \"literal\", value: \"line\", description: \"\\\"line\\\"\" },\n peg$c39 = \"rule\",\n peg$c40 = { type: \"literal\", value: \"rule\", description: \"\\\"rule\\\"\" },\n peg$c41 = \"image\",\n peg$c42 = { type: \"literal\", value: \"image\", description: \"\\\"image\\\"\" },\n peg$c43 = \"text\",\n peg$c44 = { type: \"literal\", value: \"text\", description: \"\\\"text\\\"\" },\n peg$c45 = \"group\",\n peg$c46 = { type: \"literal\", value: \"group\", description: \"\\\"group\\\"\" },\n peg$c47 = \"mousedown\",\n peg$c48 = { type: \"literal\", value: \"mousedown\", description: \"\\\"mousedown\\\"\" },\n peg$c49 = \"mouseup\",\n peg$c50 = { type: \"literal\", value: \"mouseup\", description: \"\\\"mouseup\\\"\" },\n peg$c51 = \"click\",\n peg$c52 = { type: \"literal\", value: \"click\", description: \"\\\"click\\\"\" },\n peg$c53 = \"dblclick\",\n peg$c54 = { type: \"literal\", value: \"dblclick\", description: \"\\\"dblclick\\\"\" },\n peg$c55 = \"wheel\",\n peg$c56 = { type: \"literal\", value: \"wheel\", description: \"\\\"wheel\\\"\" },\n peg$c57 = \"keydown\",\n peg$c58 = { type: \"literal\", value: \"keydown\", description: \"\\\"keydown\\\"\" },\n peg$c59 = \"keypress\",\n peg$c60 = { type: \"literal\", value: \"keypress\", description: \"\\\"keypress\\\"\" },\n peg$c61 = \"keyup\",\n peg$c62 = { type: \"literal\", value: \"keyup\", description: \"\\\"keyup\\\"\" },\n peg$c63 = \"mousewheel\",\n peg$c64 = { type: \"literal\", value: \"mousewheel\", description: \"\\\"mousewheel\\\"\" },\n peg$c65 = \"mousemove\",\n peg$c66 = { type: \"literal\", value: \"mousemove\", description: \"\\\"mousemove\\\"\" },\n peg$c67 = \"mouseout\",\n peg$c68 = { type: \"literal\", value: \"mouseout\", description: \"\\\"mouseout\\\"\" },\n peg$c69 = \"mouseover\",\n peg$c70 = { type: \"literal\", value: \"mouseover\", description: \"\\\"mouseover\\\"\" },\n peg$c71 = \"mouseenter\",\n peg$c72 = { type: \"literal\", value: \"mouseenter\", description: \"\\\"mouseenter\\\"\" },\n peg$c73 = \"touchstart\",\n peg$c74 = { type: \"literal\", value: \"touchstart\", description: \"\\\"touchstart\\\"\" },\n peg$c75 = \"touchmove\",\n peg$c76 = { type: \"literal\", value: \"touchmove\", description: \"\\\"touchmove\\\"\" },\n peg$c77 = \"touchend\",\n peg$c78 = { type: \"literal\", value: \"touchend\", description: \"\\\"touchend\\\"\" },\n peg$c79 = \"dragenter\",\n peg$c80 = { type: \"literal\", value: \"dragenter\", description: \"\\\"dragenter\\\"\" },\n peg$c81 = \"dragover\",\n peg$c82 = { type: \"literal\", value: \"dragover\", description: \"\\\"dragover\\\"\" },\n peg$c83 = \"dragleave\",\n peg$c84 = { type: \"literal\", value: \"dragleave\", description: \"\\\"dragleave\\\"\" },\n peg$c85 = function(e) { return e; },\n peg$c86 = /^[a-zA-Z0-9_\\-]/,\n peg$c87 = { type: \"class\", value: \"[a-zA-Z0-9_-]\", description: \"[a-zA-Z0-9_-]\" },\n peg$c88 = function(n) { return n.join(''); },\n peg$c89 = /^[a-zA-Z0-9\\-_ #.>+~[\\]=|\\^$*]/,\n peg$c90 = { type: \"class\", value: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\", description: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\" },\n peg$c91 = function(c) { return c.join(''); },\n peg$c92 = /^['\"a-zA-Z0-9_().><=! \\t-&|~]/,\n peg$c93 = { type: \"class\", value: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\", description: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\" },\n peg$c94 = function(v) { return v.join(''); },\n peg$c95 = /^[ \\t\\r\\n]/,\n peg$c96 = { type: \"class\", value: \"[ \\\\t\\\\r\\\\n]\", description: \"[ \\\\t\\\\r\\\\n]\" },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemerged();\n\n return s0;\n }\n\n function peg$parsemerged() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseordered();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesep();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c0;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsesep();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemerged();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseordered();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseordered() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesep();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsefiltered();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsesep();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsesep();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsefiltered();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsesep();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s9 = peg$c6;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsesep();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s11 = peg$c8;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parsesep();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseordered();\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10(s3, s7, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsefiltered();\n }\n\n return s0;\n }\n\n function peg$parsefiltered() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsestream();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsefilter();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsefilter();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsestream();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c12(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsestream() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c13;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c14); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemerged();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s3 = peg$c15;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c17(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s1 = peg$c18;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsename();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c20;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseeventType();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsemarkType();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c20;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseeventType();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecss();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c20;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseeventType();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseeventType();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsename();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsemarkType() {\n var s0;\n\n if (input.substr(peg$currPos, 4) === peg$c27) {\n s0 = peg$c27;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c29) {\n s0 = peg$c29;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c31) {\n s0 = peg$c31;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c33) {\n s0 = peg$c33;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c35) {\n s0 = peg$c35;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c37) {\n s0 = peg$c37;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c39) {\n s0 = peg$c39;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c41) {\n s0 = peg$c41;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c43) {\n s0 = peg$c43;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c45) {\n s0 = peg$c45;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseeventType() {\n var s0;\n\n if (input.substr(peg$currPos, 9) === peg$c47) {\n s0 = peg$c47;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c49) {\n s0 = peg$c49;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c51) {\n s0 = peg$c51;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c53) {\n s0 = peg$c53;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c55) {\n s0 = peg$c55;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c56); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c57) {\n s0 = peg$c57;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c59) {\n s0 = peg$c59;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c61) {\n s0 = peg$c61;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c63) {\n s0 = peg$c63;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c64); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c65) {\n s0 = peg$c65;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c67) {\n s0 = peg$c67;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c69) {\n s0 = peg$c69;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c70); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c71) {\n s0 = peg$c71;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c73) {\n s0 = peg$c73;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c74); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c75) {\n s0 = peg$c75;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c77) {\n s0 = peg$c77;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c79) {\n s0 = peg$c79;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c81) {\n s0 = peg$c81;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c83) {\n s0 = peg$c83;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsefilter() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexpr();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c6;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c85(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsename() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c86.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c87); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c86.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c87); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c88(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecss() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c89.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c89.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c91(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseexpr() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c92.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c93); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c92.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c93); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c94(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsesep() {\n var s0, s1;\n\n s0 = [];\n if (peg$c95.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c95.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-event-selector/index.js\n ** module id = 135\n ** module chunks = 0\n **/","var dl = require('datalib'),\n template = dl.template,\n expr = require('vega-expression'),\n args = ['datum', 'event', 'signals'];\n\nvar compile = expr.compiler(args, {\n idWhiteList: args,\n fieldVar: args[0],\n globalVar: function(id) {\n return 'this.sig[' + dl.str(id) + ']._value';\n },\n functions: function(codegen) {\n var fn = expr.functions(codegen);\n fn.eventItem = 'event.vg.getItem';\n fn.eventGroup = 'event.vg.getGroup';\n fn.eventX = 'event.vg.getX';\n fn.eventY = 'event.vg.getY';\n fn.open = 'window.open';\n fn.scale = scaleGen(codegen, false);\n fn.iscale = scaleGen(codegen, true);\n fn.inrange = 'this.defs.inrange';\n fn.indata = indataGen(codegen);\n fn.format = 'this.defs.format';\n fn.timeFormat = 'this.defs.timeFormat';\n fn.utcFormat = 'this.defs.utcFormat';\n return fn;\n },\n functionDefs: function(/*codegen*/) {\n return {\n 'scale': scale,\n 'inrange': inrange,\n 'indata': indata,\n 'format': numberFormat,\n 'timeFormat': timeFormat,\n 'utcFormat': utcFormat\n };\n }\n});\n\nfunction scaleGen(codegen, invert) {\n return function(args) {\n args = args.map(codegen);\n var n = args.length;\n if (n < 2 || n > 3) {\n throw Error(\"scale takes exactly 2 or 3 arguments.\");\n }\n return 'this.defs.scale(this.model, ' + invert + ', ' +\n args[0] + ',' + args[1] + (n > 2 ? ',' + args[2] : '') + ')';\n };\n}\n\nfunction scale(model, invert, name, value, scope) {\n if (!scope || !scope.scale) {\n scope = (scope && scope.mark) ? scope.mark.group : model.scene().items[0];\n }\n // Verify scope is valid\n if (model.group(scope._id) !== scope) {\n throw Error('Scope for scale \"'+name+'\" is not a valid group item.');\n }\n var s = scope.scale(name);\n return !s ? value : (invert ? s.invert(value) : s(value));\n}\n\nfunction inrange(val, a, b, exclusive) {\n var min = a, max = b;\n if (a > b) { min = b; max = a; }\n return exclusive ?\n (min < val && max > val) :\n (min <= val && max >= val);\n}\n\nfunction indataGen(codegen) {\n return function(args, globals, fields, dataSources) {\n var data;\n if (args.length !== 3) {\n throw Error(\"indata takes 3 arguments.\");\n }\n if (args[0].type !== 'Literal') {\n throw Error(\"Data source name must be a literal for indata.\");\n }\n\n data = args[0].value;\n dataSources[data] = 1;\n if (args[2].type === 'Literal') {\n indataGen.model.requestIndex(data, args[2].value);\n }\n\n args = args.map(codegen);\n return 'this.defs.indata(this.model,' + \n args[0] + ',' + args[1] + ',' + args[2] + ')';\n };\n}\n\nfunction indata(model, dataname, val, field) {\n var data = model.data(dataname),\n index = data.getIndex(field);\n return index[val] > 0;\n}\n\nfunction numberFormat(specifier, v) {\n return template.format(specifier, 'number')(v);\n}\n\nfunction timeFormat(specifier, d) {\n return template.format(specifier, 'time')(d);\n}\n\nfunction utcFormat(specifier, d) {\n return template.format(specifier, 'utc')(d);\n}\n\nfunction wrap(model) {\n return function(str) {\n indataGen.model = model;\n var x = compile(str);\n x.model = model;\n x.sig = model ? model._signals : {};\n return x;\n };\n}\n\nwrap.scale = scale;\nwrap.codegen = compile.codegen;\nmodule.exports = wrap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/expr.js\n ** module id = 136\n ** module chunks = 0\n **/","var parser = require('./parser'),\n codegen = require('./codegen');\n\nvar expr = module.exports = {\n parse: function(input, opt) {\n return parser.parse('('+input+')', opt);\n },\n code: function(opt) {\n return codegen(opt);\n },\n compiler: function(args, opt) {\n args = args.slice();\n var generator = codegen(opt),\n len = args.length,\n compile = function(str) {\n var value = generator(expr.parse(str));\n args[len] = '\"use strict\"; return (' + value.code + ');';\n var fn = Function.apply(null, args);\n value.fn = (args.length > 8) ?\n function() { return fn.apply(value, arguments); } :\n function(a, b, c, d, e, f, g) {\n return fn.call(value, a, b, c, d, e, f, g);\n }; // call often faster than apply, use if args low enough\n return value;\n };\n compile.codegen = generator;\n return compile;\n },\n functions: require('./functions'),\n constants: require('./constants')\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/index.js\n ** module id = 137\n ** module chunks = 0\n **/","/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat \n Copyright (C) 2013 Thaddee Tyl \n Copyright (C) 2013 Mathias Bynens \n Copyright (C) 2012 Ariya Hidayat \n Copyright (C) 2012 Mathias Bynens \n Copyright (C) 2012 Joost-Wim Boekesteijn \n Copyright (C) 2012 Kris Kowal \n Copyright (C) 2012 Yusuke Suzuki \n Copyright (C) 2012 Arpad Borsos \n Copyright (C) 2011 Ariya Hidayat \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/* istanbul ignore next */\nmodule.exports = (function() {\n 'use strict';\n\n var Token,\n TokenName,\n Syntax,\n PropertyKind,\n Messages,\n Regex,\n source,\n strict,\n index,\n lineNumber,\n lineStart,\n length,\n lookahead,\n state,\n extra;\n\n Token = {\n BooleanLiteral: 1,\n EOF: 2,\n Identifier: 3,\n Keyword: 4,\n NullLiteral: 5,\n NumericLiteral: 6,\n Punctuator: 7,\n StringLiteral: 8,\n RegularExpression: 9\n };\n\n TokenName = {};\n TokenName[Token.BooleanLiteral] = 'Boolean';\n TokenName[Token.EOF] = '';\n TokenName[Token.Identifier] = 'Identifier';\n TokenName[Token.Keyword] = 'Keyword';\n TokenName[Token.NullLiteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Numeric';\n TokenName[Token.Punctuator] = 'Punctuator';\n TokenName[Token.StringLiteral] = 'String';\n TokenName[Token.RegularExpression] = 'RegularExpression';\n\n Syntax = {\n AssignmentExpression: 'AssignmentExpression',\n ArrayExpression: 'ArrayExpression',\n BinaryExpression: 'BinaryExpression',\n CallExpression: 'CallExpression',\n ConditionalExpression: 'ConditionalExpression',\n ExpressionStatement: 'ExpressionStatement',\n Identifier: 'Identifier',\n Literal: 'Literal',\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'MemberExpression',\n ObjectExpression: 'ObjectExpression',\n Program: 'Program',\n Property: 'Property',\n UnaryExpression: 'UnaryExpression'\n };\n\n PropertyKind = {\n Data: 1,\n Get: 2,\n Set: 4\n };\n\n // Error messages should be identical to V8.\n Messages = {\n UnexpectedToken: 'Unexpected token %0',\n UnexpectedNumber: 'Unexpected number',\n UnexpectedString: 'Unexpected string',\n UnexpectedIdentifier: 'Unexpected identifier',\n UnexpectedReserved: 'Unexpected reserved word',\n UnexpectedEOS: 'Unexpected end of input',\n NewlineAfterThrow: 'Illegal newline after throw',\n InvalidRegExp: 'Invalid regular expression',\n UnterminatedRegExp: 'Invalid regular expression: missing /',\n InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n NoCatchOrFinally: 'Missing catch or finally after try',\n UnknownLabel: 'Undefined label \\'%0\\'',\n Redeclaration: '%0 \\'%1\\' has already been declared',\n IllegalContinue: 'Illegal continue statement',\n IllegalBreak: 'Illegal break statement',\n IllegalReturn: 'Illegal return statement',\n StrictModeWith: 'Strict mode code may not include a with statement',\n StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode',\n AccessorDataProperty: 'Object literal may not have data and accessor property with the same name',\n AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name',\n StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n StrictReservedWord: 'Use of future reserved word in strict mode'\n };\n\n // See also tools/generate-unicode-regex.py.\n Regex = {\n NonAsciiIdentifierStart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]'),\n NonAsciiIdentifierPart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]')\n };\n\n // Ensure the condition is true, otherwise throw an error.\n // This is only to have a better contract semantic, i.e. another safety net\n // to catch a logic error. The condition shall be fulfilled in normal case.\n // Do NOT use this to enforce a certain condition on any user input.\n\n function assert(condition, message) {\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n }\n\n function isDecimalDigit(ch) {\n return (ch >= 0x30 && ch <= 0x39); // 0..9\n }\n\n function isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n }\n\n function isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n }\n\n // 7.2 White Space\n\n function isWhiteSpace(ch) {\n return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n }\n\n // 7.3 Line Terminators\n\n function isLineTerminator(ch) {\n return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n }\n\n // 7.6 Identifier Names and Identifiers\n\n function isIdentifierStart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n }\n\n function isIdentifierPart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch >= 0x30 && ch <= 0x39) || // 0..9\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n }\n\n // 7.6.1.2 Future Reserved Words\n\n function isFutureReservedWord(id) {\n switch (id) {\n case 'class':\n case 'enum':\n case 'export':\n case 'extends':\n case 'import':\n case 'super':\n return true;\n default:\n return false;\n }\n }\n\n function isStrictModeReservedWord(id) {\n switch (id) {\n case 'implements':\n case 'interface':\n case 'package':\n case 'private':\n case 'protected':\n case 'public':\n case 'static':\n case 'yield':\n case 'let':\n return true;\n default:\n return false;\n }\n }\n\n // 7.6.1.1 Keywords\n\n function isKeyword(id) {\n if (strict && isStrictModeReservedWord(id)) {\n return true;\n }\n\n // 'const' is specialized as Keyword in V8.\n // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next.\n // Some others are from future reserved words.\n\n switch (id.length) {\n case 2:\n return (id === 'if') || (id === 'in') || (id === 'do');\n case 3:\n return (id === 'var') || (id === 'for') || (id === 'new') ||\n (id === 'try') || (id === 'let');\n case 4:\n return (id === 'this') || (id === 'else') || (id === 'case') ||\n (id === 'void') || (id === 'with') || (id === 'enum');\n case 5:\n return (id === 'while') || (id === 'break') || (id === 'catch') ||\n (id === 'throw') || (id === 'const') || (id === 'yield') ||\n (id === 'class') || (id === 'super');\n case 6:\n return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n (id === 'switch') || (id === 'export') || (id === 'import');\n case 7:\n return (id === 'default') || (id === 'finally') || (id === 'extends');\n case 8:\n return (id === 'function') || (id === 'continue') || (id === 'debugger');\n case 10:\n return (id === 'instanceof');\n default:\n return false;\n }\n }\n\n function skipComment() {\n var ch, start;\n\n start = (index === 0);\n while (index < length) {\n ch = source.charCodeAt(index);\n\n if (isWhiteSpace(ch)) {\n ++index;\n } else if (isLineTerminator(ch)) {\n ++index;\n if (ch === 0x0D && source.charCodeAt(index) === 0x0A) {\n ++index;\n }\n ++lineNumber;\n lineStart = index;\n start = true;\n } else {\n break;\n }\n }\n }\n\n function scanHexEscape(prefix) {\n var i, len, ch, code = 0;\n\n len = (prefix === 'u') ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n return '';\n }\n }\n return String.fromCharCode(code);\n }\n\n function scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = ((code - 0x10000) >> 10) + 0xD800;\n cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n }\n\n function getEscapedIdentifier() {\n var ch, id;\n\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n id = ch;\n }\n\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n id += ch;\n }\n }\n\n return id;\n }\n\n function getIdentifier() {\n var start, ch;\n\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, index);\n }\n\n function scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = Token.Identifier;\n } else if (isKeyword(id)) {\n type = Token.Keyword;\n } else if (id === 'null') {\n type = Token.NullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = Token.BooleanLiteral;\n } else {\n type = Token.Identifier;\n }\n\n return {\n type: type,\n value: id,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 7.7 Punctuators\n\n function scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n\n switch (code) {\n\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E: // ~\n ++index;\n if (extra.tokenize) {\n if (code === 0x28) {\n extra.openParenToken = extra.tokens.length;\n } else if (code === 0x7B) {\n extra.openCurlyToken = extra.tokens.length;\n }\n }\n return {\n type: Token.Punctuator,\n value: String.fromCharCode(code),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A: // *\n index += 2;\n return {\n type: Token.Punctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n\n case 0x21: // !\n case 0x3D: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: Token.Punctuator,\n value: source.slice(start, index),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: Token.Punctuator,\n value: ch4,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: Token.Punctuator,\n value: ch3,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n\n if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n index += 2;\n return {\n type: Token.Punctuator,\n value: ch2,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: Token.Punctuator,\n value: ch1,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n // 7.8.3 Numeric Literals\n\n function scanHexLiteral(start) {\n var number = '';\n\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (number.length === 0) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseInt('0x' + number, 16),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n function scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n function scanNumericLiteral() {\n var number, start, ch;\n\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseFloat(number),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 7.8.4 String Literals\n\n function scanStringLiteral() {\n var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart;\n startLineNumber = lineNumber;\n startLineStart = lineStart;\n\n quote = source[index];\n assert((quote === '\\'' || quote === '\"'),\n 'String literal must starts with a quote');\n\n start = index;\n ++index;\n\n while (index < length) {\n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n restore = index;\n unescaped = scanHexEscape(ch);\n if (unescaped) {\n str += unescaped;\n } else {\n index = restore;\n str += ch;\n }\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 &&\n index < length &&\n isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n ++lineNumber;\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n lineStart = index;\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.StringLiteral,\n value: str,\n octal: octal,\n startLineNumber: startLineNumber,\n startLineStart: startLineStart,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n function testRegExp(pattern, flags) {\n var tmp = pattern,\n value;\n\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp\n .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function ($0, $1) {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, Messages.InvalidRegExp);\n })\n .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n value = new RegExp(tmp);\n } catch (e) {\n throwError({}, Messages.InvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n }\n\n function scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, Messages.UnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, Messages.UnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n\n if (!terminated) {\n throwError({}, Messages.UnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n }\n\n function scanRegExpFlags() {\n var ch, str, flags, restore;\n\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n\n ++index;\n if (ch === '\\\\' && index < length) {\n ch = source[index];\n if (ch === 'u') {\n ++index;\n restore = index;\n ch = scanHexEscape('u');\n if (ch) {\n flags += ch;\n for (str += '\\\\u'; restore < index; ++restore) {\n str += source[restore];\n }\n } else {\n index = restore;\n flags += 'u';\n str += '\\\\u';\n }\n throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n } else {\n str += '\\\\';\n throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n } else {\n flags += ch;\n str += ch;\n }\n }\n\n return {\n value: flags,\n literal: str\n };\n }\n\n function scanRegExp() {\n var start, body, flags, value;\n\n lookahead = null;\n skipComment();\n start = index;\n\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n\n if (extra.tokenize) {\n return {\n type: Token.RegularExpression,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n }\n\n function collectRegex() {\n var pos, loc, regex, token;\n\n skipComment();\n\n pos = index;\n loc = {\n start: {\n line: lineNumber,\n column: index - lineStart\n }\n };\n\n regex = scanRegExp();\n\n loc.end = {\n line: lineNumber,\n column: index - lineStart\n };\n\n if (!extra.tokenize) {\n // Pop the previous token, which is likely '/' or '/='\n if (extra.tokens.length > 0) {\n token = extra.tokens[extra.tokens.length - 1];\n if (token.range[0] === pos && token.type === 'Punctuator') {\n if (token.value === '/' || token.value === '/=') {\n extra.tokens.pop();\n }\n }\n }\n\n extra.tokens.push({\n type: 'RegularExpression',\n value: regex.literal,\n regex: regex.regex,\n range: [pos, index],\n loc: loc\n });\n }\n\n return regex;\n }\n\n function isIdentifierName(token) {\n return token.type === Token.Identifier ||\n token.type === Token.Keyword ||\n token.type === Token.BooleanLiteral ||\n token.type === Token.NullLiteral;\n }\n\n function advanceSlash() {\n var prevToken,\n checkToken;\n // Using the following algorithm:\n // https://github.com/mozilla/sweet.js/wiki/design\n prevToken = extra.tokens[extra.tokens.length - 1];\n if (!prevToken) {\n // Nothing before that: it cannot be a division.\n return collectRegex();\n }\n if (prevToken.type === 'Punctuator') {\n if (prevToken.value === ']') {\n return scanPunctuator();\n }\n if (prevToken.value === ')') {\n checkToken = extra.tokens[extra.openParenToken - 1];\n if (checkToken &&\n checkToken.type === 'Keyword' &&\n (checkToken.value === 'if' ||\n checkToken.value === 'while' ||\n checkToken.value === 'for' ||\n checkToken.value === 'with')) {\n return collectRegex();\n }\n return scanPunctuator();\n }\n if (prevToken.value === '}') {\n // Dividing a function by anything makes little sense,\n // but we have to check for that.\n if (extra.tokens[extra.openCurlyToken - 3] &&\n extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') {\n // Anonymous function.\n checkToken = extra.tokens[extra.openCurlyToken - 4];\n if (!checkToken) {\n return scanPunctuator();\n }\n } else if (extra.tokens[extra.openCurlyToken - 4] &&\n extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') {\n // Named function.\n checkToken = extra.tokens[extra.openCurlyToken - 5];\n if (!checkToken) {\n return collectRegex();\n }\n } else {\n return scanPunctuator();\n }\n return scanPunctuator();\n }\n return collectRegex();\n }\n if (prevToken.type === 'Keyword' && prevToken.value !== 'this') {\n return collectRegex();\n }\n return scanPunctuator();\n }\n\n function advance() {\n var ch;\n\n skipComment();\n\n if (index >= length) {\n return {\n type: Token.EOF,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: index,\n end: index\n };\n }\n\n ch = source.charCodeAt(index);\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n // Slash (/) U+002F can also start a regex.\n if (extra.tokenize && ch === 0x2F) {\n return advanceSlash();\n }\n\n return scanPunctuator();\n }\n\n function collectToken() {\n var loc, token, value, entry;\n\n skipComment();\n loc = {\n start: {\n line: lineNumber,\n column: index - lineStart\n }\n };\n\n token = advance();\n loc.end = {\n line: lineNumber,\n column: index - lineStart\n };\n\n if (token.type !== Token.EOF) {\n value = source.slice(token.start, token.end);\n entry = {\n type: TokenName[token.type],\n value: value,\n range: [token.start, token.end],\n loc: loc\n };\n if (token.regex) {\n entry.regex = {\n pattern: token.regex.pattern,\n flags: token.regex.flags\n };\n }\n extra.tokens.push(entry);\n }\n\n return token;\n }\n\n function lex() {\n var token;\n\n token = lookahead;\n index = token.end;\n lineNumber = token.lineNumber;\n lineStart = token.lineStart;\n\n lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n\n index = token.end;\n lineNumber = token.lineNumber;\n lineStart = token.lineStart;\n\n return token;\n }\n\n function peek() {\n var pos, line, start;\n\n pos = index;\n line = lineNumber;\n start = lineStart;\n lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n index = pos;\n lineNumber = line;\n lineStart = start;\n }\n\n function Position() {\n this.line = lineNumber;\n this.column = index - lineStart;\n }\n\n function SourceLocation() {\n this.start = new Position();\n this.end = null;\n }\n\n function WrappingSourceLocation(startToken) {\n if (startToken.type === Token.StringLiteral) {\n this.start = {\n line: startToken.startLineNumber,\n column: startToken.start - startToken.startLineStart\n };\n } else {\n this.start = {\n line: startToken.lineNumber,\n column: startToken.start - startToken.lineStart\n };\n }\n this.end = null;\n }\n\n function Node() {\n // Skip comment.\n index = lookahead.start;\n if (lookahead.type === Token.StringLiteral) {\n lineNumber = lookahead.startLineNumber;\n lineStart = lookahead.startLineStart;\n } else {\n lineNumber = lookahead.lineNumber;\n lineStart = lookahead.lineStart;\n }\n if (extra.range) {\n this.range = [index, 0];\n }\n if (extra.loc) {\n this.loc = new SourceLocation();\n }\n }\n\n function WrappingNode(startToken) {\n if (extra.range) {\n this.range = [startToken.start, 0];\n }\n if (extra.loc) {\n this.loc = new WrappingSourceLocation(startToken);\n }\n }\n\n WrappingNode.prototype = Node.prototype = {\n\n finish: function () {\n if (extra.range) {\n this.range[1] = index;\n }\n if (extra.loc) {\n this.loc.end = new Position();\n if (extra.source) {\n this.loc.source = extra.source;\n }\n }\n },\n\n finishArrayExpression: function (elements) {\n this.type = Syntax.ArrayExpression;\n this.elements = elements;\n this.finish();\n return this;\n },\n\n finishAssignmentExpression: function (operator, left, right) {\n this.type = Syntax.AssignmentExpression;\n this.operator = operator;\n this.left = left;\n this.right = right;\n this.finish();\n return this;\n },\n\n finishBinaryExpression: function (operator, left, right) {\n this.type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : Syntax.BinaryExpression;\n this.operator = operator;\n this.left = left;\n this.right = right;\n this.finish();\n return this;\n },\n\n finishCallExpression: function (callee, args) {\n this.type = Syntax.CallExpression;\n this.callee = callee;\n this.arguments = args;\n this.finish();\n return this;\n },\n\n finishConditionalExpression: function (test, consequent, alternate) {\n this.type = Syntax.ConditionalExpression;\n this.test = test;\n this.consequent = consequent;\n this.alternate = alternate;\n this.finish();\n return this;\n },\n\n finishExpressionStatement: function (expression) {\n this.type = Syntax.ExpressionStatement;\n this.expression = expression;\n this.finish();\n return this;\n },\n\n finishIdentifier: function (name) {\n this.type = Syntax.Identifier;\n this.name = name;\n this.finish();\n return this;\n },\n\n finishLiteral: function (token) {\n this.type = Syntax.Literal;\n this.value = token.value;\n this.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (this.raw == '//') {\n this.raw = '/(?:)/';\n }\n this.regex = token.regex;\n }\n this.finish();\n return this;\n },\n\n finishMemberExpression: function (accessor, object, property) {\n this.type = Syntax.MemberExpression;\n this.computed = accessor === '[';\n this.object = object;\n this.property = property;\n this.finish();\n return this;\n },\n\n finishObjectExpression: function (properties) {\n this.type = Syntax.ObjectExpression;\n this.properties = properties;\n this.finish();\n return this;\n },\n\n finishProgram: function (body) {\n this.type = Syntax.Program;\n this.body = body;\n this.finish();\n return this;\n },\n\n finishProperty: function (kind, key, value) {\n this.type = Syntax.Property;\n this.key = key;\n this.value = value;\n this.kind = kind;\n this.finish();\n return this;\n },\n\n finishUnaryExpression: function (operator, argument) {\n this.type = Syntax.UnaryExpression;\n this.operator = operator;\n this.argument = argument;\n this.prefix = true;\n this.finish();\n return this;\n }\n };\n\n // Return true if there is a line terminator before the next token.\n\n function peekLineTerminator() {\n var pos, line, start, found;\n\n pos = index;\n line = lineNumber;\n start = lineStart;\n skipComment();\n found = lineNumber !== line;\n index = pos;\n lineNumber = line;\n lineStart = start;\n\n return found;\n }\n\n // Throw an exception\n\n function throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function (whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n if (typeof token.lineNumber === 'number') {\n error = new Error('Line ' + token.lineNumber + ': ' + msg);\n error.index = token.start;\n error.lineNumber = token.lineNumber;\n error.column = token.start - lineStart + 1;\n } else {\n error = new Error('Line ' + lineNumber + ': ' + msg);\n error.index = index;\n error.lineNumber = lineNumber;\n error.column = index - lineStart + 1;\n }\n\n error.description = msg;\n throw error;\n }\n\n function throwErrorTolerant() {\n try {\n throwError.apply(null, arguments);\n } catch (e) {\n if (extra.errors) {\n extra.errors.push(e);\n } else {\n throw e;\n }\n }\n }\n\n\n // Throw an exception because of the token.\n\n function throwUnexpected(token) {\n if (token.type === Token.EOF) {\n throwError(token, Messages.UnexpectedEOS);\n }\n\n if (token.type === Token.NumericLiteral) {\n throwError(token, Messages.UnexpectedNumber);\n }\n\n if (token.type === Token.StringLiteral) {\n throwError(token, Messages.UnexpectedString);\n }\n\n if (token.type === Token.Identifier) {\n throwError(token, Messages.UnexpectedIdentifier);\n }\n\n if (token.type === Token.Keyword) {\n if (isFutureReservedWord(token.value)) {\n throwError(token, Messages.UnexpectedReserved);\n } else if (strict && isStrictModeReservedWord(token.value)) {\n throwErrorTolerant(token, Messages.StrictReservedWord);\n return;\n }\n throwError(token, Messages.UnexpectedToken, token.value);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, Messages.UnexpectedToken, token.value);\n }\n\n // Expect the next token to match the specified punctuator.\n // If not, an exception will be thrown.\n\n function expect(value) {\n var token = lex();\n if (token.type !== Token.Punctuator || token.value !== value) {\n throwUnexpected(token);\n }\n }\n\n /**\n * @name expectTolerant\n * @description Quietly expect the given token value when in tolerant mode, otherwise delegates\n * to expect(value)\n * @param {String} value The value we are expecting the lookahead token to have\n * @since 2.0\n */\n function expectTolerant(value) {\n if (extra.errors) {\n var token = lookahead;\n if (token.type !== Token.Punctuator && token.value !== value) {\n throwErrorTolerant(token, Messages.UnexpectedToken, token.value);\n } else {\n lex();\n }\n } else {\n expect(value);\n }\n }\n\n // Return true if the next token matches the specified punctuator.\n\n function match(value) {\n return lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n // Return true if the next token matches the specified keyword\n\n function matchKeyword(keyword) {\n return lookahead.type === Token.Keyword && lookahead.value === keyword;\n }\n\n function consumeSemicolon() {\n var line;\n\n // Catch the very common case first: immediately a semicolon (U+003B).\n if (source.charCodeAt(index) === 0x3B || match(';')) {\n lex();\n return;\n }\n\n line = lineNumber;\n skipComment();\n if (lineNumber !== line) {\n return;\n }\n\n if (lookahead.type !== Token.EOF && !match('}')) {\n throwUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\n var elements = [], node = new Node();\n\n expect('[');\n\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseAssignmentExpression());\n\n if (!match(']')) {\n expect(',');\n }\n }\n }\n\n lex();\n\n return node.finishArrayExpression(elements);\n }\n\n // 11.1.5 Object Initialiser\n\n function parseObjectPropertyKey() {\n var token, node = new Node();\n\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {\n if (strict && token.octal) {\n throwErrorTolerant(token, Messages.StrictOctalLiteral);\n }\n return node.finishLiteral(token);\n }\n\n return node.finishIdentifier(token.value);\n }\n\n function parseObjectProperty() {\n var token, key, id, value, node = new Node();\n\n token = lookahead;\n\n if (token.type === Token.Identifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseAssignmentExpression();\n return node.finishProperty('init', id, value);\n }\n if (token.type === Token.EOF || token.type === Token.Punctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseAssignmentExpression();\n return node.finishProperty('init', key, value);\n }\n }\n\n function parseObjectInitialiser() {\n var properties = [], property, name, key, kind, map = {}, toString = String, node = new Node();\n\n expect('{');\n\n while (!match('}')) {\n property = parseObjectProperty();\n\n if (property.key.type === Syntax.Identifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;\n\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n if (map[key] === PropertyKind.Data) {\n if (strict && kind === PropertyKind.Data) {\n throwErrorTolerant({}, Messages.StrictDuplicateProperty);\n } else if (kind !== PropertyKind.Data) {\n throwErrorTolerant({}, Messages.AccessorDataProperty);\n }\n } else {\n if (kind === PropertyKind.Data) {\n throwErrorTolerant({}, Messages.AccessorDataProperty);\n } else if (map[key] & kind) {\n throwErrorTolerant({}, Messages.AccessorGetSet);\n }\n }\n map[key] |= kind;\n } else {\n map[key] = kind;\n }\n\n properties.push(property);\n\n if (!match('}')) {\n expectTolerant(',');\n }\n }\n\n expect('}');\n\n return node.finishObjectExpression(properties);\n }\n\n // 11.1.6 The Grouping Operator\n\n function parseGroupExpression() {\n var expr;\n\n expect('(');\n\n ++state.parenthesisCount;\n\n expr = parseExpression();\n\n expect(')');\n\n return expr;\n }\n\n\n // 11.1 Primary Expressions\n\n var legalKeywords = {\"if\":1, \"this\":1};\n\n function parsePrimaryExpression() {\n var type, token, expr, node;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n if (match('[')) {\n return parseArrayInitialiser();\n }\n\n if (match('{')) {\n return parseObjectInitialiser();\n }\n\n type = lookahead.type;\n node = new Node();\n\n if (type === Token.Identifier || legalKeywords[lookahead.value]) {\n expr = node.finishIdentifier(lex().value);\n } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {\n if (strict && lookahead.octal) {\n throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);\n }\n expr = node.finishLiteral(lex());\n } else if (type === Token.Keyword) {\n throw new Error(\"Disabled.\");\n } else if (type === Token.BooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = node.finishLiteral(token);\n } else if (type === Token.NullLiteral) {\n token = lex();\n token.value = null;\n expr = node.finishLiteral(token);\n } else if (match('/') || match('/=')) {\n if (typeof extra.tokens !== 'undefined') {\n expr = node.finishLiteral(collectRegex());\n } else {\n expr = node.finishLiteral(scanRegExp());\n }\n peek();\n } else {\n throwUnexpected(lex());\n }\n\n return expr;\n }\n\n // 11.2 Left-Hand-Side Expressions\n\n function parseArguments() {\n var args = [];\n\n expect('(');\n\n if (!match(')')) {\n while (index < length) {\n args.push(parseAssignmentExpression());\n if (match(')')) {\n break;\n }\n expectTolerant(',');\n }\n }\n\n expect(')');\n\n return args;\n }\n\n function parseNonComputedProperty() {\n var token, node = new Node();\n\n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return node.finishIdentifier(token.value);\n }\n\n function parseNonComputedMember() {\n expect('.');\n\n return parseNonComputedProperty();\n }\n\n function parseComputedMember() {\n var expr;\n\n expect('[');\n\n expr = parseExpression();\n\n expect(']');\n\n return expr;\n }\n\n function parseLeftHandSideExpressionAllowCall() {\n var expr, args, property, startToken, previousAllowIn = state.allowIn;\n\n startToken = lookahead;\n state.allowIn = true;\n expr = parsePrimaryExpression();\n\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = new WrappingNode(startToken).finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n state.allowIn = previousAllowIn;\n\n return expr;\n }\n\n // 11.3 Postfix Expressions\n\n function parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n\n if (lookahead.type === Token.Punctuator) {\n if ((match('++') || match('--')) && !peekLineTerminator()) {\n throw new Error(\"Disabled.\");\n }\n }\n\n return expr;\n }\n\n // 11.4 Unary Operators\n\n function parseUnaryExpression() {\n var token, expr, startToken;\n\n if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(\"Disabled.\");\n } else if (match('+') || match('-') || match('~') || match('!')) {\n startToken = lookahead;\n token = lex();\n expr = parseUnaryExpression();\n expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(\"Disabled.\");\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n }\n\n function binaryPrecedence(token, allowIn) {\n var prec = 0;\n\n if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n return 0;\n }\n\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n\n case '&&':\n prec = 2;\n break;\n\n case '|':\n prec = 3;\n break;\n\n case '^':\n prec = 4;\n break;\n\n case '&':\n prec = 5;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n prec = 7;\n break;\n\n case 'in':\n prec = allowIn ? 7 : 0;\n break;\n\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n\n default:\n break;\n }\n\n return prec;\n }\n\n // 11.5 Multiplicative Operators\n // 11.6 Additive Operators\n // 11.7 Bitwise Shift Operators\n // 11.8 Relational Operators\n // 11.9 Equality Operators\n // 11.10 Binary Bitwise Operators\n // 11.11 Binary Logical Operators\n\n function parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\n marker = lookahead;\n left = parseUnaryExpression();\n\n token = lookahead;\n prec = binaryPrecedence(token, state.allowIn);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = new WrappingNode(markers[markers.length - 1]).finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n expr = new WrappingNode(markers.pop()).finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n }\n\n // 11.12 Conditional Operator\n\n function parseConditionalExpression() {\n var expr, previousAllowIn, consequent, alternate, startToken;\n\n startToken = lookahead;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\n previousAllowIn = state.allowIn;\n state.allowIn = true;\n consequent = parseAssignmentExpression();\n state.allowIn = previousAllowIn;\n expect(':');\n alternate = parseAssignmentExpression();\n\n expr = new WrappingNode(startToken).finishConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n }\n\n // 11.13 Assignment Operators\n\n function parseAssignmentExpression() {\n var oldParenthesisCount, token, expr, startToken;\n\n oldParenthesisCount = state.parenthesisCount;\n\n startToken = lookahead;\n token = lookahead;\n\n expr = parseConditionalExpression();\n\n return expr;\n }\n\n // 11.14 Comma Operator\n\n function parseExpression() {\n var expr = parseAssignmentExpression();\n\n if (match(',')) {\n throw new Error(\"Disabled.\"); // no sequence expressions\n }\n\n return expr;\n }\n\n // 12.4 Expression Statement\n\n function parseExpressionStatement(node) {\n var expr = parseExpression();\n consumeSemicolon();\n return node.finishExpressionStatement(expr);\n }\n\n // 12 Statements\n\n function parseStatement() {\n var type = lookahead.type,\n expr,\n node;\n\n if (type === Token.EOF) {\n throwUnexpected(lookahead);\n }\n\n if (type === Token.Punctuator && lookahead.value === '{') {\n throw new Error(\"Disabled.\"); // block statement\n }\n\n node = new Node();\n\n if (type === Token.Punctuator) {\n switch (lookahead.value) {\n case ';':\n throw new Error(\"Disabled.\"); // empty statement\n case '(':\n return parseExpressionStatement(node);\n default:\n break;\n }\n } else if (type === Token.Keyword) {\n throw new Error(\"Disabled.\"); // keyword\n }\n\n expr = parseExpression();\n consumeSemicolon();\n return node.finishExpressionStatement(expr);\n }\n\n // 14 Program\n\n function parseSourceElement() {\n if (lookahead.type === Token.Keyword) {\n switch (lookahead.value) {\n case 'const':\n case 'let':\n throw new Error(\"Disabled.\");\n case 'function':\n throw new Error(\"Disabled.\");\n default:\n return parseStatement();\n }\n }\n\n if (lookahead.type !== Token.EOF) {\n return parseStatement();\n }\n }\n\n function parseSourceElements() {\n var sourceElement, sourceElements = [], token, directive, firstRestricted;\n\n while (index < length) {\n token = lookahead;\n if (token.type !== Token.StringLiteral) {\n break;\n }\n\n sourceElement = parseSourceElement();\n sourceElements.push(sourceElement);\n if (sourceElement.expression.type !== Syntax.Literal) {\n // this is not directive\n break;\n }\n directive = source.slice(token.start + 1, token.end - 1);\n if (directive === 'use strict') {\n strict = true;\n if (firstRestricted) {\n throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);\n }\n } else {\n if (!firstRestricted && token.octal) {\n firstRestricted = token;\n }\n }\n }\n\n while (index < length) {\n sourceElement = parseSourceElement();\n if (typeof sourceElement === 'undefined') {\n break;\n }\n sourceElements.push(sourceElement);\n }\n return sourceElements;\n }\n\n function parseProgram() {\n var body, node;\n\n skipComment();\n peek();\n node = new Node();\n strict = true; // assume strict\n\n body = parseSourceElements();\n return node.finishProgram(body);\n }\n\n function filterTokenLocation() {\n var i, entry, token, tokens = [];\n\n for (i = 0; i < extra.tokens.length; ++i) {\n entry = extra.tokens[i];\n token = {\n type: entry.type,\n value: entry.value\n };\n if (entry.regex) {\n token.regex = {\n pattern: entry.regex.pattern,\n flags: entry.regex.flags\n };\n }\n if (extra.range) {\n token.range = entry.range;\n }\n if (extra.loc) {\n token.loc = entry.loc;\n }\n tokens.push(token);\n }\n\n extra.tokens = tokens;\n }\n\n function tokenize(code, options) {\n var toString,\n tokens;\n\n toString = String;\n if (typeof code !== 'string' && !(code instanceof String)) {\n code = toString(code);\n }\n\n source = code;\n index = 0;\n lineNumber = (source.length > 0) ? 1 : 0;\n lineStart = 0;\n length = source.length;\n lookahead = null;\n state = {\n allowIn: true,\n labelSet: {},\n inFunctionBody: false,\n inIteration: false,\n inSwitch: false,\n lastCommentStart: -1\n };\n\n extra = {};\n\n // Options matching.\n options = options || {};\n\n // Of course we collect tokens here.\n options.tokens = true;\n extra.tokens = [];\n extra.tokenize = true;\n // The following two fields are necessary to compute the Regex tokens.\n extra.openParenToken = -1;\n extra.openCurlyToken = -1;\n\n extra.range = (typeof options.range === 'boolean') && options.range;\n extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\n if (typeof options.tolerant === 'boolean' && options.tolerant) {\n extra.errors = [];\n }\n\n try {\n peek();\n if (lookahead.type === Token.EOF) {\n return extra.tokens;\n }\n\n lex();\n while (lookahead.type !== Token.EOF) {\n try {\n lex();\n } catch (lexError) {\n if (extra.errors) {\n extra.errors.push(lexError);\n // We have to break on the first error\n // to avoid infinite loops.\n break;\n } else {\n throw lexError;\n }\n }\n }\n\n filterTokenLocation();\n tokens = extra.tokens;\n if (typeof extra.errors !== 'undefined') {\n tokens.errors = extra.errors;\n }\n } catch (e) {\n throw e;\n } finally {\n extra = {};\n }\n return tokens;\n }\n\n function parse(code, options) {\n var program, toString;\n\n toString = String;\n if (typeof code !== 'string' && !(code instanceof String)) {\n code = toString(code);\n }\n\n source = code;\n index = 0;\n lineNumber = (source.length > 0) ? 1 : 0;\n lineStart = 0;\n length = source.length;\n lookahead = null;\n state = {\n allowIn: true,\n labelSet: {},\n parenthesisCount: 0,\n inFunctionBody: false,\n inIteration: false,\n inSwitch: false,\n lastCommentStart: -1\n };\n\n extra = {};\n if (typeof options !== 'undefined') {\n extra.range = (typeof options.range === 'boolean') && options.range;\n extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\n if (extra.loc && options.source !== null && options.source !== undefined) {\n extra.source = toString(options.source);\n }\n\n if (typeof options.tokens === 'boolean' && options.tokens) {\n extra.tokens = [];\n }\n if (typeof options.tolerant === 'boolean' && options.tolerant) {\n extra.errors = [];\n }\n }\n\n try {\n program = parseProgram();\n if (typeof extra.tokens !== 'undefined') {\n filterTokenLocation();\n program.tokens = extra.tokens;\n }\n if (typeof extra.errors !== 'undefined') {\n program.errors = extra.errors;\n }\n } catch (e) {\n throw e;\n } finally {\n extra = {};\n }\n\n return program;\n }\n\n return {\n tokenize: tokenize,\n parse: parse\n };\n\n})();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/parser.js\n ** module id = 138\n ** module chunks = 0\n **/","function toMap(list) {\n var map = {}, i, n;\n for (i=0, n=list.length; i 0) {\n return id;\n }\n if (constants.hasOwnProperty(id)) {\n return constants[id];\n }\n if (idWhiteList) {\n if (idWhiteList.hasOwnProperty(id)) {\n return id;\n } else {\n globals[id] = 1;\n return lookupGlobal(id);\n }\n }\n if (idBlackList && idBlackList.hasOwnProperty(id)) {\n throw new Error('Illegal identifier: ' + id);\n }\n return id;\n },\n 'Program': function(n) {\n return n.body.map(codegen).join('\\n');\n },\n 'MemberExpression': function(n) {\n var d = !n.computed;\n var o = codegen(n.object);\n if (d) memberDepth += 1;\n var p = codegen(n.property);\n if (o === FIELD_VAR) { fields[p] = 1; } // HACKish...\n if (d) memberDepth -= 1;\n return o + (d ? '.'+p : '['+p+']');\n },\n 'CallExpression': function(n) {\n if (n.callee.type !== 'Identifier') {\n throw new Error('Illegal callee type: ' + n.callee.type);\n }\n var callee = n.callee.name;\n var args = n.arguments;\n var fn = functions.hasOwnProperty(callee) && functions[callee];\n if (!fn) throw new Error('Unrecognized function: ' + callee);\n return fn instanceof Function ?\n fn(args, globals, fields, dataSources) :\n fn + '(' + args.map(codegen).join(',') + ')';\n },\n 'ArrayExpression': function(n) {\n return '[' + n.elements.map(codegen).join(',') + ']';\n },\n 'BinaryExpression': function(n) {\n return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n },\n 'UnaryExpression': function(n) {\n return '(' + n.operator + codegen(n.argument) + ')';\n },\n 'ConditionalExpression': function(n) {\n return '(' + codegen(n.test) +\n '?' + codegen(n.consequent) +\n ':' + codegen(n.alternate) +\n ')';\n },\n 'LogicalExpression': function(n) {\n return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n },\n 'ObjectExpression': function(n) {\n return '{' + n.properties.map(codegen).join(',') + '}';\n },\n 'Property': function(n) {\n memberDepth += 1;\n var k = codegen(n.key);\n memberDepth -= 1;\n return k + ':' + codegen(n.value);\n },\n 'ExpressionStatement': function(n) {\n return codegen(n.expression);\n }\n };\n\n codegen_wrap.functions = functions;\n codegen_wrap.functionDefs = functionDefs;\n codegen_wrap.constants = constants;\n return codegen_wrap;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/codegen.js\n ** module id = 139\n ** module chunks = 0\n **/","module.exports = {\n 'NaN': 'NaN',\n 'E': 'Math.E',\n 'LN2': 'Math.LN2',\n 'LN10': 'Math.LN10',\n 'LOG2E': 'Math.LOG2E',\n 'LOG10E': 'Math.LOG10E',\n 'PI': 'Math.PI',\n 'SQRT1_2': 'Math.SQRT1_2',\n 'SQRT2': 'Math.SQRT2'\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/constants.js\n ** module id = 140\n ** module chunks = 0\n **/","module.exports = function(codegen) {\n\n function fncall(name, args, cast, type) {\n var obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n '()' :\n '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n\n function fn(name, cast, type) {\n return function(args) {\n return fncall(name, args, cast, type);\n };\n }\n\n var DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n\n return {\n // MATH functions\n 'isNaN': 'isNaN',\n 'isFinite': 'isFinite',\n 'abs': 'Math.abs',\n 'acos': 'Math.acos',\n 'asin': 'Math.asin',\n 'atan': 'Math.atan',\n 'atan2': 'Math.atan2',\n 'ceil': 'Math.ceil',\n 'cos': 'Math.cos',\n 'exp': 'Math.exp',\n 'floor': 'Math.floor',\n 'log': 'Math.log',\n 'max': 'Math.max',\n 'min': 'Math.min',\n 'pow': 'Math.pow',\n 'random': 'Math.random',\n 'round': 'Math.round',\n 'sin': 'Math.sin',\n 'sqrt': 'Math.sqrt',\n 'tan': 'Math.tan',\n\n 'clamp': function(args) {\n if (args.length < 3)\n throw new Error('Missing arguments to clamp function.');\n if (args.length > 3)\n throw new Error('Too many arguments to clamp function.');\n var a = args.map(codegen);\n return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n },\n\n // DATE functions\n 'now': 'Date.now',\n 'utc': 'Date.UTC',\n 'datetime': DATE,\n 'date': fn('getDate', DATE, 0),\n 'day': fn('getDay', DATE, 0),\n 'year': fn('getFullYear', DATE, 0),\n 'month': fn('getMonth', DATE, 0),\n 'hours': fn('getHours', DATE, 0),\n 'minutes': fn('getMinutes', DATE, 0),\n 'seconds': fn('getSeconds', DATE, 0),\n 'milliseconds': fn('getMilliseconds', DATE, 0),\n 'time': fn('getTime', DATE, 0),\n 'timezoneoffset': fn('getTimezoneOffset', DATE, 0),\n 'utcdate': fn('getUTCDate', DATE, 0),\n 'utcday': fn('getUTCDay', DATE, 0),\n 'utcyear': fn('getUTCFullYear', DATE, 0),\n 'utcmonth': fn('getUTCMonth', DATE, 0),\n 'utchours': fn('getUTCHours', DATE, 0),\n 'utcminutes': fn('getUTCMinutes', DATE, 0),\n 'utcseconds': fn('getUTCSeconds', DATE, 0),\n 'utcmilliseconds': fn('getUTCMilliseconds', DATE, 0),\n\n // shared sequence functions\n 'length': fn('length', null, -1),\n 'indexof': fn('indexOf', null),\n 'lastindexof': fn('lastIndexOf', null),\n\n // STRING functions\n 'parseFloat': 'parseFloat',\n 'parseInt': 'parseInt',\n 'upper': fn('toUpperCase', STRING, 0),\n 'lower': fn('toLowerCase', STRING, 0),\n 'slice': fn('slice', STRING),\n 'substring': fn('substring', STRING),\n 'replace': fn('replace', STRING),\n\n // REGEXP functions\n 'regexp': REGEXP,\n 'test': fn('test', REGEXP),\n\n // Control Flow functions\n 'if': function(args) {\n if (args.length < 3)\n throw new Error('Missing arguments to if function.');\n if (args.length > 3)\n throw new Error('Too many arguments to if function.');\n var a = args.map(codegen);\n return a[0]+'?'+a[1]+':'+a[2];\n }\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/functions.js\n ** module id = 141\n ** module chunks = 0\n **/","var lgnd = require('../scene/legend');\n\nfunction parseLegends(model, spec, legends, group) {\n (spec || []).forEach(function(def, index) {\n legends[index] = legends[index] || lgnd(model);\n parseLegend(def, index, legends[index], group);\n });\n}\n\nfunction parseLegend(def, index, legend, group) {\n // legend scales\n legend.size (def.size ? group.scale(def.size) : null);\n legend.shape (def.shape ? group.scale(def.shape) : null);\n legend.fill (def.fill ? group.scale(def.fill) : null);\n legend.stroke(def.stroke ? group.scale(def.stroke) : null);\n\n // legend orientation\n if (def.orient) legend.orient(def.orient);\n\n // legend offset\n if (def.offset != null) legend.offset(def.offset);\n\n // legend title\n legend.title(def.title || null);\n\n // legend values\n legend.values(def.values || null);\n\n // legend label formatting\n legend.format(def.format !== undefined ? def.format : null);\n legend.formatType(def.formatType || null);\n\n // style properties\n var p = def.properties;\n legend.titleProperties(p && p.title || {});\n legend.labelProperties(p && p.labels || {});\n legend.legendProperties(p && p.legend || {});\n legend.symbolProperties(p && p.symbols || {});\n legend.gradientProperties(p && p.gradient || {});\n}\n\nmodule.exports = parseLegends;\n\nparseLegends.schema = {\n \"defs\": {\n \"legend\": {\n \"type\": \"object\",\n \"properties\": {\n \"size\": {\"type\": \"string\"},\n \"shape\": {\"type\": \"string\"},\n \"fill\": {\"type\": \"string\"},\n \"stroke\": {\"type\": \"string\"},\n \"orient\": {\"enum\": [\"left\", \"right\"], \"default\": \"right\"},\n \"offset\": {\"type\": \"number\"},\n \"title\": {\"type\": \"string\"},\n \"values\": {\"type\": \"array\"},\n \"format\": {\"type\": \"string\"},\n \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n \"properties\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\"$ref\": \"#/defs/propset\"},\n \"labels\": {\"$ref\": \"#/defs/propset\"},\n \"legend\": {\"$ref\": \"#/defs/propset\"},\n \"symbols\": {\"$ref\": \"#/defs/propset\"},\n \"gradient\": {\"$ref\": \"#/defs/propset\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"anyOf\": [\n {\"required\": [\"size\"]},\n {\"required\": [\"shape\"]},\n {\"required\": [\"fill\"]},\n {\"required\": [\"stroke\"]}\n ]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/legends.js\n ** module id = 142\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n Gradient = require('vega-scenegraph').Gradient,\n parseProperties = require('../parse/properties'),\n parseMark = require('../parse/mark'),\n util = require('../util');\n\nfunction lgnd(model) {\n var size = null,\n shape = null,\n fill = null,\n stroke = null,\n spacing = null,\n values = null,\n formatString = null,\n formatType = null,\n title = null,\n config = model.config().legend,\n orient = config.orient,\n offset = config.offset,\n padding = config.padding,\n tickArguments = [5],\n legendStyle = {},\n symbolStyle = {},\n gradientStyle = {},\n titleStyle = {},\n labelStyle = {},\n m = { // Legend marks as references for updates\n titles: {},\n symbols: {},\n labels: {},\n gradient: {}\n };\n\n var legend = {},\n legendDef = {};\n\n function reset() { legendDef.type = null; }\n function ingest(d, i) { return {data: d, index: i}; }\n\n legend.def = function() {\n var scale = size || shape || fill || stroke;\n\n if (!legendDef.type) {\n legendDef = (scale===fill || scale===stroke) && !discrete(scale.type) ?\n quantDef(scale) : ordinalDef(scale);\n }\n legendDef.orient = orient;\n legendDef.offset = offset;\n legendDef.padding = padding;\n legendDef.margin = config.margin;\n return legendDef;\n };\n\n function discrete(type) {\n return type==='ordinal' || type==='quantize' ||\n type==='quantile' || type==='threshold';\n }\n\n function ordinalDef(scale) {\n var def = o_legend_def(size, shape, fill, stroke);\n\n // generate data\n var data = (values == null ?\n (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) :\n values).map(ingest);\n\n var fmt = util.getTickFormat(scale, data.length, formatType, formatString);\n\n // determine spacing between legend entries\n var fs, range, offset, pad=5, domain = d3.range(data.length);\n if (size) {\n range = data.map(function(x) { return Math.sqrt(size(x.data)); });\n offset = d3.max(range);\n range = range.reduce(function(a,b,i,z) {\n if (i > 0) a[i] = a[i-1] + z[i-1]/2 + pad;\n return (a[i] += b/2, a); }, [0]).map(Math.round);\n } else {\n offset = Math.round(Math.sqrt(config.symbolSize));\n range = spacing ||\n (fs = labelStyle.fontSize) && (fs.value + pad) ||\n (config.labelFontSize + pad);\n range = domain.map(function(d,i) {\n return Math.round(offset/2 + i*range);\n });\n }\n\n // account for padding and title size\n var sz = padding, ts;\n if (title) {\n ts = titleStyle.fontSize;\n sz += 5 + ((ts && ts.value) || config.titleFontSize);\n }\n for (var i=0, n=range.length; i': parseComparator,\n '>=': parseComparator,\n '<': parseComparator,\n '<=': parseComparator,\n 'and': parseLogical,\n '&&': parseLogical,\n 'or': parseLogical,\n '||': parseLogical,\n 'in': parseIn\n};\n\nvar nullScale = function() { return 0; };\nnullScale.invert = nullScale;\n\nfunction parsePredicates(model, spec) {\n (spec || []).forEach(function(s) {\n var parse = types[s.type](model, s);\n\n /* jshint evil:true */\n var pred = Function(\"args\", \"db\", \"signals\", \"predicates\", parse.code);\n pred.root = function() { return model.scene().items[0]; }; // For global scales\n pred.nullScale = nullScale;\n pred.isFunction = dl.isFunction;\n pred.signals = parse.signals;\n pred.data = parse.data;\n\n model.predicate(s.name, pred);\n });\n\n return spec;\n}\n\nfunction parseSignal(signal, signals) {\n var s = dl.field(signal),\n code = \"signals[\"+s.map(dl.str).join(\"][\")+\"]\";\n signals[s[0]] = 1;\n return code;\n}\n\nfunction parseOperands(model, operands) {\n var decl = [], defs = [],\n signals = {}, db = {};\n\n function setSignal(s) { signals[s] = 1; }\n function setData(d) { db[d] = 1; }\n\n dl.array(operands).forEach(function(o, i) {\n var name = \"o\" + i,\n def = \"\";\n\n if (o.value !== undefined) {\n def = dl.str(o.value);\n } else if (o.arg) {\n def = \"args[\"+dl.str(o.arg)+\"]\";\n } else if (o.signal) {\n def = parseSignal(o.signal, signals);\n } else if (o.predicate) {\n var ref = o.predicate,\n predName = ref && (ref.name || ref),\n pred = model.predicate(predName),\n p = \"predicates[\"+dl.str(predName)+\"]\";\n\n pred.signals.forEach(setSignal);\n pred.data.forEach(setData);\n\n if (dl.isObject(ref)) {\n dl.keys(ref).forEach(function(k) {\n if (k === \"name\") return;\n var i = ref[k];\n def += \"args[\"+dl.str(k)+\"] = \";\n if (i.signal) {\n def += parseSignal(i.signal, signals);\n } else if (i.arg) {\n def += \"args[\"+dl.str(i.arg)+\"]\";\n }\n def += \", \";\n });\n }\n\n def += p+\".call(\"+p+\", args, db, signals, predicates)\";\n }\n\n decl.push(name);\n defs.push(name+\"=(\"+def+\")\");\n });\n\n return {\n code: \"var \" + decl.join(\", \") + \";\\n\" + defs.join(\";\\n\") + \";\\n\",\n signals: dl.keys(signals),\n data: dl.keys(db)\n };\n}\n\nfunction parseComparator(model, spec) {\n var ops = parseOperands(model, spec.operands);\n if (spec.type === '=') spec.type = '==';\n\n ops.code += \"o0 = o0 instanceof Date ? o0.getTime() : o0;\\n\" +\n \"o1 = o1 instanceof Date ? o1.getTime() : o1;\\n\";\n\n return {\n code: ops.code + \"return \" + [\"o0\", \"o1\"].join(spec.type) + \";\",\n signals: ops.signals,\n data: ops.data\n };\n}\n\nfunction parseLogical(model, spec) {\n var ops = parseOperands(model, spec.operands),\n o = [], i = 0, len = spec.operands.length;\n\n while (o.push(\"o\"+i++) < len);\n if (spec.type === 'and') spec.type = '&&';\n else if (spec.type === 'or') spec.type = '||';\n\n return {\n code: ops.code + \"return \" + o.join(spec.type) + \";\",\n signals: ops.signals,\n data: ops.data\n };\n}\n\nfunction parseIn(model, spec) {\n var o = [spec.item], code = \"\";\n if (spec.range) o.push.apply(o, spec.range);\n if (spec.scale) {\n code = parseScale(spec.scale, o);\n }\n\n var ops = parseOperands(model, o);\n code = ops.code + code + \"\\n var ordSet = null;\\n\";\n\n if (spec.data) {\n var field = dl.field(spec.field).map(dl.str);\n code += \"var where = function(d) { return d[\"+field.join(\"][\")+\"] == o0 };\\n\";\n code += \"return db[\"+dl.str(spec.data)+\"].filter(where).length > 0;\";\n } else if (spec.range) {\n // TODO: inclusive/exclusive range?\n if (spec.scale) {\n code += \"if (scale.length == 2) {\\n\" + // inverting ordinal scales\n \" ordSet = scale(o1, o2);\\n\" +\n \"} else {\\n\" +\n \" o1 = scale(o1);\\no2 = scale(o2);\\n\" +\n \"}\";\n }\n\n code += \"return ordSet !== null ? ordSet.indexOf(o0) !== -1 :\\n\" +\n \" o1 < o2 ? o1 <= o0 && o0 <= o2 : o2 <= o0 && o0 <= o1;\";\n }\n\n return {\n code: code,\n signals: ops.signals,\n data: ops.data.concat(spec.data ? [spec.data] : [])\n };\n}\n\n// Populate ops such that ultimate scale/inversion function will be in `scale` var.\nfunction parseScale(spec, ops) {\n var code = \"var scale = \",\n idx = ops.length;\n\n if (dl.isString(spec)) {\n ops.push({ value: spec });\n code += \"this.root().scale(o\"+idx+\")\";\n } else if (spec.arg) { // Scale function is being passed as an arg\n ops.push(spec);\n code += \"o\"+idx;\n } else if (spec.name) { // Full scale parameter {name: ..}\n ops.push(dl.isString(spec.name) ? {value: spec.name} : spec.name);\n code += \"(this.isFunction(o\"+idx+\") ? o\"+idx+\" : \";\n if (spec.scope) {\n ops.push(spec.scope);\n code += \"((o\"+(idx+1)+\".scale || this.root().scale)(o\"+idx+\") || this.nullScale)\";\n } else {\n code += \"this.root().scale(o\"+idx+\")\";\n }\n code += \")\";\n }\n\n if (spec.invert === true) { // Allow spec.invert.arg?\n code += \".invert\";\n }\n\n return code+\";\\n\";\n}\n\nmodule.exports = parsePredicates;\nparsePredicates.schema = {\n \"refs\": {\n \"operand\": {\n \"type\": \"object\",\n \"oneOf\": [\n {\n \"properties\": {\"value\": {}},\n \"required\": [\"value\"]\n },\n {\n \"properties\": {\"arg\": {\"type\": \"string\"}},\n \"required\": [\"arg\"]\n },\n {\"$ref\": \"#/refs/signal\"},\n {\n \"properties\": {\n \"predicate\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"type\": \"object\",\n \"properties\": {\"name\": {\"type\": \"string\"}},\n \"required\": [\"name\"]\n }\n ]\n }\n },\n \"required\": [\"predicate\"]\n }\n ]\n }\n },\n\n \"defs\": {\n \"predicate\": {\n \"type\": \"object\",\n \"oneOf\": [{\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"==\", \"!=\", \">\", \"<\", \">=\", \"<=\"]},\n \"operands\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/refs/operand\"},\n \"minItems\": 2,\n \"maxItems\": 2\n }\n },\n \"required\": [\"name\", \"type\", \"operands\"]\n }, {\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"and\", \"&&\", \"or\", \"||\"]},\n \"operands\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/refs/operand\"},\n \"minItems\": 2\n }\n },\n \"required\": [\"name\", \"type\", \"operands\"]\n }, {\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"in\"]},\n \"item\": {\"$ref\": \"#/refs/operand\"}\n },\n\n \"oneOf\": [\n {\n \"properties\": {\n \"range\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/refs/operand\"},\n \"minItems\": 2\n },\n \"scale\": {\"$ref\": \"#/refs/scopedScale\"}\n },\n \"required\": [\"range\"]\n },\n {\n \"properties\": {\n \"data\": {\"type\": \"string\"},\n \"field\": {\"type\": \"string\"}\n },\n \"required\": [\"data\", \"field\"]\n }\n ],\n\n \"required\": [\"name\", \"type\", \"item\"]\n }]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/predicates.js\n ** module id = 146\n ** module chunks = 0\n **/","var dl = require('datalib'),\n expr = require('./expr'),\n SIGNALS = require('vega-dataflow').Dependencies.SIGNALS;\n\nvar RESERVED = ['datum', 'event', 'signals', 'width', 'height', 'padding']\n .concat(dl.keys(expr.codegen.functions));\n\nfunction parseSignals(model, spec) {\n // process each signal definition\n (spec || []).forEach(function(s) {\n if (RESERVED.indexOf(s.name) !== -1) {\n throw Error('Signal name \"'+s.name+'\" is a '+\n 'reserved keyword ('+RESERVED.join(', ')+').');\n }\n\n var signal = model.signal(s.name, s.init)\n .verbose(s.verbose);\n\n if (s.init && s.init.expr) {\n s.init.expr = model.expr(s.init.expr);\n signal.value(exprVal(model, s.init));\n }\n\n if (s.expr) {\n s.expr = model.expr(s.expr);\n signal.evaluate = function(input) {\n var val = exprVal(model, s),\n sg = input.signals;\n if (val !== signal.value() || signal.verbose()) {\n signal.value(val);\n sg[s.name] = 1;\n }\n return sg[s.name] ? input : model.doNotPropagate;\n };\n signal.dependency(SIGNALS, s.expr.globals);\n s.expr.globals.forEach(function(dep) {\n model.signal(dep).addListener(signal);\n });\n }\n });\n\n return spec;\n}\n\nfunction exprVal(model, spec) {\n var e = spec.expr, v = e.fn();\n return spec.scale ? parseSignals.scale(model, spec, v) : v;\n}\n\nparseSignals.scale = function scale(model, spec, value, datum, evt) {\n var def = spec.scale,\n name = def.name || def.signal || def,\n scope = def.scope, e;\n\n if (scope) {\n if (scope.signal) {\n scope = model.signalRef(scope.signal);\n } else if (dl.isString(scope)) { // Scope is an expression\n e = def._expr = (def._expr || model.expr(scope));\n scope = e.fn(datum, evt);\n }\n }\n\n return expr.scale(model, def.invert, name, value, scope);\n};\n\nmodule.exports = parseSignals;\nparseSignals.schema = {\n \"refs\": {\n \"signal\": {\n \"title\": \"SignalRef\",\n \"type\": \"object\",\n \"properties\": {\"signal\": {\"type\": \"string\"}},\n \"required\": [\"signal\"]\n },\n\n \"scopedScale\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"oneOf\": [{\"$ref\": \"#/refs/signal\"}, {\"type\": \"string\"}]\n },\n \"scope\": {\n \"oneOf\": [\n {\"$ref\": \"#/refs/signal\"},\n {\"type\": \"string\"}\n ]\n },\n \"invert\": {\"type\": \"boolean\", \"default\": false}\n },\n\n \"additionalProperties\": false,\n \"required\": [\"name\"]\n }\n ]\n }\n },\n\n \"defs\": {\n \"signal\": {\n \"type\": \"object\",\n\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"not\": {\"enum\": RESERVED}\n },\n \"init\": {},\n \"verbose\": {\"type\": \"boolean\", \"default\": false},\n \"expr\": {\"type\": \"string\"},\n \"scale\": {\"$ref\": \"#/refs/scopedScale\"},\n \"streams\": {\"$ref\": \"#/defs/streams\"}\n },\n\n \"additionalProperties\": false,\n \"required\": [\"name\"]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/signals.js\n ** module id = 147\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n Model = require('../core/Model'),\n View = require('../core/View');\n\n/**\n * Parse graph specification\n * @param spec (object)\n * @param config (optional object)\n * @param viewFactory (optional function)\n * @param callback (error, model)\n */\n function parseSpec(spec /*, [config,] [viewFactory,] callback */) {\n // do not assign any values to callback, as it will change arguments\n var arglen = arguments.length,\n argidx = 2,\n cb = arguments[arglen-1],\n model = new Model(),\n viewFactory = View.factory;\n\n if (arglen > argidx && dl.isFunction(arguments[arglen - argidx])) {\n viewFactory = arguments[arglen - argidx];\n ++argidx;\n }\n if (arglen > argidx && dl.isObject(arguments[arglen - argidx])) {\n model.config(arguments[arglen - argidx]);\n }\n\n if (dl.isObject(spec)) {\n parse(spec);\n } else if (dl.isString(spec)) {\n var opts = dl.extend({url: spec}, model.config().load);\n dl.json(opts, function(err, spec) {\n if (err) done('SPECIFICATION LOAD FAILED: ' + err);\n else parse(spec);\n });\n } else {\n done('INVALID SPECIFICATION: Must be a valid JSON object or URL.');\n }\n\n function parse(spec) {\n try {\n // protect against subsequent spec modification\n spec = dl.duplicate(spec);\n\n var parsers = require('./'),\n width = spec.width || 500,\n height = spec.height || 500,\n padding = parsers.padding(spec.padding);\n\n // create signals for width, height, padding, and cursor\n model.signal('width', width);\n model.signal('height', height);\n model.signal('padding', padding);\n cursor(spec);\n\n // initialize model\n model.defs({\n width: width,\n height: height,\n padding: padding,\n viewport: spec.viewport || null,\n background: parsers.background(spec.background),\n signals: parsers.signals(model, spec.signals),\n predicates: parsers.predicates(model, spec.predicates),\n marks: parsers.marks(model, spec, width, height),\n data: parsers.data(model, spec.data, done)\n });\n } catch (err) { done(err); }\n }\n\n function cursor(spec) {\n var signals = spec.signals || (spec.signals=[]), def;\n signals.some(function(sg) {\n return (sg.name === 'cursor') ? (def=sg, true) : false;\n });\n\n if (!def) signals.push(def={name: 'cursor', streams: []});\n\n // Add a stream def at the head, so that custom defs can override it.\n def.init = def.init || {};\n def.streams.unshift({\n type: 'mousemove',\n expr: 'eventItem().cursor === cursor.default ? cursor : {default: eventItem().cursor}'\n });\n }\n\n function done(err) {\n var view;\n if (err) {\n log.error(err);\n } else {\n view = viewFactory(model.buildIndexes());\n }\n\n if (cb) {\n if (cb.length > 1) cb(err, view);\n else if (!err) cb(view);\n cb = null;\n }\n }\n}\n\nmodule.exports = parseSpec;\n\nparseSpec.schema = {\n \"defs\": {\n \"spec\": {\n \"title\": \"Vega visualization specification\",\n \"type\": \"object\",\n\n \"allOf\": [{\"$ref\": \"#/defs/container\"}, {\n \"properties\": {\n \"width\": {\"type\": \"number\"},\n \"height\": {\"type\": \"number\"},\n \"viewport\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"number\"},\n \"maxItems\": 2\n },\n\n \"background\": {\"$ref\": \"#/defs/background\"},\n \"padding\": {\"$ref\": \"#/defs/padding\"},\n\n \"signals\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/defs/signal\"}\n },\n\n \"predicates\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/defs/predicate\"}\n },\n\n \"data\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/defs/data\"}\n }\n }\n }]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/spec.js\n ** module id = 148\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n ChangeSet = df.ChangeSet,\n Base = df.Graph.prototype,\n Node = df.Node, // jshint ignore:line\n GroupBuilder = require('../scene/GroupBuilder'),\n visit = require('../scene/visit'),\n compiler = require('../parse/expr'),\n config = require('./config');\n\nfunction Model(cfg) {\n this._defs = {};\n this._predicates = {};\n\n this._scene = null; // Root scenegraph node.\n this._groups = null; // Index of group items.\n\n this._node = null;\n this._builder = null; // Top-level scenegraph builder.\n\n this._reset = {axes: false, legends: false};\n\n this.config(cfg);\n this.expr = compiler(this);\n Base.init.call(this);\n}\n\nvar prototype = (Model.prototype = Object.create(Base));\nprototype.constructor = Model;\n\nprototype.defs = function(defs) {\n if (!arguments.length) return this._defs;\n this._defs = defs;\n return this;\n};\n\nprototype.config = function(cfg) {\n if (!arguments.length) return this._config;\n this._config = Object.create(config);\n for (var name in cfg) {\n var x = cfg[name], y = this._config[name];\n if (dl.isObject(x) && dl.isObject(y)) {\n this._config[name] = dl.extend({}, y, x);\n } else {\n this._config[name] = x;\n }\n }\n\n return this;\n};\n\nprototype.width = function(width) {\n if (this._defs) this._defs.width = width;\n if (this._defs && this._defs.marks) this._defs.marks.width = width;\n if (this._scene) {\n this._scene.items[0].width = width;\n this._scene.items[0]._dirty = true;\n }\n this._reset.axes = true;\n return this;\n};\n\nprototype.height = function(height) {\n if (this._defs) this._defs.height = height;\n if (this._defs && this._defs.marks) this._defs.marks.height = height;\n if (this._scene) {\n this._scene.items[0].height = height;\n this._scene.items[0]._dirty = true;\n }\n this._reset.axes = true;\n return this;\n};\n\nprototype.node = function() {\n return this._node || (this._node = new Node(this));\n};\n\nprototype.data = function() {\n var data = Base.data.apply(this, arguments);\n if (arguments.length > 1) { // new Datasource\n this.node().addListener(data.pipeline()[0]);\n }\n return data;\n};\n\nfunction predicates(name) {\n var m = this, pred = {};\n if (!dl.isArray(name)) return this._predicates[name];\n name.forEach(function(n) { pred[n] = m._predicates[n]; });\n return pred;\n}\n\nprototype.predicate = function(name, predicate) {\n if (arguments.length === 1) return predicates.call(this, name);\n return (this._predicates[name] = predicate);\n};\n\nprototype.predicates = function() { return this._predicates; };\n\nprototype.scene = function(renderer) {\n if (!arguments.length) return this._scene;\n\n if (this._builder) {\n this.node().removeListener(this._builder);\n this._builder._groupBuilder.disconnect();\n }\n\n var m = this,\n b = this._builder = new Node(this);\n\n b.evaluate = function(input) {\n if (b._groupBuilder) return input;\n\n var gb = b._groupBuilder = new GroupBuilder(m, m._defs.marks, m._scene={}),\n p = gb.pipeline();\n\n m._groups = {};\n this.addListener(gb.connect());\n p[p.length-1].addListener(renderer);\n return input;\n };\n\n this.addListener(b);\n return this;\n};\n\nprototype.group = function(id, item) {\n var groups = this._groups;\n if (arguments.length === 1) return groups[id];\n return (groups[id] = item, this);\n};\n\nprototype.reset = function() {\n if (this._scene && this._reset.axes) {\n visit(this._scene, function(item) {\n if (item.axes) item.axes.forEach(function(axis) { axis.reset(); });\n });\n this._reset.axes = false;\n }\n if (this._scene && this._reset.legends) {\n visit(this._scene, function(item) {\n if (item.legends) item.legends.forEach(function(l) { l.reset(); });\n });\n this._reset.legends = false;\n }\n return this;\n};\n\nprototype.addListener = function(l) {\n this.node().addListener(l);\n};\n\nprototype.removeListener = function(l) {\n this.node().removeListener(l);\n};\n\nprototype.fire = function(cs) {\n if (!cs) cs = ChangeSet.create();\n this.propagate(cs, this.node());\n};\n\nmodule.exports = Model;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/Model.js\n ** module id = 149\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n Node = df.Node, // jshint ignore:line\n Deps = df.Dependencies,\n Tuple = df.Tuple,\n Collector = df.Collector,\n log = require('vega-logging'),\n Builder = require('./Builder'),\n Scale = require('./Scale'),\n parseAxes = require('../parse/axes'),\n parseLegends = require('../parse/legends');\n\nfunction GroupBuilder() {\n this._children = {};\n this._scaler = null;\n this._recursor = null;\n\n this._scales = {};\n this.scale = scale.bind(this);\n return arguments.length ? this.init.apply(this, arguments) : this;\n}\n\nvar Types = GroupBuilder.TYPES = {\n GROUP: \"group\",\n MARK: \"mark\",\n AXIS: \"axis\",\n LEGEND: \"legend\"\n};\n\nvar proto = (GroupBuilder.prototype = new Builder());\n\nproto.init = function(graph, def) {\n var builder = this, name;\n\n this._scaler = new Node(graph);\n\n (def.scales||[]).forEach(function(s) {\n s = builder.scale((name=s.name), new Scale(graph, s, builder));\n builder.scale(name+\":prev\", s);\n builder._scaler.addListener(s); // Scales should be computed after group is encoded\n });\n\n this._recursor = new Node(graph);\n this._recursor.evaluate = recurse.bind(this);\n\n var scales = (def.axes||[]).reduce(function(acc, x) {\n return (acc[x.scale] = 1, acc);\n }, {});\n\n scales = (def.legends||[]).reduce(function(acc, x) {\n return (acc[x.size || x.shape || x.fill || x.stroke], acc);\n }, scales);\n\n this._recursor.dependency(Deps.SCALES, dl.keys(scales));\n\n // We only need a collector for up-propagation of bounds calculation,\n // so only GroupBuilders, and not regular Builders, have collectors.\n this._collector = new Collector(graph);\n\n return Builder.prototype.init.apply(this, arguments);\n};\n\nproto.evaluate = function() {\n var output = Builder.prototype.evaluate.apply(this, arguments),\n model = this._graph,\n builder = this,\n scales = this._scales,\n items = this._mark.items;\n\n // If scales need to be reevaluated, we need to send all group items forward.\n if (output.mod.length < items.length) {\n var fullUpdate = dl.keys(scales).some(function(s) {\n return scales[s].reevaluate(output);\n });\n\n if (fullUpdate) {\n output.mod = output.mod.concat(Tuple.idFilter(items, output.mod));\n }\n }\n\n output.add.forEach(function(group) { buildGroup.call(builder, output, group); });\n output.rem.forEach(function(group) { model.group(group._id, null); });\n return output;\n};\n\nproto.pipeline = function() {\n return [this, this._scaler, this._recursor, this._collector, this._bounder];\n};\n\nproto.disconnect = function() {\n var builder = this;\n dl.keys(builder._children).forEach(function(group_id) {\n builder._children[group_id].forEach(function(c) {\n builder._recursor.removeListener(c.builder);\n c.builder.disconnect();\n });\n });\n\n builder._children = {};\n return Builder.prototype.disconnect.call(this);\n};\n\nproto.child = function(name, group_id) {\n var children = this._children[group_id],\n i = 0, len = children.length,\n child;\n\n for (; i 0,\n hasAxes = dl.array(this._def.axes).length > 0,\n hasLegends = dl.array(this._def.legends).length > 0,\n i, j, c, len, group, pipeline, def, inline = false;\n\n for (i=0, len=input.add.length; i=0; --i) {\n group = input.add[i];\n for (j=this._children[group._id].length-1; j>=0; --j) {\n c = this._children[group._id][j];\n c.builder.connect();\n pipeline = c.builder.pipeline();\n def = c.builder._def;\n\n // This new child needs to be built during this propagation cycle.\n // We could add its builder as a listener off the _recursor node,\n // but try to inline it if we can to minimize graph dispatches.\n inline = (def.type !== Types.GROUP);\n inline = inline && (this._graph.data(c.from) !== undefined);\n inline = inline && (pipeline[pipeline.length-1].listeners().length === 1); // Reactive geom source\n inline = inline && (def.from && !def.from.mark); // Reactive geom target\n c.inline = inline;\n\n if (inline) this._graph.evaluate(input, c.builder);\n else this._recursor.addListener(c.builder);\n }\n }\n\n function removeTemp(c) {\n if (c.type == Types.MARK && !c.inline &&\n builder._graph.data(c.from) !== undefined) {\n builder._recursor.removeListener(c.builder);\n }\n }\n\n function updateAxis(a) {\n var scale = a.scale();\n if (!input.scales[scale.scaleName]) return;\n a.reset().def();\n }\n\n function updateLegend(l) {\n var scale = l.size() || l.shape() || l.fill() || l.stroke();\n if (!input.scales[scale.scaleName]) return;\n l.reset().def();\n }\n\n for (i=0, len=input.mod.length; i this._stamp) {\n join.call(this, fcs, output, this._ds.values(), true, fullUpdate);\n } else if (fullUpdate) {\n output.mod = this._mark.items.slice();\n }\n } else {\n data = dl.isFunction(this._def.from) ? this._def.from() : [Sentinel];\n join.call(this, input, output, data);\n }\n\n // Stash output before Bounder for downstream reactive geometry.\n this._output = output = this._graph.evaluate(output, this._encoder);\n\n // Add any new scale references to the dependency list, and ensure\n // they're connected.\n if (update.nested && update.nested.length && this._status === CONNECTED) {\n dl.keys(this._mark._scaleRefs).forEach(function(s) {\n var scale = self._parent.scale(s);\n if (!scale) return;\n\n scale.addListener(self);\n self.dependency(Deps.SCALES, s);\n self._encoder.dependency(Deps.SCALES, s);\n });\n }\n\n // Supernodes calculate bounds too, but only on items marked dirty.\n if (this._isSuper) {\n output.mod = output.mod.filter(function(x) { return x._dirty; });\n output = this._graph.evaluate(output, this._bounder);\n }\n\n return output;\n};\n\nfunction newItem() {\n var item = Tuple.ingest(new Item(this._mark));\n\n // For the root node's item\n if (this._def.width) Tuple.set(item, 'width', this._def.width);\n if (this._def.height) Tuple.set(item, 'height', this._def.height);\n return item;\n}\n\nfunction join(input, output, data, ds, fullUpdate) {\n var keyf = keyFunction(this._def.key || (ds ? '_id' : null)),\n prev = this._mark.items || [],\n rem = ds ? input.rem : prev,\n mod = Tuple.idMap((!ds || fullUpdate) ? data : input.mod),\n next = [],\n i, key, len, item, datum, enter, diff;\n\n // Only mark rems as exiting. Due to keyf, there may be an add/mod\n // tuple that replaces it.\n for (i=0, len=rem.length; i0) s += '|';\n s += String(f[i](d));\n }\n return s;\n };\n}\n\nmodule.exports = Builder;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/scene/Builder.js\n ** module id = 151\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n df = require('vega-dataflow'),\n Node = df.Node, // jshint ignore:line\n Deps = df.Dependencies,\n bound = require('vega-scenegraph').bound;\n\nvar EMPTY = {};\n\nfunction Encoder(graph, mark, builder) {\n var props = mark.def.properties || {},\n enter = props.enter,\n update = props.update,\n exit = props.exit;\n\n Node.prototype.init.call(this, graph);\n\n this._mark = mark;\n this._builder = builder;\n var s = this._scales = [];\n\n // Only scales used in the 'update' property set are set as\n // encoder depedencies to have targeted reevaluations. However,\n // we still want scales in 'enter' and 'exit' to be evaluated\n // before the encoder.\n if (enter) s.push.apply(s, enter.scales);\n\n if (update) {\n this.dependency(Deps.DATA, update.data);\n this.dependency(Deps.SIGNALS, update.signals);\n this.dependency(Deps.FIELDS, update.fields);\n this.dependency(Deps.SCALES, update.scales);\n s.push.apply(s, update.scales);\n }\n\n if (exit) s.push.apply(s, exit.scales);\n\n return this.mutates(true);\n}\n\nvar proto = (Encoder.prototype = new Node());\n\nproto.evaluate = function(input) {\n log.debug(input, ['encoding', this._mark.def.type]);\n var graph = this._graph,\n props = this._mark.def.properties || {},\n items = this._mark.items,\n enter = props.enter,\n update = props.update,\n exit = props.exit,\n dirty = input.dirty,\n preds = graph.predicates(),\n req = input.request,\n group = this._mark.group,\n guide = group && (group.mark.axis || group.mark.legend),\n db = EMPTY, sg = EMPTY, i, len, item, prop;\n\n if (req && !guide) {\n if ((prop = props[req]) && input.mod.length) {\n db = prop.data ? graph.values(Deps.DATA, prop.data) : null;\n sg = prop.signals ? graph.values(Deps.SIGNALS, prop.signals) : null;\n\n for (i=0, len=input.mod.length; i this._stamp) return true;\n }\n\n return false;\n}\n\n// Short-circuit encoder if user specifies items\nEncoder.update = function(graph, trans, request, items, dirty) {\n items = dl.array(items);\n var preds = graph.predicates(),\n db = graph.values(Deps.DATA),\n sg = graph.values(Deps.SIGNALS),\n i, len, item, props, prop;\n\n for (i=0, len=items.length; i 0,\n bounds = mark.bounds,\n rebound = !bounds || input.rem.length,\n i, ilen, j, jlen, group, legend;\n\n if (type === 'line' || type === 'area') {\n bound.mark(mark, null, isGrp && !hasLegends);\n } else {\n input.add.forEach(function(item) {\n bound.item(item);\n rebound = rebound || (bounds && !bounds.encloses(item.bounds));\n });\n\n input.mod.forEach(function(item) {\n rebound = rebound || (bounds && bounds.alignsWith(item.bounds));\n bound.item(item);\n });\n\n if (rebound) {\n bounds = mark.bounds && mark.bounds.clear() || (mark.bounds = new Bounds());\n for (i=0, ilen=items.length; i rng[1]) {\n start = rng[1] || 0;\n rng = [start + (bw * len + space), start];\n } else {\n start = rng[0] || 0;\n rng = [start, start + (bw * len + space)];\n }\n\n if (def.reverse) rng = rng.reverse();\n }\n\n str = typeof rng[0] === 'string';\n if (str || rng.length > 2 || rng.length===1 || dataDrivenRange) {\n scale.range(rng); // color or shape values\n spatial = false;\n } else if (points && round) {\n scale.rangeRoundPoints(rng, pad);\n } else if (points) {\n scale.rangePoints(rng, pad);\n } else if (round) {\n scale.rangeRoundBands(rng, pad, outer);\n } else {\n scale.rangeBands(rng, pad, outer);\n }\n\n prev.range = rng;\n this._updated = true;\n }\n\n if (!scale.invert && spatial) invertOrdinal(scale);\n}\n\n// \"Polyfill\" ordinal scale inversion. Currently, only ordinal scales\n// with ordered numeric ranges are supported.\nvar bisect = d3.bisector(dl.numcmp).right,\n findAsc = function(a, x) { return bisect(a,x) - 1; },\n findDsc = d3.bisector(function(a,b) { return -1 * dl.numcmp(a,b); }).left;\n\nfunction invertOrdinal(scale) {\n scale.invert = function(x, y) {\n var rng = scale.range(),\n asc = rng[0] < rng[1],\n find = asc ? findAsc : findDsc;\n\n if (arguments.length === 1) {\n if (!dl.isNumber(x)) {\n throw Error('Ordinal scale inversion is only supported for numeric input ('+x+').');\n }\n return scale.domain()[find(rng, x)];\n\n } else if (arguments.length === 2) { // Invert extents\n if (!dl.isNumber(x) || !dl.isNumber(y)) {\n throw Error('Extents to ordinal invert are not numbers ('+x+', '+y+').');\n }\n\n var domain = scale.domain(),\n a = find(rng, x),\n b = find(rng, y),\n n = rng.length - 1, r;\n if (b < a) { r = a; a = b; b = a; } // ensure a <= b\n if (a < 0) a = 0;\n if (b > n) b = n;\n\n return (asc ? dl.range(a, b+1) : dl.range(b, a-1, -1))\n .map(function(i) { return domain[i]; });\n }\n };\n}\n\nfunction quantitative(scale, rng, group) {\n var def = this._def,\n prev = scale._prev,\n round = signal.call(this, def.round),\n exponent = signal.call(this, def.exponent),\n clamp = signal.call(this, def.clamp),\n nice = signal.call(this, def.nice),\n domain, interval;\n\n // domain\n domain = (def.type === Types.QUANTILE) ?\n dataRef.call(this, DataRef.DOMAIN, def.domain, scale, group) :\n domainMinMax.call(this, scale, group);\n if (domain && !dl.equal(prev.domain, domain)) {\n scale.domain(domain);\n prev.domain = domain;\n this._updated = true;\n }\n\n // range\n // vertical scales should flip by default, so use XOR here\n if (signal.call(this, def.range) === 'height') rng = rng.reverse();\n if (rng && !dl.equal(prev.range, rng)) {\n scale[round && scale.rangeRound ? 'rangeRound' : 'range'](rng);\n prev.range = rng;\n this._updated = true;\n }\n\n if (exponent && def.type===Types.POWER) scale.exponent(exponent);\n if (clamp) scale.clamp(true);\n if (nice) {\n if (def.type === Types.TIME) {\n interval = d3.time[nice];\n if (!interval) log.error('Unrecognized interval: ' + interval);\n scale.nice(interval);\n } else {\n scale.nice();\n }\n }\n}\n\nfunction isUniques(scale) {\n return scale.type === Types.ORDINAL || scale.type === Types.QUANTILE;\n}\n\nfunction getRefs(def) {\n return def.fields || dl.array(def);\n}\n\nfunction inherits(refs) {\n return refs.some(function(r) {\n if (!r.data) return true;\n return r.data && dl.array(r.field).some(function(f) {\n return f.parent;\n });\n });\n}\n\nfunction getFields(ref, group) {\n return dl.array(ref.field).map(function(f) {\n return f.parent ?\n dl.accessor(f.parent)(group.datum) :\n f; // String or {'signal'}\n });\n}\n\n// Scale datarefs can be computed over multiple schema types.\n// This function determines the type of aggregator created, and\n// what data is sent to it: values, tuples, or multi-tuples that must\n// be standardized into a consistent schema.\nfunction aggrType(def, scale) {\n var refs = getRefs(def);\n\n // If we're operating over only a single domain, send full tuples\n // through for efficiency (fewer accessor creations/calls)\n if (refs.length == 1 && dl.array(refs[0].field).length == 1) {\n return Aggregate.TYPES.TUPLE;\n }\n\n // With quantitative scales, we only care about min/max.\n if (!isUniques(scale)) return Aggregate.TYPES.VALUE;\n\n // If we don't sort, then we can send values directly to aggrs as well\n if (!dl.isObject(def.sort)) return Aggregate.TYPES.VALUE;\n\n return Aggregate.TYPES.MULTI;\n}\n\nfunction getCache(which, def, scale, group) {\n var refs = getRefs(def),\n inherit = inherits(refs),\n atype = aggrType(def, scale),\n uniques = isUniques(scale),\n sort = def.sort,\n ck = '_'+which,\n fields = getFields(refs[0], group);\n\n if (scale[ck] || this[ck]) return scale[ck] || this[ck];\n\n var cache = new Aggregate(this._graph).type(atype),\n groupby, summarize;\n\n // If a scale's dataref doesn't inherit data from the group, we can\n // store the dataref aggregator at the Scale (dataflow node) level.\n if (inherit) {\n scale[ck] = cache;\n } else {\n this[ck] = cache;\n }\n\n if (uniques) {\n if (atype === Aggregate.TYPES.VALUE) {\n groupby = [{ name: DataRef.GROUPBY, get: dl.identity }];\n summarize = {'*': DataRef.COUNT};\n } else if (atype === Aggregate.TYPES.TUPLE) {\n groupby = [{ name: DataRef.GROUPBY, get: dl.$(fields[0]) }];\n summarize = dl.isObject(sort) ? [{\n field: DataRef.VALUE,\n get: dl.$(sort.field),\n ops: [sort.op]\n }] : {'*': DataRef.COUNT};\n } else { // atype === Aggregate.TYPES.MULTI\n groupby = DataRef.GROUPBY;\n summarize = [{ field: DataRef.VALUE, ops: [sort.op] }];\n }\n } else {\n groupby = [];\n summarize = [{\n field: DataRef.VALUE,\n get: (atype == Aggregate.TYPES.TUPLE) ? dl.$(fields[0]) : dl.identity,\n ops: [DataRef.MIN, DataRef.MAX],\n as: [DataRef.MIN, DataRef.MAX]\n }];\n }\n\n cache.param('groupby', groupby)\n .param('summarize', summarize);\n\n return (cache._lastUpdate = -1, cache);\n}\n\nfunction dataRef(which, def, scale, group) {\n if (def == null) { return []; }\n if (dl.isArray(def)) return def.map(signal.bind(this));\n\n var self = this, graph = this._graph,\n refs = getRefs(def),\n inherit = inherits(refs),\n atype = aggrType(def, scale),\n cache = getCache.apply(this, arguments),\n sort = def.sort,\n uniques = isUniques(scale),\n i, rlen, j, flen, ref, fields, field, data, from, cmp;\n\n function addDep(s) {\n self.dependency(Deps.SIGNALS, s);\n }\n\n if (inherit || (!inherit && cache._lastUpdate < this._stamp)) {\n for (i=0, rlen=refs.length; i this._width ? Math.ceil(+b.x2 - this._width) + inset : 0;\n b = b.y2 > this._height ? Math.ceil(+b.y2 - this._height) + inset : 0;\n pad = {left:l, top:t, right:r, bottom:b};\n\n if (this._strict) {\n this._autopad = 0;\n this._padding = pad;\n this._width = Math.max(0, this.__width - (l+r));\n this._height = Math.max(0, this.__height - (t+b));\n\n this._model.width(this._width).height(this._height).reset();\n setSignal.call(this, 'width', this._width);\n setSignal.call(this, 'height', this._height);\n setSignal.call(this, 'padding', pad);\n\n this.initialize().update({props:'enter'}).update({props:'update'});\n } else {\n this.padding(pad).update(opt);\n }\n return this;\n};\n\nprototype.viewport = function(size) {\n if (!arguments.length) return this._viewport;\n if (this._viewport !== size) {\n this._viewport = size;\n this.initialize();\n }\n return this;\n};\n\nprototype.renderer = function(type) {\n if (!arguments.length) return this._renderer;\n if (this._renderers[type]) type = this._renderers[type];\n else if (dl.isString(type)) throw new Error('Unknown renderer: ' + type);\n else if (!type) throw new Error('No renderer specified');\n\n if (this._io !== type) {\n this._io = type;\n this._renderer = null;\n this.initialize();\n if (this._build) this.render();\n }\n return this;\n};\n\nprototype.initialize = function(el) {\n var v = this, prevHandler,\n w = v._width, h = v._height, pad = v._padding, bg = v._bgcolor,\n config = this.model().config();\n\n if (!arguments.length || el === null) {\n el = this._el ? this._el.parentNode : null;\n if (!el) return this; // This View cannot init w/o an\n }\n\n // clear pre-existing container\n d3.select(el).select('div.vega').remove();\n\n // add div container\n this._el = el = d3.select(el)\n .append('div')\n .attr('class', 'vega')\n .style('position', 'relative')\n .node();\n if (v._viewport) {\n d3.select(el)\n .style('width', (v._viewport[0] || w)+'px')\n .style('height', (v._viewport[1] || h)+'px')\n .style('overflow', 'auto');\n }\n\n // renderer\n sg.canvas.Renderer.RETINA = config.render.retina;\n v._renderer = (v._renderer || new this._io.Renderer(config.load))\n .initialize(el, w, h, pad)\n .background(bg);\n\n // input handler\n prevHandler = v._handler;\n v._handler = new this._io.Handler()\n .initialize(el, pad, v);\n\n if (prevHandler) {\n prevHandler.handlers().forEach(function(h) {\n v._handler.on(h.type, h.handler);\n });\n } else {\n // Register event listeners for signal stream definitions.\n v._detach = parseStreams(this);\n }\n\n return (this._repaint = true, this);\n};\n\nprototype.destroy = function() {\n if (this._detach) this._detach();\n};\n\nfunction build() {\n var v = this;\n v._renderNode = new df.Node(v._model)\n .router(true);\n\n v._renderNode.evaluate = function(input) {\n log.debug(input, ['rendering']);\n\n var s = v._model.scene(),\n h = v._handler;\n\n if (h && h.scene) h.scene(s);\n\n if (input.trans) {\n input.trans.start(function(items) { v._renderer.render(s, items); });\n } else if (v._repaint) {\n v._renderer.render(s);\n } else if (input.dirty.length) {\n v._renderer.render(s, input.dirty);\n }\n\n if (input.dirty.length) {\n input.dirty.forEach(function(i) { i._dirty = false; });\n s.items[0]._dirty = false;\n }\n\n v._repaint = v._skipSignals = false;\n return input;\n };\n\n return (v._model.scene(v._renderNode), true);\n}\n\nprototype.update = function(opt) {\n opt = opt || {};\n var v = this,\n model = this._model,\n streamer = this._streamer,\n cs = this._changeset,\n trans = opt.duration ? new Transition(opt.duration, opt.ease) : null;\n\n if (trans) cs.trans = trans;\n if (opt.props !== undefined) {\n if (dl.keys(cs.data).length > 0) {\n throw Error(\n 'New data values are not reflected in the visualization.' +\n ' Please call view.update() before updating a specified property set.'\n );\n }\n\n cs.reflow = true;\n cs.request = opt.props;\n }\n\n var built = v._build;\n v._build = v._build || build.call(this);\n\n // If specific items are specified, short-circuit dataflow graph.\n // Else-If there are streaming updates, perform a targeted propagation.\n // Otherwise, re-evaluate the entire model (datasources + scene).\n if (opt.items && built) {\n Encoder.update(model, opt.trans, opt.props, opt.items, cs.dirty);\n v._renderNode.evaluate(cs);\n } else if (streamer.listeners().length && built) {\n // Include re-evaluation entire model when repaint flag is set\n if (this._repaint) streamer.addListener(model.node());\n model.propagate(cs, streamer, null, this._skipSignals);\n streamer.disconnect();\n } else {\n model.fire(cs);\n }\n\n v._changeset = df.ChangeSet.create();\n\n return v.autopad(opt);\n};\n\nprototype.toImageURL = function(type) {\n var v = this, Renderer;\n\n // lookup appropriate renderer\n switch (type || 'png') {\n case 'canvas':\n case 'png':\n Renderer = sg.canvas.Renderer; break;\n case 'svg':\n Renderer = sg.svg.string.Renderer; break;\n default: throw Error('Unrecognized renderer type: ' + type);\n }\n\n var retina = sg.canvas.Renderer.RETINA;\n sg.canvas.Renderer.RETINA = false; // ignore retina screen\n\n // render the scenegraph\n var ren = new Renderer(v._model.config.load)\n .initialize(null, v._width, v._height, v._padding)\n .background(v._bgcolor)\n .render(v._model.scene());\n\n sg.canvas.Renderer.RETINA = retina; // restore retina settings\n\n // return data url\n if (type === 'svg') {\n var blob = new Blob([ren.svg()], {type: 'image/svg+xml'});\n return window.URL.createObjectURL(blob);\n } else {\n return ren.canvas().toDataURL('image/png');\n }\n};\n\nprototype.render = function(items) {\n this._renderer.render(this._model.scene(), items);\n return this;\n};\n\nprototype.on = function() {\n this._handler.on.apply(this._handler, arguments);\n return this;\n};\n\nprototype.onSignal = function(name, handler) {\n var sg = this._model.signal(name);\n return (sg ?\n sg.on(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n};\n\nprototype.off = function() {\n this._handler.off.apply(this._handler, arguments);\n return this;\n};\n\nprototype.offSignal = function(name, handler) {\n var sg = this._model.signal(name);\n return (sg ?\n sg.off(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n};\n\nView.factory = function(model) {\n var HeadlessView = require('./HeadlessView');\n return function(opt) {\n opt = opt || {};\n var defs = model.defs();\n var v = (opt.el ? new View() : new HeadlessView())\n .model(model)\n .renderer(opt.renderer || 'canvas')\n .width(defs.width)\n .height(defs.height)\n .background(defs.background)\n .padding(defs.padding)\n .viewport(defs.viewport)\n .initialize(opt.el);\n\n if (opt.data) v.data(opt.data);\n\n // Register handlers for the hover propset and cursors.\n if (opt.el) {\n if (opt.hover !== false) {\n v.on('mouseover', function(evt, item) {\n if (item && item.hasPropertySet('hover')) {\n this.update({props:'hover', items:item});\n }\n })\n .on('mouseout', function(evt, item) {\n if (item && item.hasPropertySet('hover')) {\n this.update({props:'update', items:item});\n }\n });\n }\n\n if (opt.cursor !== false) {\n // If value is a string, it is a custom value set by the user.\n // In this case, the user is responsible for maintaining the cursor state\n // and control only reverts back to this handler if set back to 'default'.\n v.onSignal('cursor', function(name, value) {\n var body = d3.select('body');\n if (dl.isString(value)) {\n v._cursor = value === 'default';\n body.style('cursor', value);\n } else if (dl.isObject(value) && v._cursor) {\n body.style('cursor', value.default);\n }\n });\n }\n }\n\n return v;\n };\n};\n\nmodule.exports = View;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/View.js\n ** module id = 157\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n df = require('vega-dataflow'),\n selector = require('vega-event-selector'),\n parseSignals = require('./signals');\n\nvar GATEKEEPER = '_vgGATEKEEPER',\n EVALUATOR = '_vgEVALUATOR';\n\nvar vgEvent = {\n getItem: function() { return this.item; },\n getGroup: function(name) { return name ? this.name[name] : this.group; },\n getXY: function(item) {\n var p = {x: this.x, y: this.y};\n if (typeof item === 'string') {\n item = this.name[item];\n }\n for (; item; item = item.mark && item.mark.group) {\n p.x -= item.x || 0;\n p.y -= item.y || 0;\n }\n return p;\n },\n getX: function(item) { return this.getXY(item).x; },\n getY: function(item) { return this.getXY(item).y; }\n};\n\nfunction parseStreams(view) {\n var model = view.model(),\n trueFn = model.expr('true'),\n falseFn = model.expr('false'),\n spec = model.defs().signals,\n registry = {handlers: {}, nodes: {}},\n internal = dl.duplicate(registry), // Internal event processing\n external = dl.duplicate(registry); // External event processing\n\n dl.array(spec).forEach(function(sig) {\n var signal = model.signal(sig.name);\n if (sig.expr) return; // Cannot have an expr and stream definition.\n\n dl.array(sig.streams).forEach(function(stream) {\n var sel = selector.parse(stream.type),\n exp = model.expr(stream.expr);\n mergedStream(signal, sel, exp, stream);\n });\n });\n\n // We register the event listeners all together so that if multiple\n // signals are registered on the same event, they will receive the\n // new value on the same pulse.\n dl.keys(internal.handlers).forEach(function(type) {\n view.on(type, function(evt, item) {\n evt.preventDefault(); // stop text selection\n extendEvent(evt, item);\n fire(internal, type, (item && item.datum) || {}, evt);\n });\n });\n\n // add external event listeners\n dl.keys(external.handlers).forEach(function(type) {\n if (typeof window === 'undefined') return; // No external support\n\n var h = external.handlers[type],\n t = type.split(':'), // --> no element pseudo-selectors\n elt = (t[0] === 'window') ? [window] :\n window.document.querySelectorAll(t[0]);\n\n function handler(evt) {\n extendEvent(evt);\n fire(external, type, d3.select(this).datum(), evt);\n }\n\n for (var i=0; i 1) f = 1;\n e = curr.ease(f);\n\n for (i=0, n=curr.length; i 0) { wait(); } else { callback(this.canvas()); }\n};\n\nprototype.svg = function() {\n return (this._type === 'svg') ? this._renderer.svg() : null;\n};\n\nprototype.initialize = function() {\n var w = this._width,\n h = this._height,\n bg = this._bgcolor,\n pad = this._padding,\n config = this.model().config();\n\n if (this._viewport) {\n w = this._viewport[0] - (pad ? pad.left + pad.right : 0);\n h = this._viewport[1] - (pad ? pad.top + pad.bottom : 0);\n }\n\n this._renderer = (this._renderer || new this._io.Renderer(config.load))\n .initialize(null, w, h, pad)\n .background(bg);\n\n return this;\n};\n\nmodule.exports = HeadlessView;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/HeadlessView.js\n ** module id = 160\n ** module chunks = 0\n **/","var dl = require('datalib'),\n parse = require('../parse'),\n Scale = require('../scene/Scale'),\n config = require('./config');\n\nfunction compile(module, opt, schema) {\n var s = module.schema;\n if (!s) return;\n if (s.refs) dl.extend(schema.refs, s.refs);\n if (s.defs) dl.extend(schema.defs, s.defs);\n}\n\nmodule.exports = function(opt) {\n var schema = null;\n opt = opt || {};\n\n // Compile if we're not loading the schema from a URL.\n // Load from a URL to extend the existing base schema.\n if (opt.url) {\n schema = dl.json(dl.extend({url: opt.url}, config.load));\n } else {\n schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Vega Visualization Specification Language\",\n \"defs\": {},\n \"refs\": {},\n \"$ref\": \"#/defs/spec\"\n };\n\n dl.keys(parse).forEach(function(k) { compile(parse[k], opt, schema); });\n\n // Scales aren't in the parser, add schema manually\n compile(Scale, opt, schema);\n }\n\n // Extend schema to support custom mark properties or property sets.\n if (opt.properties) dl.keys(opt.properties).forEach(function(k) {\n schema.defs.propset.properties[k] = {\"$ref\": \"#/refs/\"+opt.properties[k]+\"Value\"};\n });\n\n if (opt.propertySets) dl.keys(opt.propertySets).forEach(function(k) {\n schema.defs.mark.properties.properties.properties[k] = {\"$ref\": \"#/defs/propset\"};\n });\n\n return schema;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/schema.js\n ** module id = 161\n ** module chunks = 0\n **/","\"use strict\";\nvar vlBin = require('./bin');\nvar vlChannel = require('./channel');\nvar vlData = require('./data');\nvar vlEncoding = require('./encoding');\nvar vlFieldDef = require('./fielddef');\nvar vlCompile = require('./compile/compile');\nvar vlShorthand = require('./shorthand');\nvar vlSpec = require('./spec');\nvar vlTimeUnit = require('./timeunit');\nvar vlType = require('./type');\nvar vlValidate = require('./validate');\nvar vlUtil = require('./util');\nexports.bin = vlBin;\nexports.channel = vlChannel;\nexports.compile = vlCompile.compile;\nexports.data = vlData;\nexports.encoding = vlEncoding;\nexports.fieldDef = vlFieldDef;\nexports.shorthand = vlShorthand;\nexports.spec = vlSpec;\nexports.timeUnit = vlTimeUnit;\nexports.type = vlType;\nexports.util = vlUtil;\nexports.validate = vlValidate;\nexports.version = '__VERSION__';\n//# sourceMappingURL=vl.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/vl.js\n ** module id = 162\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('./channel');\nfunction autoMaxBins(channel) {\n switch (channel) {\n case channel_1.ROW:\n case channel_1.COLUMN:\n case channel_1.SIZE:\n case channel_1.SHAPE:\n return 6;\n default:\n return 10;\n }\n}\nexports.autoMaxBins = autoMaxBins;\n//# sourceMappingURL=bin.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/bin.js\n ** module id = 163\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('./util');\n(function (Channel) {\n Channel[Channel[\"X\"] = 'x'] = \"X\";\n Channel[Channel[\"Y\"] = 'y'] = \"Y\";\n Channel[Channel[\"ROW\"] = 'row'] = \"ROW\";\n Channel[Channel[\"COLUMN\"] = 'column'] = \"COLUMN\";\n Channel[Channel[\"SHAPE\"] = 'shape'] = \"SHAPE\";\n Channel[Channel[\"SIZE\"] = 'size'] = \"SIZE\";\n Channel[Channel[\"COLOR\"] = 'color'] = \"COLOR\";\n Channel[Channel[\"TEXT\"] = 'text'] = \"TEXT\";\n Channel[Channel[\"DETAIL\"] = 'detail'] = \"DETAIL\";\n Channel[Channel[\"LABEL\"] = 'label'] = \"LABEL\";\n Channel[Channel[\"PATH\"] = 'path'] = \"PATH\";\n Channel[Channel[\"ORDER\"] = 'order'] = \"ORDER\";\n})(exports.Channel || (exports.Channel = {}));\nvar Channel = exports.Channel;\nexports.X = Channel.X;\nexports.Y = Channel.Y;\nexports.ROW = Channel.ROW;\nexports.COLUMN = Channel.COLUMN;\nexports.SHAPE = Channel.SHAPE;\nexports.SIZE = Channel.SIZE;\nexports.COLOR = Channel.COLOR;\nexports.TEXT = Channel.TEXT;\nexports.DETAIL = Channel.DETAIL;\nexports.LABEL = Channel.LABEL;\nexports.PATH = Channel.PATH;\nexports.ORDER = Channel.ORDER;\nexports.CHANNELS = [exports.X, exports.Y, exports.ROW, exports.COLUMN, exports.SIZE, exports.SHAPE, exports.COLOR, exports.PATH, exports.ORDER, exports.TEXT, exports.DETAIL, exports.LABEL];\n;\nfunction supportMark(channel, mark) {\n return !!getSupportedMark(channel)[mark];\n}\nexports.supportMark = supportMark;\nfunction getSupportedMark(channel) {\n switch (channel) {\n case exports.X:\n case exports.Y:\n case exports.COLOR:\n case exports.DETAIL:\n case exports.ORDER:\n case exports.ROW:\n case exports.COLUMN:\n return {\n point: true, tick: true, circle: true, square: true,\n bar: true, line: true, area: true, text: true\n };\n case exports.SIZE:\n return {\n point: true, tick: true, circle: true, square: true,\n bar: true, text: true\n };\n case exports.SHAPE:\n return { point: true };\n case exports.TEXT:\n return { text: true };\n case exports.PATH:\n return { line: true };\n }\n return {};\n}\nexports.getSupportedMark = getSupportedMark;\n;\nfunction getSupportedRole(channel) {\n switch (channel) {\n case exports.X:\n case exports.Y:\n case exports.COLOR:\n case exports.LABEL:\n return {\n measure: true,\n dimension: true\n };\n case exports.ROW:\n case exports.COLUMN:\n case exports.SHAPE:\n case exports.DETAIL:\n return {\n measure: false,\n dimension: true\n };\n case exports.SIZE:\n case exports.TEXT:\n return {\n measure: true,\n dimension: false\n };\n case exports.PATH:\n return {\n measure: false,\n dimension: true\n };\n }\n throw new Error('Invalid encoding channel' + channel);\n}\nexports.getSupportedRole = getSupportedRole;\nfunction hasScale(channel) {\n return !util_1.contains([exports.DETAIL, exports.PATH, exports.TEXT, exports.LABEL, exports.ORDER], channel);\n}\nexports.hasScale = hasScale;\n//# sourceMappingURL=channel.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/channel.js\n ** module id = 164\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('datalib/src/util');\nexports.keys = util_1.keys;\nexports.extend = util_1.extend;\nexports.duplicate = util_1.duplicate;\nexports.isArray = util_1.isArray;\nexports.vals = util_1.vals;\nexports.truncate = util_1.truncate;\nexports.toMap = util_1.toMap;\nexports.isObject = util_1.isObject;\nvar generate_1 = require('datalib/src/generate');\nexports.range = generate_1.range;\nfunction contains(array, item) {\n return array.indexOf(item) > -1;\n}\nexports.contains = contains;\nfunction without(array, items) {\n return array.filter(function (item) {\n return !contains(items, item);\n });\n}\nexports.without = without;\nfunction forEach(obj, f, thisArg) {\n if (obj.forEach) {\n obj.forEach.call(thisArg, f);\n }\n else {\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n f.call(thisArg, obj[k], k, obj);\n }\n }\n }\n}\nexports.forEach = forEach;\nfunction reduce(obj, f, init, thisArg) {\n if (obj.reduce) {\n return obj.reduce.call(thisArg, f, init);\n }\n else {\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n init = f.call(thisArg, init, obj[k], k, obj);\n }\n }\n return init;\n }\n}\nexports.reduce = reduce;\nfunction map(obj, f, thisArg) {\n if (obj.map) {\n return obj.map.call(thisArg, f);\n }\n else {\n var output = [];\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n output.push(f.call(thisArg, obj[k], k, obj));\n }\n }\n return output;\n }\n}\nexports.map = map;\nfunction any(arr, f) {\n var i = 0;\n for (var k = 0; k < arr.length; k++) {\n if (f(arr[k], k, i++)) {\n return true;\n }\n }\n return false;\n}\nexports.any = any;\nfunction all(arr, f) {\n var i = 0;\n for (var k = 0; k < arr.length; k++) {\n if (!f(arr[k], k, i++)) {\n return false;\n }\n }\n return true;\n}\nexports.all = all;\nfunction mergeDeep(dest) {\n var src = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n src[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < src.length; i++) {\n dest = deepMerge_(dest, src[i]);\n }\n return dest;\n}\nexports.mergeDeep = mergeDeep;\n;\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (var p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(src[p].constructor === Array ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\nvar dlBin = require('datalib/src/bins/bins');\nfunction getbins(stats, maxbins) {\n return dlBin({\n min: stats.min,\n max: stats.max,\n maxbins: maxbins\n });\n}\nexports.getbins = getbins;\nfunction error(message) {\n console.error('[VL Error]', message);\n}\nexports.error = error;\n//# sourceMappingURL=util.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/util.js\n ** module id = 165\n ** module chunks = 0\n **/","var u = module.exports;\n\n// utility functions\n\nvar FNAME = '__name__';\n\nu.namedfunc = function(name, f) { return (f[FNAME] = name, f); };\n\nu.name = function(f) { return f==null ? null : f[FNAME]; };\n\nu.identity = function(x) { return x; };\n\nu.true = u.namedfunc('true', function() { return true; });\n\nu.false = u.namedfunc('false', function() { return false; });\n\nu.duplicate = function(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n\nu.equal = function(a, b) {\n return JSON.stringify(a) === JSON.stringify(b);\n};\n\nu.extend = function(obj) {\n for (var x, name, i=1, len=arguments.length; i 1 ?\n function(x, v) {\n for (var i=0; i y) return sign[i];\n }\n return 0;\n };\n};\n\nu.cmp = function(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else if (a >= b) {\n return 0;\n } else if (a === null) {\n return -1;\n } else if (b === null) {\n return 1;\n }\n return NaN;\n};\n\nu.numcmp = function(a, b) { return a - b; };\n\nu.stablesort = function(array, sortBy, keyFn) {\n var indices = array.reduce(function(idx, v, i) {\n return (idx[keyFn(v)] = i, idx);\n }, {});\n\n array.sort(function(a, b) {\n var sa = sortBy(a),\n sb = sortBy(b);\n return sa < sb ? -1 : sa > sb ? 1\n : (indices[keyFn(a)] - indices[keyFn(b)]);\n });\n\n return array;\n};\n\n\n// string functions\n\nu.pad = function(s, length, pos, padchar) {\n padchar = padchar || \" \";\n var d = length - s.length;\n if (d <= 0) return s;\n switch (pos) {\n case 'left':\n return strrep(d, padchar) + s;\n case 'middle':\n case 'center':\n return strrep(Math.floor(d/2), padchar) +\n s + strrep(Math.ceil(d/2), padchar);\n default:\n return s + strrep(d, padchar);\n }\n};\n\nfunction strrep(n, str) {\n var s = \"\", i;\n for (i=0; i stop) range.push(j);\n else while ((j = start + step * ++i) < stop) range.push(j);\n return range;\n};\n\ngen.random = {};\n\ngen.random.uniform = function(min, max) {\n if (max === undefined) {\n max = min === undefined ? 1 : min;\n min = 0;\n }\n var d = max - min;\n var f = function() {\n return min + d * Math.random();\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x >= min && x <= max) ? 1/d : 0;\n };\n f.cdf = function(x) {\n return x < min ? 0 : x > max ? 1 : (x - min) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? min + p*d : NaN;\n };\n return f;\n};\n\ngen.random.integer = function(a, b) {\n if (b === undefined) {\n b = a;\n a = 0;\n }\n var d = b - a;\n var f = function() {\n return a + Math.floor(d * Math.random());\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n };\n f.cdf = function(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n };\n return f;\n};\n\ngen.random.normal = function(mean, stdev) {\n mean = mean || 0;\n stdev = stdev || 1;\n var next;\n var f = function() {\n var x = 0, y = 0, rds, c;\n if (next !== undefined) {\n x = next;\n next = undefined;\n return x;\n }\n do {\n x = Math.random()*2-1;\n y = Math.random()*2-1;\n rds = x*x + y*y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n next = mean + y*c*stdev;\n return mean + x*c*stdev;\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n };\n f.cdf = function(x) {\n // Approximation from West (2009)\n // Better Approximations to Cumulative Normal Functions\n var cd,\n z = (x - mean) / stdev,\n Z = Math.abs(z);\n if (Z > 37) {\n cd = 0;\n } else {\n var sum, exp = Math.exp(-Z*Z/2);\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n };\n f.icdf = function(p) {\n // Approximation of Probit function using inverse error function.\n if (p <= 0 || p >= 1) return NaN;\n var x = 2*p - 1,\n v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n b = Math.log(1 - (x*x)) / v,\n s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n return mean + stdev * Math.SQRT2 * s;\n };\n return f;\n};\n\ngen.random.bootstrap = function(domain, smooth) {\n // Generates a bootstrap sample from a set of observations.\n // Smooth bootstrapping adds random zero-centered noise to the samples.\n var val = domain.filter(util.isValid),\n len = val.length,\n err = smooth ? gen.random.normal(0, smooth) : null;\n var f = function() {\n return val[~~(Math.random()*len)] + (err ? err() : 0);\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n return f;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/~/datalib/src/generate.js\n ** module id = 167\n ** module chunks = 0\n **/","var util = require('../util'),\n time = require('../time'),\n EPSILON = 1e-15;\n\nfunction bins(opt) {\n if (!opt) { throw Error(\"Missing binning options.\"); }\n\n // determine range\n var maxb = opt.maxbins || 15,\n base = opt.base || 10,\n logb = Math.log(base),\n div = opt.div || [5, 2],\n min = opt.min,\n max = opt.max,\n span = max - min,\n step, level, minstep, precision, v, i, eps;\n\n if (opt.step) {\n // if step size is explicitly given, use that\n step = opt.step;\n } else if (opt.steps) {\n // if provided, limit choice to acceptable step sizes\n step = opt.steps[Math.min(\n opt.steps.length - 1,\n bisect(opt.steps, span/maxb, 0, opt.steps.length)\n )];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = opt.minstep || 0;\n step = Math.max(\n minstep,\n Math.pow(base, Math.round(Math.log(span) / logb) - level)\n );\n\n // increase step size if too many bins\n while (Math.ceil(span/step) > maxb) { step *= base; }\n\n // decrease step size if allowed\n for (i=0; i= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n eps = Math.pow(base, -precision - 1);\n min = Math.min(min, Math.floor(min / step + eps) * step);\n max = Math.ceil(max / step) * step;\n\n return {\n start: min,\n stop: max,\n step: step,\n unit: {precision: precision},\n value: value,\n index: index\n };\n}\n\nfunction bisect(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n else { hi = mid; }\n }\n return lo;\n}\n\nfunction value(v) {\n return this.step * Math.floor(v / this.step + EPSILON);\n}\n\nfunction index(v) {\n return Math.floor((v - this.start) / this.step + EPSILON);\n}\n\nfunction date_value(v) {\n return this.unit.date(value.call(this, v));\n}\n\nfunction date_index(v) {\n return index.call(this, this.unit.unit(v));\n}\n\nbins.date = function(opt) {\n if (!opt) { throw Error(\"Missing date binning options.\"); }\n\n // find time step, then bin\n var units = opt.utc ? time.utc : time,\n dmin = opt.min,\n dmax = opt.max,\n maxb = opt.maxbins || 20,\n minb = opt.minbins || 4,\n span = (+dmax) - (+dmin),\n unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n spec = bins({\n min: unit.min != null ? unit.min : unit.unit(dmin),\n max: unit.max != null ? unit.max : unit.unit(dmax),\n maxbins: maxb,\n minstep: unit.minstep,\n steps: unit.step\n });\n\n spec.unit = unit;\n spec.index = date_index;\n if (!opt.raw) spec.value = date_value;\n return spec;\n};\n\nmodule.exports = bins;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/~/datalib/src/bins/bins.js\n ** module id = 168\n ** module chunks = 0\n **/","var d3_time = require('d3-time');\n\nvar tempDate = new Date(),\n baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\nfunction date(d) {\n return (tempDate.setTime(+d), tempDate);\n}\n\n// create a time unit entry\nfunction entry(type, date, unit, step, min, max) {\n var e = {\n type: type,\n date: date,\n unit: unit\n };\n if (step) {\n e.step = step;\n } else {\n e.minstep = 1;\n }\n if (min != null) e.min = min;\n if (max != null) e.max = max;\n return e;\n}\n\nfunction create(type, unit, base, step, min, max) {\n return entry(type,\n function(d) { return unit.offset(base, d); },\n function(d) { return unit.count(base, d); },\n step, min, max);\n}\n\nvar locale = [\n create('second', d3_time.second, baseDate),\n create('minute', d3_time.minute, baseDate),\n create('hour', d3_time.hour, baseDate),\n create('day', d3_time.day, baseDate, [1, 7]),\n create('month', d3_time.month, baseDate, [1, 3, 6]),\n create('year', d3_time.year, baseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n function(d) { return date(d).getSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(1970, 0, 1, 0, d); },\n function(d) { return date(d).getMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(1970, 0, 1, d); },\n function(d) { return date(d).getHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(1970, 0, 4+d); },\n function(d) { return date(d).getDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(1970, 0, d); },\n function(d) { return date(d).getDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(1970, d % 12, 1); },\n function(d) { return date(d).getMonth(); },\n [1], 0, 11\n )\n];\n\nvar utc = [\n create('second', d3_time.utcSecond, utcBaseDate),\n create('minute', d3_time.utcMinute, utcBaseDate),\n create('hour', d3_time.utcHour, utcBaseDate),\n create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n create('year', d3_time.utcYear, utcBaseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n function(d) { return date(d).getUTCSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n function(d) { return date(d).getUTCMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n function(d) { return date(d).getUTCHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n function(d) { return date(d).getUTCDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(Date.UTC(1970, 0, d)); },\n function(d) { return date(d).getUTCDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n function(d) { return date(d).getUTCMonth(); },\n [1], 0, 11\n )\n];\n\nvar STEPS = [\n [31536e6, 5], // 1-year\n [7776e6, 4], // 3-month\n [2592e6, 4], // 1-month\n [12096e5, 3], // 2-week\n [6048e5, 3], // 1-week\n [1728e5, 3], // 2-day\n [864e5, 3], // 1-day\n [432e5, 2], // 12-hour\n [216e5, 2], // 6-hour\n [108e5, 2], // 3-hour\n [36e5, 2], // 1-hour\n [18e5, 1], // 30-minute\n [9e5, 1], // 15-minute\n [3e5, 1], // 5-minute\n [6e4, 1], // 1-minute\n [3e4, 0], // 30-second\n [15e3, 0], // 15-second\n [5e3, 0], // 5-second\n [1e3, 0] // 1-second\n];\n\nfunction find(units, span, minb, maxb) {\n var step = STEPS[0], i, n, bins;\n\n for (i=1, n=STEPS.length; i step[0]) {\n bins = span / step[0];\n if (bins > maxb) {\n return units[STEPS[i-1][1]];\n }\n if (bins >= minb) {\n return units[step[1]];\n }\n }\n }\n return units[STEPS[n-1][1]];\n}\n\nfunction toUnitMap(units) {\n var map = {}, i, n;\n for (i=0, n=units.length; i 0)) return range; // also handles Invalid Date\n offseti(start, 1), floori(start);\n if (start < stop) range.push(new Date(+start));\n while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n while (--step >= 0) while (offseti(date, 1), !test(date));\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n };\n\n var millisecond = newInterval(function() {\n // noop\n }, function(date, step) {\n date.setTime(+date + step);\n }, function(start, end) {\n return end - start;\n });\n\n // An optimized implementation for this simple case.\n millisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n };\n\n var second = newInterval(function(date) {\n date.setMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getSeconds();\n });\n\n var minute = newInterval(function(date) {\n date.setSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getMinutes();\n });\n\n var hour = newInterval(function(date) {\n date.setMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getHours();\n });\n\n var day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n }, function(date) {\n return date.getDate() - 1;\n });\n\n function weekday(i) {\n return newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n });\n }\n\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n\n var month = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(1);\n }, function(date, step) {\n date.setMonth(date.getMonth() + step);\n }, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function(date) {\n return date.getMonth();\n });\n\n var year = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setMonth(0, 1);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function(date) {\n return date.getFullYear();\n });\n\n var utcSecond = newInterval(function(date) {\n date.setUTCMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getUTCSeconds();\n });\n\n var utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getUTCMinutes();\n });\n\n var utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getUTCHours();\n });\n\n var utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function(start, end) {\n return (end - start) / 864e5;\n }, function(date) {\n return date.getUTCDate() - 1;\n });\n\n function utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / 6048e5;\n });\n }\n\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n\n var utcMonth = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(1);\n }, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function(date) {\n return date.getUTCMonth();\n });\n\n var utcYear = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCMonth(0, 1);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function(date) {\n return date.getUTCFullYear();\n });\n\n var milliseconds = millisecond.range;\n var seconds = second.range;\n var minutes = minute.range;\n var hours = hour.range;\n var days = day.range;\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n var weeks = sunday.range;\n var months = month.range;\n var years = year.range;\n\n var utcMillisecond = millisecond;\n var utcMilliseconds = milliseconds;\n var utcSeconds = utcSecond.range;\n var utcMinutes = utcMinute.range;\n var utcHours = utcHour.range;\n var utcDays = utcDay.range;\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n var utcWeeks = utcSunday.range;\n var utcMonths = utcMonth.range;\n var utcYears = utcYear.range;\n\n var version = \"0.1.1\";\n\n exports.version = version;\n exports.milliseconds = milliseconds;\n exports.seconds = seconds;\n exports.minutes = minutes;\n exports.hours = hours;\n exports.days = days;\n exports.sundays = sundays;\n exports.mondays = mondays;\n exports.tuesdays = tuesdays;\n exports.wednesdays = wednesdays;\n exports.thursdays = thursdays;\n exports.fridays = fridays;\n exports.saturdays = saturdays;\n exports.weeks = weeks;\n exports.months = months;\n exports.years = years;\n exports.utcMillisecond = utcMillisecond;\n exports.utcMilliseconds = utcMilliseconds;\n exports.utcSeconds = utcSeconds;\n exports.utcMinutes = utcMinutes;\n exports.utcHours = utcHours;\n exports.utcDays = utcDays;\n exports.utcSundays = utcSundays;\n exports.utcMondays = utcMondays;\n exports.utcTuesdays = utcTuesdays;\n exports.utcWednesdays = utcWednesdays;\n exports.utcThursdays = utcThursdays;\n exports.utcFridays = utcFridays;\n exports.utcSaturdays = utcSaturdays;\n exports.utcWeeks = utcWeeks;\n exports.utcMonths = utcMonths;\n exports.utcYears = utcYears;\n exports.millisecond = millisecond;\n exports.second = second;\n exports.minute = minute;\n exports.hour = hour;\n exports.day = day;\n exports.sunday = sunday;\n exports.monday = monday;\n exports.tuesday = tuesday;\n exports.wednesday = wednesday;\n exports.thursday = thursday;\n exports.friday = friday;\n exports.saturday = saturday;\n exports.week = sunday;\n exports.month = month;\n exports.year = year;\n exports.utcSecond = utcSecond;\n exports.utcMinute = utcMinute;\n exports.utcHour = utcHour;\n exports.utcDay = utcDay;\n exports.utcSunday = utcSunday;\n exports.utcMonday = utcMonday;\n exports.utcTuesday = utcTuesday;\n exports.utcWednesday = utcWednesday;\n exports.utcThursday = utcThursday;\n exports.utcFriday = utcFriday;\n exports.utcSaturday = utcSaturday;\n exports.utcWeek = utcSunday;\n exports.utcMonth = utcMonth;\n exports.utcYear = utcYear;\n exports.interval = newInterval;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/~/datalib/~/d3-time/build/d3-time.js\n ** module id = 170\n ** module chunks = 0\n **/","\"use strict\";\nvar type_1 = require('./type');\n(function (DataFormat) {\n DataFormat[DataFormat[\"JSON\"] = 'json'] = \"JSON\";\n DataFormat[DataFormat[\"CSV\"] = 'csv'] = \"CSV\";\n DataFormat[DataFormat[\"TSV\"] = 'tsv'] = \"TSV\";\n})(exports.DataFormat || (exports.DataFormat = {}));\nvar DataFormat = exports.DataFormat;\nexports.SUMMARY = 'summary';\nexports.SOURCE = 'source';\nexports.STACKED_SCALE = 'stacked_scale';\nexports.LAYOUT = 'layout';\nexports.types = {\n 'boolean': type_1.Type.NOMINAL,\n 'number': type_1.Type.QUANTITATIVE,\n 'integer': type_1.Type.QUANTITATIVE,\n 'date': type_1.Type.TEMPORAL,\n 'string': type_1.Type.NOMINAL\n};\n//# sourceMappingURL=data.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/data.js\n ** module id = 171\n ** module chunks = 0\n **/","\"use strict\";\n(function (Type) {\n Type[Type[\"QUANTITATIVE\"] = 'quantitative'] = \"QUANTITATIVE\";\n Type[Type[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n Type[Type[\"TEMPORAL\"] = 'temporal'] = \"TEMPORAL\";\n Type[Type[\"NOMINAL\"] = 'nominal'] = \"NOMINAL\";\n})(exports.Type || (exports.Type = {}));\nvar Type = exports.Type;\nexports.QUANTITATIVE = Type.QUANTITATIVE;\nexports.ORDINAL = Type.ORDINAL;\nexports.TEMPORAL = Type.TEMPORAL;\nexports.NOMINAL = Type.NOMINAL;\nexports.SHORT_TYPE = {\n quantitative: 'Q',\n temporal: 'T',\n nominal: 'N',\n ordinal: 'O'\n};\nexports.TYPE_FROM_SHORT_TYPE = {\n Q: exports.QUANTITATIVE,\n T: exports.TEMPORAL,\n O: exports.ORDINAL,\n N: exports.NOMINAL\n};\nfunction getFullName(type) {\n var typeString = type;\n return exports.TYPE_FROM_SHORT_TYPE[typeString.toUpperCase()] ||\n typeString.toLowerCase();\n}\nexports.getFullName = getFullName;\n//# sourceMappingURL=type.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/type.js\n ** module id = 172\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('./channel');\nvar util_1 = require('./util');\nfunction countRetinal(encoding) {\n var count = 0;\n if (encoding.color) {\n count++;\n }\n if (encoding.size) {\n count++;\n }\n if (encoding.shape) {\n count++;\n }\n return count;\n}\nexports.countRetinal = countRetinal;\nfunction channels(encoding) {\n return channel_1.CHANNELS.filter(function (channel) {\n return has(encoding, channel);\n });\n}\nexports.channels = channels;\nfunction has(encoding, channel) {\n var channelEncoding = encoding && encoding[channel];\n return channelEncoding && (channelEncoding.field !== undefined ||\n (util_1.isArray(channelEncoding) && channelEncoding.length > 0));\n}\nexports.has = has;\nfunction isAggregate(encoding) {\n return util_1.any(channel_1.CHANNELS, function (channel) {\n if (has(encoding, channel) && encoding[channel].aggregate) {\n return true;\n }\n return false;\n });\n}\nexports.isAggregate = isAggregate;\nfunction fieldDefs(encoding) {\n var arr = [];\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n arr.push(fieldDef);\n });\n }\n else {\n arr.push(encoding[channel]);\n }\n }\n });\n return arr;\n}\nexports.fieldDefs = fieldDefs;\n;\nfunction forEach(encoding, f, thisArg) {\n var i = 0;\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n f.call(thisArg, fieldDef, channel, i++);\n });\n }\n else {\n f.call(thisArg, encoding[channel], channel, i++);\n }\n }\n });\n}\nexports.forEach = forEach;\nfunction map(encoding, f, thisArg) {\n var arr = [];\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n arr.push(f.call(thisArg, fieldDef, channel, encoding));\n });\n }\n else {\n arr.push(f.call(thisArg, encoding[channel], channel, encoding));\n }\n }\n });\n return arr;\n}\nexports.map = map;\nfunction reduce(encoding, f, init, thisArg) {\n var r = init;\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n r = f.call(thisArg, r, fieldDef, channel, encoding);\n });\n }\n else {\n r = f.call(thisArg, r, encoding[channel], channel, encoding);\n }\n }\n });\n return r;\n}\nexports.reduce = reduce;\n//# sourceMappingURL=encoding.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/encoding.js\n ** module id = 173\n ** module chunks = 0\n **/","\"use strict\";\nvar aggregate_1 = require('./aggregate');\nvar timeunit_1 = require('./timeunit');\nvar type_1 = require('./type');\nvar util_1 = require('./util');\nexports.aggregate = {\n type: 'string',\n enum: aggregate_1.AGGREGATE_OPS,\n supportedEnums: {\n quantitative: aggregate_1.AGGREGATE_OPS,\n ordinal: ['median', 'min', 'max'],\n nominal: [],\n temporal: ['mean', 'median', 'min', 'max'],\n '': ['count']\n },\n supportedTypes: util_1.toMap([type_1.QUANTITATIVE, type_1.NOMINAL, type_1.ORDINAL, type_1.TEMPORAL, ''])\n};\nfunction field(fieldDef, opt) {\n if (opt === void 0) { opt = {}; }\n var prefix = (opt.datum ? 'datum.' : '') + (opt.prefn || '');\n var suffix = opt.suffix || '';\n var field = fieldDef.field;\n if (isCount(fieldDef)) {\n return prefix + 'count' + suffix;\n }\n else if (opt.fn) {\n return prefix + opt.fn + '_' + field + suffix;\n }\n else if (!opt.nofn && fieldDef.bin) {\n return prefix + 'bin_' + field + (opt.binSuffix || suffix || '_start');\n }\n else if (!opt.nofn && !opt.noAggregate && fieldDef.aggregate) {\n return prefix + fieldDef.aggregate + '_' + field + suffix;\n }\n else if (!opt.nofn && fieldDef.timeUnit) {\n return prefix + fieldDef.timeUnit + '_' + field + suffix;\n }\n else {\n return prefix + field;\n }\n}\nexports.field = field;\nfunction _isFieldDimension(fieldDef) {\n return util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) || !!fieldDef.bin ||\n (fieldDef.type === type_1.TEMPORAL && !!fieldDef.timeUnit);\n}\nfunction isDimension(fieldDef) {\n return fieldDef && fieldDef.field && _isFieldDimension(fieldDef);\n}\nexports.isDimension = isDimension;\nfunction isMeasure(fieldDef) {\n return fieldDef && fieldDef.field && !_isFieldDimension(fieldDef);\n}\nexports.isMeasure = isMeasure;\nexports.COUNT_DISPLAYNAME = 'Number of Records';\nfunction count() {\n return { field: '*', aggregate: aggregate_1.AggregateOp.COUNT, type: type_1.QUANTITATIVE, displayName: exports.COUNT_DISPLAYNAME };\n}\nexports.count = count;\nfunction isCount(fieldDef) {\n return fieldDef.aggregate === aggregate_1.AggregateOp.COUNT;\n}\nexports.isCount = isCount;\nfunction cardinality(fieldDef, stats, filterNull) {\n if (filterNull === void 0) { filterNull = {}; }\n var stat = stats[fieldDef.field], type = fieldDef.type;\n if (fieldDef.bin) {\n var bin_1 = fieldDef.bin;\n var maxbins = (typeof bin_1 === 'boolean') ? undefined : bin_1.maxbins;\n if (maxbins === undefined) {\n maxbins = 10;\n }\n var bins = util_1.getbins(stat, maxbins);\n return (bins.stop - bins.start) / bins.step;\n }\n if (type === type_1.TEMPORAL) {\n var timeUnit = fieldDef.timeUnit;\n switch (timeUnit) {\n case timeunit_1.TimeUnit.SECONDS: return 60;\n case timeunit_1.TimeUnit.MINUTES: return 60;\n case timeunit_1.TimeUnit.HOURS: return 24;\n case timeunit_1.TimeUnit.DAY: return 7;\n case timeunit_1.TimeUnit.DATE: return 31;\n case timeunit_1.TimeUnit.MONTH: return 12;\n case timeunit_1.TimeUnit.YEAR:\n var yearstat = stats['year_' + fieldDef.field];\n if (!yearstat) {\n return null;\n }\n return yearstat.distinct -\n (stat.missing > 0 && filterNull[type] ? 1 : 0);\n }\n }\n if (fieldDef.aggregate) {\n return 1;\n }\n return stat.distinct -\n (stat.missing > 0 && filterNull[type] ? 1 : 0);\n}\nexports.cardinality = cardinality;\nfunction title(fieldDef) {\n if (isCount(fieldDef)) {\n return exports.COUNT_DISPLAYNAME;\n }\n var fn = fieldDef.aggregate || fieldDef.timeUnit || (fieldDef.bin && 'bin');\n if (fn) {\n return fn.toString().toUpperCase() + '(' + fieldDef.field + ')';\n }\n else {\n return fieldDef.field;\n }\n}\nexports.title = title;\n//# sourceMappingURL=fielddef.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/fielddef.js\n ** module id = 174\n ** module chunks = 0\n **/","\"use strict\";\n(function (AggregateOp) {\n AggregateOp[AggregateOp[\"VALUES\"] = 'values'] = \"VALUES\";\n AggregateOp[AggregateOp[\"COUNT\"] = 'count'] = \"COUNT\";\n AggregateOp[AggregateOp[\"VALID\"] = 'valid'] = \"VALID\";\n AggregateOp[AggregateOp[\"MISSING\"] = 'missing'] = \"MISSING\";\n AggregateOp[AggregateOp[\"DISTINCT\"] = 'distinct'] = \"DISTINCT\";\n AggregateOp[AggregateOp[\"SUM\"] = 'sum'] = \"SUM\";\n AggregateOp[AggregateOp[\"MEAN\"] = 'mean'] = \"MEAN\";\n AggregateOp[AggregateOp[\"AVERAGE\"] = 'average'] = \"AVERAGE\";\n AggregateOp[AggregateOp[\"VARIANCE\"] = 'variance'] = \"VARIANCE\";\n AggregateOp[AggregateOp[\"VARIANCEP\"] = 'variancep'] = \"VARIANCEP\";\n AggregateOp[AggregateOp[\"STDEV\"] = 'stdev'] = \"STDEV\";\n AggregateOp[AggregateOp[\"STDEVP\"] = 'stdevp'] = \"STDEVP\";\n AggregateOp[AggregateOp[\"MEDIAN\"] = 'median'] = \"MEDIAN\";\n AggregateOp[AggregateOp[\"Q1\"] = 'q1'] = \"Q1\";\n AggregateOp[AggregateOp[\"Q3\"] = 'q3'] = \"Q3\";\n AggregateOp[AggregateOp[\"MODESKEW\"] = 'modeskew'] = \"MODESKEW\";\n AggregateOp[AggregateOp[\"MIN\"] = 'min'] = \"MIN\";\n AggregateOp[AggregateOp[\"MAX\"] = 'max'] = \"MAX\";\n AggregateOp[AggregateOp[\"ARGMIN\"] = 'argmin'] = \"ARGMIN\";\n AggregateOp[AggregateOp[\"ARGMAX\"] = 'argmax'] = \"ARGMAX\";\n})(exports.AggregateOp || (exports.AggregateOp = {}));\nvar AggregateOp = exports.AggregateOp;\nexports.AGGREGATE_OPS = [\n AggregateOp.VALUES,\n AggregateOp.COUNT,\n AggregateOp.VALID,\n AggregateOp.MISSING,\n AggregateOp.DISTINCT,\n AggregateOp.SUM,\n AggregateOp.MEAN,\n AggregateOp.AVERAGE,\n AggregateOp.VARIANCE,\n AggregateOp.VARIANCEP,\n AggregateOp.STDEV,\n AggregateOp.STDEVP,\n AggregateOp.MEDIAN,\n AggregateOp.Q1,\n AggregateOp.Q3,\n AggregateOp.MODESKEW,\n AggregateOp.MIN,\n AggregateOp.MAX,\n AggregateOp.ARGMIN,\n AggregateOp.ARGMAX,\n];\nexports.SHARED_DOMAIN_OPS = [\n AggregateOp.MEAN,\n AggregateOp.AVERAGE,\n AggregateOp.STDEV,\n AggregateOp.STDEVP,\n AggregateOp.MEDIAN,\n AggregateOp.Q1,\n AggregateOp.Q3,\n AggregateOp.MIN,\n AggregateOp.MAX,\n];\n//# sourceMappingURL=aggregate.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/aggregate.js\n ** module id = 175\n ** module chunks = 0\n **/","\"use strict\";\n(function (TimeUnit) {\n TimeUnit[TimeUnit[\"YEAR\"] = 'year'] = \"YEAR\";\n TimeUnit[TimeUnit[\"MONTH\"] = 'month'] = \"MONTH\";\n TimeUnit[TimeUnit[\"DAY\"] = 'day'] = \"DAY\";\n TimeUnit[TimeUnit[\"DATE\"] = 'date'] = \"DATE\";\n TimeUnit[TimeUnit[\"HOURS\"] = 'hours'] = \"HOURS\";\n TimeUnit[TimeUnit[\"MINUTES\"] = 'minutes'] = \"MINUTES\";\n TimeUnit[TimeUnit[\"SECONDS\"] = 'seconds'] = \"SECONDS\";\n TimeUnit[TimeUnit[\"MILLISECONDS\"] = 'milliseconds'] = \"MILLISECONDS\";\n TimeUnit[TimeUnit[\"YEARMONTH\"] = 'yearmonth'] = \"YEARMONTH\";\n TimeUnit[TimeUnit[\"YEARMONTHDAY\"] = 'yearmonthday'] = \"YEARMONTHDAY\";\n TimeUnit[TimeUnit[\"YEARMONTHDATE\"] = 'yearmonthdate'] = \"YEARMONTHDATE\";\n TimeUnit[TimeUnit[\"YEARDAY\"] = 'yearday'] = \"YEARDAY\";\n TimeUnit[TimeUnit[\"YEARDATE\"] = 'yeardate'] = \"YEARDATE\";\n TimeUnit[TimeUnit[\"YEARMONTHDAYHOURS\"] = 'yearmonthdayhours'] = \"YEARMONTHDAYHOURS\";\n TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTES\"] = 'yearmonthdayhoursminutes'] = \"YEARMONTHDAYHOURSMINUTES\";\n TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTESSECONDS\"] = 'yearmonthdayhoursminutesseconds'] = \"YEARMONTHDAYHOURSMINUTESSECONDS\";\n TimeUnit[TimeUnit[\"HOURSMINUTES\"] = 'hoursminutes'] = \"HOURSMINUTES\";\n TimeUnit[TimeUnit[\"HOURSMINUTESSECONDS\"] = 'hoursminutesseconds'] = \"HOURSMINUTESSECONDS\";\n TimeUnit[TimeUnit[\"MINUTESSECONDS\"] = 'minutesseconds'] = \"MINUTESSECONDS\";\n TimeUnit[TimeUnit[\"SECONDSMILLISECONDS\"] = 'secondsmilliseconds'] = \"SECONDSMILLISECONDS\";\n})(exports.TimeUnit || (exports.TimeUnit = {}));\nvar TimeUnit = exports.TimeUnit;\nexports.TIMEUNITS = [\n TimeUnit.YEAR,\n TimeUnit.MONTH,\n TimeUnit.DAY,\n TimeUnit.DATE,\n TimeUnit.HOURS,\n TimeUnit.MINUTES,\n TimeUnit.SECONDS,\n TimeUnit.MILLISECONDS,\n TimeUnit.YEARMONTH,\n TimeUnit.YEARMONTHDAY,\n TimeUnit.YEARMONTHDATE,\n TimeUnit.YEARDAY,\n TimeUnit.YEARDATE,\n TimeUnit.YEARMONTHDAYHOURS,\n TimeUnit.YEARMONTHDAYHOURSMINUTES,\n TimeUnit.YEARMONTHDAYHOURSMINUTESSECONDS,\n TimeUnit.HOURSMINUTES,\n TimeUnit.HOURSMINUTESSECONDS,\n TimeUnit.MINUTESSECONDS,\n TimeUnit.SECONDSMILLISECONDS,\n];\n//# sourceMappingURL=timeunit.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/timeunit.js\n ** module id = 176\n ** module chunks = 0\n **/","\"use strict\";\nvar Model_1 = require('./Model');\nvar axis_1 = require('./axis');\nvar data_1 = require('./data');\nvar layout_1 = require('./layout');\nvar facet_1 = require('./facet');\nvar legend_1 = require('./legend');\nvar mark_1 = require('./mark/mark');\nvar scale_1 = require('./scale');\nvar common_1 = require('./common');\nvar util_1 = require('../util');\nvar data_2 = require('../data');\nvar channel_1 = require('../channel');\nvar Model_2 = require('./Model');\nexports.Model = Model_2.Model;\nfunction compile(spec) {\n var model = new Model_1.Model(spec);\n var config = model.config();\n var output = util_1.extend(spec.name ? { name: spec.name } : {}, {\n width: 1,\n height: 1,\n padding: 'auto'\n }, config.viewport ? { viewport: config.viewport } : {}, config.background ? { background: config.background } : {}, {\n data: data_1.compileData(model).concat([layout_1.compileLayoutData(model)]),\n marks: [compileRootGroup(model)]\n });\n return {\n spec: output\n };\n}\nexports.compile = compile;\nfunction compileRootGroup(model) {\n var spec = model.spec();\n var rootGroup = util_1.extend({\n name: spec.name ? spec.name + '-root' : 'root',\n type: 'group',\n }, spec.description ? { description: spec.description } : {}, {\n from: { data: data_2.LAYOUT },\n properties: {\n update: {\n width: { field: 'width' },\n height: { field: 'height' }\n }\n }\n });\n var marks = mark_1.compileMark(model);\n if (model.has(channel_1.ROW) || model.has(channel_1.COLUMN)) {\n util_1.extend(rootGroup, facet_1.facetMixins(model, marks));\n }\n else {\n common_1.applyConfig(rootGroup.properties.update, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n rootGroup.marks = marks;\n rootGroup.scales = scale_1.compileScales(model);\n var axes = (model.has(channel_1.X) && model.axis(channel_1.X) ? [axis_1.compileAxis(channel_1.X, model)] : [])\n .concat(model.has(channel_1.Y) && model.axis(channel_1.Y) ? [axis_1.compileAxis(channel_1.Y, model)] : []);\n if (axes.length > 0) {\n rootGroup.axes = axes;\n }\n }\n var legends = legend_1.compileLegends(model);\n if (legends.length > 0) {\n rootGroup.legends = legends;\n }\n return rootGroup;\n}\nexports.compileRootGroup = compileRootGroup;\n//# sourceMappingURL=compile.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/compile.js\n ** module id = 177\n ** module chunks = 0\n **/","\"use strict\";\nvar config_1 = require('../config');\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar fielddef_1 = require('../fielddef');\nvar vlEncoding = require('../encoding');\nvar mark_1 = require('../mark');\nvar type_1 = require('../type');\nvar util_1 = require('../util');\nvar config_2 = require('./config');\nvar stack_1 = require('./stack');\nvar scale_1 = require('./scale');\nvar scale_2 = require('../scale');\nvar aggregate_1 = require('../aggregate');\nvar channel_2 = require('../channel');\n;\nvar Model = (function () {\n function Model(spec) {\n var model = this;\n this._spec = spec;\n var mark = this._spec.mark;\n var encoding = this._spec.encoding = this._spec.encoding || {};\n var config = this._config = util_1.mergeDeep(util_1.duplicate(config_1.defaultConfig), spec.config);\n vlEncoding.forEach(this._spec.encoding, function (fieldDef, channel) {\n if (!channel_1.supportMark(channel, this._spec.mark)) {\n console.warn(channel, 'dropped as it is incompatible with', this._spec.mark);\n delete this._spec.encoding[channel].field;\n }\n if (fieldDef.type) {\n fieldDef.type = type_1.getFullName(fieldDef.type);\n }\n if ((channel === channel_1.PATH || channel === channel_1.ORDER) && !fieldDef.aggregate && fieldDef.type === type_1.QUANTITATIVE) {\n fieldDef.aggregate = aggregate_1.AggregateOp.MIN;\n }\n }, this);\n var scale = this._scale = [channel_1.X, channel_1.Y, channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE, channel_1.ROW, channel_1.COLUMN].reduce(function (_scale, channel) {\n if (vlEncoding.has(encoding, channel)) {\n var channelScale = encoding[channel].scale || {};\n var channelDef = encoding[channel];\n var _scaleType = scale_1.scaleType(channelScale, channelDef, channel, mark);\n if (util_1.contains([channel_1.ROW, channel_1.COLUMN], channel)) {\n _scale[channel] = util_1.extend({\n type: _scaleType,\n round: config.facet.scale.round,\n padding: (channel === channel_1.ROW && model.has(channel_1.Y)) || (channel === channel_1.COLUMN && model.has(channel_1.X)) ?\n config.facet.scale.padding : 0\n }, channelScale);\n }\n else {\n _scale[channel] = util_1.extend({\n type: _scaleType,\n round: config.scale.round,\n padding: config.scale.padding,\n includeRawDomain: config.scale.includeRawDomain,\n bandSize: channel === channel_1.X && _scaleType === scale_2.ScaleType.ORDINAL && mark === mark_1.TEXT ?\n config.scale.textBandWidth : config.scale.bandSize\n }, channelScale);\n }\n }\n return _scale;\n }, {});\n this._axis = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (_axis, channel) {\n if (vlEncoding.has(encoding, channel)) {\n var channelAxis = encoding[channel].axis;\n if (channelAxis !== false) {\n _axis[channel] = util_1.extend({}, channel === channel_1.X || channel === channel_1.Y ? config.axis : config.facet.axis, channelAxis === true ? {} : channelAxis || {});\n }\n }\n return _axis;\n }, {});\n this._legend = [channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE].reduce(function (_legend, channel) {\n if (vlEncoding.has(encoding, channel)) {\n var channelLegend = encoding[channel].legend;\n if (channelLegend !== false) {\n _legend[channel] = util_1.extend({}, config.legend, channelLegend === true ? {} : channelLegend || {});\n }\n }\n return _legend;\n }, {});\n this._stack = stack_1.compileStackProperties(mark, encoding, scale, config);\n this._config.mark = config_2.compileMarkConfig(mark, encoding, config, this._stack);\n }\n Model.prototype.stack = function () {\n return this._stack;\n };\n Model.prototype.toSpec = function (excludeConfig, excludeData) {\n var encoding = util_1.duplicate(this._spec.encoding);\n var spec;\n spec = {\n mark: this._spec.mark,\n encoding: encoding\n };\n if (!excludeConfig) {\n spec.config = util_1.duplicate(this._spec.config);\n }\n if (!excludeData) {\n spec.data = util_1.duplicate(this._spec.data);\n }\n return spec;\n };\n Model.prototype.cellWidth = function () {\n return (this.isFacet() ? this.config().facet.cell.width : null) ||\n this.config().cell.width;\n };\n Model.prototype.cellHeight = function () {\n return (this.isFacet() ? this.config().facet.cell.height : null) ||\n this.config().cell.height;\n };\n Model.prototype.mark = function () {\n return this._spec.mark;\n };\n Model.prototype.spec = function () {\n return this._spec;\n };\n Model.prototype.has = function (channel) {\n return vlEncoding.has(this._spec.encoding, channel);\n };\n Model.prototype.encoding = function () {\n return this._spec.encoding;\n };\n Model.prototype.fieldDef = function (channel) {\n return this._spec.encoding[channel] || {};\n };\n Model.prototype.field = function (channel, opt) {\n if (opt === void 0) { opt = {}; }\n var fieldDef = this.fieldDef(channel);\n var scale = this.scale(channel);\n if (fieldDef.bin) {\n opt = util_1.extend({\n binSuffix: scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL ? '_range' : '_start'\n }, opt);\n }\n return fielddef_1.field(fieldDef, opt);\n };\n Model.prototype.channelWithScales = function () {\n var model = this;\n return channel_2.CHANNELS.filter(function (channel) {\n return !!model.scale(channel);\n });\n };\n Model.prototype.reduce = function (f, init, t) {\n return vlEncoding.reduce(this._spec.encoding, f, init, t);\n };\n Model.prototype.forEach = function (f, t) {\n vlEncoding.forEach(this._spec.encoding, f, t);\n };\n Model.prototype.isOrdinalScale = function (channel) {\n var fieldDef = this.fieldDef(channel);\n var scale = this.scale(channel);\n return this.has(channel) && scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL;\n };\n Model.prototype.isFacet = function () {\n return this.has(channel_1.ROW) || this.has(channel_1.COLUMN);\n };\n Model.prototype.dataTable = function () {\n return vlEncoding.isAggregate(this._spec.encoding) ? data_1.SUMMARY : data_1.SOURCE;\n };\n Model.prototype.data = function () {\n return this._spec.data;\n };\n Model.prototype.transform = function () {\n return this._spec.transform || {};\n };\n Model.prototype.config = function () {\n return this._config;\n };\n Model.prototype.sort = function (channel) {\n return this._spec.encoding[channel].sort;\n };\n Model.prototype.scale = function (channel) {\n return this._scale[channel];\n };\n Model.prototype.axis = function (channel) {\n return this._axis[channel];\n };\n Model.prototype.legend = function (channel) {\n return this._legend[channel];\n };\n Model.prototype.scaleName = function (channel) {\n var name = this.spec().name;\n return (name ? name + '-' : '') + channel;\n };\n return Model;\n}());\nexports.Model = Model;\n//# sourceMappingURL=Model.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/Model.js\n ** module id = 178\n ** module chunks = 0\n **/","\"use strict\";\nvar scale_1 = require('./scale');\nvar axis_1 = require('./axis');\nvar legend_1 = require('./legend');\nexports.defaultCellConfig = {\n width: 200,\n height: 200\n};\nexports.defaultFacetCellConfig = {\n stroke: '#ccc',\n strokeWidth: 1\n};\nvar defaultFacetGridConfig = {\n color: '#000000',\n opacity: 0.4,\n offset: 0\n};\nexports.defaultFacetConfig = {\n scale: scale_1.defaultFacetScaleConfig,\n axis: axis_1.defaultFacetAxisConfig,\n grid: defaultFacetGridConfig,\n cell: exports.defaultFacetCellConfig\n};\n(function (FontWeight) {\n FontWeight[FontWeight[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n FontWeight[FontWeight[\"BOLD\"] = 'bold'] = \"BOLD\";\n})(exports.FontWeight || (exports.FontWeight = {}));\nvar FontWeight = exports.FontWeight;\n(function (Shape) {\n Shape[Shape[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n Shape[Shape[\"SQUARE\"] = 'square'] = \"SQUARE\";\n Shape[Shape[\"CROSS\"] = 'cross'] = \"CROSS\";\n Shape[Shape[\"DIAMOND\"] = 'diamond'] = \"DIAMOND\";\n Shape[Shape[\"TRIANGLEUP\"] = 'triangle-up'] = \"TRIANGLEUP\";\n Shape[Shape[\"TRIANGLEDOWN\"] = 'triangle-down'] = \"TRIANGLEDOWN\";\n})(exports.Shape || (exports.Shape = {}));\nvar Shape = exports.Shape;\n(function (HorizontalAlign) {\n HorizontalAlign[HorizontalAlign[\"LEFT\"] = 'left'] = \"LEFT\";\n HorizontalAlign[HorizontalAlign[\"RIGHT\"] = 'right'] = \"RIGHT\";\n HorizontalAlign[HorizontalAlign[\"CENTER\"] = 'center'] = \"CENTER\";\n})(exports.HorizontalAlign || (exports.HorizontalAlign = {}));\nvar HorizontalAlign = exports.HorizontalAlign;\n(function (VerticalAlign) {\n VerticalAlign[VerticalAlign[\"TOP\"] = 'top'] = \"TOP\";\n VerticalAlign[VerticalAlign[\"MIDDLE\"] = 'middle'] = \"MIDDLE\";\n VerticalAlign[VerticalAlign[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n})(exports.VerticalAlign || (exports.VerticalAlign = {}));\nvar VerticalAlign = exports.VerticalAlign;\n(function (FontStyle) {\n FontStyle[FontStyle[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n FontStyle[FontStyle[\"ITALIC\"] = 'italic'] = \"ITALIC\";\n})(exports.FontStyle || (exports.FontStyle = {}));\nvar FontStyle = exports.FontStyle;\n(function (StackOffset) {\n StackOffset[StackOffset[\"ZERO\"] = 'zero'] = \"ZERO\";\n StackOffset[StackOffset[\"CENTER\"] = 'center'] = \"CENTER\";\n StackOffset[StackOffset[\"NORMALIZE\"] = 'normalize'] = \"NORMALIZE\";\n StackOffset[StackOffset[\"NONE\"] = 'none'] = \"NONE\";\n})(exports.StackOffset || (exports.StackOffset = {}));\nvar StackOffset = exports.StackOffset;\nexports.defaultMarkConfig = {\n color: '#4682b4',\n strokeWidth: 2,\n size: 30,\n barThinSize: 2,\n tickThickness: 1,\n fontSize: 10,\n baseline: VerticalAlign.MIDDLE,\n text: 'Abc',\n shortTimeLabels: false,\n applyColorToBackground: false\n};\nexports.defaultConfig = {\n numberFormat: 's',\n timeFormat: '%Y-%m-%d',\n cell: exports.defaultCellConfig,\n mark: exports.defaultMarkConfig,\n scale: scale_1.defaultScaleConfig,\n axis: axis_1.defaultAxisConfig,\n legend: legend_1.defaultLegendConfig,\n facet: exports.defaultFacetConfig,\n};\n//# sourceMappingURL=config.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/config.js\n ** module id = 179\n ** module chunks = 0\n **/","\"use strict\";\n(function (ScaleType) {\n ScaleType[ScaleType[\"LINEAR\"] = 'linear'] = \"LINEAR\";\n ScaleType[ScaleType[\"LOG\"] = 'log'] = \"LOG\";\n ScaleType[ScaleType[\"POW\"] = 'pow'] = \"POW\";\n ScaleType[ScaleType[\"SQRT\"] = 'sqrt'] = \"SQRT\";\n ScaleType[ScaleType[\"QUANTILE\"] = 'quantile'] = \"QUANTILE\";\n ScaleType[ScaleType[\"QUANTIZE\"] = 'quantize'] = \"QUANTIZE\";\n ScaleType[ScaleType[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n ScaleType[ScaleType[\"TIME\"] = 'time'] = \"TIME\";\n ScaleType[ScaleType[\"UTC\"] = 'utc'] = \"UTC\";\n})(exports.ScaleType || (exports.ScaleType = {}));\nvar ScaleType = exports.ScaleType;\n(function (NiceTime) {\n NiceTime[NiceTime[\"SECOND\"] = 'second'] = \"SECOND\";\n NiceTime[NiceTime[\"MINUTE\"] = 'minute'] = \"MINUTE\";\n NiceTime[NiceTime[\"HOUR\"] = 'hour'] = \"HOUR\";\n NiceTime[NiceTime[\"DAY\"] = 'day'] = \"DAY\";\n NiceTime[NiceTime[\"WEEK\"] = 'week'] = \"WEEK\";\n NiceTime[NiceTime[\"MONTH\"] = 'month'] = \"MONTH\";\n NiceTime[NiceTime[\"YEAR\"] = 'year'] = \"YEAR\";\n})(exports.NiceTime || (exports.NiceTime = {}));\nvar NiceTime = exports.NiceTime;\nexports.defaultScaleConfig = {\n round: true,\n textBandWidth: 90,\n bandSize: 21,\n padding: 1,\n includeRawDomain: false,\n nominalColorRange: 'category10',\n sequentialColorRange: ['#AFC6A3', '#09622A'],\n shapeRange: 'shapes',\n fontSizeRange: [8, 40]\n};\nexports.defaultFacetScaleConfig = {\n round: true,\n padding: 16\n};\n//# sourceMappingURL=scale.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/scale.js\n ** module id = 180\n ** module chunks = 0\n **/","\"use strict\";\n(function (AxisOrient) {\n AxisOrient[AxisOrient[\"TOP\"] = 'top'] = \"TOP\";\n AxisOrient[AxisOrient[\"RIGHT\"] = 'right'] = \"RIGHT\";\n AxisOrient[AxisOrient[\"LEFT\"] = 'left'] = \"LEFT\";\n AxisOrient[AxisOrient[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n})(exports.AxisOrient || (exports.AxisOrient = {}));\nvar AxisOrient = exports.AxisOrient;\nexports.defaultAxisConfig = {\n offset: undefined,\n grid: undefined,\n labels: true,\n labelMaxLength: 25,\n tickSize: undefined,\n characterWidth: 6\n};\nexports.defaultFacetAxisConfig = {\n axisWidth: 0,\n labels: true,\n grid: false,\n tickSize: 0\n};\n//# sourceMappingURL=axis.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/axis.js\n ** module id = 181\n ** module chunks = 0\n **/","\"use strict\";\nexports.defaultLegendConfig = {\n orient: undefined,\n shortTimeLabels: false\n};\n//# sourceMappingURL=legend.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/legend.js\n ** module id = 182\n ** module chunks = 0\n **/","\"use strict\";\n(function (Mark) {\n Mark[Mark[\"AREA\"] = 'area'] = \"AREA\";\n Mark[Mark[\"BAR\"] = 'bar'] = \"BAR\";\n Mark[Mark[\"LINE\"] = 'line'] = \"LINE\";\n Mark[Mark[\"POINT\"] = 'point'] = \"POINT\";\n Mark[Mark[\"TEXT\"] = 'text'] = \"TEXT\";\n Mark[Mark[\"TICK\"] = 'tick'] = \"TICK\";\n Mark[Mark[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n Mark[Mark[\"SQUARE\"] = 'square'] = \"SQUARE\";\n})(exports.Mark || (exports.Mark = {}));\nvar Mark = exports.Mark;\nexports.AREA = Mark.AREA;\nexports.BAR = Mark.BAR;\nexports.LINE = Mark.LINE;\nexports.POINT = Mark.POINT;\nexports.TEXT = Mark.TEXT;\nexports.TICK = Mark.TICK;\nexports.CIRCLE = Mark.CIRCLE;\nexports.SQUARE = Mark.SQUARE;\n//# sourceMappingURL=mark.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/mark.js\n ** module id = 183\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar encoding_1 = require('../encoding');\nvar fielddef_1 = require('../fielddef');\nvar mark_1 = require('../mark');\nvar util_1 = require('../util');\nfunction compileMarkConfig(mark, encoding, config, stack) {\n return util_1.extend(['filled', 'opacity', 'orient', 'align'].reduce(function (cfg, property) {\n var value = config.mark[property];\n switch (property) {\n case 'filled':\n if (value === undefined) {\n cfg[property] = mark !== mark_1.POINT && mark !== mark_1.LINE;\n }\n break;\n case 'opacity':\n if (value === undefined && util_1.contains([mark_1.POINT, mark_1.TICK, mark_1.CIRCLE, mark_1.SQUARE], mark)) {\n if (!encoding_1.isAggregate(encoding) || encoding_1.has(encoding, channel_1.DETAIL)) {\n cfg[property] = 0.7;\n }\n }\n break;\n case 'orient':\n if (stack) {\n cfg[property] = stack.groupbyChannel === channel_1.Y ? 'horizontal' : undefined;\n }\n if (value === undefined) {\n cfg[property] = fielddef_1.isMeasure(encoding[channel_1.X]) && !fielddef_1.isMeasure(encoding[channel_1.Y]) ?\n 'horizontal' :\n undefined;\n }\n break;\n case 'align':\n if (value === undefined) {\n cfg[property] = encoding_1.has(encoding, channel_1.X) ? 'center' : 'right';\n }\n }\n return cfg;\n }, {}), config.mark);\n}\nexports.compileMarkConfig = compileMarkConfig;\n//# sourceMappingURL=config.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/config.js\n ** module id = 184\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar scale_1 = require('../scale');\nvar config_1 = require('../config');\nvar mark_1 = require('../mark');\nvar fielddef_1 = require('../fielddef');\nvar encoding_1 = require('../encoding');\nvar util_1 = require('../util');\nvar common_1 = require('./common');\nvar scale_2 = require('./scale');\nfunction compileStackProperties(mark, encoding, scale, config) {\n var stackFields = getStackFields(mark, encoding, scale);\n if (stackFields.length > 0 &&\n util_1.contains([mark_1.BAR, mark_1.AREA], mark) &&\n config.mark.stacked !== config_1.StackOffset.NONE &&\n encoding_1.isAggregate(encoding)) {\n var isXMeasure = encoding_1.has(encoding, channel_1.X) && fielddef_1.isMeasure(encoding.x), isYMeasure = encoding_1.has(encoding, channel_1.Y) && fielddef_1.isMeasure(encoding.y);\n if (isXMeasure && !isYMeasure) {\n return {\n groupbyChannel: channel_1.Y,\n fieldChannel: channel_1.X,\n stackFields: stackFields,\n offset: config.mark.stacked\n };\n }\n else if (isYMeasure && !isXMeasure) {\n return {\n groupbyChannel: channel_1.X,\n fieldChannel: channel_1.Y,\n stackFields: stackFields,\n offset: config.mark.stacked\n };\n }\n }\n return null;\n}\nexports.compileStackProperties = compileStackProperties;\nfunction getStackFields(mark, encoding, scale) {\n return [channel_1.COLOR, channel_1.DETAIL].reduce(function (fields, channel) {\n var channelEncoding = encoding[channel];\n if (encoding_1.has(encoding, channel)) {\n if (util_1.isArray(channelEncoding)) {\n channelEncoding.forEach(function (fieldDef) {\n fields.push(fielddef_1.field(fieldDef));\n });\n }\n else {\n var fieldDef = channelEncoding;\n fields.push(fielddef_1.field(fieldDef, {\n binSuffix: scale_2.scaleType(scale[channel], fieldDef, channel, mark) === scale_1.ScaleType.ORDINAL ? '_range' : '_start'\n }));\n }\n }\n return fields;\n }, []);\n}\nfunction imputeTransform(model) {\n var stack = model.stack();\n return {\n type: 'impute',\n field: model.field(stack.fieldChannel),\n groupby: stack.stackFields,\n orderby: [model.field(stack.groupbyChannel)],\n method: 'value',\n value: 0\n };\n}\nexports.imputeTransform = imputeTransform;\nfunction stackTransform(model) {\n var stack = model.stack();\n var encoding = model.encoding();\n var sortby = model.has(channel_1.ORDER) ?\n (util_1.isArray(encoding[channel_1.ORDER]) ? encoding[channel_1.ORDER] : [encoding[channel_1.ORDER]]).map(common_1.sortField) :\n stack.stackFields.map(function (field) {\n return '-' + field;\n });\n var valName = model.field(stack.fieldChannel);\n var transform = {\n type: 'stack',\n groupby: [model.field(stack.groupbyChannel)],\n field: model.field(stack.fieldChannel),\n sortby: sortby,\n output: {\n start: valName + '_start',\n end: valName + '_end'\n }\n };\n if (stack.offset) {\n transform.offset = stack.offset;\n }\n return transform;\n}\nexports.stackTransform = stackTransform;\n//# sourceMappingURL=stack.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/stack.js\n ** module id = 185\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar sort_1 = require('../sort');\nvar type_1 = require('../type');\nvar time_1 = require('./time');\nvar util_1 = require('../util');\nexports.FILL_STROKE_CONFIG = ['fill', 'fillOpacity',\n 'stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity',\n 'opacity'];\nfunction applyColorAndOpacity(p, model) {\n var filled = model.config().mark.filled;\n var fieldDef = model.fieldDef(channel_1.COLOR);\n applyMarkConfig(p, model, exports.FILL_STROKE_CONFIG);\n var value;\n if (model.has(channel_1.COLOR)) {\n value = {\n scale: model.scaleName(channel_1.COLOR),\n field: model.field(channel_1.COLOR, fieldDef.type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n };\n }\n else if (fieldDef && fieldDef.value) {\n value = { value: fieldDef.value };\n }\n if (value !== undefined) {\n if (filled) {\n p.fill = value;\n }\n else {\n p.stroke = value;\n }\n }\n else {\n p[filled ? 'fill' : 'stroke'] = p[filled ? 'fill' : 'stroke'] ||\n { value: model.config().mark.color };\n }\n}\nexports.applyColorAndOpacity = applyColorAndOpacity;\nfunction applyConfig(properties, config, propsList) {\n propsList.forEach(function (property) {\n var value = config[property];\n if (value !== undefined) {\n properties[property] = { value: value };\n }\n });\n}\nexports.applyConfig = applyConfig;\nfunction applyMarkConfig(marksProperties, model, propsList) {\n applyConfig(marksProperties, model.config().mark, propsList);\n}\nexports.applyMarkConfig = applyMarkConfig;\nfunction formatMixins(model, channel, format) {\n var fieldDef = model.fieldDef(channel);\n if (!util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], fieldDef.type)) {\n return {};\n }\n var def = {};\n if (fieldDef.type === type_1.TEMPORAL) {\n def.formatType = 'time';\n }\n if (format !== undefined) {\n def.format = format;\n }\n else {\n switch (fieldDef.type) {\n case type_1.QUANTITATIVE:\n def.format = model.config().numberFormat;\n break;\n case type_1.TEMPORAL:\n def.format = timeFormat(model, channel) || model.config().timeFormat;\n break;\n }\n }\n if (channel === channel_1.TEXT) {\n var filter = (def.formatType || 'number') + (def.format ? ':\\'' + def.format + '\\'' : '');\n return {\n text: {\n template: '{{' + model.field(channel, { datum: true }) + ' | ' + filter + '}}'\n }\n };\n }\n return def;\n}\nexports.formatMixins = formatMixins;\nfunction isAbbreviated(model, channel, fieldDef) {\n switch (channel) {\n case channel_1.ROW:\n case channel_1.COLUMN:\n case channel_1.X:\n case channel_1.Y:\n return model.axis(channel).shortTimeLabels;\n case channel_1.COLOR:\n case channel_1.SHAPE:\n case channel_1.SIZE:\n return model.legend(channel).shortTimeLabels;\n case channel_1.TEXT:\n return model.config().mark.shortTimeLabels;\n case channel_1.LABEL:\n }\n return false;\n}\nfunction sortField(orderChannelDef) {\n return (orderChannelDef.sort === sort_1.SortOrder.DESCENDING ? '-' : '') + fielddef_1.field(orderChannelDef);\n}\nexports.sortField = sortField;\nfunction timeFormat(model, channel) {\n var fieldDef = model.fieldDef(channel);\n return time_1.format(fieldDef.timeUnit, isAbbreviated(model, channel, fieldDef));\n}\nexports.timeFormat = timeFormat;\n//# sourceMappingURL=common.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/common.js\n ** module id = 186\n ** module chunks = 0\n **/","\"use strict\";\n(function (SortOrder) {\n SortOrder[SortOrder[\"ASCENDING\"] = 'ascending'] = \"ASCENDING\";\n SortOrder[SortOrder[\"DESCENDING\"] = 'descending'] = \"DESCENDING\";\n SortOrder[SortOrder[\"NONE\"] = 'none'] = \"NONE\";\n})(exports.SortOrder || (exports.SortOrder = {}));\nvar SortOrder = exports.SortOrder;\n//# sourceMappingURL=sort.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/sort.js\n ** module id = 187\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('../util');\nvar channel_1 = require('../channel');\nvar timeunit_1 = require('../timeunit');\nfunction format(timeUnit, abbreviated) {\n if (abbreviated === void 0) { abbreviated = false; }\n if (!timeUnit) {\n return undefined;\n }\n var timeString = timeUnit.toString();\n var dateComponents = [];\n if (timeString.indexOf('year') > -1) {\n dateComponents.push(abbreviated ? '%y' : '%Y');\n }\n if (timeString.indexOf('month') > -1) {\n dateComponents.push(abbreviated ? '%b' : '%B');\n }\n if (timeString.indexOf('day') > -1) {\n dateComponents.push(abbreviated ? '%a' : '%A');\n }\n else if (timeString.indexOf('date') > -1) {\n dateComponents.push('%d');\n }\n var timeComponents = [];\n if (timeString.indexOf('hours') > -1) {\n timeComponents.push('%H');\n }\n if (timeString.indexOf('minutes') > -1) {\n timeComponents.push('%M');\n }\n if (timeString.indexOf('seconds') > -1) {\n timeComponents.push('%S');\n }\n if (timeString.indexOf('milliseconds') > -1) {\n timeComponents.push('%L');\n }\n var out = [];\n if (dateComponents.length > 0) {\n out.push(dateComponents.join('-'));\n }\n if (timeComponents.length > 0) {\n out.push(timeComponents.join(':'));\n }\n return out.length > 0 ? out.join(' ') : undefined;\n}\nexports.format = format;\nfunction smallestUnit(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n if (timeUnit.indexOf('second') > -1) {\n return 'second';\n }\n if (timeUnit.indexOf('minute') > -1) {\n return 'minute';\n }\n if (timeUnit.indexOf('hour') > -1) {\n return 'hour';\n }\n if (timeUnit.indexOf('day') > -1 || timeUnit.indexOf('date') > -1) {\n return 'day';\n }\n if (timeUnit.indexOf('month') > -1) {\n return 'month';\n }\n if (timeUnit.indexOf('year') > -1) {\n return 'year';\n }\n return undefined;\n}\nexports.smallestUnit = smallestUnit;\nfunction parseExpression(timeUnit, fieldRef, onlyRef) {\n if (onlyRef === void 0) { onlyRef = false; }\n var out = 'datetime(';\n var timeString = timeUnit.toString();\n function get(fun, addComma) {\n if (addComma === void 0) { addComma = true; }\n if (onlyRef) {\n return fieldRef + (addComma ? ', ' : '');\n }\n else {\n return fun + '(' + fieldRef + ')' + (addComma ? ', ' : '');\n }\n }\n if (timeString.indexOf('year') > -1) {\n out += get('year');\n }\n else {\n out += '2006, ';\n }\n if (timeString.indexOf('month') > -1) {\n out += get('month');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('day') > -1) {\n out += get('day', false) + '+1, ';\n }\n else if (timeString.indexOf('date') > -1) {\n out += get('date');\n }\n else {\n out += '1, ';\n }\n if (timeString.indexOf('hours') > -1) {\n out += get('hours');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('minutes') > -1) {\n out += get('minutes');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('seconds') > -1) {\n out += get('seconds');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('milliseconds') > -1) {\n out += get('milliseconds', false);\n }\n else {\n out += '0';\n }\n return out + ')';\n}\nexports.parseExpression = parseExpression;\nfunction rawDomain(timeUnit, channel) {\n if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE, channel_1.COLOR], channel)) {\n return null;\n }\n switch (timeUnit) {\n case timeunit_1.TimeUnit.SECONDS:\n return util_1.range(0, 60);\n case timeunit_1.TimeUnit.MINUTES:\n return util_1.range(0, 60);\n case timeunit_1.TimeUnit.HOURS:\n return util_1.range(0, 24);\n case timeunit_1.TimeUnit.DAY:\n return util_1.range(0, 7);\n case timeunit_1.TimeUnit.DATE:\n return util_1.range(1, 32);\n case timeunit_1.TimeUnit.MONTH:\n return util_1.range(0, 12);\n }\n return null;\n}\nexports.rawDomain = rawDomain;\n//# sourceMappingURL=time.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/time.js\n ** module id = 188\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('../util');\nvar aggregate_1 = require('../aggregate');\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar type_1 = require('../type');\nvar mark_1 = require('../mark');\nvar time_1 = require('./time');\nvar scale_1 = require('../scale');\nvar config_1 = require('../config');\nvar timeunit_1 = require('../timeunit');\nvar fielddef_1 = require('../fielddef');\nexports.COLOR_LEGEND = 'color_legend';\nexports.COLOR_LEGEND_LABEL = 'color_legend_label';\nfunction compileScales(model) {\n return model.channelWithScales().reduce(function (scales, channel) {\n var fieldDef = model.fieldDef(channel);\n if (channel === channel_1.COLOR && model.legend(channel_1.COLOR) && (fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit)) {\n scales.push(colorLegendScale(model, fieldDef));\n if (fieldDef.bin) {\n scales.push(binColorLegendLabel(model, fieldDef));\n }\n }\n scales.push(mainScale(model, fieldDef, channel));\n return scales;\n }, []);\n}\nexports.compileScales = compileScales;\nfunction mainScale(model, fieldDef, channel) {\n var scale = model.scale(channel);\n var sort = model.sort(channel);\n var scaleDef = {\n name: model.scaleName(channel),\n type: scaleType(scale, fieldDef, channel, model.mark()),\n };\n scaleDef.domain = domain(scale, model, channel, scaleDef.type);\n util_1.extend(scaleDef, rangeMixins(scale, model, channel, scaleDef.type));\n if (sort && (typeof sort === 'string' ? sort : sort.order) === 'descending') {\n scaleDef.reverse = true;\n }\n [\n 'round',\n 'clamp', 'nice',\n 'exponent', 'zero',\n 'padding', 'points'\n ].forEach(function (property) {\n var value = exports[property](scale[property], scaleDef.type, channel, fieldDef);\n if (value !== undefined) {\n scaleDef[property] = value;\n }\n });\n return scaleDef;\n}\nfunction colorLegendScale(model, fieldDef) {\n return {\n name: model.scaleName(exports.COLOR_LEGEND),\n type: 'ordinal',\n domain: {\n data: model.dataTable(),\n field: model.field(channel_1.COLOR, (fieldDef.bin || fieldDef.timeUnit) ? {} : { prefn: 'rank_' }), sort: true\n },\n range: { data: model.dataTable(), field: model.field(channel_1.COLOR), sort: true }\n };\n}\nfunction binColorLegendLabel(model, fieldDef) {\n return {\n name: model.scaleName(exports.COLOR_LEGEND_LABEL),\n type: 'ordinal',\n domain: {\n data: model.dataTable(),\n field: model.field(channel_1.COLOR, { prefn: 'rank_' }),\n sort: true\n },\n range: {\n data: model.dataTable(),\n field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n sort: {\n field: model.field(channel_1.COLOR, { binSuffix: '_start' }),\n op: 'min'\n }\n }\n };\n}\nfunction scaleType(scale, fieldDef, channel, mark) {\n if (!channel_1.hasScale(channel)) {\n return null;\n }\n if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE], channel)) {\n return scale_1.ScaleType.ORDINAL;\n }\n if (scale.type !== undefined) {\n return scale.type;\n }\n switch (fieldDef.type) {\n case type_1.NOMINAL:\n return scale_1.ScaleType.ORDINAL;\n case type_1.ORDINAL:\n if (channel === channel_1.COLOR) {\n return scale_1.ScaleType.LINEAR;\n }\n return scale_1.ScaleType.ORDINAL;\n case type_1.TEMPORAL:\n if (channel === channel_1.COLOR) {\n return scale_1.ScaleType.TIME;\n }\n if (fieldDef.timeUnit) {\n switch (fieldDef.timeUnit) {\n case timeunit_1.TimeUnit.HOURS:\n case timeunit_1.TimeUnit.DAY:\n case timeunit_1.TimeUnit.MONTH:\n return scale_1.ScaleType.ORDINAL;\n default:\n return scale_1.ScaleType.TIME;\n }\n }\n return scale_1.ScaleType.TIME;\n case type_1.QUANTITATIVE:\n if (fieldDef.bin) {\n return util_1.contains([channel_1.X, channel_1.Y, channel_1.COLOR], channel) ? scale_1.ScaleType.LINEAR : scale_1.ScaleType.ORDINAL;\n }\n return scale_1.ScaleType.LINEAR;\n }\n return null;\n}\nexports.scaleType = scaleType;\nfunction domain(scale, model, channel, scaleType) {\n var fieldDef = model.fieldDef(channel);\n if (scale.domain) {\n return scale.domain;\n }\n if (fieldDef.type === type_1.TEMPORAL) {\n if (time_1.rawDomain(fieldDef.timeUnit, channel)) {\n return {\n data: fieldDef.timeUnit,\n field: 'date'\n };\n }\n return {\n data: model.dataTable(),\n field: model.field(channel),\n sort: {\n field: model.field(channel),\n op: 'min'\n }\n };\n }\n var stack = model.stack();\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === config_1.StackOffset.NORMALIZE) {\n return [0, 1];\n }\n return {\n data: data_1.STACKED_SCALE,\n field: model.field(channel, { prefn: 'sum_' })\n };\n }\n var includeRawDomain = _includeRawDomain(scale, model, channel, scaleType), sort = domainSort(model, channel, scaleType);\n if (includeRawDomain) {\n return {\n data: data_1.SOURCE,\n field: model.field(channel, { noAggregate: true })\n };\n }\n else if (fieldDef.bin) {\n return scaleType === scale_1.ScaleType.ORDINAL ? {\n data: model.dataTable(),\n field: model.field(channel, { binSuffix: '_range' }),\n sort: {\n field: model.field(channel, { binSuffix: '_start' }),\n op: 'min'\n }\n } : channel === channel_1.COLOR ? {\n data: model.dataTable(),\n field: model.field(channel, { binSuffix: '_start' })\n } : {\n data: model.dataTable(),\n field: [\n model.field(channel, { binSuffix: '_start' }),\n model.field(channel, { binSuffix: '_end' })\n ]\n };\n }\n else if (sort) {\n return {\n data: sort.op ? data_1.SOURCE : model.dataTable(),\n field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n sort: sort\n };\n }\n else {\n return {\n data: model.dataTable(),\n field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n };\n }\n}\nexports.domain = domain;\nfunction domainSort(model, channel, scaleType) {\n if (scaleType !== scale_1.ScaleType.ORDINAL) {\n return undefined;\n }\n var sort = model.sort(channel);\n if (util_1.contains(['ascending', 'descending', undefined], sort)) {\n return true;\n }\n if (typeof sort !== 'string') {\n return {\n op: sort.op,\n field: sort.field\n };\n }\n return undefined;\n}\nexports.domainSort = domainSort;\nfunction _includeRawDomain(scale, model, channel, scaleType) {\n var fieldDef = model.fieldDef(channel);\n return scale.includeRawDomain &&\n fieldDef.aggregate &&\n aggregate_1.SHARED_DOMAIN_OPS.indexOf(fieldDef.aggregate) >= 0 &&\n ((fieldDef.type === type_1.QUANTITATIVE && !fieldDef.bin) ||\n (fieldDef.type === type_1.TEMPORAL && util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)));\n}\nfunction rangeMixins(scale, model, channel, scaleType) {\n var fieldDef = model.fieldDef(channel), scaleConfig = model.config().scale;\n if (scaleType === scale_1.ScaleType.ORDINAL && scale.bandSize && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n return { bandSize: scale.bandSize };\n }\n if (scale.range && !util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN], channel)) {\n return { range: scale.range };\n }\n switch (channel) {\n case channel_1.X:\n return {\n rangeMin: 0,\n rangeMax: model.cellWidth()\n };\n case channel_1.Y:\n return {\n rangeMin: model.cellHeight(),\n rangeMax: 0\n };\n case channel_1.SIZE:\n if (model.mark() === mark_1.BAR) {\n if (scaleConfig.barSizeRange !== undefined) {\n return { range: scaleConfig.barSizeRange };\n }\n var dimension = model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X;\n return { range: [model.config().mark.barThinSize, model.scale(dimension).bandSize] };\n }\n else if (model.mark() === mark_1.TEXT) {\n return { range: scaleConfig.fontSizeRange };\n }\n if (scaleConfig.pointSizeRange !== undefined) {\n return { range: scaleConfig.pointSizeRange };\n }\n var xIsMeasure = fielddef_1.isMeasure(model.encoding().x);\n var yIsMeasure = fielddef_1.isMeasure(model.encoding().y);\n var bandSize = xIsMeasure !== yIsMeasure ?\n model.scale(xIsMeasure ? channel_1.Y : channel_1.X).bandSize :\n Math.min(model.scale(channel_1.X).bandSize || scaleConfig.bandSize, model.scale(channel_1.Y).bandSize || scaleConfig.bandSize);\n return { range: [9, (bandSize - 2) * (bandSize - 2)] };\n case channel_1.SHAPE:\n return { range: scaleConfig.shapeRange };\n case channel_1.COLOR:\n if (fieldDef.type === type_1.NOMINAL) {\n return { range: scaleConfig.nominalColorRange };\n }\n return { range: scaleConfig.sequentialColorRange };\n case channel_1.ROW:\n return { range: 'height' };\n case channel_1.COLUMN:\n return { range: 'width' };\n }\n return {};\n}\nexports.rangeMixins = rangeMixins;\nfunction clamp(prop, scaleType) {\n if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT,\n scale_1.ScaleType.LOG, scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n return prop;\n }\n return undefined;\n}\nexports.clamp = clamp;\nfunction exponent(prop, scaleType) {\n if (scaleType === scale_1.ScaleType.POW) {\n return prop;\n }\n return undefined;\n}\nexports.exponent = exponent;\nfunction nice(prop, scaleType, channel, fieldDef) {\n if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT, scale_1.ScaleType.LOG,\n scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.QUANTIZE], scaleType)) {\n if (prop !== undefined) {\n return prop;\n }\n if (util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n return time_1.smallestUnit(fieldDef.timeUnit);\n }\n return util_1.contains([channel_1.X, channel_1.Y], channel);\n }\n return undefined;\n}\nexports.nice = nice;\nfunction padding(prop, scaleType, channel) {\n if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n return prop;\n }\n return undefined;\n}\nexports.padding = padding;\nfunction points(__, scaleType, channel) {\n if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n return true;\n }\n return undefined;\n}\nexports.points = points;\nfunction round(prop, scaleType, channel) {\n if (util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN, channel_1.SIZE], channel) && prop !== undefined) {\n return prop;\n }\n return undefined;\n}\nexports.round = round;\nfunction zero(prop, scaleType, channel, fieldDef) {\n if (!util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.ORDINAL], scaleType)) {\n if (prop !== undefined) {\n return prop;\n }\n return !fieldDef.bin && util_1.contains([channel_1.X, channel_1.Y], channel);\n }\n return undefined;\n}\nexports.zero = zero;\n//# sourceMappingURL=scale.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/scale.js\n ** module id = 189\n ** module chunks = 0\n **/","\"use strict\";\nvar axis_1 = require('../axis');\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar type_1 = require('../type');\nvar util_1 = require('../util');\nvar common_1 = require('./common');\nfunction compileInnerAxis(channel, model) {\n var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n var def = {\n type: type,\n scale: model.scaleName(channel),\n grid: true,\n tickSize: 0,\n properties: {\n labels: {\n text: { value: '' }\n },\n axis: {\n stroke: { value: 'transparent' }\n }\n }\n };\n var axis = model.axis(channel);\n ['layer', 'ticks', 'values', 'subdivide'].forEach(function (property) {\n var method;\n var value = (method = exports[property]) ?\n method(model, channel, def) :\n axis[property];\n if (value !== undefined) {\n def[property] = value;\n }\n });\n return def;\n}\nexports.compileInnerAxis = compileInnerAxis;\nfunction compileAxis(channel, model) {\n var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n var axis = model.axis(channel);\n var def = {\n type: type,\n scale: model.scaleName(channel)\n };\n util_1.extend(def, common_1.formatMixins(model, channel, model.axis(channel).format));\n [\n 'grid', 'layer', 'offset', 'orient', 'tickSize', 'ticks', 'title',\n 'tickPadding', 'tickSize', 'tickSizeMajor', 'tickSizeMinor', 'tickSizeEnd',\n 'titleOffset', 'values', 'subdivide'\n ].forEach(function (property) {\n var method;\n var value = (method = exports[property]) ?\n method(model, channel, def) :\n axis[property];\n if (value !== undefined) {\n def[property] = value;\n }\n });\n var props = model.axis(channel).properties || {};\n [\n 'axis', 'labels',\n 'grid', 'title', 'ticks', 'majorTicks', 'minorTicks'\n ].forEach(function (group) {\n var value = properties[group] ?\n properties[group](model, channel, props[group] || {}, def) :\n props[group];\n if (value !== undefined) {\n def.properties = def.properties || {};\n def.properties[group] = value;\n }\n });\n return def;\n}\nexports.compileAxis = compileAxis;\nfunction offset(model, channel) {\n return model.axis(channel).offset;\n}\nexports.offset = offset;\nfunction gridShow(model, channel) {\n var grid = model.axis(channel).grid;\n if (grid !== undefined) {\n return grid;\n }\n return !model.isOrdinalScale(channel) && !model.fieldDef(channel).bin;\n}\nexports.gridShow = gridShow;\nfunction grid(model, channel) {\n if (channel === channel_1.ROW || channel === channel_1.COLUMN) {\n return undefined;\n }\n return gridShow(model, channel) && ((channel === channel_1.Y || channel === channel_1.X) && !(model.has(channel_1.COLUMN) || model.has(channel_1.ROW)));\n}\nexports.grid = grid;\nfunction layer(model, channel, def) {\n var layer = model.axis(channel).layer;\n if (layer !== undefined) {\n return layer;\n }\n if (def.grid) {\n return 'back';\n }\n return undefined;\n}\nexports.layer = layer;\n;\nfunction orient(model, channel) {\n var orient = model.axis(channel).orient;\n if (orient) {\n return orient;\n }\n else if (channel === channel_1.COLUMN) {\n return axis_1.AxisOrient.TOP;\n }\n else if (channel === channel_1.ROW) {\n if (model.has(channel_1.Y) && model.axis(channel_1.Y).orient !== axis_1.AxisOrient.RIGHT) {\n return axis_1.AxisOrient.RIGHT;\n }\n }\n return undefined;\n}\nexports.orient = orient;\nfunction ticks(model, channel) {\n var ticks = model.axis(channel).ticks;\n if (ticks !== undefined) {\n return ticks;\n }\n if (channel === channel_1.X && !model.fieldDef(channel).bin) {\n return 5;\n }\n return undefined;\n}\nexports.ticks = ticks;\nfunction tickSize(model, channel) {\n var tickSize = model.axis(channel).tickSize;\n if (tickSize !== undefined) {\n return tickSize;\n }\n return undefined;\n}\nexports.tickSize = tickSize;\nfunction title(model, channel) {\n var axis = model.axis(channel);\n if (axis.title !== undefined) {\n return axis.title;\n }\n var fieldTitle = fielddef_1.title(model.fieldDef(channel));\n var maxLength;\n if (axis.titleMaxLength) {\n maxLength = axis.titleMaxLength;\n }\n else if (channel === channel_1.X && !model.isOrdinalScale(channel_1.X)) {\n maxLength = model.cellWidth() / model.axis(channel_1.X).characterWidth;\n }\n else if (channel === channel_1.Y && !model.isOrdinalScale(channel_1.Y)) {\n maxLength = model.cellHeight() / model.axis(channel_1.Y).characterWidth;\n }\n return maxLength ? util_1.truncate(fieldTitle, maxLength) : fieldTitle;\n}\nexports.title = title;\nvar properties;\n(function (properties) {\n function axis(model, channel, axisPropsSpec, def) {\n var axis = model.axis(channel);\n return util_1.extend(axis.axisWidth !== undefined ?\n { strokeWidth: { value: axis.axisWidth } } :\n {}, axisPropsSpec || {});\n }\n properties.axis = axis;\n function labels(model, channel, labelsSpec, def) {\n var fieldDef = model.fieldDef(channel);\n var axis = model.axis(channel);\n if (!axis.labels) {\n return util_1.extend({\n text: ''\n }, labelsSpec);\n }\n if (util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) && axis.labelMaxLength) {\n labelsSpec = util_1.extend({\n text: {\n template: '{{ datum.data | truncate:' + axis.labelMaxLength + '}}'\n }\n }, labelsSpec || {});\n }\n if (axis.labelAngle !== undefined) {\n labelsSpec.angle = { value: axis.labelAngle };\n }\n else {\n if (channel === channel_1.X && (fielddef_1.isDimension(fieldDef) || fieldDef.type === type_1.TEMPORAL)) {\n labelsSpec.angle = { value: 270 };\n }\n else if (channel === channel_1.ROW && model.has(channel_1.X)) {\n labelsSpec.angle = { value: def.orient === 'left' ? 270 : 90 };\n }\n }\n if (axis.labelAlign !== undefined) {\n labelsSpec.align = { value: axis.labelAlign };\n }\n else {\n if (labelsSpec.angle) {\n if (labelsSpec.angle.value === 270) {\n labelsSpec.align = {\n value: def.orient === 'top' ? 'left' :\n def.type === 'x' ? 'right' :\n 'center'\n };\n }\n else if (labelsSpec.angle.value === 90) {\n labelsSpec.align = { value: 'center' };\n }\n }\n }\n if (axis.labelBaseline !== undefined) {\n labelsSpec.baseline = { value: axis.labelBaseline };\n }\n else {\n if (labelsSpec.angle) {\n if (labelsSpec.angle.value === 270) {\n labelsSpec.baseline = { value: def.type === 'x' ? 'middle' : 'bottom' };\n }\n else if (labelsSpec.angle.value === 90) {\n labelsSpec.baseline = { value: 'bottom' };\n }\n }\n }\n return labelsSpec || undefined;\n }\n properties.labels = labels;\n})(properties = exports.properties || (exports.properties = {}));\n//# sourceMappingURL=axis.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/axis.js\n ** module id = 190\n ** module chunks = 0\n **/","\"use strict\";\nvar vlFieldDef = require('../fielddef');\nvar util_1 = require('../util');\nvar scale_1 = require('../scale');\nvar bin_1 = require('../bin');\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar fielddef_1 = require('../fielddef');\nvar type_1 = require('../type');\nvar scale_2 = require('./scale');\nvar time_1 = require('./time');\nvar aggregate_1 = require('../aggregate');\nvar DEFAULT_NULL_FILTERS = {\n nominal: false,\n ordinal: false,\n quantitative: true,\n temporal: true\n};\nfunction compileData(model) {\n var def = [source.def(model)];\n var summaryDef = summary.def(model);\n if (summaryDef) {\n def.push(summaryDef);\n }\n rankTransform(def[def.length - 1], model);\n filterNonPositiveForLog(def[def.length - 1], model);\n var stackDef = model.stack();\n if (stackDef) {\n def.push(stack.def(model, stackDef));\n }\n return def.concat(dates.defs(model));\n}\nexports.compileData = compileData;\nvar source;\n(function (source_1) {\n function def(model) {\n var source = { name: data_1.SOURCE };\n var data = model.data();\n if (data) {\n if (data.values && data.values.length > 0) {\n source.values = model.data().values;\n source.format = { type: 'json' };\n }\n else if (data.url) {\n source.url = data.url;\n var defaultExtension = /(?:\\.([^.]+))?$/.exec(source.url)[1];\n if (!util_1.contains(['json', 'csv', 'tsv'], defaultExtension)) {\n defaultExtension = 'json';\n }\n source.format = { type: model.data().formatType || defaultExtension };\n }\n }\n var parse = formatParse(model);\n if (parse) {\n source.format = source.format || {};\n source.format.parse = parse;\n }\n source.transform = transform(model);\n return source;\n }\n source_1.def = def;\n function formatParse(model) {\n var calcFieldMap = (model.transform().calculate || []).reduce(function (fieldMap, formula) {\n fieldMap[formula.field] = true;\n return fieldMap;\n }, {});\n var parse;\n model.forEach(function (fieldDef) {\n if (fieldDef.type === type_1.TEMPORAL) {\n parse = parse || {};\n parse[fieldDef.field] = 'date';\n }\n else if (fieldDef.type === type_1.QUANTITATIVE) {\n if (vlFieldDef.isCount(fieldDef) || calcFieldMap[fieldDef.field]) {\n return;\n }\n parse = parse || {};\n parse[fieldDef.field] = 'number';\n }\n });\n return parse;\n }\n function transform(model) {\n return nullFilterTransform(model).concat(formulaTransform(model), filterTransform(model), binTransform(model), timeTransform(model));\n }\n source_1.transform = transform;\n function timeTransform(model) {\n return model.reduce(function (transform, fieldDef, channel) {\n var ref = fielddef_1.field(fieldDef, { nofn: true, datum: true });\n if (fieldDef.type === type_1.TEMPORAL && fieldDef.timeUnit) {\n transform.push({\n type: 'formula',\n field: fielddef_1.field(fieldDef),\n expr: time_1.parseExpression(fieldDef.timeUnit, ref)\n });\n }\n return transform;\n }, []);\n }\n source_1.timeTransform = timeTransform;\n function binTransform(model) {\n return model.reduce(function (transform, fieldDef, channel) {\n var bin = model.fieldDef(channel).bin;\n var scale = model.scale(channel);\n if (bin) {\n var binTrans = util_1.extend({\n type: 'bin',\n field: fieldDef.field,\n output: {\n start: fielddef_1.field(fieldDef, { binSuffix: '_start' }),\n mid: fielddef_1.field(fieldDef, { binSuffix: '_mid' }),\n end: fielddef_1.field(fieldDef, { binSuffix: '_end' })\n }\n }, typeof bin === 'boolean' ? {} : bin);\n if (!binTrans.maxbins && !binTrans.step) {\n binTrans.maxbins = bin_1.autoMaxBins(channel);\n }\n transform.push(binTrans);\n if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL || channel === channel_1.COLOR) {\n transform.push({\n type: 'formula',\n field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n expr: fielddef_1.field(fieldDef, { datum: true, binSuffix: '_start' }) +\n ' + \\'-\\' + ' +\n fielddef_1.field(fieldDef, { datum: true, binSuffix: '_end' })\n });\n }\n }\n return transform;\n }, []);\n }\n source_1.binTransform = binTransform;\n function nullFilterTransform(model) {\n var filterNull = model.transform().filterNull;\n var filteredFields = util_1.keys(model.reduce(function (aggregator, fieldDef) {\n if (filterNull ||\n (filterNull === undefined && fieldDef.field && fieldDef.field !== '*' && DEFAULT_NULL_FILTERS[fieldDef.type])) {\n aggregator[fieldDef.field] = true;\n }\n return aggregator;\n }, {}));\n return filteredFields.length > 0 ?\n [{\n type: 'filter',\n test: filteredFields.map(function (fieldName) {\n return 'datum.' + fieldName + '!==null';\n }).join(' && ')\n }] : [];\n }\n source_1.nullFilterTransform = nullFilterTransform;\n function filterTransform(model) {\n var filter = model.transform().filter;\n return filter ? [{\n type: 'filter',\n test: filter\n }] : [];\n }\n source_1.filterTransform = filterTransform;\n function formulaTransform(model) {\n return (model.transform().calculate || []).reduce(function (transform, formula) {\n transform.push(util_1.extend({ type: 'formula' }, formula));\n return transform;\n }, []);\n }\n source_1.formulaTransform = formulaTransform;\n})(source = exports.source || (exports.source = {}));\nvar summary;\n(function (summary) {\n function def(model) {\n var dims = {};\n var meas = {};\n var hasAggregate = false;\n model.forEach(function (fieldDef, channel) {\n if (fieldDef.aggregate) {\n hasAggregate = true;\n if (fieldDef.aggregate === aggregate_1.AggregateOp.COUNT) {\n meas['*'] = meas['*'] || {};\n meas['*'].count = true;\n }\n else {\n meas[fieldDef.field] = meas[fieldDef.field] || {};\n meas[fieldDef.field][fieldDef.aggregate] = true;\n }\n }\n else {\n if (fieldDef.bin) {\n dims[fielddef_1.field(fieldDef, { binSuffix: '_start' })] = fielddef_1.field(fieldDef, { binSuffix: '_start' });\n dims[fielddef_1.field(fieldDef, { binSuffix: '_mid' })] = fielddef_1.field(fieldDef, { binSuffix: '_mid' });\n dims[fielddef_1.field(fieldDef, { binSuffix: '_end' })] = fielddef_1.field(fieldDef, { binSuffix: '_end' });\n var scale = model.scale(channel);\n if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL) {\n dims[fielddef_1.field(fieldDef, { binSuffix: '_range' })] = fielddef_1.field(fieldDef, { binSuffix: '_range' });\n }\n }\n else {\n dims[fielddef_1.field(fieldDef)] = fielddef_1.field(fieldDef);\n }\n }\n });\n var groupby = util_1.vals(dims);\n var summarize = util_1.reduce(meas, function (aggregator, fnDictSet, field) {\n aggregator[field] = util_1.keys(fnDictSet);\n return aggregator;\n }, {});\n if (hasAggregate) {\n return {\n name: data_1.SUMMARY,\n source: data_1.SOURCE,\n transform: [{\n type: 'aggregate',\n groupby: groupby,\n summarize: summarize\n }]\n };\n }\n return null;\n }\n summary.def = def;\n ;\n})(summary = exports.summary || (exports.summary = {}));\nvar stack;\n(function (stack) {\n function def(model, stackProps) {\n var groupbyChannel = stackProps.groupbyChannel, fieldChannel = stackProps.fieldChannel, facetFields = (model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n .concat((model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : []));\n var stacked = {\n name: data_1.STACKED_SCALE,\n source: model.dataTable(),\n transform: [{\n type: 'aggregate',\n groupby: [model.field(groupbyChannel)].concat(facetFields),\n summarize: [{ ops: ['sum'], field: model.field(fieldChannel) }]\n }]\n };\n return stacked;\n }\n stack.def = def;\n ;\n})(stack = exports.stack || (exports.stack = {}));\nvar dates;\n(function (dates) {\n function defs(model) {\n var alreadyAdded = {};\n return model.reduce(function (aggregator, fieldDef, channel) {\n if (fieldDef.timeUnit) {\n var domain = time_1.rawDomain(fieldDef.timeUnit, channel);\n if (domain && !alreadyAdded[fieldDef.timeUnit]) {\n alreadyAdded[fieldDef.timeUnit] = true;\n aggregator.push({\n name: fieldDef.timeUnit,\n values: domain,\n transform: [{\n type: 'formula',\n field: 'date',\n expr: time_1.parseExpression(fieldDef.timeUnit, 'datum.data', true)\n }]\n });\n }\n }\n return aggregator;\n }, []);\n }\n dates.defs = defs;\n})(dates = exports.dates || (exports.dates = {}));\nfunction rankTransform(dataTable, model) {\n if (model.has(channel_1.COLOR) && model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL) {\n dataTable.transform = dataTable.transform.concat([{\n type: 'sort',\n by: model.field(channel_1.COLOR)\n }, {\n type: 'rank',\n field: model.field(channel_1.COLOR),\n output: {\n rank: model.field(channel_1.COLOR, { prefn: 'rank_' })\n }\n }]);\n }\n}\nexports.rankTransform = rankTransform;\nfunction filterNonPositiveForLog(dataTable, model) {\n model.forEach(function (_, channel) {\n var scale = model.scale(channel);\n if (scale && scale.type === scale_1.ScaleType.LOG) {\n dataTable.transform.push({\n type: 'filter',\n test: model.field(channel, { datum: true }) + ' > 0'\n });\n }\n });\n}\nexports.filterNonPositiveForLog = filterNonPositiveForLog;\n//# sourceMappingURL=data.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/data.js\n ** module id = 191\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar mark_1 = require('../mark');\nvar time_1 = require('./time');\nfunction compileLayoutData(model) {\n var distinctSummary = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (summary, channel) {\n if (model.has(channel) && model.isOrdinalScale(channel)) {\n var scale = model.scale(channel);\n if (!(scale.domain instanceof Array)) {\n summary.push({\n field: model.field(channel),\n ops: ['distinct']\n });\n }\n }\n return summary;\n }, []);\n var cellWidthFormula = scaleWidthFormula(model, channel_1.X, model.cellWidth());\n var cellHeightFormula = scaleWidthFormula(model, channel_1.Y, model.cellHeight());\n var isFacet = model.has(channel_1.COLUMN) || model.has(channel_1.ROW);\n var formulas = [{\n type: 'formula',\n field: 'cellWidth',\n expr: cellWidthFormula\n }, {\n type: 'formula',\n field: 'cellHeight',\n expr: cellHeightFormula\n }, {\n type: 'formula',\n field: 'width',\n expr: isFacet ?\n facetScaleWidthFormula(model, channel_1.COLUMN, 'datum.cellWidth') :\n cellWidthFormula\n }, {\n type: 'formula',\n field: 'height',\n expr: isFacet ?\n facetScaleWidthFormula(model, channel_1.ROW, 'datum.cellHeight') :\n cellHeightFormula\n }];\n return distinctSummary.length > 0 ? {\n name: data_1.LAYOUT,\n source: model.dataTable(),\n transform: [].concat([{\n type: 'aggregate',\n summarize: distinctSummary\n }], formulas)\n } : {\n name: data_1.LAYOUT,\n values: [{}],\n transform: formulas\n };\n}\nexports.compileLayoutData = compileLayoutData;\nfunction cardinalityFormula(model, channel) {\n var scale = model.scale(channel);\n if (scale.domain instanceof Array) {\n return scale.domain.length;\n }\n var timeUnit = model.fieldDef(channel).timeUnit;\n var timeUnitDomain = timeUnit ? time_1.rawDomain(timeUnit, channel) : null;\n return timeUnitDomain !== null ? timeUnitDomain.length :\n model.field(channel, { datum: true, prefn: 'distinct_' });\n}\nfunction scaleWidthFormula(model, channel, nonOrdinalSize) {\n if (model.has(channel)) {\n if (model.isOrdinalScale(channel)) {\n var scale = model.scale(channel);\n return '(' + cardinalityFormula(model, channel) +\n ' + ' + scale.padding +\n ') * ' + scale.bandSize;\n }\n else {\n return nonOrdinalSize + '';\n }\n }\n else {\n if (model.mark() === mark_1.TEXT && channel === channel_1.X) {\n return model.config().scale.textBandWidth + '';\n }\n return model.config().scale.bandSize + '';\n }\n}\nfunction facetScaleWidthFormula(model, channel, innerWidth) {\n var scale = model.scale(channel);\n if (model.has(channel)) {\n var cardinality = scale.domain instanceof Array ? scale.domain.length :\n model.field(channel, { datum: true, prefn: 'distinct_' });\n return '(' + innerWidth + ' + ' + scale.padding + ')' + ' * ' + cardinality;\n }\n else {\n return innerWidth + ' + ' + model.config().facet.scale.padding;\n }\n}\n//# sourceMappingURL=layout.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/layout.js\n ** module id = 192\n ** module chunks = 0\n **/","\"use strict\";\nvar util = require('../util');\nvar util_1 = require('../util');\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar axis_1 = require('./axis');\nvar scale_1 = require('./scale');\nvar common_1 = require('./common');\nfunction facetMixins(model, marks) {\n var hasRow = model.has(channel_1.ROW), hasCol = model.has(channel_1.COLUMN);\n if (model.has(channel_1.ROW) && !fielddef_1.isDimension(model.encoding().row)) {\n util.error('Row encoding should be ordinal.');\n }\n if (model.has(channel_1.COLUMN) && !fielddef_1.isDimension(model.encoding().column)) {\n util.error('Col encoding should be ordinal.');\n }\n return {\n marks: [].concat(getFacetGuideGroups(model), [getFacetGroup(model, marks)]),\n scales: scale_1.compileScales(model),\n axes: [].concat(hasRow && model.axis(channel_1.ROW) ? [axis_1.compileAxis(channel_1.ROW, model)] : [], hasCol && model.axis(channel_1.COLUMN) ? [axis_1.compileAxis(channel_1.COLUMN, model)] : [])\n };\n}\nexports.facetMixins = facetMixins;\nfunction getCellAxes(model) {\n var cellAxes = [];\n if (model.has(channel_1.X) && model.axis(channel_1.X) && axis_1.gridShow(model, channel_1.X)) {\n cellAxes.push(axis_1.compileInnerAxis(channel_1.X, model));\n }\n if (model.has(channel_1.Y) && model.axis(channel_1.Y) && axis_1.gridShow(model, channel_1.Y)) {\n cellAxes.push(axis_1.compileInnerAxis(channel_1.Y, model));\n }\n return cellAxes;\n}\nfunction getFacetGroup(model, marks) {\n var name = model.spec().name;\n var facetGroup = {\n name: (name ? name + '-' : '') + 'cell',\n type: 'group',\n from: {\n data: model.dataTable(),\n transform: [{\n type: 'facet',\n groupby: [].concat(model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : [], model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n }]\n },\n properties: {\n update: getFacetGroupProperties(model)\n },\n marks: marks\n };\n var cellAxes = getCellAxes(model);\n if (cellAxes.length > 0) {\n facetGroup.axes = cellAxes;\n }\n return facetGroup;\n}\nfunction getFacetGroupProperties(model) {\n var facetGroupProperties = {\n x: model.has(channel_1.COLUMN) ? {\n scale: model.scaleName(channel_1.COLUMN),\n field: model.field(channel_1.COLUMN),\n offset: model.scale(channel_1.COLUMN).padding / 2\n } : { value: model.config().facet.scale.padding / 2 },\n y: model.has(channel_1.ROW) ? {\n scale: model.scaleName(channel_1.ROW),\n field: model.field(channel_1.ROW),\n offset: model.scale(channel_1.ROW).padding / 2\n } : { value: model.config().facet.scale.padding / 2 },\n width: { field: { parent: 'cellWidth' } },\n height: { field: { parent: 'cellHeight' } }\n };\n common_1.applyConfig(facetGroupProperties, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n common_1.applyConfig(facetGroupProperties, model.config().facet.cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n return facetGroupProperties;\n}\nfunction getFacetGuideGroups(model) {\n var rootAxesGroups = [];\n if (model.has(channel_1.X)) {\n if (model.axis(channel_1.X)) {\n rootAxesGroups.push(getXAxesGroup(model));\n }\n }\n else {\n if (model.has(channel_1.ROW)) {\n rootAxesGroups.push.apply(rootAxesGroups, getRowGridGroups(model));\n }\n }\n if (model.has(channel_1.Y)) {\n if (model.axis(channel_1.Y)) {\n rootAxesGroups.push(getYAxesGroup(model));\n }\n }\n else {\n if (model.has(channel_1.COLUMN)) {\n rootAxesGroups.push.apply(rootAxesGroups, getColumnGridGroups(model));\n }\n }\n return rootAxesGroups;\n}\nfunction getXAxesGroup(model) {\n var hasCol = model.has(channel_1.COLUMN);\n var name = model.spec().name;\n return util_1.extend({\n name: (name ? name + '-' : '') + 'x-axes',\n type: 'group'\n }, hasCol ? {\n from: {\n data: model.dataTable(),\n transform: [{\n type: 'aggregate',\n groupby: [model.field(channel_1.COLUMN)],\n summarize: { '*': ['count'] }\n }]\n }\n } : {}, {\n properties: {\n update: {\n width: { field: { parent: 'cellWidth' } },\n height: {\n field: { group: 'height' }\n },\n x: hasCol ? {\n scale: model.scaleName(channel_1.COLUMN),\n field: model.field(channel_1.COLUMN),\n offset: model.scale(channel_1.COLUMN).padding / 2\n } : {\n value: model.config().facet.scale.padding / 2\n }\n }\n }\n }, model.axis(channel_1.X) ? {\n axes: [axis_1.compileAxis(channel_1.X, model)]\n } : {});\n}\nfunction getYAxesGroup(model) {\n var hasRow = model.has(channel_1.ROW);\n var name = model.spec().name;\n return util_1.extend({\n name: (name ? name + '-' : '') + 'y-axes',\n type: 'group'\n }, hasRow ? {\n from: {\n data: model.dataTable(),\n transform: [{\n type: 'aggregate',\n groupby: [model.field(channel_1.ROW)],\n summarize: { '*': ['count'] }\n }]\n }\n } : {}, {\n properties: {\n update: {\n width: {\n field: { group: 'width' }\n },\n height: { field: { parent: 'cellHeight' } },\n y: hasRow ? {\n scale: model.scaleName(channel_1.ROW),\n field: model.field(channel_1.ROW),\n offset: model.scale(channel_1.ROW).padding / 2\n } : {\n value: model.config().facet.scale.padding / 2\n }\n }\n },\n }, model.axis(channel_1.Y) ? {\n axes: [axis_1.compileAxis(channel_1.Y, model)]\n } : {});\n}\nfunction getRowGridGroups(model) {\n var name = model.spec().name;\n var facetGridConfig = model.config().facet.grid;\n var rowGrid = {\n name: (name ? name + '-' : '') + 'row-grid',\n type: 'rule',\n from: {\n data: model.dataTable(),\n transform: [{ type: 'facet', groupby: [model.field(channel_1.ROW)] }]\n },\n properties: {\n update: {\n y: {\n scale: model.scaleName(channel_1.ROW),\n field: model.field(channel_1.ROW)\n },\n x: { value: 0, offset: -facetGridConfig.offset },\n x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n };\n return [rowGrid, {\n name: (name ? name + '-' : '') + 'row-grid-end',\n type: 'rule',\n properties: {\n update: {\n y: { field: { group: 'height' } },\n x: { value: 0, offset: -facetGridConfig.offset },\n x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n }];\n}\nfunction getColumnGridGroups(model) {\n var name = model.spec().name;\n var facetGridConfig = model.config().facet.grid;\n var columnGrid = {\n name: (name ? name + '-' : '') + 'column-grid',\n type: 'rule',\n from: {\n data: model.dataTable(),\n transform: [{ type: 'facet', groupby: [model.field(channel_1.COLUMN)] }]\n },\n properties: {\n update: {\n x: {\n scale: model.scaleName(channel_1.COLUMN),\n field: model.field(channel_1.COLUMN)\n },\n y: { value: 0, offset: -facetGridConfig.offset },\n y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n };\n return [columnGrid, {\n name: (name ? name + '-' : '') + 'column-grid-end',\n type: 'rule',\n properties: {\n update: {\n x: { field: { group: 'width' } },\n y: { value: 0, offset: -facetGridConfig.offset },\n y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n }];\n}\n//# sourceMappingURL=facet.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/facet.js\n ** module id = 193\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar mark_1 = require('../mark');\nvar util_1 = require('../util');\nvar common_1 = require('./common');\nvar type_1 = require('../type');\nvar scale_1 = require('./scale');\nfunction compileLegends(model) {\n var defs = [];\n if (model.has(channel_1.COLOR) && model.legend(channel_1.COLOR)) {\n var fieldDef = model.fieldDef(channel_1.COLOR);\n var scale = model.scaleName(useColorLegendScale(fieldDef) ?\n scale_1.COLOR_LEGEND :\n channel_1.COLOR);\n var def = model.config().mark.filled ? { fill: scale } : { stroke: scale };\n defs.push(compileLegend(model, channel_1.COLOR, def));\n }\n if (model.has(channel_1.SIZE) && model.legend(channel_1.SIZE)) {\n defs.push(compileLegend(model, channel_1.SIZE, {\n size: model.scaleName(channel_1.SIZE)\n }));\n }\n if (model.has(channel_1.SHAPE) && model.legend(channel_1.SHAPE)) {\n defs.push(compileLegend(model, channel_1.SHAPE, {\n shape: model.scaleName(channel_1.SHAPE)\n }));\n }\n return defs;\n}\nexports.compileLegends = compileLegends;\nfunction compileLegend(model, channel, def) {\n var fieldDef = model.fieldDef(channel);\n var legend = model.legend(channel);\n def.title = title(legend, fieldDef);\n util_1.extend(def, formatMixins(legend, model, channel));\n ['orient', 'values'].forEach(function (property) {\n var value = legend[property];\n if (value !== undefined) {\n def[property] = value;\n }\n });\n var props = (typeof legend !== 'boolean' && legend.properties) || {};\n ['title', 'symbols', 'legend', 'labels'].forEach(function (group) {\n var value = properties[group] ?\n properties[group](fieldDef, props[group], model, channel) :\n props[group];\n if (value !== undefined) {\n def.properties = def.properties || {};\n def.properties[group] = value;\n }\n });\n return def;\n}\nexports.compileLegend = compileLegend;\nfunction title(legend, fieldDef) {\n if (typeof legend !== 'boolean' && legend.title) {\n return legend.title;\n }\n return fielddef_1.title(fieldDef);\n}\nexports.title = title;\nfunction formatMixins(legend, model, channel) {\n var fieldDef = model.fieldDef(channel);\n if (fieldDef.bin) {\n return {};\n }\n return common_1.formatMixins(model, channel, typeof legend !== 'boolean' ? legend.format : undefined);\n}\nexports.formatMixins = formatMixins;\nfunction useColorLegendScale(fieldDef) {\n return fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit;\n}\nexports.useColorLegendScale = useColorLegendScale;\nvar properties;\n(function (properties) {\n function symbols(fieldDef, symbolsSpec, model, channel) {\n var symbols = {};\n var mark = model.mark();\n switch (mark) {\n case mark_1.BAR:\n case mark_1.TICK:\n case mark_1.TEXT:\n symbols.shape = { value: 'square' };\n break;\n case mark_1.CIRCLE:\n case mark_1.SQUARE:\n symbols.shape = { value: mark };\n break;\n case mark_1.POINT:\n case mark_1.LINE:\n case mark_1.AREA:\n break;\n }\n var filled = model.config().mark.filled;\n common_1.applyMarkConfig(symbols, model, util_1.without(common_1.FILL_STROKE_CONFIG, [filled ? 'fill' : 'stroke']));\n if (filled) {\n symbols.strokeWidth = { value: 0 };\n }\n var value;\n if (model.has(channel_1.COLOR) && channel === channel_1.COLOR) {\n if (useColorLegendScale(fieldDef)) {\n value = { scale: model.scaleName(channel_1.COLOR), field: 'data' };\n }\n }\n else if (model.fieldDef(channel_1.COLOR).value) {\n value = { value: model.fieldDef(channel_1.COLOR).value };\n }\n if (value !== undefined) {\n if (filled) {\n symbols.fill = value;\n }\n else {\n symbols.stroke = value;\n }\n }\n else if (channel !== channel_1.COLOR) {\n symbols[filled ? 'fill' : 'stroke'] = symbols[filled ? 'fill' : 'stroke'] ||\n { value: model.config().mark.color };\n }\n symbols = util_1.extend(symbols, symbolsSpec || {});\n return util_1.keys(symbols).length > 0 ? symbols : undefined;\n }\n properties.symbols = symbols;\n function labels(fieldDef, symbolsSpec, model, channel) {\n if (channel === channel_1.COLOR) {\n if (fieldDef.type === type_1.ORDINAL) {\n return {\n text: {\n scale: model.scaleName(scale_1.COLOR_LEGEND),\n field: 'data'\n }\n };\n }\n else if (fieldDef.bin) {\n return {\n text: {\n scale: model.scaleName(scale_1.COLOR_LEGEND_LABEL),\n field: 'data'\n }\n };\n }\n else if (fieldDef.timeUnit) {\n return {\n text: {\n template: '{{ datum.data | time:\\'' + common_1.timeFormat(model, channel) + '\\'}}'\n }\n };\n }\n }\n return undefined;\n }\n properties.labels = labels;\n})(properties || (properties = {}));\n//# sourceMappingURL=legend.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/legend.js\n ** module id = 194\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar mark_1 = require('../../mark');\nvar stack_1 = require('../stack');\nvar util_1 = require('../../util');\nvar area_1 = require('./area');\nvar bar_1 = require('./bar');\nvar line_1 = require('./line');\nvar point_1 = require('./point');\nvar text_1 = require('./text');\nvar tick_1 = require('./tick');\nvar common_1 = require('../common');\nvar markCompiler = {\n area: area_1.area,\n bar: bar_1.bar,\n line: line_1.line,\n point: point_1.point,\n text: text_1.text,\n tick: tick_1.tick,\n circle: point_1.circle,\n square: point_1.square\n};\nfunction compileMark(model) {\n if (util_1.contains([mark_1.LINE, mark_1.AREA], model.mark())) {\n return compilePathMark(model);\n }\n else {\n return compileNonPathMark(model);\n }\n}\nexports.compileMark = compileMark;\nfunction compilePathMark(model) {\n var mark = model.mark();\n var name = model.spec().name;\n var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n var dataFrom = { data: model.dataTable() };\n var details = detailFields(model);\n var pathMarks = [util_1.extend(name ? { name: name + '-marks' } : {}, {\n type: markCompiler[mark].markType(),\n from: util_1.extend(hasParentData || details.length > 0 ? {} : dataFrom, { transform: [{ type: 'sort', by: sortPathBy(model) }] }),\n properties: { update: markCompiler[mark].properties(model) }\n })];\n if (details.length > 0) {\n var facetTransform = { type: 'facet', groupby: details };\n var transform = mark === mark_1.AREA && model.stack() ?\n [stack_1.imputeTransform(model), stack_1.stackTransform(model), facetTransform] :\n [].concat(facetTransform, model.has(channel_1.ORDER) ? [{ type: 'sort', by: sortBy(model) }] : []);\n return [{\n name: (name ? name + '-' : '') + mark + '-facet',\n type: 'group',\n from: util_1.extend(hasParentData ? {} : dataFrom, { transform: transform }),\n properties: {\n update: {\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } }\n }\n },\n marks: pathMarks\n }];\n }\n else {\n return pathMarks;\n }\n}\nfunction compileNonPathMark(model) {\n var mark = model.mark();\n var name = model.spec().name;\n var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n var dataFrom = { data: model.dataTable() };\n var marks = [];\n if (mark === mark_1.TEXT &&\n model.has(channel_1.COLOR) &&\n model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n marks.push(util_1.extend(name ? { name: name + '-background' } : {}, { type: 'rect' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: text_1.text.background(model) } }));\n }\n marks.push(util_1.extend(name ? { name: name + '-marks' } : {}, { type: markCompiler[mark].markType() }, (!hasParentData || model.stack() || model.has(channel_1.ORDER)) ? {\n from: util_1.extend(hasParentData ? {} : dataFrom, model.stack() ?\n { transform: [stack_1.stackTransform(model)] } :\n model.has(channel_1.ORDER) ?\n { transform: [{ type: 'sort', by: sortBy(model) }] } :\n {})\n } : {}, { properties: { update: markCompiler[mark].properties(model) } }));\n if (model.has(channel_1.LABEL) && markCompiler[mark].labels) {\n var labelProperties = markCompiler[mark].labels(model);\n if (labelProperties !== undefined) {\n marks.push(util_1.extend(name ? { name: name + '-label' } : {}, { type: 'text' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: labelProperties } }));\n }\n }\n return marks;\n}\nfunction sortBy(model) {\n if (model.has(channel_1.ORDER)) {\n var channelDef = model.encoding().order;\n if (channelDef instanceof Array) {\n return channelDef.map(common_1.sortField);\n }\n else {\n return common_1.sortField(channelDef);\n }\n }\n return null;\n}\nfunction sortPathBy(model) {\n if (model.mark() === mark_1.LINE && model.has(channel_1.PATH)) {\n var channelDef = model.encoding().path;\n if (channelDef instanceof Array) {\n return channelDef.map(common_1.sortField);\n }\n else {\n return common_1.sortField(channelDef);\n }\n }\n else {\n return '-' + model.field(model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X);\n }\n}\nfunction detailFields(model) {\n return [channel_1.COLOR, channel_1.DETAIL, channel_1.SHAPE].reduce(function (details, channel) {\n if (model.has(channel) && !model.fieldDef(channel).aggregate) {\n details.push(model.field(channel));\n }\n return details;\n }, []);\n}\n//# sourceMappingURL=mark.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/mark.js\n ** module id = 195\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar fielddef_1 = require('../../fielddef');\nvar common_1 = require('../common');\nvar area;\n(function (area) {\n function markType() {\n return 'area';\n }\n area.markType = markType;\n function properties(model) {\n var p = {};\n var orient = model.config().mark.orient;\n if (orient !== undefined) {\n p.orient = { value: orient };\n }\n var stack = model.stack();\n var xFieldDef = model.encoding().x;\n if (stack && channel_1.X === stack.fieldChannel) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_start' })\n };\n }\n else if (fielddef_1.isMeasure(xFieldDef)) {\n p.x = { scale: model.scaleName(channel_1.X), field: model.field(channel_1.X) };\n }\n else if (fielddef_1.isDimension(xFieldDef)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n if (orient === 'horizontal') {\n if (stack && channel_1.X === stack.fieldChannel) {\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_end' })\n };\n }\n else {\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n value: 0\n };\n }\n }\n var yFieldDef = model.encoding().y;\n if (stack && channel_1.Y === stack.fieldChannel) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_start' })\n };\n }\n else if (fielddef_1.isMeasure(yFieldDef)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n }\n else if (fielddef_1.isDimension(yFieldDef)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n if (orient !== 'horizontal') {\n if (stack && channel_1.Y === stack.fieldChannel) {\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_end' })\n };\n }\n else {\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n value: 0\n };\n }\n }\n common_1.applyColorAndOpacity(p, model);\n common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n return p;\n }\n area.properties = properties;\n function labels(model) {\n return undefined;\n }\n area.labels = labels;\n})(area = exports.area || (exports.area = {}));\n//# sourceMappingURL=area.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/area.js\n ** module id = 196\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar fielddef_1 = require('../../fielddef');\nvar common_1 = require('../common');\nvar bar;\n(function (bar) {\n function markType() {\n return 'rect';\n }\n bar.markType = markType;\n function properties(model) {\n var p = {};\n var orient = model.config().mark.orient;\n var stack = model.stack();\n var xFieldDef = model.encoding().x;\n if (stack && channel_1.X === stack.fieldChannel) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_start' })\n };\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_end' })\n };\n }\n else if (fielddef_1.isMeasure(xFieldDef)) {\n if (orient === 'horizontal') {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X)\n };\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n value: 0\n };\n }\n else {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X)\n };\n p.width = { value: sizeValue(model, channel_1.X) };\n }\n }\n else if (model.fieldDef(channel_1.X).bin) {\n if (model.has(channel_1.SIZE) && orient !== 'horizontal') {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n p.width = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_start' }),\n offset: 1\n };\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_end' })\n };\n }\n }\n else {\n if (model.has(channel_1.X)) {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X)\n };\n }\n else {\n p.x = { value: 0, offset: 2 };\n }\n p.width = model.has(channel_1.SIZE) && orient !== 'horizontal' ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, (channel_1.X))\n };\n }\n var yFieldDef = model.encoding().y;\n if (stack && channel_1.Y === stack.fieldChannel) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_start' })\n };\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_end' })\n };\n }\n else if (fielddef_1.isMeasure(yFieldDef)) {\n if (orient !== 'horizontal') {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n value: 0\n };\n }\n else {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n p.height = { value: sizeValue(model, channel_1.Y) };\n }\n }\n else if (model.fieldDef(channel_1.Y).bin) {\n if (model.has(channel_1.SIZE) && orient === 'horizontal') {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n p.height = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_start' })\n };\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_end' }),\n offset: 1\n };\n }\n }\n else {\n if (model.has(channel_1.Y)) {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n }\n else {\n p.y2 = {\n field: { group: 'height' },\n offset: -1\n };\n }\n p.height = model.has(channel_1.SIZE) && orient === 'horizontal' ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, channel_1.Y)\n };\n }\n common_1.applyColorAndOpacity(p, model);\n return p;\n }\n bar.properties = properties;\n function sizeValue(model, channel) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n var markConfig = model.config().mark;\n if (markConfig.barSize) {\n return markConfig.barSize;\n }\n return model.isOrdinalScale(channel) ?\n model.scale(channel).bandSize - 1 :\n !model.has(channel) ?\n model.config().scale.bandSize - 1 :\n markConfig.barThinSize;\n }\n function labels(model) {\n return undefined;\n }\n bar.labels = labels;\n})(bar = exports.bar || (exports.bar = {}));\n//# sourceMappingURL=bar.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/bar.js\n ** module id = 197\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar line;\n(function (line) {\n function markType() {\n return 'line';\n }\n line.markType = markType;\n function properties(model) {\n var p = {};\n if (model.has(channel_1.X)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n p.x = { value: 0 };\n }\n if (model.has(channel_1.Y)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.y = { field: { group: 'height' } };\n }\n common_1.applyColorAndOpacity(p, model);\n common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n return p;\n }\n line.properties = properties;\n function labels(model) {\n return undefined;\n }\n line.labels = labels;\n})(line = exports.line || (exports.line = {}));\n//# sourceMappingURL=line.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/line.js\n ** module id = 198\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar point;\n(function (point) {\n function markType() {\n return 'symbol';\n }\n point.markType = markType;\n function properties(model, fixedShape) {\n var p = {};\n if (model.has(channel_1.X)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n p.x = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.Y)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.y = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.SIZE)) {\n p.size = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.size = { value: sizeValue(model) };\n }\n if (fixedShape) {\n p.shape = { value: fixedShape };\n }\n else if (model.has(channel_1.SHAPE)) {\n p.shape = {\n scale: model.scaleName(channel_1.SHAPE),\n field: model.field(channel_1.SHAPE)\n };\n }\n else if (model.fieldDef(channel_1.SHAPE).value) {\n p.shape = { value: model.fieldDef(channel_1.SHAPE).value };\n }\n else if (model.config().mark.shape) {\n p.shape = { value: model.config().mark.shape };\n }\n common_1.applyColorAndOpacity(p, model);\n return p;\n }\n point.properties = properties;\n function sizeValue(model) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n return model.config().mark.size;\n }\n function labels(model) {\n }\n point.labels = labels;\n})(point = exports.point || (exports.point = {}));\nvar circle;\n(function (circle) {\n function markType() {\n return 'symbol';\n }\n circle.markType = markType;\n function properties(model) {\n return point.properties(model, 'circle');\n }\n circle.properties = properties;\n function labels(model) {\n return undefined;\n }\n circle.labels = labels;\n})(circle = exports.circle || (exports.circle = {}));\nvar square;\n(function (square) {\n function markType() {\n return 'symbol';\n }\n square.markType = markType;\n function properties(model) {\n return point.properties(model, 'square');\n }\n square.properties = properties;\n function labels(model) {\n return undefined;\n }\n square.labels = labels;\n})(square = exports.square || (exports.square = {}));\n//# sourceMappingURL=point.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/point.js\n ** module id = 199\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar util_1 = require('../../util');\nvar type_1 = require('../../type');\nvar text;\n(function (text) {\n function markType() {\n return 'text';\n }\n text.markType = markType;\n function background(model) {\n return {\n x: { value: 0 },\n y: { value: 0 },\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } },\n fill: {\n scale: model.scaleName(channel_1.COLOR),\n field: model.field(channel_1.COLOR, model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n }\n };\n }\n text.background = background;\n function properties(model) {\n var p = {};\n common_1.applyMarkConfig(p, model, ['angle', 'align', 'baseline', 'dx', 'dy', 'font', 'fontWeight',\n 'fontStyle', 'radius', 'theta', 'text']);\n var fieldDef = model.fieldDef(channel_1.TEXT);\n if (model.has(channel_1.X)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n if (model.has(channel_1.TEXT) && model.fieldDef(channel_1.TEXT).type === type_1.QUANTITATIVE) {\n p.x = { field: { group: 'width' }, offset: -5 };\n }\n else {\n p.x = { value: model.config().scale.textBandWidth / 2 };\n }\n }\n if (model.has(channel_1.Y)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.y = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.SIZE)) {\n p.fontSize = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.fontSize = { value: sizeValue(model) };\n }\n if (model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n p.fill = { value: 'black' };\n var opacity = model.config().mark.opacity;\n if (opacity) {\n p.opacity = { value: opacity };\n }\n ;\n }\n else {\n common_1.applyColorAndOpacity(p, model);\n }\n if (model.has(channel_1.TEXT)) {\n if (util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], model.fieldDef(channel_1.TEXT).type)) {\n var format = model.config().mark.format;\n util_1.extend(p, common_1.formatMixins(model, channel_1.TEXT, format));\n }\n else {\n p.text = { field: model.field(channel_1.TEXT) };\n }\n }\n else if (fieldDef.value) {\n p.text = { value: fieldDef.value };\n }\n return p;\n }\n text.properties = properties;\n function sizeValue(model) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n return model.config().mark.fontSize;\n }\n})(text = exports.text || (exports.text = {}));\n//# sourceMappingURL=text.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/text.js\n ** module id = 200\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar tick;\n(function (tick) {\n function markType() {\n return 'rect';\n }\n tick.markType = markType;\n function properties(model) {\n var p = {};\n if (model.has(channel_1.X)) {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n p.xc = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.Y)) {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.yc = { value: model.config().scale.bandSize / 2 };\n }\n if (model.config().mark.orient === 'horizontal') {\n p.width = { value: model.config().mark.tickThickness };\n p.height = model.has(channel_1.SIZE) ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, channel_1.Y)\n };\n }\n else {\n p.width = model.has(channel_1.SIZE) ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, channel_1.X)\n };\n p.height = { value: model.config().mark.tickThickness };\n }\n common_1.applyColorAndOpacity(p, model);\n return p;\n }\n tick.properties = properties;\n function sizeValue(model, channel) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n var scaleConfig = model.config().scale;\n var markConfig = model.config().mark;\n if (markConfig.tickSize) {\n return markConfig.tickSize;\n }\n var bandSize = model.has(channel) ?\n model.scale(channel).bandSize :\n scaleConfig.bandSize;\n return bandSize / 1.5;\n }\n function labels(model) {\n return undefined;\n }\n tick.labels = labels;\n})(tick = exports.tick || (exports.tick = {}));\n//# sourceMappingURL=tick.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/tick.js\n ** module id = 201\n ** module chunks = 0\n **/","\"use strict\";\nvar aggregate_1 = require('./aggregate');\nvar timeunit_1 = require('./timeunit');\nvar type_1 = require('./type');\nvar vlEncoding = require('./encoding');\nvar mark_1 = require('./mark');\nexports.DELIM = '|';\nexports.ASSIGN = '=';\nexports.TYPE = ',';\nexports.FUNC = '_';\nfunction shorten(spec) {\n return 'mark' + exports.ASSIGN + spec.mark +\n exports.DELIM + shortenEncoding(spec.encoding);\n}\nexports.shorten = shorten;\nfunction parse(shorthand, data, config) {\n var split = shorthand.split(exports.DELIM), mark = split.shift().split(exports.ASSIGN)[1].trim(), encoding = parseEncoding(split.join(exports.DELIM));\n var spec = {\n mark: mark_1.Mark[mark],\n encoding: encoding\n };\n if (data !== undefined) {\n spec.data = data;\n }\n if (config !== undefined) {\n spec.config = config;\n }\n return spec;\n}\nexports.parse = parse;\nfunction shortenEncoding(encoding) {\n return vlEncoding.map(encoding, function (fieldDef, channel) {\n return channel + exports.ASSIGN + shortenFieldDef(fieldDef);\n }).join(exports.DELIM);\n}\nexports.shortenEncoding = shortenEncoding;\nfunction parseEncoding(encodingShorthand) {\n return encodingShorthand.split(exports.DELIM).reduce(function (m, e) {\n var split = e.split(exports.ASSIGN), enctype = split[0].trim(), fieldDefShorthand = split[1];\n m[enctype] = parseFieldDef(fieldDefShorthand);\n return m;\n }, {});\n}\nexports.parseEncoding = parseEncoding;\nfunction shortenFieldDef(fieldDef) {\n return (fieldDef.aggregate ? fieldDef.aggregate + exports.FUNC : '') +\n (fieldDef.timeUnit ? fieldDef.timeUnit + exports.FUNC : '') +\n (fieldDef.bin ? 'bin' + exports.FUNC : '') +\n (fieldDef.field || '') + exports.TYPE + type_1.SHORT_TYPE[fieldDef.type];\n}\nexports.shortenFieldDef = shortenFieldDef;\nfunction shortenFieldDefs(fieldDefs, delim) {\n if (delim === void 0) { delim = exports.DELIM; }\n return fieldDefs.map(shortenFieldDef).join(delim);\n}\nexports.shortenFieldDefs = shortenFieldDefs;\nfunction parseFieldDef(fieldDefShorthand) {\n var split = fieldDefShorthand.split(exports.TYPE);\n var fieldDef = {\n field: split[0].trim(),\n type: type_1.TYPE_FROM_SHORT_TYPE[split[1].trim()]\n };\n for (var i = 0; i < aggregate_1.AGGREGATE_OPS.length; i++) {\n var a = aggregate_1.AGGREGATE_OPS[i];\n if (fieldDef.field.indexOf(a + '_') === 0) {\n fieldDef.field = fieldDef.field.substr(a.toString().length + 1);\n if (a === aggregate_1.AggregateOp.COUNT && fieldDef.field.length === 0) {\n fieldDef.field = '*';\n }\n fieldDef.aggregate = a;\n break;\n }\n }\n for (var i = 0; i < timeunit_1.TIMEUNITS.length; i++) {\n var tu = timeunit_1.TIMEUNITS[i];\n if (fieldDef.field && fieldDef.field.indexOf(tu + '_') === 0) {\n fieldDef.field = fieldDef.field.substr(fieldDef.field.length + 1);\n fieldDef.timeUnit = tu;\n break;\n }\n }\n if (fieldDef.field && fieldDef.field.indexOf('bin_') === 0) {\n fieldDef.field = fieldDef.field.substr(4);\n fieldDef.bin = true;\n }\n return fieldDef;\n}\nexports.parseFieldDef = parseFieldDef;\n//# sourceMappingURL=shorthand.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/shorthand.js\n ** module id = 202\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('./channel');\nvar vlEncoding = require('./encoding');\nvar mark_1 = require('./mark');\nvar util_1 = require('./util');\nfunction alwaysNoOcclusion(spec) {\n return vlEncoding.isAggregate(spec.encoding);\n}\nexports.alwaysNoOcclusion = alwaysNoOcclusion;\nfunction fieldDefs(spec) {\n return vlEncoding.fieldDefs(spec.encoding);\n}\nexports.fieldDefs = fieldDefs;\n;\nfunction getCleanSpec(spec) {\n return spec;\n}\nexports.getCleanSpec = getCleanSpec;\nfunction isStack(spec) {\n return (vlEncoding.has(spec.encoding, channel_1.COLOR) || vlEncoding.has(spec.encoding, channel_1.SHAPE)) &&\n (spec.mark === mark_1.BAR || spec.mark === mark_1.AREA) &&\n (!spec.config || !spec.config.mark.stacked !== false) &&\n vlEncoding.isAggregate(spec.encoding);\n}\nexports.isStack = isStack;\nfunction transpose(spec) {\n var oldenc = spec.encoding;\n var encoding = util_1.duplicate(spec.encoding);\n encoding.x = oldenc.y;\n encoding.y = oldenc.x;\n encoding.row = oldenc.column;\n encoding.column = oldenc.row;\n spec.encoding = encoding;\n return spec;\n}\nexports.transpose = transpose;\n//# sourceMappingURL=spec.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/spec.js\n ** module id = 203\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('./util');\nvar mark_1 = require('./mark');\nexports.DEFAULT_REQUIRED_CHANNEL_MAP = {\n text: ['text'],\n line: ['x', 'y'],\n area: ['x', 'y']\n};\nexports.DEFAULT_SUPPORTED_CHANNEL_TYPE = {\n bar: util_1.toMap(['row', 'column', 'x', 'y', 'size', 'color', 'detail']),\n line: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n area: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n tick: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n circle: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n square: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n point: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail', 'shape']),\n text: util_1.toMap(['row', 'column', 'size', 'color', 'text'])\n};\nfunction getEncodingMappingError(spec, requiredChannelMap, supportedChannelMap) {\n if (requiredChannelMap === void 0) { requiredChannelMap = exports.DEFAULT_REQUIRED_CHANNEL_MAP; }\n if (supportedChannelMap === void 0) { supportedChannelMap = exports.DEFAULT_SUPPORTED_CHANNEL_TYPE; }\n var mark = spec.mark;\n var encoding = spec.encoding;\n var requiredChannels = requiredChannelMap[mark];\n var supportedChannels = supportedChannelMap[mark];\n for (var i in requiredChannels) {\n if (!(requiredChannels[i] in encoding)) {\n return 'Missing encoding channel \\\"' + requiredChannels[i] +\n '\\\" for mark \\\"' + mark + '\\\"';\n }\n }\n for (var channel in encoding) {\n if (!supportedChannels[channel]) {\n return 'Encoding channel \\\"' + channel +\n '\\\" is not supported by mark type \\\"' + mark + '\\\"';\n }\n }\n if (mark === mark_1.BAR && !encoding.x && !encoding.y) {\n return 'Missing both x and y for bar';\n }\n return null;\n}\nexports.getEncodingMappingError = getEncodingMappingError;\n//# sourceMappingURL=validate.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/validate.js\n ** module id = 204\n ** module chunks = 0\n **/","var d3 = require('d3'),\n $ = require('vega').util.mutator;\n\nmodule.exports = {\n init: function(el, param, spec) {\n return (rewrite(param, spec), handle(el, param));\n },\n bind: function(param, view) {\n param.dom.forEach(function(el) { el.__vega__ = view; });\n view.onSignal(param.dom[0].name, function(k, v) { param.set(v); });\n }\n};\n\n// spec re-write\n\nfunction rewrite(param, spec) {\n // add signal to top-level if not defined\n var sg = spec.signals || (spec.signals = []);\n for (var i=0; i",">=","<","<=","and","&&","||","operand","parseSignals","RESERVED","exprVal","_expr","scopedScale","parseSpec","viewport","viewFactory","arglen","argidx","Model","View","opts","cfg","_groups","_node","_builder","_dirty","_groupBuilder","_children","_scaler","_recursor","_scales","recurse","removeTemp","MARK","inline","builder","updateAxis","updateLegend","disconnectChildren","hasMarks","_def","hasAxes","hasLegends","buildMarks","buildAxes","buildLegends","GROUP","_parent","buildGroup","_scaleRefs","SCALES","AXIS","LEGEND","Scale","fullUpdate","_bounder","group_id","inlineDs","_isSuper","_parent_id","_from","_ds","sout","newItem","diff","keyf","keyFunction","_map","Status","EXIT","ENTER","UPDATE","Sentinel","STATUS","CONNECTED","DISCONNECTED","parent_id","inheritFrom","_status","_encoder","disconnectScales","fcs","wasDirty","nestedRefs","guide","update_status","ilen","isGrp","rebound","_updated","quantitative","rng","LINEAR","dataDrivenRange","outer","spatial","dataRef","DataRef","RANGE","DOMAIN","bandSize","bw","invertOrdinal","asc","findAsc","findDsc","QUANTILE","domainMinMax","POWER","isUniques","getRefs","inherits","aggrType","getCache","which","atype","uniques","ck","GROUPBY","COUNT","MIN","MAX","_lastUpdate","addDep","rlen","flen","_values","domainMin","domainMax","LOG","rangeVal","Properties","rangeMin","rangeMax","SQRT","TIME_UTC","QUANTIZE","THRESHOLD","ASC","DESC","rangeDef","autopadInset","labelOffset","_model","__width","__height","_cursor","_autopad","_viewport","_renderer","_handler","_streamer","_skipSignals","_repaint","_renderers","_io","_api","streaming","streamer","api","build","_renderNode","parseStreams","Transition","VIEW_SIGNALS","_strict","autopad","inset","_build","prevHandler","_detach","destroy","built","ren","blob","Blob","URL","createObjectURL","toDataURL","onSignal","offSignal","HeadlessView","extendEvent","vgEvent","registry","invoke","filtered","mergedStream","domEvent","orderedStream","ms","external","internal","EVALUATOR","gk","GATEKEEPER","gatekeeper","trueFn","falseFn","sel","detach","getItem","getGroup","getXY","getX","getY","updates","interp","canvasAsync","wait","propertySets","vlBin","vlChannel","vlData","vlEncoding","vlFieldDef","vlCompile","vlShorthand","vlSpec","vlTimeUnit","vlType","vlValidate","vlUtil","channel","fieldDef","shorthand","timeUnit","validate","autoMaxBins","channel_1","ROW","COLUMN","SIZE","SHAPE","supportMark","getSupportedMark","COLOR","DETAIL","ORDER","bar","TEXT","PATH","getSupportedRole","LABEL","hasScale","util_1","Channel","CHANNELS","without","any","mergeDeep","_i","deepMerge_","getbins","dlBin","generate_1","type_1","DataFormat","SUMMARY","SOURCE","STACKED_SCALE","LAYOUT","Type","NOMINAL","QUANTITATIVE","TEMPORAL","getFullName","typeString","TYPE_FROM_SHORT_TYPE","SHORT_TYPE","temporal","nominal","Q","T","O","countRetinal","channels","channelEncoding","isAggregate","fieldDefs","prefn","isCount","nofn","binSuffix","noAggregate","_isFieldDimension","isDimension","isMeasure","aggregate_1","AggregateOp","displayName","COUNT_DISPLAYNAME","cardinality","filterNull","stat","bin_1","timeunit_1","TimeUnit","SECONDS","MINUTES","HOURS","DAY","MONTH","YEAR","yearstat","AGGREGATE_OPS","supportedEnums","supportedTypes","VALUES","VALID","MISSING","DISTINCT","SUM","MEAN","AVERAGE","VARIANCE","VARIANCEP","STDEV","STDEVP","MEDIAN","Q1","Q3","MODESKEW","ARGMIN","ARGMAX","SHARED_DOMAIN_OPS","TIMEUNITS","MILLISECONDS","YEARMONTH","YEARMONTHDAY","YEARMONTHDATE","YEARDAY","YEARDATE","YEARMONTHDAYHOURS","YEARMONTHDAYHOURSMINUTES","YEARMONTHDAYHOURSMINUTESSECONDS","HOURSMINUTES","HOURSMINUTESSECONDS","MINUTESSECONDS","SECONDSMILLISECONDS","Model_1","data_1","compileData","layout_1","compileLayoutData","compileRootGroup","rootGroup","data_2","mark_1","compileMark","facet_1","facetMixins","common_1","applyConfig","FILL_STROKE_CONFIG","scale_1","compileScales","axis_1","compileAxis","legend_1","compileLegends","Model_2","config_1","fielddef_1","config_2","stack_1","scale_2","channel_2","_spec","defaultConfig","warn","_scale","channelScale","channelDef","_scaleType","scaleType","includeRawDomain","ScaleType","textBandWidth","_axis","channelAxis","_legend","channelLegend","_stack","compileStackProperties","compileMarkConfig","toSpec","excludeConfig","excludeData","cellWidth","isFacet","cellHeight","channelWithScales","isOrdinalScale","dataTable","defaultCellConfig","defaultFacetCellConfig","defaultFacetGridConfig","defaultFacetConfig","defaultFacetScaleConfig","defaultFacetAxisConfig","FontWeight","Shape","HorizontalAlign","VerticalAlign","FontStyle","StackOffset","defaultMarkConfig","barThinSize","tickThickness","MIDDLE","shortTimeLabels","applyColorToBackground","defaultScaleConfig","defaultAxisConfig","defaultLegendConfig","NiceTime","nominalColorRange","sequentialColorRange","shapeRange","fontSizeRange","AxisOrient","labelMaxLength","characterWidth","Mark","AREA","BAR","LINE","POINT","TICK","CIRCLE","SQUARE","encoding_1","groupbyChannel","stackFields","getStackFields","stacked","NONE","isXMeasure","isYMeasure","fieldChannel","imputeTransform","stackTransform","sortField","valName","applyColorAndOpacity","applyMarkConfig","propsList","marksProperties","formatMixins","isAbbreviated","orderChannelDef","sort_1","SortOrder","DESCENDING","time_1","abbreviated","timeString","dateComponents","timeComponents","smallestUnit","onlyRef","fun","addComma","rawDomain","colorLegendScale","binColorLegendLabel","mainScale","scaleDef","rangeMixins","COLOR_LEGEND","COLOR_LEGEND_LABEL","NORMALIZE","_includeRawDomain","domainSort","scaleConfig","barSizeRange","pointSizeRange","xIsMeasure","yIsMeasure","POW","__","compileInnerAxis","isCol","isRow","gridShow","TOP","RIGHT","maxLength","fieldTitle","titleMaxLength","axisPropsSpec","labelsSpec","labelAngle","summaryDef","rankTransform","filterNonPositiveForLog","stackDef","DEFAULT_NULL_FILTERS","source_1","defaultExtension","formatParse","calcFieldMap","calculate","fieldMap","nullFilterTransform","formulaTransform","filterTransform","binTransform","timeTransform","binTrans","filteredFields","aggregator","fieldName","hasAggregate","fnDictSet","stackProps","facetFields","alreadyAdded","distinctSummary","cellWidthFormula","scaleWidthFormula","cellHeightFormula","formulas","facetScaleWidthFormula","cardinalityFormula","timeUnitDomain","nonOrdinalSize","innerWidth","hasRow","hasCol","getFacetGuideGroups","getFacetGroup","getCellAxes","cellAxes","facetGroup","getFacetGroupProperties","facetGroupProperties","rootAxesGroups","getXAxesGroup","getRowGridGroups","getYAxesGroup","getColumnGridGroups","facetGridConfig","rowGrid","columnGrid","useColorLegendScale","compileLegend","symbolsSpec","compilePathMark","compileNonPathMark","hasParentData","dataFrom","detailFields","pathMarks","markCompiler","markType","sortPathBy","facetTransform","text_1","area_1","bar_1","line_1","point_1","tick_1","xFieldDef","yFieldDef","sizeValue","markConfig","barSize","fixedShape","shorten","ASSIGN","DELIM","shortenEncoding","parseEncoding","shortenFieldDef","encodingShorthand","enctype","fieldDefShorthand","parseFieldDef","FUNC","TYPE","shortenFieldDefs","tu","alwaysNoOcclusion","getCleanSpec","isStack","oldenc","getEncodingMappingError","requiredChannelMap","supportedChannelMap","DEFAULT_REQUIRED_CHANNEL_MAP","DEFAULT_SUPPORTED_CHANNEL_TYPE","requiredChannels","supportedChannels","rewrite","handle","form","checkbox","radio","sl","selectedIndex","rg","option","rn","lbl","__vega__","listen","postMessage"],"mappings":"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","file":"index.js","sourcesContent":["define([\"jquery\",\"base/js/events\"], function(__WEBPACK_EXTERNAL_MODULE_207__, __WEBPACK_EXTERNAL_MODULE_208__) { return /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar embed = __webpack_require__(1);\n\tvar $ = __webpack_require__(207);\n\tvar events = __webpack_require__(208);\n\t\n\t// Polyfill findIndex if needed\n\tif (!Array.prototype.findIndex) {\n\t Array.prototype.findIndex = function(predicate) {\n\t if (this === null) {\n\t throw new TypeError('Array.prototype.findIndex called on null or undefined');\n\t }\n\t if (typeof predicate !== 'function') {\n\t throw new TypeError('predicate must be a function');\n\t }\n\t var list = Object(this);\n\t var length = list.length >>> 0;\n\t var thisArg = arguments[1];\n\t var value;\n\t\n\t for (var i = 0; i < length; i++) {\n\t value = list[i];\n\t if (predicate.call(thisArg, value, i, list)) {\n\t return i;\n\t }\n\t }\n\t return -1;\n\t };\n\t}\n\t\n\tfunction javascriptIndex(selector, outputs) {\n\t // Return the index in the output array of the JS repr of this viz\n\t var index = outputs.findIndex(function(item, index, array) {\n\t if (item['metadata']['jupyter-vega']===selector &&\n\t item['data']['application/javascript']!==undefined) {\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t });\n\t return index;\n\t}\n\t\n\tfunction imageIndex(selector, outputs) {\n\t // Return the index in the output array of the PNG repr of this viz\n\t var index = outputs.findIndex(function(item, index, array) {\n\t if (item['metadata']['jupyter-vega']===selector &&\n\t item['data']['image/png']!==undefined) {\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t });\n\t return index;\n\t}\n\t\n\tfunction render(selector, spec, type, output_area) {\n\t if (type) {\n\t var embedSpec = {\n\t mode: type,\n\t spec: spec\n\t }\n\t\n\t // Find the indices of this visualizations JS and PNG\n\t // representation.\n\t var imgIndex = imageIndex(selector, output_area.outputs);\n\t var jsIndex = javascriptIndex(selector, output_area.outputs);\n\t \n\t // If we have already rendered a static image, don't render\n\t // the JS version or append a new PNG version\n\t if (imgIndex>-1 && jsIndex>-1 && imgIndex===(jsIndex+1)) {\n\t return;\n\t }\n\t\n\t // Never been rendered, so render JS and append the PNG to the \n\t // outputs for the cell\n\t var el = $.find(selector);\n\t embed(el[0], embedSpec, function(error, result) {\n\t var imageData = result.view.toImageURL();\n\t if (output_area!==undefined) {\n\t var output = {\n\t data: {\n\t \"image/png\": imageData.split(\",\")[1]\n\t },\n\t metadata: {'jupyter-vega': selector},\n\t output_type: \"display_data\"\n\t };\n\t // This appends the PNG output, but doesn't render it this time\n\t // as the JS version will be rendered already.\n\t output_area.outputs.push(output);\n\t }\n\t });\n\t }\n\t}\n\t\n\texports.render = render;\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(2),\n\t vg = __webpack_require__(3),\n\t vl = __webpack_require__(162),\n\t parameter = __webpack_require__(205),\n\t post = __webpack_require__(206);\n\t\n\tvar config = {\n\t // URL for loading specs into editor\n\t editor_url: 'http://vega.github.io/vega-editor/',\n\t\n\t // HTML to inject within view source head element\n\t source_header: '',\n\t\n\t // HTML to inject before view source closing body tag\n\t source_footer: ''\n\t};\n\t\n\tvar MODES = {\n\t 'vega': 'vega',\n\t 'vega-lite': 'vega-lite'\n\t};\n\t\n\tvar PREPROCESSOR = {\n\t 'vega': function(vgjson) { return vgjson; },\n\t 'vega-lite': function(vljson) { return vl.compile(vljson).spec; }\n\t};\n\t\n\tfunction load(url, arg, el, callback) {\n\t vg.util.load({url: url}, function(err, data) {\n\t if (err || !data) {\n\t console.error(err || ('No data found at ' + url));\n\t } else {\n\t // marshal embedding spec and restart\n\t var opt = !arg ? JSON.parse(data) : vg.util.extend({source: data}, arg);\n\t embed(el, opt, callback);\n\t }\n\t });\n\t}\n\t\n\t// Embed a Vega visualization component in a web page.\n\t// el: DOM element in which to place component (DOM node or CSS selector)\n\t// opt: Embedding specification (parsed JSON or URL string)\n\t// callback: invoked with the generated Vega View instance\n\tfunction embed(el, opt, callback) {\n\t var cb = callback || function(){},\n\t params = [], source, spec, mode;\n\t\n\t try {\n\t if (vg.util.isString(opt)) {\n\t return load(opt, null, el, callback);\n\t } else if (opt.source) {\n\t source = opt.source;\n\t spec = JSON.parse(source);\n\t } else if (opt.spec) {\n\t spec = opt.spec;\n\t source = JSON.stringify(spec, null, 2);\n\t } else if (opt.url) {\n\t return load(opt.url, opt, el, callback);\n\t } else {\n\t spec = opt;\n\t source = JSON.stringify(spec, null, 2);\n\t opt = {spec: spec, actions: false};\n\t }\n\t mode = MODES[opt.mode] || MODES.vega;\n\t spec = PREPROCESSOR[mode](spec);\n\t\n\t // ensure container div has class 'vega-embed'\n\t var div = d3.select(el)\n\t .classed('vega-embed', true)\n\t .html(''); // clear container\n\t\n\t // handle parameters\n\t if (opt.parameters) {\n\t var elp = opt.parameter_el ? d3.select(opt.parameter_el) : div;\n\t var pdiv = elp.append('div')\n\t .attr('class', 'vega-params');\n\t params = opt.parameters.map(function(p) {\n\t return parameter.init(pdiv, p, spec);\n\t });\n\t }\n\t } catch (err) { cb(err); }\n\t\n\t vg.parse.spec(spec, function(error, chart) {\n\t if (error) { cb(error); return; }\n\t try {\n\t var renderer = opt.renderer || 'canvas',\n\t actions = opt.actions || {};\n\t\n\t var view = chart({\n\t el: el,\n\t data: opt.data || undefined,\n\t renderer: renderer\n\t });\n\t\n\t if (opt.actions !== false) {\n\t // add child div to house action links\n\t var ctrl = div.append('div')\n\t .attr('class', 'vega-actions');\n\t\n\t // add 'Export' action\n\t if (actions.export !== false) {\n\t var ext = (renderer==='canvas' ? 'png' : 'svg');\n\t ctrl.append('a')\n\t .text('Export as ' + ext.toUpperCase())\n\t .attr('href', '#')\n\t .attr('target', '_blank')\n\t .attr('download', (spec.name || 'vega') + '.' + ext)\n\t .on('mousedown', function() {\n\t this.href = view.toImageURL(ext);\n\t d3.event.preventDefault();\n\t });\n\t }\n\t\n\t // add 'View Source' action\n\t if (actions.source !== false) {\n\t ctrl.append('a')\n\t .text('View Source')\n\t .attr('href', '#')\n\t .on('click', function() {\n\t viewSource(source);\n\t d3.event.preventDefault();\n\t });\n\t }\n\t\n\t // add 'Open in Vega Editor' action\n\t if (actions.editor !== false) {\n\t ctrl.append('a')\n\t .text('Open in Vega Editor')\n\t .attr('href', '#')\n\t .on('click', function() {\n\t post(window, embed.config.editor_url, {spec: source, mode: mode});\n\t d3.event.preventDefault();\n\t });\n\t }\n\t }\n\t\n\t // bind all parameter elements\n\t params.forEach(function(p) { parameter.bind(p, view); });\n\t\n\t // initialize and return visualization\n\t view.update();\n\t cb(null, {view: view, spec: spec});\n\t } catch (err) { cb(err); }\n\t });\n\t}\n\t\n\tfunction viewSource(source) {\n\t var header = '' + config.source_header + '' + '
';\n\t  var footer = '
' + config.source_footer + '';\n\t var win = window.open('');\n\t win.document.write(header + source + footer);\n\t win.document.title = 'Vega JSON Source';\n\t}\n\t\n\t// make config externally visible\n\tembed.config = config;\n\t\n\tmodule.exports = embed;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n\t var d3 = {\n\t version: \"3.5.17\"\n\t };\n\t var d3_arraySlice = [].slice, d3_array = function(list) {\n\t return d3_arraySlice.call(list);\n\t };\n\t var d3_document = this.document;\n\t function d3_documentElement(node) {\n\t return node && (node.ownerDocument || node.document || node).documentElement;\n\t }\n\t function d3_window(node) {\n\t return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n\t }\n\t if (d3_document) {\n\t try {\n\t d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n\t } catch (e) {\n\t d3_array = function(list) {\n\t var i = list.length, array = new Array(i);\n\t while (i--) array[i] = list[i];\n\t return array;\n\t };\n\t }\n\t }\n\t if (!Date.now) Date.now = function() {\n\t return +new Date();\n\t };\n\t if (d3_document) {\n\t try {\n\t d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n\t } catch (error) {\n\t var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n\t d3_element_prototype.setAttribute = function(name, value) {\n\t d3_element_setAttribute.call(this, name, value + \"\");\n\t };\n\t d3_element_prototype.setAttributeNS = function(space, local, value) {\n\t d3_element_setAttributeNS.call(this, space, local, value + \"\");\n\t };\n\t d3_style_prototype.setProperty = function(name, value, priority) {\n\t d3_style_setProperty.call(this, name, value + \"\", priority);\n\t };\n\t }\n\t }\n\t d3.ascending = d3_ascending;\n\t function d3_ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t d3.descending = function(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t };\n\t d3.min = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n\t }\n\t return a;\n\t };\n\t d3.max = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n\t }\n\t return a;\n\t };\n\t d3.extent = function(array, f) {\n\t var i = -1, n = array.length, a, b, c;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t return [ a, c ];\n\t };\n\t function d3_number(x) {\n\t return x === null ? NaN : +x;\n\t }\n\t function d3_numeric(x) {\n\t return !isNaN(x);\n\t }\n\t d3.sum = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n\t }\n\t return s;\n\t };\n\t d3.mean = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1, j = n;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n\t }\n\t if (j) return s / j;\n\t };\n\t d3.quantile = function(values, p) {\n\t var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n\t return e ? v + e * (values[h] - v) : v;\n\t };\n\t d3.median = function(array, f) {\n\t var numbers = [], n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n\t }\n\t if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n\t };\n\t d3.variance = function(array, f) {\n\t var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n\t if (arguments.length === 1) {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(array[i]))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t } else {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t if (j > 1) return s / (j - 1);\n\t };\n\t d3.deviation = function() {\n\t var v = d3.variance.apply(this, arguments);\n\t return v ? Math.sqrt(v) : v;\n\t };\n\t function d3_bisector(compare) {\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t }\n\t var d3_bisect = d3_bisector(d3_ascending);\n\t d3.bisectLeft = d3_bisect.left;\n\t d3.bisect = d3.bisectRight = d3_bisect.right;\n\t d3.bisector = function(f) {\n\t return d3_bisector(f.length === 1 ? function(d, x) {\n\t return d3_ascending(f(d), x);\n\t } : f);\n\t };\n\t d3.shuffle = function(array, i0, i1) {\n\t if ((m = arguments.length) < 3) {\n\t i1 = array.length;\n\t if (m < 2) i0 = 0;\n\t }\n\t var m = i1 - i0, t, i;\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n\t }\n\t return array;\n\t };\n\t d3.permute = function(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t };\n\t d3.pairs = function(array) {\n\t var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n\t return pairs;\n\t };\n\t d3.transpose = function(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t };\n\t function d3_transposeLength(d) {\n\t return d.length;\n\t }\n\t d3.zip = function() {\n\t return d3.transpose(arguments);\n\t };\n\t d3.keys = function(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t };\n\t d3.values = function(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t };\n\t d3.entries = function(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({\n\t key: key,\n\t value: map[key]\n\t });\n\t return entries;\n\t };\n\t d3.merge = function(arrays) {\n\t var n = arrays.length, m, i = -1, j = 0, merged, array;\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t return merged;\n\t };\n\t var abs = Math.abs;\n\t d3.range = function(start, stop, step) {\n\t if (arguments.length < 3) {\n\t step = 1;\n\t if (arguments.length < 2) {\n\t stop = start;\n\t start = 0;\n\t }\n\t }\n\t if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n\t var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n\t start *= k, stop *= k, step *= k;\n\t if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n\t return range;\n\t };\n\t function d3_range_integerScale(x) {\n\t var k = 1;\n\t while (x * k % 1) k *= 10;\n\t return k;\n\t }\n\t function d3_class(ctor, properties) {\n\t for (var key in properties) {\n\t Object.defineProperty(ctor.prototype, key, {\n\t value: properties[key],\n\t enumerable: false\n\t });\n\t }\n\t }\n\t d3.map = function(object, f) {\n\t var map = new d3_Map();\n\t if (object instanceof d3_Map) {\n\t object.forEach(function(key, value) {\n\t map.set(key, value);\n\t });\n\t } else if (Array.isArray(object)) {\n\t var i = -1, n = object.length, o;\n\t if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n\t } else {\n\t for (var key in object) map.set(key, object[key]);\n\t }\n\t return map;\n\t };\n\t function d3_Map() {\n\t this._ = Object.create(null);\n\t }\n\t var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n\t d3_class(d3_Map, {\n\t has: d3_map_has,\n\t get: function(key) {\n\t return this._[d3_map_escape(key)];\n\t },\n\t set: function(key, value) {\n\t return this._[d3_map_escape(key)] = value;\n\t },\n\t remove: d3_map_remove,\n\t keys: d3_map_keys,\n\t values: function() {\n\t var values = [];\n\t for (var key in this._) values.push(this._[key]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var key in this._) entries.push({\n\t key: d3_map_unescape(key),\n\t value: this._[key]\n\t });\n\t return entries;\n\t },\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n\t }\n\t });\n\t function d3_map_escape(key) {\n\t return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n\t }\n\t function d3_map_unescape(key) {\n\t return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n\t }\n\t function d3_map_has(key) {\n\t return d3_map_escape(key) in this._;\n\t }\n\t function d3_map_remove(key) {\n\t return (key = d3_map_escape(key)) in this._ && delete this._[key];\n\t }\n\t function d3_map_keys() {\n\t var keys = [];\n\t for (var key in this._) keys.push(d3_map_unescape(key));\n\t return keys;\n\t }\n\t function d3_map_size() {\n\t var size = 0;\n\t for (var key in this._) ++size;\n\t return size;\n\t }\n\t function d3_map_empty() {\n\t for (var key in this._) return false;\n\t return true;\n\t }\n\t d3.nest = function() {\n\t var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n\t function map(mapType, array, depth) {\n\t if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n\t var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n\t values.push(object);\n\t } else {\n\t valuesByKey.set(keyValue, [ object ]);\n\t }\n\t }\n\t if (mapType) {\n\t object = mapType();\n\t setter = function(keyValue, values) {\n\t object.set(keyValue, map(mapType, values, depth));\n\t };\n\t } else {\n\t object = {};\n\t setter = function(keyValue, values) {\n\t object[keyValue] = map(mapType, values, depth);\n\t };\n\t }\n\t valuesByKey.forEach(setter);\n\t return object;\n\t }\n\t function entries(map, depth) {\n\t if (depth >= keys.length) return map;\n\t var array = [], sortKey = sortKeys[depth++];\n\t map.forEach(function(key, keyMap) {\n\t array.push({\n\t key: key,\n\t values: entries(keyMap, depth)\n\t });\n\t });\n\t return sortKey ? array.sort(function(a, b) {\n\t return sortKey(a.key, b.key);\n\t }) : array;\n\t }\n\t nest.map = function(array, mapType) {\n\t return map(mapType, array, 0);\n\t };\n\t nest.entries = function(array) {\n\t return entries(map(d3.map, array, 0), 0);\n\t };\n\t nest.key = function(d) {\n\t keys.push(d);\n\t return nest;\n\t };\n\t nest.sortKeys = function(order) {\n\t sortKeys[keys.length - 1] = order;\n\t return nest;\n\t };\n\t nest.sortValues = function(order) {\n\t sortValues = order;\n\t return nest;\n\t };\n\t nest.rollup = function(f) {\n\t rollup = f;\n\t return nest;\n\t };\n\t return nest;\n\t };\n\t d3.set = function(array) {\n\t var set = new d3_Set();\n\t if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n\t return set;\n\t };\n\t function d3_Set() {\n\t this._ = Object.create(null);\n\t }\n\t d3_class(d3_Set, {\n\t has: d3_map_has,\n\t add: function(key) {\n\t this._[d3_map_escape(key += \"\")] = true;\n\t return key;\n\t },\n\t remove: d3_map_remove,\n\t values: d3_map_keys,\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key));\n\t }\n\t });\n\t d3.behavior = {};\n\t function d3_identity(d) {\n\t return d;\n\t }\n\t d3.rebind = function(target, source) {\n\t var i = 1, n = arguments.length, method;\n\t while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n\t return target;\n\t };\n\t function d3_rebind(target, source, method) {\n\t return function() {\n\t var value = method.apply(source, arguments);\n\t return value === source ? target : value;\n\t };\n\t }\n\t function d3_vendorSymbol(object, name) {\n\t if (name in object) return name;\n\t name = name.charAt(0).toUpperCase() + name.slice(1);\n\t for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n\t var prefixName = d3_vendorPrefixes[i] + name;\n\t if (prefixName in object) return prefixName;\n\t }\n\t }\n\t var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n\t function d3_noop() {}\n\t d3.dispatch = function() {\n\t var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t return dispatch;\n\t };\n\t function d3_dispatch() {}\n\t d3_dispatch.prototype.on = function(type, listener) {\n\t var i = type.indexOf(\".\"), name = \"\";\n\t if (i >= 0) {\n\t name = type.slice(i + 1);\n\t type = type.slice(0, i);\n\t }\n\t if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n\t if (arguments.length === 2) {\n\t if (listener == null) for (type in this) {\n\t if (this.hasOwnProperty(type)) this[type].on(name, null);\n\t }\n\t return this;\n\t }\n\t };\n\t function d3_dispatch_event(dispatch) {\n\t var listeners = [], listenerByName = new d3_Map();\n\t function event() {\n\t var z = listeners, i = -1, n = z.length, l;\n\t while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n\t return dispatch;\n\t }\n\t event.on = function(name, listener) {\n\t var l = listenerByName.get(name), i;\n\t if (arguments.length < 2) return l && l.on;\n\t if (l) {\n\t l.on = null;\n\t listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n\t listenerByName.remove(name);\n\t }\n\t if (listener) listeners.push(listenerByName.set(name, {\n\t on: listener\n\t }));\n\t return dispatch;\n\t };\n\t return event;\n\t }\n\t d3.event = null;\n\t function d3_eventPreventDefault() {\n\t d3.event.preventDefault();\n\t }\n\t function d3_eventSource() {\n\t var e = d3.event, s;\n\t while (s = e.sourceEvent) e = s;\n\t return e;\n\t }\n\t function d3_eventDispatch(target) {\n\t var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t dispatch.of = function(thiz, argumentz) {\n\t return function(e1) {\n\t try {\n\t var e0 = e1.sourceEvent = d3.event;\n\t e1.target = target;\n\t d3.event = e1;\n\t dispatch[e1.type].apply(thiz, argumentz);\n\t } finally {\n\t d3.event = e0;\n\t }\n\t };\n\t };\n\t return dispatch;\n\t }\n\t d3.requote = function(s) {\n\t return s.replace(d3_requote_re, \"\\\\$&\");\n\t };\n\t var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t var d3_subclass = {}.__proto__ ? function(object, prototype) {\n\t object.__proto__ = prototype;\n\t } : function(object, prototype) {\n\t for (var property in prototype) object[property] = prototype[property];\n\t };\n\t function d3_selection(groups) {\n\t d3_subclass(groups, d3_selectionPrototype);\n\t return groups;\n\t }\n\t var d3_select = function(s, n) {\n\t return n.querySelector(s);\n\t }, d3_selectAll = function(s, n) {\n\t return n.querySelectorAll(s);\n\t }, d3_selectMatches = function(n, s) {\n\t var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n\t d3_selectMatches = function(n, s) {\n\t return d3_selectMatcher.call(n, s);\n\t };\n\t return d3_selectMatches(n, s);\n\t };\n\t if (typeof Sizzle === \"function\") {\n\t d3_select = function(s, n) {\n\t return Sizzle(s, n)[0] || null;\n\t };\n\t d3_selectAll = Sizzle;\n\t d3_selectMatches = Sizzle.matchesSelector;\n\t }\n\t d3.selection = function() {\n\t return d3.select(d3_document.documentElement);\n\t };\n\t var d3_selectionPrototype = d3.selection.prototype = [];\n\t d3_selectionPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, group, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n\t if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selector(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_select(selector, this);\n\t };\n\t }\n\t d3_selectionPrototype.selectAll = function(selector) {\n\t var subgroups = [], subgroup, node;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n\t subgroup.parentNode = node;\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selectorAll(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_selectAll(selector, this);\n\t };\n\t }\n\t var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n\t var d3_nsPrefix = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: d3_nsXhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t };\n\t d3.ns = {\n\t prefix: d3_nsPrefix,\n\t qualify: function(name) {\n\t var i = name.indexOf(\":\"), prefix = name;\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return d3_nsPrefix.hasOwnProperty(prefix) ? {\n\t space: d3_nsPrefix[prefix],\n\t local: name\n\t } : name;\n\t }\n\t };\n\t d3_selectionPrototype.attr = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node();\n\t name = d3.ns.qualify(name);\n\t return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n\t }\n\t for (value in name) this.each(d3_selection_attr(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_attr(name, value));\n\t };\n\t function d3_selection_attr(name, value) {\n\t name = d3.ns.qualify(name);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrConstant() {\n\t this.setAttribute(name, value);\n\t }\n\t function attrConstantNS() {\n\t this.setAttributeNS(name.space, name.local, value);\n\t }\n\t function attrFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n\t }\n\t function attrFunctionNS() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n\t }\n\t return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n\t }\n\t function d3_collapse(s) {\n\t return s.trim().replace(/\\s+/g, \" \");\n\t }\n\t d3_selectionPrototype.classed = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n\t if (value = node.classList) {\n\t while (++i < n) if (!value.contains(name[i])) return false;\n\t } else {\n\t value = node.getAttribute(\"class\");\n\t while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n\t }\n\t return true;\n\t }\n\t for (value in name) this.each(d3_selection_classed(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_classed(name, value));\n\t };\n\t function d3_selection_classedRe(name) {\n\t return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n\t }\n\t function d3_selection_classes(name) {\n\t return (name + \"\").trim().split(/^|\\s+/);\n\t }\n\t function d3_selection_classed(name, value) {\n\t name = d3_selection_classes(name).map(d3_selection_classedName);\n\t var n = name.length;\n\t function classedConstant() {\n\t var i = -1;\n\t while (++i < n) name[i](this, value);\n\t }\n\t function classedFunction() {\n\t var i = -1, x = value.apply(this, arguments);\n\t while (++i < n) name[i](this, x);\n\t }\n\t return typeof value === \"function\" ? classedFunction : classedConstant;\n\t }\n\t function d3_selection_classedName(name) {\n\t var re = d3_selection_classedRe(name);\n\t return function(node, value) {\n\t if (c = node.classList) return value ? c.add(name) : c.remove(name);\n\t var c = node.getAttribute(\"class\") || \"\";\n\t if (value) {\n\t re.lastIndex = 0;\n\t if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n\t } else {\n\t node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n\t }\n\t };\n\t }\n\t d3_selectionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n\t return this;\n\t }\n\t if (n < 2) {\n\t var node = this.node();\n\t return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n\t }\n\t priority = \"\";\n\t }\n\t return this.each(d3_selection_style(name, value, priority));\n\t };\n\t function d3_selection_style(name, value, priority) {\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleConstant() {\n\t this.style.setProperty(name, value, priority);\n\t }\n\t function styleFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n\t }\n\t return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n\t }\n\t d3_selectionPrototype.property = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") return this.node()[name];\n\t for (value in name) this.each(d3_selection_property(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_property(name, value));\n\t };\n\t function d3_selection_property(name, value) {\n\t function propertyNull() {\n\t delete this[name];\n\t }\n\t function propertyConstant() {\n\t this[name] = value;\n\t }\n\t function propertyFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) delete this[name]; else this[name] = x;\n\t }\n\t return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n\t }\n\t d3_selectionPrototype.text = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.textContent = \"\";\n\t } : function() {\n\t this.textContent = value;\n\t }) : this.node().textContent;\n\t };\n\t d3_selectionPrototype.html = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.innerHTML = \"\";\n\t } : function() {\n\t this.innerHTML = value;\n\t }) : this.node().innerHTML;\n\t };\n\t d3_selectionPrototype.append = function(name) {\n\t name = d3_selection_creator(name);\n\t return this.select(function() {\n\t return this.appendChild(name.apply(this, arguments));\n\t });\n\t };\n\t function d3_selection_creator(name) {\n\t function create() {\n\t var document = this.ownerDocument, namespace = this.namespaceURI;\n\t return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n\t }\n\t function createNS() {\n\t return this.ownerDocument.createElementNS(name.space, name.local);\n\t }\n\t return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n\t }\n\t d3_selectionPrototype.insert = function(name, before) {\n\t name = d3_selection_creator(name);\n\t before = d3_selection_selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n\t });\n\t };\n\t d3_selectionPrototype.remove = function() {\n\t return this.each(d3_selectionRemove);\n\t };\n\t function d3_selectionRemove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t }\n\t d3_selectionPrototype.data = function(value, key) {\n\t var i = -1, n = this.length, group, node;\n\t if (!arguments.length) {\n\t value = new Array(n = (group = this[0]).length);\n\t while (++i < n) {\n\t if (node = group[i]) {\n\t value[i] = node.__data__;\n\t }\n\t }\n\t return value;\n\t }\n\t function bind(group, groupData) {\n\t var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n\t if (key) {\n\t var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n\t for (i = -1; ++i < n; ) {\n\t if (node = group[i]) {\n\t if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n\t exitNodes[i] = node;\n\t } else {\n\t nodeByKeyValue.set(keyValue, node);\n\t }\n\t keyValues[i] = keyValue;\n\t }\n\t }\n\t for (i = -1; ++i < m; ) {\n\t if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t } else if (node !== true) {\n\t updateNodes[i] = node;\n\t node.__data__ = nodeData;\n\t }\n\t nodeByKeyValue.set(keyValue, true);\n\t }\n\t for (i = -1; ++i < n; ) {\n\t if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t } else {\n\t for (i = -1; ++i < n0; ) {\n\t node = group[i];\n\t nodeData = groupData[i];\n\t if (node) {\n\t node.__data__ = nodeData;\n\t updateNodes[i] = node;\n\t } else {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t }\n\t }\n\t for (;i < m; ++i) {\n\t enterNodes[i] = d3_selection_dataNode(groupData[i]);\n\t }\n\t for (;i < n; ++i) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t enterNodes.update = updateNodes;\n\t enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n\t enter.push(enterNodes);\n\t update.push(updateNodes);\n\t exit.push(exitNodes);\n\t }\n\t var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n\t if (typeof value === \"function\") {\n\t while (++i < n) {\n\t bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n\t }\n\t } else {\n\t while (++i < n) {\n\t bind(group = this[i], value);\n\t }\n\t }\n\t update.enter = function() {\n\t return enter;\n\t };\n\t update.exit = function() {\n\t return exit;\n\t };\n\t return update;\n\t };\n\t function d3_selection_dataNode(data) {\n\t return {\n\t __data__: data\n\t };\n\t }\n\t d3_selectionPrototype.datum = function(value) {\n\t return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n\t };\n\t d3_selectionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_filter(selector) {\n\t return function() {\n\t return d3_selectMatches(this, selector);\n\t };\n\t }\n\t d3_selectionPrototype.order = function() {\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t return this;\n\t };\n\t d3_selectionPrototype.sort = function(comparator) {\n\t comparator = d3_selection_sortComparator.apply(this, arguments);\n\t for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n\t return this.order();\n\t };\n\t function d3_selection_sortComparator(comparator) {\n\t if (!arguments.length) comparator = d3_ascending;\n\t return function(a, b) {\n\t return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n\t };\n\t }\n\t d3_selectionPrototype.each = function(callback) {\n\t return d3_selection_each(this, function(node, i, j) {\n\t callback.call(node, node.__data__, i, j);\n\t });\n\t };\n\t function d3_selection_each(groups, callback) {\n\t for (var j = 0, m = groups.length; j < m; j++) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n\t if (node = group[i]) callback(node, i, j);\n\t }\n\t }\n\t return groups;\n\t }\n\t d3_selectionPrototype.call = function(callback) {\n\t var args = d3_array(arguments);\n\t callback.apply(args[0] = this, args);\n\t return this;\n\t };\n\t d3_selectionPrototype.empty = function() {\n\t return !this.node();\n\t };\n\t d3_selectionPrototype.node = function() {\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t return null;\n\t };\n\t d3_selectionPrototype.size = function() {\n\t var n = 0;\n\t d3_selection_each(this, function() {\n\t ++n;\n\t });\n\t return n;\n\t };\n\t function d3_selection_enter(selection) {\n\t d3_subclass(selection, d3_selection_enterPrototype);\n\t return selection;\n\t }\n\t var d3_selection_enterPrototype = [];\n\t d3.selection.enter = d3_selection_enter;\n\t d3.selection.enter.prototype = d3_selection_enterPrototype;\n\t d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n\t d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n\t d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n\t d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n\t d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n\t d3_selection_enterPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, upgroup, group, node;\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t upgroup = (group = this[j]).update;\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = group.parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n\t subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t d3_selection_enterPrototype.insert = function(name, before) {\n\t if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n\t return d3_selectionPrototype.insert.call(this, name, before);\n\t };\n\t function d3_selection_enterInsertBefore(enter) {\n\t var i0, j0;\n\t return function(d, i, j) {\n\t var group = enter[j].update, n = group.length, node;\n\t if (j != j0) j0 = j, i0 = 0;\n\t if (i >= i0) i0 = i + 1;\n\t while (!(node = group[i0]) && ++i0 < n) ;\n\t return node;\n\t };\n\t }\n\t d3.select = function(node) {\n\t var group;\n\t if (typeof node === \"string\") {\n\t group = [ d3_select(node, d3_document) ];\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = [ node ];\n\t group.parentNode = d3_documentElement(node);\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3.selectAll = function(nodes) {\n\t var group;\n\t if (typeof nodes === \"string\") {\n\t group = d3_array(d3_selectAll(nodes, d3_document));\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = d3_array(nodes);\n\t group.parentNode = null;\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3_selectionPrototype.on = function(type, listener, capture) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof type !== \"string\") {\n\t if (n < 2) listener = false;\n\t for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n\t return this;\n\t }\n\t if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n\t capture = false;\n\t }\n\t return this.each(d3_selection_on(type, listener, capture));\n\t };\n\t function d3_selection_on(type, listener, capture) {\n\t var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n\t if (i > 0) type = type.slice(0, i);\n\t var filter = d3_selection_onFilters.get(type);\n\t if (filter) type = filter, wrap = d3_selection_onFilter;\n\t function onRemove() {\n\t var l = this[name];\n\t if (l) {\n\t this.removeEventListener(type, l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t function onAdd() {\n\t var l = wrap(listener, d3_array(arguments));\n\t onRemove.call(this);\n\t this.addEventListener(type, this[name] = l, l.$ = capture);\n\t l._ = listener;\n\t }\n\t function removeAll() {\n\t var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n\t for (var name in this) {\n\t if (match = name.match(re)) {\n\t var l = this[name];\n\t this.removeEventListener(match[1], l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t }\n\t return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n\t }\n\t var d3_selection_onFilters = d3.map({\n\t mouseenter: \"mouseover\",\n\t mouseleave: \"mouseout\"\n\t });\n\t if (d3_document) {\n\t d3_selection_onFilters.forEach(function(k) {\n\t if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n\t });\n\t }\n\t function d3_selection_onListener(listener, argumentz) {\n\t return function(e) {\n\t var o = d3.event;\n\t d3.event = e;\n\t argumentz[0] = this.__data__;\n\t try {\n\t listener.apply(this, argumentz);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t }\n\t function d3_selection_onFilter(listener, argumentz) {\n\t var l = d3_selection_onListener(listener, argumentz);\n\t return function(e) {\n\t var target = this, related = e.relatedTarget;\n\t if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n\t l.call(target, e);\n\t }\n\t };\n\t }\n\t var d3_event_dragSelect, d3_event_dragId = 0;\n\t function d3_event_dragSuppress(node) {\n\t var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n\t if (d3_event_dragSelect == null) {\n\t d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n\t }\n\t if (d3_event_dragSelect) {\n\t var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n\t style[d3_event_dragSelect] = \"none\";\n\t }\n\t return function(suppressClick) {\n\t w.on(name, null);\n\t if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n\t if (suppressClick) {\n\t var off = function() {\n\t w.on(click, null);\n\t };\n\t w.on(click, function() {\n\t d3_eventPreventDefault();\n\t off();\n\t }, true);\n\t setTimeout(off, 0);\n\t }\n\t };\n\t }\n\t d3.mouse = function(container) {\n\t return d3_mousePoint(container, d3_eventSource());\n\t };\n\t var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n\t function d3_mousePoint(container, e) {\n\t if (e.changedTouches) e = e.changedTouches[0];\n\t var svg = container.ownerSVGElement || container;\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t if (d3_mouse_bug44083 < 0) {\n\t var window = d3_window(container);\n\t if (window.scrollX || window.scrollY) {\n\t svg = d3.select(\"body\").append(\"svg\").style({\n\t position: \"absolute\",\n\t top: 0,\n\t left: 0,\n\t margin: 0,\n\t padding: 0,\n\t border: \"none\"\n\t }, \"important\");\n\t var ctm = svg[0][0].getScreenCTM();\n\t d3_mouse_bug44083 = !(ctm.f || ctm.e);\n\t svg.remove();\n\t }\n\t }\n\t if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n\t point.y = e.clientY;\n\t point = point.matrixTransform(container.getScreenCTM().inverse());\n\t return [ point.x, point.y ];\n\t }\n\t var rect = container.getBoundingClientRect();\n\t return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n\t }\n\t d3.touch = function(container, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n\t if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return d3_mousePoint(container, touch);\n\t }\n\t }\n\t };\n\t d3.behavior.drag = function() {\n\t var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n\t function drag() {\n\t this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n\t }\n\t function dragstart(id, position, subject, move, end) {\n\t return function() {\n\t var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n\t if (origin) {\n\t dragOffset = origin.apply(that, arguments);\n\t dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n\t } else {\n\t dragOffset = [ 0, 0 ];\n\t }\n\t dispatch({\n\t type: \"dragstart\"\n\t });\n\t function moved() {\n\t var position1 = position(parent, dragId), dx, dy;\n\t if (!position1) return;\n\t dx = position1[0] - position0[0];\n\t dy = position1[1] - position0[1];\n\t dragged |= dx | dy;\n\t position0 = position1;\n\t dispatch({\n\t type: \"drag\",\n\t x: position1[0] + dragOffset[0],\n\t y: position1[1] + dragOffset[1],\n\t dx: dx,\n\t dy: dy\n\t });\n\t }\n\t function ended() {\n\t if (!position(parent, dragId)) return;\n\t dragSubject.on(move + dragName, null).on(end + dragName, null);\n\t dragRestore(dragged);\n\t dispatch({\n\t type: \"dragend\"\n\t });\n\t }\n\t };\n\t }\n\t drag.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return drag;\n\t };\n\t return d3.rebind(drag, event, \"on\");\n\t };\n\t function d3_behavior_dragTouchId() {\n\t return d3.event.changedTouches[0].identifier;\n\t }\n\t d3.touches = function(container, touches) {\n\t if (arguments.length < 2) touches = d3_eventSource().touches;\n\t return touches ? d3_array(touches).map(function(touch) {\n\t var point = d3_mousePoint(container, touch);\n\t point.identifier = touch.identifier;\n\t return point;\n\t }) : [];\n\t };\n\t var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n\t function d3_sgn(x) {\n\t return x > 0 ? 1 : x < 0 ? -1 : 0;\n\t }\n\t function d3_cross2d(a, b, c) {\n\t return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n\t }\n\t function d3_acos(x) {\n\t return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n\t }\n\t function d3_asin(x) {\n\t return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n\t }\n\t function d3_sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t }\n\t function d3_cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t }\n\t function d3_tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t }\n\t function d3_haversin(x) {\n\t return (x = Math.sin(x / 2)) * x;\n\t }\n\t var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n\t d3.interpolateZoom = function(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n\t if (d2 < ε2) {\n\t S = Math.log(w1 / w0) / ρ;\n\t i = function(t) {\n\t return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n\t };\n\t } else {\n\t var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / ρ;\n\t i = function(t) {\n\t var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n\t return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n\t };\n\t }\n\t i.duration = S * 1e3;\n\t return i;\n\t };\n\t d3.behavior.zoom = function() {\n\t var view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n\t if (!d3_behavior_zoomWheel) {\n\t d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n\t }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return d3.event.wheelDelta;\n\t }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n\t return -d3.event.detail;\n\t }, \"MozMousePixelScroll\");\n\t }\n\t function zoom(g) {\n\t g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n\t }\n\t zoom.event = function(g) {\n\t g.each(function() {\n\t var dispatch = event.of(this, arguments), view1 = view;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.zoom\", function() {\n\t view = this.__chart__ || {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t zoomstarted(dispatch);\n\t }).tween(\"zoom:zoom\", function() {\n\t var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n\t return function(t) {\n\t var l = i(t), k = dx / l[2];\n\t this.__chart__ = view = {\n\t x: cx - l[0] * k,\n\t y: cy - l[1] * k,\n\t k: k\n\t };\n\t zoomed(dispatch);\n\t };\n\t }).each(\"interrupt.zoom\", function() {\n\t zoomended(dispatch);\n\t }).each(\"end.zoom\", function() {\n\t zoomended(dispatch);\n\t });\n\t } else {\n\t this.__chart__ = view;\n\t zoomstarted(dispatch);\n\t zoomed(dispatch);\n\t zoomended(dispatch);\n\t }\n\t });\n\t };\n\t zoom.translate = function(_) {\n\t if (!arguments.length) return [ view.x, view.y ];\n\t view = {\n\t x: +_[0],\n\t y: +_[1],\n\t k: view.k\n\t };\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scale = function(_) {\n\t if (!arguments.length) return view.k;\n\t view = {\n\t x: view.x,\n\t y: view.y,\n\t k: null\n\t };\n\t scaleTo(+_);\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scaleExtent = function(_) {\n\t if (!arguments.length) return scaleExtent;\n\t scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.center = function(_) {\n\t if (!arguments.length) return center;\n\t center = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.duration = function(_) {\n\t if (!arguments.length) return duration;\n\t duration = +_;\n\t return zoom;\n\t };\n\t zoom.x = function(z) {\n\t if (!arguments.length) return x1;\n\t x1 = z;\n\t x0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t zoom.y = function(z) {\n\t if (!arguments.length) return y1;\n\t y1 = z;\n\t y0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t function location(p) {\n\t return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n\t }\n\t function point(l) {\n\t return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n\t }\n\t function scaleTo(s) {\n\t view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n\t }\n\t function translateTo(p, l) {\n\t l = point(l);\n\t view.x += p[0] - l[0];\n\t view.y += p[1] - l[1];\n\t }\n\t function zoomTo(that, p, l, k) {\n\t that.__chart__ = {\n\t x: view.x,\n\t y: view.y,\n\t k: view.k\n\t };\n\t scaleTo(Math.pow(2, k));\n\t translateTo(center0 = p, l);\n\t that = d3.select(that);\n\t if (duration > 0) that = that.transition().duration(duration);\n\t that.call(zoom.event);\n\t }\n\t function rescale() {\n\t if (x1) x1.domain(x0.range().map(function(x) {\n\t return (x - view.x) / view.k;\n\t }).map(x0.invert));\n\t if (y1) y1.domain(y0.range().map(function(y) {\n\t return (y - view.y) / view.k;\n\t }).map(y0.invert));\n\t }\n\t function zoomstarted(dispatch) {\n\t if (!zooming++) dispatch({\n\t type: \"zoomstart\"\n\t });\n\t }\n\t function zoomed(dispatch) {\n\t rescale();\n\t dispatch({\n\t type: \"zoom\",\n\t scale: view.k,\n\t translate: [ view.x, view.y ]\n\t });\n\t }\n\t function zoomended(dispatch) {\n\t if (!--zooming) dispatch({\n\t type: \"zoomend\"\n\t }), center0 = null;\n\t }\n\t function mousedowned() {\n\t var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n\t d3_selection_interrupt.call(that);\n\t zoomstarted(dispatch);\n\t function moved() {\n\t dragged = 1;\n\t translateTo(d3.mouse(that), location0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t subject.on(mousemove, null).on(mouseup, null);\n\t dragRestore(dragged);\n\t zoomended(dispatch);\n\t }\n\t }\n\t function touchstarted() {\n\t var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n\t started();\n\t zoomstarted(dispatch);\n\t subject.on(mousedown, null).on(touchstart, started);\n\t function relocate() {\n\t var touches = d3.touches(that);\n\t scale0 = view.k;\n\t touches.forEach(function(t) {\n\t if (t.identifier in locations0) locations0[t.identifier] = location(t);\n\t });\n\t return touches;\n\t }\n\t function started() {\n\t var target = d3.event.target;\n\t d3.select(target).on(touchmove, moved).on(touchend, ended);\n\t targets.push(target);\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t locations0[changed[i].identifier] = null;\n\t }\n\t var touches = relocate(), now = Date.now();\n\t if (touches.length === 1) {\n\t if (now - touchtime < 500) {\n\t var p = touches[0];\n\t zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n\t d3_eventPreventDefault();\n\t }\n\t touchtime = now;\n\t } else if (touches.length > 1) {\n\t var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n\t distance0 = dx * dx + dy * dy;\n\t }\n\t }\n\t function moved() {\n\t var touches = d3.touches(that), p0, l0, p1, l1;\n\t d3_selection_interrupt.call(that);\n\t for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n\t p1 = touches[i];\n\t if (l1 = locations0[p1.identifier]) {\n\t if (l0) break;\n\t p0 = p1, l0 = l1;\n\t }\n\t }\n\t if (l1) {\n\t var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n\t p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n\t l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n\t scaleTo(scale1 * scale0);\n\t }\n\t touchtime = null;\n\t translateTo(p0, l0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t if (d3.event.touches.length) {\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t delete locations0[changed[i].identifier];\n\t }\n\t for (var identifier in locations0) {\n\t return void relocate();\n\t }\n\t }\n\t d3.selectAll(targets).on(zoomName, null);\n\t subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n\t dragRestore();\n\t zoomended(dispatch);\n\t }\n\t }\n\t function mousewheeled() {\n\t var dispatch = event.of(this, arguments);\n\t if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n\t translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n\t mousewheelTimer = setTimeout(function() {\n\t mousewheelTimer = null;\n\t zoomended(dispatch);\n\t }, 50);\n\t d3_eventPreventDefault();\n\t scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n\t translateTo(center0, translate0);\n\t zoomed(dispatch);\n\t }\n\t function dblclicked() {\n\t var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n\t zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n\t }\n\t return d3.rebind(zoom, event, \"on\");\n\t };\n\t var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n\t d3.color = d3_color;\n\t function d3_color() {}\n\t d3_color.prototype.toString = function() {\n\t return this.rgb() + \"\";\n\t };\n\t d3.hsl = d3_hsl;\n\t function d3_hsl(h, s, l) {\n\t return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n\t }\n\t var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n\t d3_hslPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, this.l / k);\n\t };\n\t d3_hslPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, k * this.l);\n\t };\n\t d3_hslPrototype.rgb = function() {\n\t return d3_hsl_rgb(this.h, this.s, this.l);\n\t };\n\t function d3_hsl_rgb(h, s, l) {\n\t var m1, m2;\n\t h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n\t s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n\t l = l < 0 ? 0 : l > 1 ? 1 : l;\n\t m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n\t m1 = 2 * l - m2;\n\t function v(h) {\n\t if (h > 360) h -= 360; else if (h < 0) h += 360;\n\t if (h < 60) return m1 + (m2 - m1) * h / 60;\n\t if (h < 180) return m2;\n\t if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n\t return m1;\n\t }\n\t function vv(h) {\n\t return Math.round(v(h) * 255);\n\t }\n\t return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n\t }\n\t d3.hcl = d3_hcl;\n\t function d3_hcl(h, c, l) {\n\t return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n\t }\n\t var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n\t d3_hclPrototype.brighter = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.darker = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.rgb = function() {\n\t return d3_hcl_lab(this.h, this.c, this.l).rgb();\n\t };\n\t function d3_hcl_lab(h, c, l) {\n\t if (isNaN(h)) h = 0;\n\t if (isNaN(c)) c = 0;\n\t return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n\t }\n\t d3.lab = d3_lab;\n\t function d3_lab(l, a, b) {\n\t return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n\t }\n\t var d3_lab_K = 18;\n\t var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n\t var d3_labPrototype = d3_lab.prototype = new d3_color();\n\t d3_labPrototype.brighter = function(k) {\n\t return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.darker = function(k) {\n\t return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.rgb = function() {\n\t return d3_lab_rgb(this.l, this.a, this.b);\n\t };\n\t function d3_lab_rgb(l, a, b) {\n\t var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n\t x = d3_lab_xyz(x) * d3_lab_X;\n\t y = d3_lab_xyz(y) * d3_lab_Y;\n\t z = d3_lab_xyz(z) * d3_lab_Z;\n\t return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n\t }\n\t function d3_lab_hcl(l, a, b) {\n\t return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n\t }\n\t function d3_lab_xyz(x) {\n\t return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n\t }\n\t function d3_xyz_lab(x) {\n\t return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n\t }\n\t function d3_xyz_rgb(r) {\n\t return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n\t }\n\t d3.rgb = d3_rgb;\n\t function d3_rgb(r, g, b) {\n\t return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n\t }\n\t function d3_rgbNumber(value) {\n\t return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n\t }\n\t function d3_rgbString(value) {\n\t return d3_rgbNumber(value) + \"\";\n\t }\n\t var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n\t d3_rgbPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t var r = this.r, g = this.g, b = this.b, i = 30;\n\t if (!r && !g && !b) return new d3_rgb(i, i, i);\n\t if (r && r < i) r = i;\n\t if (g && g < i) g = i;\n\t if (b && b < i) b = i;\n\t return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n\t };\n\t d3_rgbPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_rgb(k * this.r, k * this.g, k * this.b);\n\t };\n\t d3_rgbPrototype.hsl = function() {\n\t return d3_rgb_hsl(this.r, this.g, this.b);\n\t };\n\t d3_rgbPrototype.toString = function() {\n\t return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n\t };\n\t function d3_rgb_hex(v) {\n\t return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n\t }\n\t function d3_rgb_parse(format, rgb, hsl) {\n\t var r = 0, g = 0, b = 0, m1, m2, color;\n\t m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n\t if (m1) {\n\t m2 = m1[2].split(\",\");\n\t switch (m1[1]) {\n\t case \"hsl\":\n\t {\n\t return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n\t }\n\t\n\t case \"rgb\":\n\t {\n\t return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n\t }\n\t }\n\t }\n\t if (color = d3_rgb_names.get(format)) {\n\t return rgb(color.r, color.g, color.b);\n\t }\n\t if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n\t if (format.length === 4) {\n\t r = (color & 3840) >> 4;\n\t r = r >> 4 | r;\n\t g = color & 240;\n\t g = g >> 4 | g;\n\t b = color & 15;\n\t b = b << 4 | b;\n\t } else if (format.length === 7) {\n\t r = (color & 16711680) >> 16;\n\t g = (color & 65280) >> 8;\n\t b = color & 255;\n\t }\n\t }\n\t return rgb(r, g, b);\n\t }\n\t function d3_rgb_hsl(r, g, b) {\n\t var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n\t if (d) {\n\t s = l < .5 ? d / (max + min) : d / (2 - max - min);\n\t if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n\t h *= 60;\n\t } else {\n\t h = NaN;\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new d3_hsl(h, s, l);\n\t }\n\t function d3_rgb_lab(r, g, b) {\n\t r = d3_rgb_xyz(r);\n\t g = d3_rgb_xyz(g);\n\t b = d3_rgb_xyz(b);\n\t var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n\t return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n\t }\n\t function d3_rgb_xyz(r) {\n\t return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n\t }\n\t function d3_rgb_parseNumber(c) {\n\t var f = parseFloat(c);\n\t return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n\t }\n\t var d3_rgb_names = d3.map({\n\t aliceblue: 15792383,\n\t antiquewhite: 16444375,\n\t aqua: 65535,\n\t aquamarine: 8388564,\n\t azure: 15794175,\n\t beige: 16119260,\n\t bisque: 16770244,\n\t black: 0,\n\t blanchedalmond: 16772045,\n\t blue: 255,\n\t blueviolet: 9055202,\n\t brown: 10824234,\n\t burlywood: 14596231,\n\t cadetblue: 6266528,\n\t chartreuse: 8388352,\n\t chocolate: 13789470,\n\t coral: 16744272,\n\t cornflowerblue: 6591981,\n\t cornsilk: 16775388,\n\t crimson: 14423100,\n\t cyan: 65535,\n\t darkblue: 139,\n\t darkcyan: 35723,\n\t darkgoldenrod: 12092939,\n\t darkgray: 11119017,\n\t darkgreen: 25600,\n\t darkgrey: 11119017,\n\t darkkhaki: 12433259,\n\t darkmagenta: 9109643,\n\t darkolivegreen: 5597999,\n\t darkorange: 16747520,\n\t darkorchid: 10040012,\n\t darkred: 9109504,\n\t darksalmon: 15308410,\n\t darkseagreen: 9419919,\n\t darkslateblue: 4734347,\n\t darkslategray: 3100495,\n\t darkslategrey: 3100495,\n\t darkturquoise: 52945,\n\t darkviolet: 9699539,\n\t deeppink: 16716947,\n\t deepskyblue: 49151,\n\t dimgray: 6908265,\n\t dimgrey: 6908265,\n\t dodgerblue: 2003199,\n\t firebrick: 11674146,\n\t floralwhite: 16775920,\n\t forestgreen: 2263842,\n\t fuchsia: 16711935,\n\t gainsboro: 14474460,\n\t ghostwhite: 16316671,\n\t gold: 16766720,\n\t goldenrod: 14329120,\n\t gray: 8421504,\n\t green: 32768,\n\t greenyellow: 11403055,\n\t grey: 8421504,\n\t honeydew: 15794160,\n\t hotpink: 16738740,\n\t indianred: 13458524,\n\t indigo: 4915330,\n\t ivory: 16777200,\n\t khaki: 15787660,\n\t lavender: 15132410,\n\t lavenderblush: 16773365,\n\t lawngreen: 8190976,\n\t lemonchiffon: 16775885,\n\t lightblue: 11393254,\n\t lightcoral: 15761536,\n\t lightcyan: 14745599,\n\t lightgoldenrodyellow: 16448210,\n\t lightgray: 13882323,\n\t lightgreen: 9498256,\n\t lightgrey: 13882323,\n\t lightpink: 16758465,\n\t lightsalmon: 16752762,\n\t lightseagreen: 2142890,\n\t lightskyblue: 8900346,\n\t lightslategray: 7833753,\n\t lightslategrey: 7833753,\n\t lightsteelblue: 11584734,\n\t lightyellow: 16777184,\n\t lime: 65280,\n\t limegreen: 3329330,\n\t linen: 16445670,\n\t magenta: 16711935,\n\t maroon: 8388608,\n\t mediumaquamarine: 6737322,\n\t mediumblue: 205,\n\t mediumorchid: 12211667,\n\t mediumpurple: 9662683,\n\t mediumseagreen: 3978097,\n\t mediumslateblue: 8087790,\n\t mediumspringgreen: 64154,\n\t mediumturquoise: 4772300,\n\t mediumvioletred: 13047173,\n\t midnightblue: 1644912,\n\t mintcream: 16121850,\n\t mistyrose: 16770273,\n\t moccasin: 16770229,\n\t navajowhite: 16768685,\n\t navy: 128,\n\t oldlace: 16643558,\n\t olive: 8421376,\n\t olivedrab: 7048739,\n\t orange: 16753920,\n\t orangered: 16729344,\n\t orchid: 14315734,\n\t palegoldenrod: 15657130,\n\t palegreen: 10025880,\n\t paleturquoise: 11529966,\n\t palevioletred: 14381203,\n\t papayawhip: 16773077,\n\t peachpuff: 16767673,\n\t peru: 13468991,\n\t pink: 16761035,\n\t plum: 14524637,\n\t powderblue: 11591910,\n\t purple: 8388736,\n\t rebeccapurple: 6697881,\n\t red: 16711680,\n\t rosybrown: 12357519,\n\t royalblue: 4286945,\n\t saddlebrown: 9127187,\n\t salmon: 16416882,\n\t sandybrown: 16032864,\n\t seagreen: 3050327,\n\t seashell: 16774638,\n\t sienna: 10506797,\n\t silver: 12632256,\n\t skyblue: 8900331,\n\t slateblue: 6970061,\n\t slategray: 7372944,\n\t slategrey: 7372944,\n\t snow: 16775930,\n\t springgreen: 65407,\n\t steelblue: 4620980,\n\t tan: 13808780,\n\t teal: 32896,\n\t thistle: 14204888,\n\t tomato: 16737095,\n\t turquoise: 4251856,\n\t violet: 15631086,\n\t wheat: 16113331,\n\t white: 16777215,\n\t whitesmoke: 16119285,\n\t yellow: 16776960,\n\t yellowgreen: 10145074\n\t });\n\t d3_rgb_names.forEach(function(key, value) {\n\t d3_rgb_names.set(key, d3_rgbNumber(value));\n\t });\n\t function d3_functor(v) {\n\t return typeof v === \"function\" ? v : function() {\n\t return v;\n\t };\n\t }\n\t d3.functor = d3_functor;\n\t d3.xhr = d3_xhrType(d3_identity);\n\t function d3_xhrType(response) {\n\t return function(url, mimeType, callback) {\n\t if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n\t mimeType = null;\n\t return d3_xhr(url, mimeType, response, callback);\n\t };\n\t }\n\t function d3_xhr(url, mimeType, response, callback) {\n\t var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n\t if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\t \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n\t request.readyState > 3 && respond();\n\t };\n\t function respond() {\n\t var status = request.status, result;\n\t if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n\t try {\n\t result = response.call(xhr, request);\n\t } catch (e) {\n\t dispatch.error.call(xhr, e);\n\t return;\n\t }\n\t dispatch.load.call(xhr, result);\n\t } else {\n\t dispatch.error.call(xhr, request);\n\t }\n\t }\n\t request.onprogress = function(event) {\n\t var o = d3.event;\n\t d3.event = event;\n\t try {\n\t dispatch.progress.call(xhr, request);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t xhr.header = function(name, value) {\n\t name = (name + \"\").toLowerCase();\n\t if (arguments.length < 2) return headers[name];\n\t if (value == null) delete headers[name]; else headers[name] = value + \"\";\n\t return xhr;\n\t };\n\t xhr.mimeType = function(value) {\n\t if (!arguments.length) return mimeType;\n\t mimeType = value == null ? null : value + \"\";\n\t return xhr;\n\t };\n\t xhr.responseType = function(value) {\n\t if (!arguments.length) return responseType;\n\t responseType = value;\n\t return xhr;\n\t };\n\t xhr.response = function(value) {\n\t response = value;\n\t return xhr;\n\t };\n\t [ \"get\", \"post\" ].forEach(function(method) {\n\t xhr[method] = function() {\n\t return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n\t };\n\t });\n\t xhr.send = function(method, data, callback) {\n\t if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n\t request.open(method, url, true);\n\t if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n\t if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n\t if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n\t if (responseType != null) request.responseType = responseType;\n\t if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n\t callback(null, request);\n\t });\n\t dispatch.beforesend.call(xhr, request);\n\t request.send(data == null ? null : data);\n\t return xhr;\n\t };\n\t xhr.abort = function() {\n\t request.abort();\n\t return xhr;\n\t };\n\t d3.rebind(xhr, dispatch, \"on\");\n\t return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n\t }\n\t function d3_xhr_fixCallback(callback) {\n\t return callback.length === 1 ? function(error, request) {\n\t callback(error == null ? request : null);\n\t } : callback;\n\t }\n\t function d3_xhrHasResponse(request) {\n\t var type = request.responseType;\n\t return type && type !== \"text\" ? request.response : request.responseText;\n\t }\n\t d3.dsv = function(delimiter, mimeType) {\n\t var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n\t function dsv(url, row, callback) {\n\t if (arguments.length < 3) callback = row, row = null;\n\t var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n\t xhr.row = function(_) {\n\t return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n\t };\n\t return xhr;\n\t }\n\t function response(request) {\n\t return dsv.parse(request.responseText);\n\t }\n\t function typedResponse(f) {\n\t return function(request) {\n\t return dsv.parse(request.responseText, f);\n\t };\n\t }\n\t dsv.parse = function(text, f) {\n\t var o;\n\t return dsv.parseRows(text, function(row, i) {\n\t if (o) return o(row, i - 1);\n\t var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n\t return JSON.stringify(name) + \": d[\" + i + \"]\";\n\t }).join(\",\") + \"}\");\n\t o = f ? function(row, i) {\n\t return f(a(row), i);\n\t } : a;\n\t });\n\t };\n\t dsv.parseRows = function(text, f) {\n\t var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n\t function token() {\n\t if (I >= N) return EOF;\n\t if (eol) return eol = false, EOL;\n\t var j = I;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t var c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n\t }\n\t while (I < N) {\n\t var c = text.charCodeAt(I++), k = 1;\n\t if (c === 10) eol = true; else if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(I) === 10) ++I, ++k;\n\t } else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t return text.slice(j);\n\t }\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t return rows;\n\t };\n\t dsv.format = function(rows) {\n\t if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n\t var fieldSet = new d3_Set(), fields = [];\n\t rows.forEach(function(row) {\n\t for (var field in row) {\n\t if (!fieldSet.has(field)) {\n\t fields.push(fieldSet.add(field));\n\t }\n\t }\n\t });\n\t return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n\t return fields.map(function(field) {\n\t return formatValue(row[field]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t };\n\t dsv.formatRows = function(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t };\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t function formatValue(text) {\n\t return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n\t }\n\t return dsv;\n\t };\n\t d3.csv = d3.dsv(\",\", \"text/csv\");\n\t d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n\t var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n\t setTimeout(callback, 17);\n\t };\n\t d3.timer = function() {\n\t d3_timer.apply(this, arguments);\n\t };\n\t function d3_timer(callback, delay, then) {\n\t var n = arguments.length;\n\t if (n < 2) delay = 0;\n\t if (n < 3) then = Date.now();\n\t var time = then + delay, timer = {\n\t c: callback,\n\t t: time,\n\t n: null\n\t };\n\t if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n\t d3_timer_queueTail = timer;\n\t if (!d3_timer_interval) {\n\t d3_timer_timeout = clearTimeout(d3_timer_timeout);\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t return timer;\n\t }\n\t function d3_timer_step() {\n\t var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n\t if (delay > 24) {\n\t if (isFinite(delay)) {\n\t clearTimeout(d3_timer_timeout);\n\t d3_timer_timeout = setTimeout(d3_timer_step, delay);\n\t }\n\t d3_timer_interval = 0;\n\t } else {\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t }\n\t d3.timer.flush = function() {\n\t d3_timer_mark();\n\t d3_timer_sweep();\n\t };\n\t function d3_timer_mark() {\n\t var now = Date.now(), timer = d3_timer_queueHead;\n\t while (timer) {\n\t if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n\t timer = timer.n;\n\t }\n\t return now;\n\t }\n\t function d3_timer_sweep() {\n\t var t0, t1 = d3_timer_queueHead, time = Infinity;\n\t while (t1) {\n\t if (t1.c) {\n\t if (t1.t < time) time = t1.t;\n\t t1 = (t0 = t1).n;\n\t } else {\n\t t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n\t }\n\t }\n\t d3_timer_queueTail = t0;\n\t return time;\n\t }\n\t function d3_format_precision(x, p) {\n\t return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n\t }\n\t d3.round = function(x, n) {\n\t return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n\t };\n\t var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n\t d3.formatPrefix = function(value, precision) {\n\t var i = 0;\n\t if (value = +value) {\n\t if (value < 0) value *= -1;\n\t if (precision) value = d3.round(value, d3_format_precision(value, precision));\n\t i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n\t i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n\t }\n\t return d3_formatPrefixes[8 + i / 3];\n\t };\n\t function d3_formatPrefix(d, i) {\n\t var k = Math.pow(10, abs(8 - i) * 3);\n\t return {\n\t scale: i > 8 ? function(d) {\n\t return d / k;\n\t } : function(d) {\n\t return d * k;\n\t },\n\t symbol: d\n\t };\n\t }\n\t function d3_locale_numberFormat(locale) {\n\t var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n\t var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = locale_grouping[j = (j + 1) % locale_grouping.length];\n\t }\n\t return t.reverse().join(locale_thousands);\n\t } : d3_identity;\n\t return function(specifier) {\n\t var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n\t if (precision) precision = +precision.substring(1);\n\t if (zfill || fill === \"0\" && align === \"=\") {\n\t zfill = fill = \"0\";\n\t align = \"=\";\n\t }\n\t switch (type) {\n\t case \"n\":\n\t comma = true;\n\t type = \"g\";\n\t break;\n\t\n\t case \"%\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"f\";\n\t break;\n\t\n\t case \"p\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"r\";\n\t break;\n\t\n\t case \"b\":\n\t case \"o\":\n\t case \"x\":\n\t case \"X\":\n\t if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\t\n\t case \"c\":\n\t exponent = false;\n\t\n\t case \"d\":\n\t integer = true;\n\t precision = 0;\n\t break;\n\t\n\t case \"s\":\n\t scale = -1;\n\t type = \"r\";\n\t break;\n\t }\n\t if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n\t if (type == \"r\" && !precision) type = \"g\";\n\t if (precision != null) {\n\t if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n\t }\n\t type = d3_format_types.get(type) || d3_format_typeDefault;\n\t var zcomma = zfill && comma;\n\t return function(value) {\n\t var fullSuffix = suffix;\n\t if (integer && value % 1) return \"\";\n\t var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n\t if (scale < 0) {\n\t var unit = d3.formatPrefix(value, precision);\n\t value = unit.scale(value);\n\t fullSuffix = unit.symbol + suffix;\n\t } else {\n\t value *= scale;\n\t }\n\t value = type(value, precision);\n\t var i = value.lastIndexOf(\".\"), before, after;\n\t if (i < 0) {\n\t var j = exponent ? value.lastIndexOf(\"e\") : -1;\n\t if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n\t } else {\n\t before = value.substring(0, i);\n\t after = locale_decimal + value.substring(i + 1);\n\t }\n\t if (!zfill && comma) before = formatGroup(before, Infinity);\n\t var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n\t if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n\t negative += prefix;\n\t value = before + after;\n\t return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n\t };\n\t };\n\t }\n\t var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n\t var d3_format_types = d3.map({\n\t b: function(x) {\n\t return x.toString(2);\n\t },\n\t c: function(x) {\n\t return String.fromCharCode(x);\n\t },\n\t o: function(x) {\n\t return x.toString(8);\n\t },\n\t x: function(x) {\n\t return x.toString(16);\n\t },\n\t X: function(x) {\n\t return x.toString(16).toUpperCase();\n\t },\n\t g: function(x, p) {\n\t return x.toPrecision(p);\n\t },\n\t e: function(x, p) {\n\t return x.toExponential(p);\n\t },\n\t f: function(x, p) {\n\t return x.toFixed(p);\n\t },\n\t r: function(x, p) {\n\t return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n\t }\n\t });\n\t function d3_format_typeDefault(x) {\n\t return x + \"\";\n\t }\n\t var d3_time = d3.time = {}, d3_date = Date;\n\t function d3_date_utc() {\n\t this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n\t }\n\t d3_date_utc.prototype = {\n\t getDate: function() {\n\t return this._.getUTCDate();\n\t },\n\t getDay: function() {\n\t return this._.getUTCDay();\n\t },\n\t getFullYear: function() {\n\t return this._.getUTCFullYear();\n\t },\n\t getHours: function() {\n\t return this._.getUTCHours();\n\t },\n\t getMilliseconds: function() {\n\t return this._.getUTCMilliseconds();\n\t },\n\t getMinutes: function() {\n\t return this._.getUTCMinutes();\n\t },\n\t getMonth: function() {\n\t return this._.getUTCMonth();\n\t },\n\t getSeconds: function() {\n\t return this._.getUTCSeconds();\n\t },\n\t getTime: function() {\n\t return this._.getTime();\n\t },\n\t getTimezoneOffset: function() {\n\t return 0;\n\t },\n\t valueOf: function() {\n\t return this._.valueOf();\n\t },\n\t setDate: function() {\n\t d3_time_prototype.setUTCDate.apply(this._, arguments);\n\t },\n\t setDay: function() {\n\t d3_time_prototype.setUTCDay.apply(this._, arguments);\n\t },\n\t setFullYear: function() {\n\t d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n\t },\n\t setHours: function() {\n\t d3_time_prototype.setUTCHours.apply(this._, arguments);\n\t },\n\t setMilliseconds: function() {\n\t d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n\t },\n\t setMinutes: function() {\n\t d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n\t },\n\t setMonth: function() {\n\t d3_time_prototype.setUTCMonth.apply(this._, arguments);\n\t },\n\t setSeconds: function() {\n\t d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n\t },\n\t setTime: function() {\n\t d3_time_prototype.setTime.apply(this._, arguments);\n\t }\n\t };\n\t var d3_time_prototype = Date.prototype;\n\t function d3_time_interval(local, step, number) {\n\t function round(date) {\n\t var d0 = local(date), d1 = offset(d0, 1);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t }\n\t function ceil(date) {\n\t step(date = local(new d3_date(date - 1)), 1);\n\t return date;\n\t }\n\t function offset(date, k) {\n\t step(date = new d3_date(+date), k);\n\t return date;\n\t }\n\t function range(t0, t1, dt) {\n\t var time = ceil(t0), times = [];\n\t if (dt > 1) {\n\t while (time < t1) {\n\t if (!(number(time) % dt)) times.push(new Date(+time));\n\t step(time, 1);\n\t }\n\t } else {\n\t while (time < t1) times.push(new Date(+time)), step(time, 1);\n\t }\n\t return times;\n\t }\n\t function range_utc(t0, t1, dt) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = t0;\n\t return range(utc, t1, dt);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t local.floor = local;\n\t local.round = round;\n\t local.ceil = ceil;\n\t local.offset = offset;\n\t local.range = range;\n\t var utc = local.utc = d3_time_interval_utc(local);\n\t utc.floor = utc;\n\t utc.round = d3_time_interval_utc(round);\n\t utc.ceil = d3_time_interval_utc(ceil);\n\t utc.offset = d3_time_interval_utc(offset);\n\t utc.range = range_utc;\n\t return local;\n\t }\n\t function d3_time_interval_utc(method) {\n\t return function(date, k) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = date;\n\t return method(utc, k)._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t }\n\t d3_time.year = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setMonth(0, 1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setFullYear(date.getFullYear() + offset);\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t d3_time.years = d3_time.year.range;\n\t d3_time.years.utc = d3_time.year.utc.range;\n\t d3_time.day = d3_time_interval(function(date) {\n\t var day = new d3_date(2e3, 0);\n\t day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n\t return day;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + offset);\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t d3_time.days = d3_time.day.range;\n\t d3_time.days.utc = d3_time.day.utc.range;\n\t d3_time.dayOfYear = function(date) {\n\t var year = d3_time.year(date);\n\t return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n\t };\n\t [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n\t i = 7 - i;\n\t var interval = d3_time[day] = d3_time_interval(function(date) {\n\t (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n\t return date;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + Math.floor(offset) * 7);\n\t }, function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n\t });\n\t d3_time[day + \"s\"] = interval.range;\n\t d3_time[day + \"s\"].utc = interval.utc.range;\n\t d3_time[day + \"OfYear\"] = function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n\t };\n\t });\n\t d3_time.week = d3_time.sunday;\n\t d3_time.weeks = d3_time.sunday.range;\n\t d3_time.weeks.utc = d3_time.sunday.utc.range;\n\t d3_time.weekOfYear = d3_time.sundayOfYear;\n\t function d3_locale_timeFormat(locale) {\n\t var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n\t function d3_time_format(template) {\n\t var n = template.length;\n\t function format(date) {\n\t var string = [], i = -1, j = 0, c, p, f;\n\t while (++i < n) {\n\t if (template.charCodeAt(i) === 37) {\n\t string.push(template.slice(j, i));\n\t if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n\t if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t string.push(template.slice(j, i));\n\t return string.join(\"\");\n\t }\n\t format.parse = function(string) {\n\t var d = {\n\t y: 1900,\n\t m: 0,\n\t d: 1,\n\t H: 0,\n\t M: 0,\n\t S: 0,\n\t L: 0,\n\t Z: null\n\t }, i = d3_time_parse(d, template, string, 0);\n\t if (i != string.length) return null;\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n\t if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t date.setFullYear(d.y, 0, 1);\n\t date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n\t } else date.setFullYear(d.y, d.m, d.d);\n\t date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n\t return localZ ? date._ : date;\n\t };\n\t format.toString = function() {\n\t return template;\n\t };\n\t return format;\n\t }\n\t function d3_time_parse(date, template, string, j) {\n\t var c, p, t, i = 0, n = template.length, m = string.length;\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = template.charCodeAt(i++);\n\t if (c === 37) {\n\t t = template.charAt(i++);\n\t p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n\t if (!p || (j = p(date, string, j)) < 0) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t return j;\n\t }\n\t d3_time_format.utc = function(template) {\n\t var local = d3_time_format(template);\n\t function format(date) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date();\n\t utc._ = date;\n\t return local(utc);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t format.parse = function(string) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var date = local.parse(string);\n\t return date && date._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t format.toString = local.toString;\n\t return format;\n\t };\n\t d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n\t var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n\t locale_periods.forEach(function(p, i) {\n\t d3_time_periodLookup.set(p.toLowerCase(), i);\n\t });\n\t var d3_time_formats = {\n\t a: function(d) {\n\t return locale_shortDays[d.getDay()];\n\t },\n\t A: function(d) {\n\t return locale_days[d.getDay()];\n\t },\n\t b: function(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t },\n\t B: function(d) {\n\t return locale_months[d.getMonth()];\n\t },\n\t c: d3_time_format(locale_dateTime),\n\t d: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t e: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t H: function(d, p) {\n\t return d3_time_formatPad(d.getHours(), p, 2);\n\t },\n\t I: function(d, p) {\n\t return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n\t },\n\t j: function(d, p) {\n\t return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n\t },\n\t L: function(d, p) {\n\t return d3_time_formatPad(d.getMilliseconds(), p, 3);\n\t },\n\t m: function(d, p) {\n\t return d3_time_formatPad(d.getMonth() + 1, p, 2);\n\t },\n\t M: function(d, p) {\n\t return d3_time_formatPad(d.getMinutes(), p, 2);\n\t },\n\t p: function(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t },\n\t S: function(d, p) {\n\t return d3_time_formatPad(d.getSeconds(), p, 2);\n\t },\n\t U: function(d, p) {\n\t return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n\t },\n\t w: function(d) {\n\t return d.getDay();\n\t },\n\t W: function(d, p) {\n\t return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n\t },\n\t x: d3_time_format(locale_date),\n\t X: d3_time_format(locale_time),\n\t y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n\t },\n\t Y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n\t },\n\t Z: d3_time_zone,\n\t \"%\": function() {\n\t return \"%\";\n\t }\n\t };\n\t var d3_time_parsers = {\n\t a: d3_time_parseWeekdayAbbrev,\n\t A: d3_time_parseWeekday,\n\t b: d3_time_parseMonthAbbrev,\n\t B: d3_time_parseMonth,\n\t c: d3_time_parseLocaleFull,\n\t d: d3_time_parseDay,\n\t e: d3_time_parseDay,\n\t H: d3_time_parseHour24,\n\t I: d3_time_parseHour24,\n\t j: d3_time_parseDayOfYear,\n\t L: d3_time_parseMilliseconds,\n\t m: d3_time_parseMonthNumber,\n\t M: d3_time_parseMinutes,\n\t p: d3_time_parseAmPm,\n\t S: d3_time_parseSeconds,\n\t U: d3_time_parseWeekNumberSunday,\n\t w: d3_time_parseWeekdayNumber,\n\t W: d3_time_parseWeekNumberMonday,\n\t x: d3_time_parseLocaleDate,\n\t X: d3_time_parseLocaleTime,\n\t y: d3_time_parseYear,\n\t Y: d3_time_parseFullYear,\n\t Z: d3_time_parseZone,\n\t \"%\": d3_time_parseLiteralPercent\n\t };\n\t function d3_time_parseWeekdayAbbrev(date, string, i) {\n\t d3_time_dayAbbrevRe.lastIndex = 0;\n\t var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekday(date, string, i) {\n\t d3_time_dayRe.lastIndex = 0;\n\t var n = d3_time_dayRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonthAbbrev(date, string, i) {\n\t d3_time_monthAbbrevRe.lastIndex = 0;\n\t var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonth(date, string, i) {\n\t d3_time_monthRe.lastIndex = 0;\n\t var n = d3_time_monthRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseLocaleFull(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleDate(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleTime(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n\t }\n\t function d3_time_parseAmPm(date, string, i) {\n\t var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n\t return n == null ? -1 : (date.p = n, i);\n\t }\n\t return d3_time_format;\n\t }\n\t var d3_time_formatPads = {\n\t \"-\": \"\",\n\t _: \" \",\n\t \"0\": \"0\"\n\t }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n\t function d3_time_formatPad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t function d3_time_formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n\t }\n\t function d3_time_formatLookup(names) {\n\t var map = new d3_Map(), i = -1, n = names.length;\n\t while (++i < n) map.set(names[i].toLowerCase(), i);\n\t return map;\n\t }\n\t function d3_time_parseWeekdayNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n\t return n ? (date.w = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberSunday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.U = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberMonday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.W = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseFullYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n\t return n ? (date.y = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseZone(date, string, i) {\n\t return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n\t i + 5) : -1;\n\t }\n\t function d3_time_expandYear(d) {\n\t return d + (d > 68 ? 1900 : 2e3);\n\t }\n\t function d3_time_parseMonthNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDay(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.d = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDayOfYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.j = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseHour24(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.H = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMinutes(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.M = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseSeconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.S = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMilliseconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.L = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_zone(d) {\n\t var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n\t return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n\t }\n\t function d3_time_parseLiteralPercent(date, string, i) {\n\t d3_time_percentRe.lastIndex = 0;\n\t var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t function d3_time_formatMulti(formats) {\n\t var n = formats.length, i = -1;\n\t while (++i < n) formats[i][0] = this(formats[i][0]);\n\t return function(date) {\n\t var i = 0, f = formats[i];\n\t while (!f[1](date)) f = formats[++i];\n\t return f[0](date);\n\t };\n\t }\n\t d3.locale = function(locale) {\n\t return {\n\t numberFormat: d3_locale_numberFormat(locale),\n\t timeFormat: d3_locale_timeFormat(locale)\n\t };\n\t };\n\t var d3_locale_enUS = d3.locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [ 3 ],\n\t currency: [ \"$\", \"\" ],\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%m/%d/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [ \"AM\", \"PM\" ],\n\t days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n\t shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n\t });\n\t d3.format = d3_locale_enUS.numberFormat;\n\t d3.geo = {};\n\t function d3_adder() {}\n\t d3_adder.prototype = {\n\t s: 0,\n\t t: 0,\n\t add: function(y) {\n\t d3_adderSum(y, this.t, d3_adderTemp);\n\t d3_adderSum(d3_adderTemp.s, this.s, this);\n\t if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n\t },\n\t reset: function() {\n\t this.s = this.t = 0;\n\t },\n\t valueOf: function() {\n\t return this.s;\n\t }\n\t };\n\t var d3_adderTemp = new d3_adder();\n\t function d3_adderSum(a, b, o) {\n\t var x = o.s = a + b, bv = x - a, av = x - bv;\n\t o.t = a - av + (b - bv);\n\t }\n\t d3.geo.stream = function(object, listener) {\n\t if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n\t d3_geo_streamObjectType[object.type](object, listener);\n\t } else {\n\t d3_geo_streamGeometry(object, listener);\n\t }\n\t };\n\t function d3_geo_streamGeometry(geometry, listener) {\n\t if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n\t d3_geo_streamGeometryType[geometry.type](geometry, listener);\n\t }\n\t }\n\t var d3_geo_streamObjectType = {\n\t Feature: function(feature, listener) {\n\t d3_geo_streamGeometry(feature.geometry, listener);\n\t },\n\t FeatureCollection: function(object, listener) {\n\t var features = object.features, i = -1, n = features.length;\n\t while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n\t }\n\t };\n\t var d3_geo_streamGeometryType = {\n\t Sphere: function(object, listener) {\n\t listener.sphere();\n\t },\n\t Point: function(object, listener) {\n\t object = object.coordinates;\n\t listener.point(object[0], object[1], object[2]);\n\t },\n\t MultiPoint: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n\t },\n\t LineString: function(object, listener) {\n\t d3_geo_streamLine(object.coordinates, listener, 0);\n\t },\n\t MultiLineString: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n\t },\n\t Polygon: function(object, listener) {\n\t d3_geo_streamPolygon(object.coordinates, listener);\n\t },\n\t MultiPolygon: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n\t },\n\t GeometryCollection: function(object, listener) {\n\t var geometries = object.geometries, i = -1, n = geometries.length;\n\t while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n\t }\n\t };\n\t function d3_geo_streamLine(coordinates, listener, closed) {\n\t var i = -1, n = coordinates.length - closed, coordinate;\n\t listener.lineStart();\n\t while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n\t listener.lineEnd();\n\t }\n\t function d3_geo_streamPolygon(coordinates, listener) {\n\t var i = -1, n = coordinates.length;\n\t listener.polygonStart();\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n\t listener.polygonEnd();\n\t }\n\t d3.geo.area = function(object) {\n\t d3_geo_areaSum = 0;\n\t d3.geo.stream(object, d3_geo_area);\n\t return d3_geo_areaSum;\n\t };\n\t var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n\t var d3_geo_area = {\n\t sphere: function() {\n\t d3_geo_areaSum += 4 * π;\n\t },\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_areaRingSum.reset();\n\t d3_geo_area.lineStart = d3_geo_areaRingStart;\n\t },\n\t polygonEnd: function() {\n\t var area = 2 * d3_geo_areaRingSum;\n\t d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n\t d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n\t }\n\t };\n\t function d3_geo_areaRingStart() {\n\t var λ00, φ00, λ0, cosφ0, sinφ0;\n\t d3_geo_area.point = function(λ, φ) {\n\t d3_geo_area.point = nextPoint;\n\t λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n\t sinφ0 = Math.sin(φ);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t φ = φ * d3_radians / 2 + π / 4;\n\t var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n\t d3_geo_areaRingSum.add(Math.atan2(v, u));\n\t λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n\t }\n\t d3_geo_area.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t };\n\t }\n\t function d3_geo_cartesian(spherical) {\n\t var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n\t return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n\t }\n\t function d3_geo_cartesianDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t }\n\t function d3_geo_cartesianCross(a, b) {\n\t return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n\t }\n\t function d3_geo_cartesianAdd(a, b) {\n\t a[0] += b[0];\n\t a[1] += b[1];\n\t a[2] += b[2];\n\t }\n\t function d3_geo_cartesianScale(vector, k) {\n\t return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n\t }\n\t function d3_geo_cartesianNormalize(d) {\n\t var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n\t d[0] /= l;\n\t d[1] /= l;\n\t d[2] /= l;\n\t }\n\t function d3_geo_spherical(cartesian) {\n\t return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n\t }\n\t function d3_geo_sphericalEqual(a, b) {\n\t return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n\t }\n\t d3.geo.bounds = function() {\n\t var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n\t var bound = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t bound.point = ringPoint;\n\t bound.lineStart = ringStart;\n\t bound.lineEnd = ringEnd;\n\t dλSum = 0;\n\t d3_geo_area.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t d3_geo_area.polygonEnd();\n\t bound.point = point;\n\t bound.lineStart = lineStart;\n\t bound.lineEnd = lineEnd;\n\t if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n\t range[0] = λ0, range[1] = λ1;\n\t }\n\t };\n\t function point(λ, φ) {\n\t ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t function linePoint(λ, φ) {\n\t var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n\t if (p0) {\n\t var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n\t d3_geo_cartesianNormalize(inflection);\n\t inflection = d3_geo_spherical(inflection);\n\t var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n\t if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = inflection[1] * d3_degrees;\n\t if (φi > φ1) φ1 = φi;\n\t } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = -inflection[1] * d3_degrees;\n\t if (φi < φ0) φ0 = φi;\n\t } else {\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t if (antimeridian) {\n\t if (λ < λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t } else {\n\t if (λ1 >= λ0) {\n\t if (λ < λ0) λ0 = λ;\n\t if (λ > λ1) λ1 = λ;\n\t } else {\n\t if (λ > λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t }\n\t }\n\t } else {\n\t point(λ, φ);\n\t }\n\t p0 = p, λ_ = λ;\n\t }\n\t function lineStart() {\n\t bound.point = linePoint;\n\t }\n\t function lineEnd() {\n\t range[0] = λ0, range[1] = λ1;\n\t bound.point = point;\n\t p0 = null;\n\t }\n\t function ringPoint(λ, φ) {\n\t if (p0) {\n\t var dλ = λ - λ_;\n\t dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n\t } else λ__ = λ, φ__ = φ;\n\t d3_geo_area.point(λ, φ);\n\t linePoint(λ, φ);\n\t }\n\t function ringStart() {\n\t d3_geo_area.lineStart();\n\t }\n\t function ringEnd() {\n\t ringPoint(λ__, φ__);\n\t d3_geo_area.lineEnd();\n\t if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n\t range[0] = λ0, range[1] = λ1;\n\t p0 = null;\n\t }\n\t function angle(λ0, λ1) {\n\t return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n\t }\n\t function compareRanges(a, b) {\n\t return a[0] - b[0];\n\t }\n\t function withinRange(x, range) {\n\t return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n\t }\n\t return function(feature) {\n\t φ1 = λ1 = -(λ0 = φ0 = Infinity);\n\t ranges = [];\n\t d3.geo.stream(feature, bound);\n\t var n = ranges.length;\n\t if (n) {\n\t ranges.sort(compareRanges);\n\t for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n\t b = ranges[i];\n\t if (withinRange(b[0], a) || withinRange(b[1], a)) {\n\t if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n\t if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n\t } else {\n\t merged.push(a = b);\n\t }\n\t }\n\t var best = -Infinity, dλ;\n\t for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n\t b = merged[i];\n\t if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n\t }\n\t }\n\t ranges = range = null;\n\t return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n\t };\n\t }();\n\t d3.geo.centroid = function(object) {\n\t d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, d3_geo_centroid);\n\t var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n\t if (m < ε2) {\n\t x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n\t if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n\t m = x * x + y * y + z * z;\n\t if (m < ε2) return [ NaN, NaN ];\n\t }\n\t return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n\t };\n\t var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n\t var d3_geo_centroid = {\n\t sphere: d3_noop,\n\t point: d3_geo_centroidPoint,\n\t lineStart: d3_geo_centroidLineStart,\n\t lineEnd: d3_geo_centroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n\t }\n\t };\n\t function d3_geo_centroidPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n\t }\n\t function d3_geo_centroidPointXYZ(x, y, z) {\n\t ++d3_geo_centroidW0;\n\t d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n\t d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n\t d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n\t }\n\t function d3_geo_centroidLineStart() {\n\t var x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroid.point = nextPoint;\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_centroidLineEnd() {\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t }\n\t function d3_geo_centroidRingStart() {\n\t var λ00, φ00, x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ00 = λ, φ00 = φ;\n\t d3_geo_centroid.point = nextPoint;\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t d3_geo_centroid.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n\t d3_geo_centroidX2 += v * cx;\n\t d3_geo_centroidY2 += v * cy;\n\t d3_geo_centroidZ2 += v * cz;\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_compose(a, b) {\n\t function compose(x, y) {\n\t return x = a(x, y), b(x[0], x[1]);\n\t }\n\t if (a.invert && b.invert) compose.invert = function(x, y) {\n\t return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n\t };\n\t return compose;\n\t }\n\t function d3_true() {\n\t return true;\n\t }\n\t function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n\t var subject = [], clip = [];\n\t segments.forEach(function(segment) {\n\t if ((n = segment.length - 1) <= 0) return;\n\t var n, p0 = segment[0], p1 = segment[n];\n\t if (d3_geo_sphericalEqual(p0, p1)) {\n\t listener.lineStart();\n\t for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n\t listener.lineEnd();\n\t return;\n\t }\n\t var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n\t b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t });\n\t clip.sort(compare);\n\t d3_geo_clipPolygonLinkCircular(subject);\n\t d3_geo_clipPolygonLinkCircular(clip);\n\t if (!subject.length) return;\n\t for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n\t clip[i].e = entry = !entry;\n\t }\n\t var start = subject[0], points, point;\n\t while (1) {\n\t var current = start, isSubject = true;\n\t while (current.v) if ((current = current.n) === start) return;\n\t points = current.z;\n\t listener.lineStart();\n\t do {\n\t current.v = current.o.v = true;\n\t if (current.e) {\n\t if (isSubject) {\n\t for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.n.x, 1, listener);\n\t }\n\t current = current.n;\n\t } else {\n\t if (isSubject) {\n\t points = current.p.z;\n\t for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.p.x, -1, listener);\n\t }\n\t current = current.p;\n\t }\n\t current = current.o;\n\t points = current.z;\n\t isSubject = !isSubject;\n\t } while (!current.v);\n\t listener.lineEnd();\n\t }\n\t }\n\t function d3_geo_clipPolygonLinkCircular(array) {\n\t if (!(n = array.length)) return;\n\t var n, i = 0, a = array[0], b;\n\t while (++i < n) {\n\t a.n = b = array[i];\n\t b.p = a;\n\t a = b;\n\t }\n\t a.n = b = array[0];\n\t b.p = a;\n\t }\n\t function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n\t this.x = point;\n\t this.z = points;\n\t this.o = other;\n\t this.e = entry;\n\t this.v = false;\n\t this.n = this.p = null;\n\t }\n\t function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n\t return function(rotate, listener) {\n\t var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t clip.point = pointRing;\n\t clip.lineStart = ringStart;\n\t clip.lineEnd = ringEnd;\n\t segments = [];\n\t polygon = [];\n\t },\n\t polygonEnd: function() {\n\t clip.point = point;\n\t clip.lineStart = lineStart;\n\t clip.lineEnd = lineEnd;\n\t segments = d3.merge(segments);\n\t var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n\t if (segments.length) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n\t } else if (clipStartInside) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n\t segments = polygon = null;\n\t },\n\t sphere: function() {\n\t listener.polygonStart();\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t listener.polygonEnd();\n\t }\n\t };\n\t function point(λ, φ) {\n\t var point = rotate(λ, φ);\n\t if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n\t }\n\t function pointLine(λ, φ) {\n\t var point = rotate(λ, φ);\n\t line.point(point[0], point[1]);\n\t }\n\t function lineStart() {\n\t clip.point = pointLine;\n\t line.lineStart();\n\t }\n\t function lineEnd() {\n\t clip.point = point;\n\t line.lineEnd();\n\t }\n\t var segments;\n\t var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n\t function pointRing(λ, φ) {\n\t ring.push([ λ, φ ]);\n\t var point = rotate(λ, φ);\n\t ringListener.point(point[0], point[1]);\n\t }\n\t function ringStart() {\n\t ringListener.lineStart();\n\t ring = [];\n\t }\n\t function ringEnd() {\n\t pointRing(ring[0][0], ring[0][1]);\n\t ringListener.lineEnd();\n\t var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n\t ring.pop();\n\t polygon.push(ring);\n\t ring = null;\n\t if (!n) return;\n\t if (clean & 1) {\n\t segment = ringSegments[0];\n\t var n = segment.length - 1, i = -1, point;\n\t if (n > 0) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t while (++i < n) listener.point((point = segment[i])[0], point[1]);\n\t listener.lineEnd();\n\t }\n\t return;\n\t }\n\t if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\t segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n\t }\n\t return clip;\n\t };\n\t }\n\t function d3_geo_clipSegmentLength1(segment) {\n\t return segment.length > 1;\n\t }\n\t function d3_geo_clipBufferListener() {\n\t var lines = [], line;\n\t return {\n\t lineStart: function() {\n\t lines.push(line = []);\n\t },\n\t point: function(λ, φ) {\n\t line.push([ λ, φ ]);\n\t },\n\t lineEnd: d3_noop,\n\t buffer: function() {\n\t var buffer = lines;\n\t lines = [];\n\t line = null;\n\t return buffer;\n\t },\n\t rejoin: function() {\n\t if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n\t }\n\t };\n\t }\n\t function d3_geo_clipSort(a, b) {\n\t return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n\t }\n\t var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n\t function d3_geo_clipAntimeridianLine(listener) {\n\t var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n\t return {\n\t lineStart: function() {\n\t listener.lineStart();\n\t clean = 1;\n\t },\n\t point: function(λ1, φ1) {\n\t var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n\t if (abs(dλ - π) < ε) {\n\t listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t listener.point(λ1, φ0);\n\t clean = 0;\n\t } else if (sλ0 !== sλ1 && dλ >= π) {\n\t if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n\t if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n\t φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t clean = 0;\n\t }\n\t listener.point(λ0 = λ1, φ0 = φ1);\n\t sλ0 = sλ1;\n\t },\n\t lineEnd: function() {\n\t listener.lineEnd();\n\t λ0 = φ0 = NaN;\n\t },\n\t clean: function() {\n\t return 2 - clean;\n\t }\n\t };\n\t }\n\t function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n\t var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n\t return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n\t }\n\t function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n\t var φ;\n\t if (from == null) {\n\t φ = direction * halfπ;\n\t listener.point(-π, φ);\n\t listener.point(0, φ);\n\t listener.point(π, φ);\n\t listener.point(π, 0);\n\t listener.point(π, -φ);\n\t listener.point(0, -φ);\n\t listener.point(-π, -φ);\n\t listener.point(-π, 0);\n\t listener.point(-π, φ);\n\t } else if (abs(from[0] - to[0]) > ε) {\n\t var s = from[0] < to[0] ? π : -π;\n\t φ = direction * s / 2;\n\t listener.point(-s, φ);\n\t listener.point(0, φ);\n\t listener.point(s, φ);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function d3_geo_pointInPolygon(point, polygon) {\n\t var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n\t d3_geo_areaRingSum.reset();\n\t for (var i = 0, n = polygon.length; i < n; ++i) {\n\t var ring = polygon[i], m = ring.length;\n\t if (!m) continue;\n\t var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n\t while (true) {\n\t if (j === m) j = 0;\n\t point = ring[j];\n\t var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n\t d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n\t polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n\t if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n\t var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n\t d3_geo_cartesianNormalize(arc);\n\t var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n\t d3_geo_cartesianNormalize(intersection);\n\t var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n\t if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n\t winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n\t }\n\t }\n\t if (!j++) break;\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n\t }\n\t }\n\t return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n\t }\n\t function d3_geo_clipCircle(radius) {\n\t var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n\t return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n\t function visible(λ, φ) {\n\t return Math.cos(λ) * Math.cos(φ) > cr;\n\t }\n\t function clipLine(listener) {\n\t var point0, c0, v0, v00, clean;\n\t return {\n\t lineStart: function() {\n\t v00 = v0 = false;\n\t clean = 1;\n\t },\n\t point: function(λ, φ) {\n\t var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n\t if (!point0 && (v00 = v0 = v)) listener.lineStart();\n\t if (v !== v0) {\n\t point2 = intersect(point0, point1);\n\t if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n\t point1[0] += ε;\n\t point1[1] += ε;\n\t v = visible(point1[0], point1[1]);\n\t }\n\t }\n\t if (v !== v0) {\n\t clean = 0;\n\t if (v) {\n\t listener.lineStart();\n\t point2 = intersect(point1, point0);\n\t listener.point(point2[0], point2[1]);\n\t } else {\n\t point2 = intersect(point0, point1);\n\t listener.point(point2[0], point2[1]);\n\t listener.lineEnd();\n\t }\n\t point0 = point2;\n\t } else if (notHemisphere && point0 && smallRadius ^ v) {\n\t var t;\n\t if (!(c & c0) && (t = intersect(point1, point0, true))) {\n\t clean = 0;\n\t if (smallRadius) {\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t } else {\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t }\n\t }\n\t }\n\t if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n\t listener.point(point1[0], point1[1]);\n\t }\n\t point0 = point1, v0 = v, c0 = c;\n\t },\n\t lineEnd: function() {\n\t if (v0) listener.lineEnd();\n\t point0 = null;\n\t },\n\t clean: function() {\n\t return clean | (v00 && v0) << 1;\n\t }\n\t };\n\t }\n\t function intersect(a, b, two) {\n\t var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n\t var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n\t if (!determinant) return !two && a;\n\t var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n\t d3_geo_cartesianAdd(A, B);\n\t var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n\t if (t2 < 0) return;\n\t var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n\t d3_geo_cartesianAdd(q, A);\n\t q = d3_geo_spherical(q);\n\t if (!two) return q;\n\t var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n\t if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n\t var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n\t if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n\t if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n\t var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n\t d3_geo_cartesianAdd(q1, A);\n\t return [ q, d3_geo_spherical(q1) ];\n\t }\n\t }\n\t function code(λ, φ) {\n\t var r = smallRadius ? radius : π - radius, code = 0;\n\t if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n\t if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n\t return code;\n\t }\n\t }\n\t function d3_geom_clipLine(x0, y0, x1, y1) {\n\t return function(line) {\n\t var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n\t r = x0 - ax;\n\t if (!dx && r > 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dx > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = x1 - ax;\n\t if (!dx && r < 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dx > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t r = y0 - ay;\n\t if (!dy && r > 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dy > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = y1 - ay;\n\t if (!dy && r < 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dy > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t if (t0 > 0) line.a = {\n\t x: ax + t0 * dx,\n\t y: ay + t0 * dy\n\t };\n\t if (t1 < 1) line.b = {\n\t x: ax + t1 * dx,\n\t y: ay + t1 * dy\n\t };\n\t return line;\n\t };\n\t }\n\t var d3_geo_clipExtentMAX = 1e9;\n\t d3.geo.clipExtent = function() {\n\t var x0, y0, x1, y1, stream, clip, clipExtent = {\n\t stream: function(output) {\n\t if (stream) stream.valid = false;\n\t stream = clip(output);\n\t stream.valid = true;\n\t return stream;\n\t },\n\t extent: function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n\t if (stream) stream.valid = false, stream = null;\n\t return clipExtent;\n\t }\n\t };\n\t return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n\t };\n\t function d3_geo_clipExtent(x0, y0, x1, y1) {\n\t return function(listener) {\n\t var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t listener = bufferListener;\n\t segments = [];\n\t polygon = [];\n\t clean = true;\n\t },\n\t polygonEnd: function() {\n\t listener = listener_;\n\t segments = d3.merge(segments);\n\t var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n\t if (inside || visible) {\n\t listener.polygonStart();\n\t if (inside) {\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (visible) {\n\t d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n\t }\n\t listener.polygonEnd();\n\t }\n\t segments = polygon = ring = null;\n\t }\n\t };\n\t function insidePolygon(p) {\n\t var wn = 0, n = polygon.length, y = p[1];\n\t for (var i = 0; i < n; ++i) {\n\t for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n\t b = v[j];\n\t if (a[1] <= y) {\n\t if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n\t } else {\n\t if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n\t }\n\t a = b;\n\t }\n\t }\n\t return wn !== 0;\n\t }\n\t function interpolate(from, to, direction, listener) {\n\t var a = 0, a1 = 0;\n\t if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n\t do {\n\t listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n\t } while ((a = (a + direction + 4) % 4) !== a1);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function pointVisible(x, y) {\n\t return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n\t }\n\t function point(x, y) {\n\t if (pointVisible(x, y)) listener.point(x, y);\n\t }\n\t var x__, y__, v__, x_, y_, v_, first, clean;\n\t function lineStart() {\n\t clip.point = linePoint;\n\t if (polygon) polygon.push(ring = []);\n\t first = true;\n\t v_ = false;\n\t x_ = y_ = NaN;\n\t }\n\t function lineEnd() {\n\t if (segments) {\n\t linePoint(x__, y__);\n\t if (v__ && v_) bufferListener.rejoin();\n\t segments.push(bufferListener.buffer());\n\t }\n\t clip.point = point;\n\t if (v_) listener.lineEnd();\n\t }\n\t function linePoint(x, y) {\n\t x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n\t y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n\t var v = pointVisible(x, y);\n\t if (polygon) ring.push([ x, y ]);\n\t if (first) {\n\t x__ = x, y__ = y, v__ = v;\n\t first = false;\n\t if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t }\n\t } else {\n\t if (v && v_) listener.point(x, y); else {\n\t var l = {\n\t a: {\n\t x: x_,\n\t y: y_\n\t },\n\t b: {\n\t x: x,\n\t y: y\n\t }\n\t };\n\t if (clipLine(l)) {\n\t if (!v_) {\n\t listener.lineStart();\n\t listener.point(l.a.x, l.a.y);\n\t }\n\t listener.point(l.b.x, l.b.y);\n\t if (!v) listener.lineEnd();\n\t clean = false;\n\t } else if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t clean = false;\n\t }\n\t }\n\t }\n\t x_ = x, y_ = y, v_ = v;\n\t }\n\t return clip;\n\t };\n\t function corner(p, direction) {\n\t return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n\t }\n\t function compare(a, b) {\n\t return comparePoints(a.x, b.x);\n\t }\n\t function comparePoints(a, b) {\n\t var ca = corner(a, 1), cb = corner(b, 1);\n\t return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n\t }\n\t }\n\t function d3_geo_conic(projectAt) {\n\t var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n\t p.parallels = function(_) {\n\t if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n\t return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n\t };\n\t return p;\n\t }\n\t function d3_geo_conicEqualArea(φ0, φ1) {\n\t var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n\t function forward(λ, φ) {\n\t var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n\t return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = ρ0 - y;\n\t return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEqualArea = function() {\n\t return d3_geo_conic(d3_geo_conicEqualArea);\n\t }).raw = d3_geo_conicEqualArea;\n\t d3.geo.albers = function() {\n\t return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n\t };\n\t d3.geo.albersUsa = function() {\n\t var lower48 = d3.geo.albers();\n\t var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n\t var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n\t var point, pointStream = {\n\t point: function(x, y) {\n\t point = [ x, y ];\n\t }\n\t }, lower48Point, alaskaPoint, hawaiiPoint;\n\t function albersUsa(coordinates) {\n\t var x = coordinates[0], y = coordinates[1];\n\t point = null;\n\t (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n\t return point;\n\t }\n\t albersUsa.invert = function(coordinates) {\n\t var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n\t return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n\t };\n\t albersUsa.stream = function(stream) {\n\t var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n\t return {\n\t point: function(x, y) {\n\t lower48Stream.point(x, y);\n\t alaskaStream.point(x, y);\n\t hawaiiStream.point(x, y);\n\t },\n\t sphere: function() {\n\t lower48Stream.sphere();\n\t alaskaStream.sphere();\n\t hawaiiStream.sphere();\n\t },\n\t lineStart: function() {\n\t lower48Stream.lineStart();\n\t alaskaStream.lineStart();\n\t hawaiiStream.lineStart();\n\t },\n\t lineEnd: function() {\n\t lower48Stream.lineEnd();\n\t alaskaStream.lineEnd();\n\t hawaiiStream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t lower48Stream.polygonStart();\n\t alaskaStream.polygonStart();\n\t hawaiiStream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t lower48Stream.polygonEnd();\n\t alaskaStream.polygonEnd();\n\t hawaiiStream.polygonEnd();\n\t }\n\t };\n\t };\n\t albersUsa.precision = function(_) {\n\t if (!arguments.length) return lower48.precision();\n\t lower48.precision(_);\n\t alaska.precision(_);\n\t hawaii.precision(_);\n\t return albersUsa;\n\t };\n\t albersUsa.scale = function(_) {\n\t if (!arguments.length) return lower48.scale();\n\t lower48.scale(_);\n\t alaska.scale(_ * .35);\n\t hawaii.scale(_);\n\t return albersUsa.translate(lower48.translate());\n\t };\n\t albersUsa.translate = function(_) {\n\t if (!arguments.length) return lower48.translate();\n\t var k = lower48.scale(), x = +_[0], y = +_[1];\n\t lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n\t alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t return albersUsa;\n\t };\n\t return albersUsa.scale(1070);\n\t };\n\t var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_pathAreaPolygon = 0;\n\t d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n\t d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n\t }\n\t };\n\t function d3_geo_pathAreaRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathArea.point = function(x, y) {\n\t d3_geo_pathArea.point = nextPoint;\n\t x00 = x0 = x, y00 = y0 = y;\n\t };\n\t function nextPoint(x, y) {\n\t d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n\t x0 = x, y0 = y;\n\t }\n\t d3_geo_pathArea.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n\t var d3_geo_pathBounds = {\n\t point: d3_geo_pathBoundsPoint,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_pathBoundsPoint(x, y) {\n\t if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n\t if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n\t if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n\t if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n\t }\n\t function d3_geo_pathBuffer() {\n\t var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointCircle = d3_geo_pathBufferCircle(_);\n\t return stream;\n\t },\n\t result: function() {\n\t if (buffer.length) {\n\t var result = buffer.join(\"\");\n\t buffer = [];\n\t return result;\n\t }\n\t }\n\t };\n\t function point(x, y) {\n\t buffer.push(\"M\", x, \",\", y, pointCircle);\n\t }\n\t function pointLineStart(x, y) {\n\t buffer.push(\"M\", x, \",\", y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t buffer.push(\"L\", x, \",\", y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t buffer.push(\"Z\");\n\t }\n\t return stream;\n\t }\n\t function d3_geo_pathBufferCircle(radius) {\n\t return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n\t }\n\t var d3_geo_pathCentroid = {\n\t point: d3_geo_pathCentroidPoint,\n\t lineStart: d3_geo_pathCentroidLineStart,\n\t lineEnd: d3_geo_pathCentroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n\t d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n\t }\n\t };\n\t function d3_geo_pathCentroidPoint(x, y) {\n\t d3_geo_centroidX0 += x;\n\t d3_geo_centroidY0 += y;\n\t ++d3_geo_centroidZ0;\n\t }\n\t function d3_geo_pathCentroidLineStart() {\n\t var x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t }\n\t function d3_geo_pathCentroidLineEnd() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t }\n\t function d3_geo_pathCentroidRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t z = y0 * x - x0 * y;\n\t d3_geo_centroidX2 += z * (x0 + x);\n\t d3_geo_centroidY2 += z * (y0 + y);\n\t d3_geo_centroidZ2 += z * 3;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t d3_geo_pathCentroid.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t function d3_geo_pathContext(context) {\n\t var pointRadius = 4.5;\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointRadius = _;\n\t return stream;\n\t },\n\t result: d3_noop\n\t };\n\t function point(x, y) {\n\t context.moveTo(x + pointRadius, y);\n\t context.arc(x, y, pointRadius, 0, τ);\n\t }\n\t function pointLineStart(x, y) {\n\t context.moveTo(x, y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t context.lineTo(x, y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t context.closePath();\n\t }\n\t return stream;\n\t }\n\t function d3_geo_resample(project) {\n\t var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n\t function resample(stream) {\n\t return (maxDepth ? resampleRecursive : resampleNone)(stream);\n\t }\n\t function resampleNone(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t });\n\t }\n\t function resampleRecursive(stream) {\n\t var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n\t var resample = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t resample.lineStart = ringStart;\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t resample.lineStart = lineStart;\n\t }\n\t };\n\t function point(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t }\n\t function lineStart() {\n\t x0 = NaN;\n\t resample.point = linePoint;\n\t stream.lineStart();\n\t }\n\t function linePoint(λ, φ) {\n\t var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n\t stream.point(x0, y0);\n\t }\n\t function lineEnd() {\n\t resample.point = point;\n\t stream.lineEnd();\n\t }\n\t function ringStart() {\n\t lineStart();\n\t resample.point = ringPoint;\n\t resample.lineEnd = ringEnd;\n\t }\n\t function ringPoint(λ, φ) {\n\t linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n\t resample.point = linePoint;\n\t }\n\t function ringEnd() {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n\t resample.lineEnd = lineEnd;\n\t lineEnd();\n\t }\n\t return resample;\n\t }\n\t function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n\t var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n\t if (d2 > 4 * δ2 && depth--) {\n\t var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n\t if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n\t stream.point(x2, y2);\n\t resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n\t }\n\t }\n\t }\n\t resample.precision = function(_) {\n\t if (!arguments.length) return Math.sqrt(δ2);\n\t maxDepth = (δ2 = _ * _) > 0 && 16;\n\t return resample;\n\t };\n\t return resample;\n\t }\n\t d3.geo.path = function() {\n\t var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n\t function path(object) {\n\t if (object) {\n\t if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n\t if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n\t d3.geo.stream(object, cacheStream);\n\t }\n\t return contextStream.result();\n\t }\n\t path.area = function(object) {\n\t d3_geo_pathAreaSum = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathArea));\n\t return d3_geo_pathAreaSum;\n\t };\n\t path.centroid = function(object) {\n\t d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n\t return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n\t };\n\t path.bounds = function(object) {\n\t d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n\t d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n\t return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n\t };\n\t path.projection = function(_) {\n\t if (!arguments.length) return projection;\n\t projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n\t return reset();\n\t };\n\t path.context = function(_) {\n\t if (!arguments.length) return context;\n\t contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n\t if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n\t return reset();\n\t };\n\t path.pointRadius = function(_) {\n\t if (!arguments.length) return pointRadius;\n\t pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n\t return path;\n\t };\n\t function reset() {\n\t cacheStream = null;\n\t return path;\n\t }\n\t return path.projection(d3.geo.albersUsa()).context(null);\n\t };\n\t function d3_geo_pathProjectStream(project) {\n\t var resample = d3_geo_resample(function(x, y) {\n\t return project([ x * d3_degrees, y * d3_degrees ]);\n\t });\n\t return function(stream) {\n\t return d3_geo_projectionRadians(resample(stream));\n\t };\n\t }\n\t d3.geo.transform = function(methods) {\n\t return {\n\t stream: function(stream) {\n\t var transform = new d3_geo_transform(stream);\n\t for (var k in methods) transform[k] = methods[k];\n\t return transform;\n\t }\n\t };\n\t };\n\t function d3_geo_transform(stream) {\n\t this.stream = stream;\n\t }\n\t d3_geo_transform.prototype = {\n\t point: function(x, y) {\n\t this.stream.point(x, y);\n\t },\n\t sphere: function() {\n\t this.stream.sphere();\n\t },\n\t lineStart: function() {\n\t this.stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t this.stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t this.stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t this.stream.polygonEnd();\n\t }\n\t };\n\t function d3_geo_transformPoint(stream, point) {\n\t return {\n\t point: point,\n\t sphere: function() {\n\t stream.sphere();\n\t },\n\t lineStart: function() {\n\t stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t }\n\t };\n\t }\n\t d3.geo.projection = d3_geo_projection;\n\t d3.geo.projectionMutator = d3_geo_projectionMutator;\n\t function d3_geo_projection(project) {\n\t return d3_geo_projectionMutator(function() {\n\t return project;\n\t })();\n\t }\n\t function d3_geo_projectionMutator(projectAt) {\n\t var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n\t x = project(x, y);\n\t return [ x[0] * k + δx, δy - x[1] * k ];\n\t }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n\t function projection(point) {\n\t point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n\t return [ point[0] * k + δx, δy - point[1] * k ];\n\t }\n\t function invert(point) {\n\t point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n\t return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n\t }\n\t projection.stream = function(output) {\n\t if (stream) stream.valid = false;\n\t stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n\t stream.valid = true;\n\t return stream;\n\t };\n\t projection.clipAngle = function(_) {\n\t if (!arguments.length) return clipAngle;\n\t preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n\t return invalidate();\n\t };\n\t projection.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent;\n\t clipExtent = _;\n\t postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n\t return invalidate();\n\t };\n\t projection.scale = function(_) {\n\t if (!arguments.length) return k;\n\t k = +_;\n\t return reset();\n\t };\n\t projection.translate = function(_) {\n\t if (!arguments.length) return [ x, y ];\n\t x = +_[0];\n\t y = +_[1];\n\t return reset();\n\t };\n\t projection.center = function(_) {\n\t if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n\t λ = _[0] % 360 * d3_radians;\n\t φ = _[1] % 360 * d3_radians;\n\t return reset();\n\t };\n\t projection.rotate = function(_) {\n\t if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n\t δλ = _[0] % 360 * d3_radians;\n\t δφ = _[1] % 360 * d3_radians;\n\t δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n\t return reset();\n\t };\n\t d3.rebind(projection, projectResample, \"precision\");\n\t function reset() {\n\t projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n\t var center = project(λ, φ);\n\t δx = x - center[0] * k;\n\t δy = y + center[1] * k;\n\t return invalidate();\n\t }\n\t function invalidate() {\n\t if (stream) stream.valid = false, stream = null;\n\t return projection;\n\t }\n\t return function() {\n\t project = projectAt.apply(this, arguments);\n\t projection.invert = project.invert && invert;\n\t return reset();\n\t };\n\t }\n\t function d3_geo_projectionRadians(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t stream.point(x * d3_radians, y * d3_radians);\n\t });\n\t }\n\t function d3_geo_equirectangular(λ, φ) {\n\t return [ λ, φ ];\n\t }\n\t (d3.geo.equirectangular = function() {\n\t return d3_geo_projection(d3_geo_equirectangular);\n\t }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n\t d3.geo.rotation = function(rotate) {\n\t rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n\t function forward(coordinates) {\n\t coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t }\n\t forward.invert = function(coordinates) {\n\t coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t };\n\t return forward;\n\t };\n\t function d3_geo_identityRotation(λ, φ) {\n\t return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t }\n\t d3_geo_identityRotation.invert = d3_geo_equirectangular;\n\t function d3_geo_rotation(δλ, δφ, δγ) {\n\t return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n\t }\n\t function d3_geo_forwardRotationλ(δλ) {\n\t return function(λ, φ) {\n\t return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t };\n\t }\n\t function d3_geo_rotationλ(δλ) {\n\t var rotation = d3_geo_forwardRotationλ(δλ);\n\t rotation.invert = d3_geo_forwardRotationλ(-δλ);\n\t return rotation;\n\t }\n\t function d3_geo_rotationφγ(δφ, δγ) {\n\t var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n\t function rotation(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n\t return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n\t }\n\t rotation.invert = function(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n\t return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n\t };\n\t return rotation;\n\t }\n\t d3.geo.circle = function() {\n\t var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n\t function circle() {\n\t var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n\t interpolate(null, null, 1, {\n\t point: function(x, y) {\n\t ring.push(x = rotate(x, y));\n\t x[0] *= d3_degrees, x[1] *= d3_degrees;\n\t }\n\t });\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ ring ]\n\t };\n\t }\n\t circle.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return circle;\n\t };\n\t circle.angle = function(x) {\n\t if (!arguments.length) return angle;\n\t interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n\t return circle;\n\t };\n\t circle.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n\t return circle;\n\t };\n\t return circle.angle(90);\n\t };\n\t function d3_geo_circleInterpolate(radius, precision) {\n\t var cr = Math.cos(radius), sr = Math.sin(radius);\n\t return function(from, to, direction, listener) {\n\t var step = direction * precision;\n\t if (from != null) {\n\t from = d3_geo_circleAngle(cr, from);\n\t to = d3_geo_circleAngle(cr, to);\n\t if (direction > 0 ? from < to : from > to) from += direction * τ;\n\t } else {\n\t from = radius + direction * τ;\n\t to = radius - .5 * step;\n\t }\n\t for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n\t listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n\t }\n\t };\n\t }\n\t function d3_geo_circleAngle(cr, point) {\n\t var a = d3_geo_cartesian(point);\n\t a[0] -= cr;\n\t d3_geo_cartesianNormalize(a);\n\t var angle = d3_acos(-a[1]);\n\t return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n\t }\n\t d3.geo.distance = function(a, b) {\n\t var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n\t return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n\t };\n\t d3.geo.graticule = function() {\n\t var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n\t function graticule() {\n\t return {\n\t type: \"MultiLineString\",\n\t coordinates: lines()\n\t };\n\t }\n\t function lines() {\n\t return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n\t return abs(x % DX) > ε;\n\t }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n\t return abs(y % DY) > ε;\n\t }).map(y));\n\t }\n\t graticule.lines = function() {\n\t return lines().map(function(coordinates) {\n\t return {\n\t type: \"LineString\",\n\t coordinates: coordinates\n\t };\n\t });\n\t };\n\t graticule.outline = function() {\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n\t };\n\t };\n\t graticule.extent = function(_) {\n\t if (!arguments.length) return graticule.minorExtent();\n\t return graticule.majorExtent(_).minorExtent(_);\n\t };\n\t graticule.majorExtent = function(_) {\n\t if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n\t X0 = +_[0][0], X1 = +_[1][0];\n\t Y0 = +_[0][1], Y1 = +_[1][1];\n\t if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n\t if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.minorExtent = function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t x0 = +_[0][0], x1 = +_[1][0];\n\t y0 = +_[0][1], y1 = +_[1][1];\n\t if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n\t if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.step = function(_) {\n\t if (!arguments.length) return graticule.minorStep();\n\t return graticule.majorStep(_).minorStep(_);\n\t };\n\t graticule.majorStep = function(_) {\n\t if (!arguments.length) return [ DX, DY ];\n\t DX = +_[0], DY = +_[1];\n\t return graticule;\n\t };\n\t graticule.minorStep = function(_) {\n\t if (!arguments.length) return [ dx, dy ];\n\t dx = +_[0], dy = +_[1];\n\t return graticule;\n\t };\n\t graticule.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t precision = +_;\n\t x = d3_geo_graticuleX(y0, y1, 90);\n\t y = d3_geo_graticuleY(x0, x1, precision);\n\t X = d3_geo_graticuleX(Y0, Y1, 90);\n\t Y = d3_geo_graticuleY(X0, X1, precision);\n\t return graticule;\n\t };\n\t return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n\t };\n\t function d3_geo_graticuleX(y0, y1, dy) {\n\t var y = d3.range(y0, y1 - ε, dy).concat(y1);\n\t return function(x) {\n\t return y.map(function(y) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_geo_graticuleY(x0, x1, dx) {\n\t var x = d3.range(x0, x1 - ε, dx).concat(x1);\n\t return function(y) {\n\t return x.map(function(x) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_source(d) {\n\t return d.source;\n\t }\n\t function d3_target(d) {\n\t return d.target;\n\t }\n\t d3.geo.greatArc = function() {\n\t var source = d3_source, source_, target = d3_target, target_;\n\t function greatArc() {\n\t return {\n\t type: \"LineString\",\n\t coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n\t };\n\t }\n\t greatArc.distance = function() {\n\t return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n\t };\n\t greatArc.source = function(_) {\n\t if (!arguments.length) return source;\n\t source = _, source_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.target = function(_) {\n\t if (!arguments.length) return target;\n\t target = _, target_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.precision = function() {\n\t return arguments.length ? greatArc : 0;\n\t };\n\t return greatArc;\n\t };\n\t d3.geo.interpolate = function(source, target) {\n\t return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n\t };\n\t function d3_geo_interpolate(x0, y0, x1, y1) {\n\t var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n\t var interpolate = d ? function(t) {\n\t var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n\t return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n\t } : function() {\n\t return [ x0 * d3_degrees, y0 * d3_degrees ];\n\t };\n\t interpolate.distance = d;\n\t return interpolate;\n\t }\n\t d3.geo.length = function(object) {\n\t d3_geo_lengthSum = 0;\n\t d3.geo.stream(object, d3_geo_length);\n\t return d3_geo_lengthSum;\n\t };\n\t var d3_geo_lengthSum;\n\t var d3_geo_length = {\n\t sphere: d3_noop,\n\t point: d3_noop,\n\t lineStart: d3_geo_lengthLineStart,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_lengthLineStart() {\n\t var λ0, sinφ0, cosφ0;\n\t d3_geo_length.point = function(λ, φ) {\n\t λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n\t d3_geo_length.point = nextPoint;\n\t };\n\t d3_geo_length.lineEnd = function() {\n\t d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n\t };\n\t function nextPoint(λ, φ) {\n\t var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n\t d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n\t }\n\t }\n\t function d3_geo_azimuthal(scale, angle) {\n\t function azimuthal(λ, φ) {\n\t var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n\t return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n\t }\n\t azimuthal.invert = function(x, y) {\n\t var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n\t return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n\t };\n\t return azimuthal;\n\t }\n\t var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n\t return Math.sqrt(2 / (1 + cosλcosφ));\n\t }, function(ρ) {\n\t return 2 * Math.asin(ρ / 2);\n\t });\n\t (d3.geo.azimuthalEqualArea = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEqualArea);\n\t }).raw = d3_geo_azimuthalEqualArea;\n\t var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n\t var c = Math.acos(cosλcosφ);\n\t return c && c / Math.sin(c);\n\t }, d3_identity);\n\t (d3.geo.azimuthalEquidistant = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEquidistant);\n\t }).raw = d3_geo_azimuthalEquidistant;\n\t function d3_geo_conicConformal(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), t = function(φ) {\n\t return Math.tan(π / 4 + φ / 2);\n\t }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n\t if (!n) return d3_geo_mercator;\n\t function forward(λ, φ) {\n\t if (F > 0) {\n\t if (φ < -halfπ + ε) φ = -halfπ + ε;\n\t } else {\n\t if (φ > halfπ - ε) φ = halfπ - ε;\n\t }\n\t var ρ = F / Math.pow(t(φ), n);\n\t return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n\t return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicConformal = function() {\n\t return d3_geo_conic(d3_geo_conicConformal);\n\t }).raw = d3_geo_conicConformal;\n\t function d3_geo_conicEquidistant(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n\t if (abs(n) < ε) return d3_geo_equirectangular;\n\t function forward(λ, φ) {\n\t var ρ = G - φ;\n\t return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = G - y;\n\t return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEquidistant = function() {\n\t return d3_geo_conic(d3_geo_conicEquidistant);\n\t }).raw = d3_geo_conicEquidistant;\n\t var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / cosλcosφ;\n\t }, Math.atan);\n\t (d3.geo.gnomonic = function() {\n\t return d3_geo_projection(d3_geo_gnomonic);\n\t }).raw = d3_geo_gnomonic;\n\t function d3_geo_mercator(λ, φ) {\n\t return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n\t }\n\t d3_geo_mercator.invert = function(x, y) {\n\t return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n\t };\n\t function d3_geo_mercatorProjection(project) {\n\t var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n\t m.scale = function() {\n\t var v = scale.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.translate = function() {\n\t var v = translate.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.clipExtent = function(_) {\n\t var v = clipExtent.apply(m, arguments);\n\t if (v === m) {\n\t if (clipAuto = _ == null) {\n\t var k = π * scale(), t = translate();\n\t clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n\t }\n\t } else if (clipAuto) {\n\t v = null;\n\t }\n\t return v;\n\t };\n\t return m.clipExtent(null);\n\t }\n\t (d3.geo.mercator = function() {\n\t return d3_geo_mercatorProjection(d3_geo_mercator);\n\t }).raw = d3_geo_mercator;\n\t var d3_geo_orthographic = d3_geo_azimuthal(function() {\n\t return 1;\n\t }, Math.asin);\n\t (d3.geo.orthographic = function() {\n\t return d3_geo_projection(d3_geo_orthographic);\n\t }).raw = d3_geo_orthographic;\n\t var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / (1 + cosλcosφ);\n\t }, function(ρ) {\n\t return 2 * Math.atan(ρ);\n\t });\n\t (d3.geo.stereographic = function() {\n\t return d3_geo_projection(d3_geo_stereographic);\n\t }).raw = d3_geo_stereographic;\n\t function d3_geo_transverseMercator(λ, φ) {\n\t return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n\t }\n\t d3_geo_transverseMercator.invert = function(x, y) {\n\t return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n\t };\n\t (d3.geo.transverseMercator = function() {\n\t var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n\t projection.center = function(_) {\n\t return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n\t };\n\t projection.rotate = function(_) {\n\t return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n\t [ _[0], _[1], _[2] - 90 ]);\n\t };\n\t return rotate([ 0, 0, 90 ]);\n\t }).raw = d3_geo_transverseMercator;\n\t d3.geom = {};\n\t function d3_geom_pointX(d) {\n\t return d[0];\n\t }\n\t function d3_geom_pointY(d) {\n\t return d[1];\n\t }\n\t d3.geom.hull = function(vertices) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY;\n\t if (arguments.length) return hull(vertices);\n\t function hull(data) {\n\t if (data.length < 3) return [];\n\t var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n\t for (i = 0; i < n; i++) {\n\t points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n\t }\n\t points.sort(d3_geom_hullOrder);\n\t for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n\t var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n\t var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n\t for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n\t for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n\t return polygon;\n\t }\n\t hull.x = function(_) {\n\t return arguments.length ? (x = _, hull) : x;\n\t };\n\t hull.y = function(_) {\n\t return arguments.length ? (y = _, hull) : y;\n\t };\n\t return hull;\n\t };\n\t function d3_geom_hullUpper(points) {\n\t var n = points.length, hull = [ 0, 1 ], hs = 2;\n\t for (var i = 2; i < n; i++) {\n\t while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n\t hull[hs++] = i;\n\t }\n\t return hull.slice(0, hs);\n\t }\n\t function d3_geom_hullOrder(a, b) {\n\t return a[0] - b[0] || a[1] - b[1];\n\t }\n\t d3.geom.polygon = function(coordinates) {\n\t d3_subclass(coordinates, d3_geom_polygonPrototype);\n\t return coordinates;\n\t };\n\t var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n\t d3_geom_polygonPrototype.area = function() {\n\t var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t area += a[1] * b[0] - a[0] * b[1];\n\t }\n\t return area * .5;\n\t };\n\t d3_geom_polygonPrototype.centroid = function(k) {\n\t var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n\t if (!arguments.length) k = -1 / (6 * this.area());\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t c = a[0] * b[1] - b[0] * a[1];\n\t x += (a[0] + b[0]) * c;\n\t y += (a[1] + b[1]) * c;\n\t }\n\t return [ x * k, y * k ];\n\t };\n\t d3_geom_polygonPrototype.clip = function(subject) {\n\t var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n\t while (++i < n) {\n\t input = subject.slice();\n\t subject.length = 0;\n\t b = this[i];\n\t c = input[(m = input.length - closed) - 1];\n\t j = -1;\n\t while (++j < m) {\n\t d = input[j];\n\t if (d3_geom_polygonInside(d, a, b)) {\n\t if (!d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t subject.push(d);\n\t } else if (d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t c = d;\n\t }\n\t if (closed) subject.push(subject[0]);\n\t a = b;\n\t }\n\t return subject;\n\t };\n\t function d3_geom_polygonInside(p, a, b) {\n\t return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n\t }\n\t function d3_geom_polygonIntersect(c, d, a, b) {\n\t var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n\t return [ x1 + ua * x21, y1 + ua * y21 ];\n\t }\n\t function d3_geom_polygonClosed(coordinates) {\n\t var a = coordinates[0], b = coordinates[coordinates.length - 1];\n\t return !(a[0] - b[0] || a[1] - b[1]);\n\t }\n\t var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n\t function d3_geom_voronoiBeach() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.edge = this.site = this.circle = null;\n\t }\n\t function d3_geom_voronoiCreateBeach(site) {\n\t var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n\t beach.site = site;\n\t return beach;\n\t }\n\t function d3_geom_voronoiDetachBeach(beach) {\n\t d3_geom_voronoiDetachCircle(beach);\n\t d3_geom_voronoiBeaches.remove(beach);\n\t d3_geom_voronoiBeachPool.push(beach);\n\t d3_geom_voronoiRedBlackNode(beach);\n\t }\n\t function d3_geom_voronoiRemoveBeach(beach) {\n\t var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n\t x: x,\n\t y: y\n\t }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n\t d3_geom_voronoiDetachBeach(beach);\n\t var lArc = previous;\n\t while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n\t previous = lArc.P;\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachBeach(lArc);\n\t lArc = previous;\n\t }\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachCircle(lArc);\n\t var rArc = next;\n\t while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n\t next = rArc.N;\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachBeach(rArc);\n\t rArc = next;\n\t }\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var nArcs = disappearing.length, iArc;\n\t for (iArc = 1; iArc < nArcs; ++iArc) {\n\t rArc = disappearing[iArc];\n\t lArc = disappearing[iArc - 1];\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n\t }\n\t lArc = disappearing[0];\n\t rArc = disappearing[nArcs - 1];\n\t rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiAddBeach(site) {\n\t var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n\t while (node) {\n\t dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n\t if (dxl > ε) node = node.L; else {\n\t dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n\t if (dxr > ε) {\n\t if (!node.R) {\n\t lArc = node;\n\t break;\n\t }\n\t node = node.R;\n\t } else {\n\t if (dxl > -ε) {\n\t lArc = node.P;\n\t rArc = node;\n\t } else if (dxr > -ε) {\n\t lArc = node;\n\t rArc = node.N;\n\t } else {\n\t lArc = rArc = node;\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t var newArc = d3_geom_voronoiCreateBeach(site);\n\t d3_geom_voronoiBeaches.insert(lArc, newArc);\n\t if (!lArc && !rArc) return;\n\t if (lArc === rArc) {\n\t d3_geom_voronoiDetachCircle(lArc);\n\t rArc = d3_geom_voronoiCreateBeach(lArc.site);\n\t d3_geom_voronoiBeaches.insert(newArc, rArc);\n\t newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t return;\n\t }\n\t if (!rArc) {\n\t newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t return;\n\t }\n\t d3_geom_voronoiDetachCircle(lArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n\t x: (cy * hb - by * hc) / d + ax,\n\t y: (bx * hc - cx * hb) / d + ay\n\t };\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n\t newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n\t rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n\t var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n\t if (!pby2) return rfocx;\n\t var lArc = arc.P;\n\t if (!lArc) return -Infinity;\n\t site = lArc.site;\n\t var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n\t if (!plby2) return lfocx;\n\t var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n\t if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\t return (rfocx + lfocx) / 2;\n\t }\n\t function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n\t var rArc = arc.N;\n\t if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n\t var site = arc.site;\n\t return site.y === directrix ? site.x : Infinity;\n\t }\n\t function d3_geom_voronoiCell(site) {\n\t this.site = site;\n\t this.edges = [];\n\t }\n\t d3_geom_voronoiCell.prototype.prepare = function() {\n\t var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n\t while (iHalfEdge--) {\n\t edge = halfEdges[iHalfEdge].edge;\n\t if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n\t }\n\t halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n\t return halfEdges.length;\n\t };\n\t function d3_geom_voronoiCloseCells(extent) {\n\t var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n\t while (iCell--) {\n\t cell = cells[iCell];\n\t if (!cell || !cell.prepare()) continue;\n\t halfEdges = cell.edges;\n\t nHalfEdges = halfEdges.length;\n\t iHalfEdge = 0;\n\t while (iHalfEdge < nHalfEdges) {\n\t end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n\t start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n\t if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n\t halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n\t x: x0,\n\t y: abs(x2 - x0) < ε ? y2 : y1\n\t } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n\t x: abs(y2 - y1) < ε ? x2 : x1,\n\t y: y1\n\t } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n\t x: x1,\n\t y: abs(x2 - x1) < ε ? y2 : y0\n\t } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n\t x: abs(y2 - y0) < ε ? x2 : x0,\n\t y: y0\n\t } : null), cell.site, null));\n\t ++nHalfEdges;\n\t }\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdgeOrder(a, b) {\n\t return b.angle - a.angle;\n\t }\n\t function d3_geom_voronoiCircle() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.x = this.y = this.arc = this.site = this.cy = null;\n\t }\n\t function d3_geom_voronoiAttachCircle(arc) {\n\t var lArc = arc.P, rArc = arc.N;\n\t if (!lArc || !rArc) return;\n\t var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n\t if (lSite === rSite) return;\n\t var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n\t var d = 2 * (ax * cy - ay * cx);\n\t if (d >= -ε2) return;\n\t var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n\t var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n\t circle.arc = arc;\n\t circle.site = cSite;\n\t circle.x = x + bx;\n\t circle.y = cy + Math.sqrt(x * x + y * y);\n\t circle.cy = cy;\n\t arc.circle = circle;\n\t var before = null, node = d3_geom_voronoiCircles._;\n\t while (node) {\n\t if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n\t if (node.L) node = node.L; else {\n\t before = node.P;\n\t break;\n\t }\n\t } else {\n\t if (node.R) node = node.R; else {\n\t before = node;\n\t break;\n\t }\n\t }\n\t }\n\t d3_geom_voronoiCircles.insert(before, circle);\n\t if (!before) d3_geom_voronoiFirstCircle = circle;\n\t }\n\t function d3_geom_voronoiDetachCircle(arc) {\n\t var circle = arc.circle;\n\t if (circle) {\n\t if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n\t d3_geom_voronoiCircles.remove(circle);\n\t d3_geom_voronoiCirclePool.push(circle);\n\t d3_geom_voronoiRedBlackNode(circle);\n\t arc.circle = null;\n\t }\n\t }\n\t function d3_geom_voronoiClipEdges(extent) {\n\t var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n\t while (i--) {\n\t e = edges[i];\n\t if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n\t e.a = e.b = null;\n\t edges.splice(i, 1);\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiConnectEdge(edge, extent) {\n\t var vb = edge.b;\n\t if (vb) return true;\n\t var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n\t if (ry === ly) {\n\t if (fx < x0 || fx >= x1) return;\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: fx,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: fx,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: fx,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: fx,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t fm = (lx - rx) / (ry - ly);\n\t fb = fy - fm * fx;\n\t if (fm < -1 || fm > 1) {\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t if (ly < ry) {\n\t if (!va) va = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t }; else if (va.x >= x1) return;\n\t vb = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t }; else if (va.x < x0) return;\n\t vb = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t };\n\t }\n\t }\n\t }\n\t edge.a = va;\n\t edge.b = vb;\n\t return true;\n\t }\n\t function d3_geom_voronoiEdge(lSite, rSite) {\n\t this.l = lSite;\n\t this.r = rSite;\n\t this.a = this.b = null;\n\t }\n\t function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, rSite);\n\t d3_geom_voronoiEdges.push(edge);\n\t if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n\t if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n\t d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n\t d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n\t return edge;\n\t }\n\t function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, null);\n\t edge.a = va;\n\t edge.b = vb;\n\t d3_geom_voronoiEdges.push(edge);\n\t return edge;\n\t }\n\t function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n\t if (!edge.a && !edge.b) {\n\t edge.a = vertex;\n\t edge.l = lSite;\n\t edge.r = rSite;\n\t } else if (edge.l === rSite) {\n\t edge.b = vertex;\n\t } else {\n\t edge.a = vertex;\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n\t var va = edge.a, vb = edge.b;\n\t this.edge = edge;\n\t this.site = lSite;\n\t this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n\t }\n\t d3_geom_voronoiHalfEdge.prototype = {\n\t start: function() {\n\t return this.edge.l === this.site ? this.edge.a : this.edge.b;\n\t },\n\t end: function() {\n\t return this.edge.l === this.site ? this.edge.b : this.edge.a;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackTree() {\n\t this._ = null;\n\t }\n\t function d3_geom_voronoiRedBlackNode(node) {\n\t node.U = node.C = node.L = node.R = node.P = node.N = null;\n\t }\n\t d3_geom_voronoiRedBlackTree.prototype = {\n\t insert: function(after, node) {\n\t var parent, grandpa, uncle;\n\t if (after) {\n\t node.P = after;\n\t node.N = after.N;\n\t if (after.N) after.N.P = node;\n\t after.N = node;\n\t if (after.R) {\n\t after = after.R;\n\t while (after.L) after = after.L;\n\t after.L = node;\n\t } else {\n\t after.R = node;\n\t }\n\t parent = after;\n\t } else if (this._) {\n\t after = d3_geom_voronoiRedBlackFirst(this._);\n\t node.P = null;\n\t node.N = after;\n\t after.P = after.L = node;\n\t parent = after;\n\t } else {\n\t node.P = node.N = null;\n\t this._ = node;\n\t parent = null;\n\t }\n\t node.L = node.R = null;\n\t node.U = parent;\n\t node.C = true;\n\t after = node;\n\t while (parent && parent.C) {\n\t grandpa = parent.U;\n\t if (parent === grandpa.L) {\n\t uncle = grandpa.R;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.R) {\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n\t }\n\t } else {\n\t uncle = grandpa.L;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.L) {\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n\t }\n\t }\n\t parent = after.U;\n\t }\n\t this._.C = false;\n\t },\n\t remove: function(node) {\n\t if (node.N) node.N.P = node.P;\n\t if (node.P) node.P.N = node.N;\n\t node.N = node.P = null;\n\t var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n\t if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n\t if (parent) {\n\t if (parent.L === node) parent.L = next; else parent.R = next;\n\t } else {\n\t this._ = next;\n\t }\n\t if (left && right) {\n\t red = next.C;\n\t next.C = node.C;\n\t next.L = left;\n\t left.U = next;\n\t if (next !== right) {\n\t parent = next.U;\n\t next.U = node.U;\n\t node = next.R;\n\t parent.L = node;\n\t next.R = right;\n\t right.U = next;\n\t } else {\n\t next.U = parent;\n\t parent = next;\n\t node = next.R;\n\t }\n\t } else {\n\t red = node.C;\n\t node = next;\n\t }\n\t if (node) node.U = parent;\n\t if (red) return;\n\t if (node && node.C) {\n\t node.C = false;\n\t return;\n\t }\n\t do {\n\t if (node === this._) break;\n\t if (node === parent.L) {\n\t sibling = parent.R;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t sibling = parent.R;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.R || !sibling.R.C) {\n\t sibling.L.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, sibling);\n\t sibling = parent.R;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.R.C = false;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t } else {\n\t sibling = parent.L;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t sibling = parent.L;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.L || !sibling.L.C) {\n\t sibling.R.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n\t sibling = parent.L;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.L.C = false;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t }\n\t sibling.C = true;\n\t node = parent;\n\t parent = parent.U;\n\t } while (!node.C);\n\t if (node) node.C = false;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n\t var p = node, q = node.R, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.R = q.L;\n\t if (p.R) p.R.U = p;\n\t q.L = p;\n\t }\n\t function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n\t var p = node, q = node.L, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.L = q.R;\n\t if (p.L) p.L.U = p;\n\t q.R = p;\n\t }\n\t function d3_geom_voronoiRedBlackFirst(node) {\n\t while (node.L) node = node.L;\n\t return node;\n\t }\n\t function d3_geom_voronoi(sites, bbox) {\n\t var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n\t d3_geom_voronoiEdges = [];\n\t d3_geom_voronoiCells = new Array(sites.length);\n\t d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n\t d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n\t while (true) {\n\t circle = d3_geom_voronoiFirstCircle;\n\t if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n\t if (site.x !== x0 || site.y !== y0) {\n\t d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n\t d3_geom_voronoiAddBeach(site);\n\t x0 = site.x, y0 = site.y;\n\t }\n\t site = sites.pop();\n\t } else if (circle) {\n\t d3_geom_voronoiRemoveBeach(circle.arc);\n\t } else {\n\t break;\n\t }\n\t }\n\t if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n\t var diagram = {\n\t cells: d3_geom_voronoiCells,\n\t edges: d3_geom_voronoiEdges\n\t };\n\t d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n\t return diagram;\n\t }\n\t function d3_geom_voronoiVertexOrder(a, b) {\n\t return b.y - a.y || b.x - a.x;\n\t }\n\t d3.geom.voronoi = function(points) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n\t if (points) return voronoi(points);\n\t function voronoi(data) {\n\t var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n\t d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n\t var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n\t var s = e.start();\n\t return [ s.x, s.y ];\n\t }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n\t polygon.point = data[i];\n\t });\n\t return polygons;\n\t }\n\t function sites(data) {\n\t return data.map(function(d, i) {\n\t return {\n\t x: Math.round(fx(d, i) / ε) * ε,\n\t y: Math.round(fy(d, i) / ε) * ε,\n\t i: i\n\t };\n\t });\n\t }\n\t voronoi.links = function(data) {\n\t return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n\t return edge.l && edge.r;\n\t }).map(function(edge) {\n\t return {\n\t source: data[edge.l.i],\n\t target: data[edge.r.i]\n\t };\n\t });\n\t };\n\t voronoi.triangles = function(data) {\n\t var triangles = [];\n\t d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n\t var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n\t while (++j < m) {\n\t e0 = e1;\n\t s0 = s1;\n\t e1 = edges[j].edge;\n\t s1 = e1.l === site ? e1.r : e1.l;\n\t if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n\t triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n\t }\n\t }\n\t });\n\t return triangles;\n\t };\n\t voronoi.x = function(_) {\n\t return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n\t };\n\t voronoi.y = function(_) {\n\t return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n\t };\n\t voronoi.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n\t clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n\t return voronoi;\n\t };\n\t voronoi.size = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n\t return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n\t };\n\t return voronoi;\n\t };\n\t var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n\t function d3_geom_voronoiTriangleArea(a, b, c) {\n\t return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n\t }\n\t d3.geom.delaunay = function(vertices) {\n\t return d3.geom.voronoi().triangles(vertices);\n\t };\n\t d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n\t if (compat = arguments.length) {\n\t x = d3_geom_quadtreeCompatX;\n\t y = d3_geom_quadtreeCompatY;\n\t if (compat === 3) {\n\t y2 = y1;\n\t x2 = x1;\n\t y1 = x1 = 0;\n\t }\n\t return quadtree(points);\n\t }\n\t function quadtree(data) {\n\t var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n\t if (x1 != null) {\n\t x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n\t } else {\n\t x2_ = y2_ = -(x1_ = y1_ = Infinity);\n\t xs = [], ys = [];\n\t n = data.length;\n\t if (compat) for (i = 0; i < n; ++i) {\n\t d = data[i];\n\t if (d.x < x1_) x1_ = d.x;\n\t if (d.y < y1_) y1_ = d.y;\n\t if (d.x > x2_) x2_ = d.x;\n\t if (d.y > y2_) y2_ = d.y;\n\t xs.push(d.x);\n\t ys.push(d.y);\n\t } else for (i = 0; i < n; ++i) {\n\t var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n\t if (x_ < x1_) x1_ = x_;\n\t if (y_ < y1_) y1_ = y_;\n\t if (x_ > x2_) x2_ = x_;\n\t if (y_ > y2_) y2_ = y_;\n\t xs.push(x_);\n\t ys.push(y_);\n\t }\n\t }\n\t var dx = x2_ - x1_, dy = y2_ - y1_;\n\t if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n\t function insert(n, d, x, y, x1, y1, x2, y2) {\n\t if (isNaN(x) || isNaN(y)) return;\n\t if (n.leaf) {\n\t var nx = n.x, ny = n.y;\n\t if (nx != null) {\n\t if (abs(nx - x) + abs(ny - y) < .01) {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t } else {\n\t var nPoint = n.point;\n\t n.x = n.y = n.point = null;\n\t insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t } else {\n\t n.x = x, n.y = y, n.point = d;\n\t }\n\t } else {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t }\n\t function insertChild(n, d, x, y, x1, y1, x2, y2) {\n\t var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n\t n.leaf = false;\n\t n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n\t if (right) x1 = xm; else x2 = xm;\n\t if (below) y1 = ym; else y2 = ym;\n\t insert(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t var root = d3_geom_quadtreeNode();\n\t root.add = function(d) {\n\t insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n\t };\n\t root.visit = function(f) {\n\t d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n\t };\n\t root.find = function(point) {\n\t return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n\t };\n\t i = -1;\n\t if (x1 == null) {\n\t while (++i < n) {\n\t insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n\t }\n\t --i;\n\t } else data.forEach(root.add);\n\t xs = ys = data = d = null;\n\t return root;\n\t }\n\t quadtree.x = function(_) {\n\t return arguments.length ? (x = _, quadtree) : x;\n\t };\n\t quadtree.y = function(_) {\n\t return arguments.length ? (y = _, quadtree) : y;\n\t };\n\t quadtree.extent = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n\t y2 = +_[1][1];\n\t return quadtree;\n\t };\n\t quadtree.size = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n\t return quadtree;\n\t };\n\t return quadtree;\n\t };\n\t function d3_geom_quadtreeCompatX(d) {\n\t return d.x;\n\t }\n\t function d3_geom_quadtreeCompatY(d) {\n\t return d.y;\n\t }\n\t function d3_geom_quadtreeNode() {\n\t return {\n\t leaf: true,\n\t nodes: [],\n\t point: null,\n\t x: null,\n\t y: null\n\t };\n\t }\n\t function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n\t if (!f(node, x1, y1, x2, y2)) {\n\t var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n\t if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n\t if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n\t if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n\t if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n\t }\n\t }\n\t function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n\t var minDistance2 = Infinity, closestPoint;\n\t (function find(node, x1, y1, x2, y2) {\n\t if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n\t if (point = node.point) {\n\t var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n\t if (distance2 < minDistance2) {\n\t var distance = Math.sqrt(minDistance2 = distance2);\n\t x0 = x - distance, y0 = y - distance;\n\t x3 = x + distance, y3 = y + distance;\n\t closestPoint = point;\n\t }\n\t }\n\t var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n\t for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n\t if (node = children[i & 3]) switch (i & 3) {\n\t case 0:\n\t find(node, x1, y1, xm, ym);\n\t break;\n\t\n\t case 1:\n\t find(node, xm, y1, x2, ym);\n\t break;\n\t\n\t case 2:\n\t find(node, x1, ym, xm, y2);\n\t break;\n\t\n\t case 3:\n\t find(node, xm, ym, x2, y2);\n\t break;\n\t }\n\t }\n\t })(root, x0, y0, x3, y3);\n\t return closestPoint;\n\t }\n\t d3.interpolateRgb = d3_interpolateRgb;\n\t function d3_interpolateRgb(a, b) {\n\t a = d3.rgb(a);\n\t b = d3.rgb(b);\n\t var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n\t return function(t) {\n\t return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n\t };\n\t }\n\t d3.interpolateObject = d3_interpolateObject;\n\t function d3_interpolateObject(a, b) {\n\t var i = {}, c = {}, k;\n\t for (k in a) {\n\t if (k in b) {\n\t i[k] = d3_interpolate(a[k], b[k]);\n\t } else {\n\t c[k] = a[k];\n\t }\n\t }\n\t for (k in b) {\n\t if (!(k in a)) {\n\t c[k] = b[k];\n\t }\n\t }\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t }\n\t d3.interpolateNumber = d3_interpolateNumber;\n\t function d3_interpolateNumber(a, b) {\n\t a = +a, b = +b;\n\t return function(t) {\n\t return a * (1 - t) + b * t;\n\t };\n\t }\n\t d3.interpolateString = d3_interpolateString;\n\t function d3_interpolateString(a, b) {\n\t var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n\t a = a + \"\", b = b + \"\";\n\t while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n\t if ((bs = bm.index) > bi) {\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) {\n\t if (s[i]) s[i] += bm; else s[++i] = bm;\n\t } else {\n\t s[++i] = null;\n\t q.push({\n\t i: i,\n\t x: d3_interpolateNumber(am, bm)\n\t });\n\t }\n\t bi = d3_interpolate_numberB.lastIndex;\n\t }\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n\t return b(t) + \"\";\n\t }) : function() {\n\t return b;\n\t } : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t }\n\t var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n\t d3.interpolate = d3_interpolate;\n\t function d3_interpolate(a, b) {\n\t var i = d3.interpolators.length, f;\n\t while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n\t return f;\n\t }\n\t d3.interpolators = [ function(a, b) {\n\t var t = typeof b;\n\t return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n\t } ];\n\t d3.interpolateArray = d3_interpolateArray;\n\t function d3_interpolateArray(a, b) {\n\t var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n\t for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n\t for (;i < na; ++i) c[i] = a[i];\n\t for (;i < nb; ++i) c[i] = b[i];\n\t return function(t) {\n\t for (i = 0; i < n0; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t }\n\t var d3_ease_default = function() {\n\t return d3_identity;\n\t };\n\t var d3_ease = d3.map({\n\t linear: d3_ease_default,\n\t poly: d3_ease_poly,\n\t quad: function() {\n\t return d3_ease_quad;\n\t },\n\t cubic: function() {\n\t return d3_ease_cubic;\n\t },\n\t sin: function() {\n\t return d3_ease_sin;\n\t },\n\t exp: function() {\n\t return d3_ease_exp;\n\t },\n\t circle: function() {\n\t return d3_ease_circle;\n\t },\n\t elastic: d3_ease_elastic,\n\t back: d3_ease_back,\n\t bounce: function() {\n\t return d3_ease_bounce;\n\t }\n\t });\n\t var d3_ease_mode = d3.map({\n\t \"in\": d3_identity,\n\t out: d3_ease_reverse,\n\t \"in-out\": d3_ease_reflect,\n\t \"out-in\": function(f) {\n\t return d3_ease_reflect(d3_ease_reverse(f));\n\t }\n\t });\n\t d3.ease = function(name) {\n\t var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n\t t = d3_ease.get(t) || d3_ease_default;\n\t m = d3_ease_mode.get(m) || d3_identity;\n\t return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n\t };\n\t function d3_ease_clamp(f) {\n\t return function(t) {\n\t return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n\t };\n\t }\n\t function d3_ease_reverse(f) {\n\t return function(t) {\n\t return 1 - f(1 - t);\n\t };\n\t }\n\t function d3_ease_reflect(f) {\n\t return function(t) {\n\t return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n\t };\n\t }\n\t function d3_ease_quad(t) {\n\t return t * t;\n\t }\n\t function d3_ease_cubic(t) {\n\t return t * t * t;\n\t }\n\t function d3_ease_cubicInOut(t) {\n\t if (t <= 0) return 0;\n\t if (t >= 1) return 1;\n\t var t2 = t * t, t3 = t2 * t;\n\t return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n\t }\n\t function d3_ease_poly(e) {\n\t return function(t) {\n\t return Math.pow(t, e);\n\t };\n\t }\n\t function d3_ease_sin(t) {\n\t return 1 - Math.cos(t * halfπ);\n\t }\n\t function d3_ease_exp(t) {\n\t return Math.pow(2, 10 * (t - 1));\n\t }\n\t function d3_ease_circle(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t }\n\t function d3_ease_elastic(a, p) {\n\t var s;\n\t if (arguments.length < 2) p = .45;\n\t if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n\t return function(t) {\n\t return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n\t };\n\t }\n\t function d3_ease_back(s) {\n\t if (!s) s = 1.70158;\n\t return function(t) {\n\t return t * t * ((s + 1) * t - s);\n\t };\n\t }\n\t function d3_ease_bounce(t) {\n\t return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n\t }\n\t d3.interpolateHcl = d3_interpolateHcl;\n\t function d3_interpolateHcl(a, b) {\n\t a = d3.hcl(a);\n\t b = d3.hcl(b);\n\t var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n\t if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateHsl = d3_interpolateHsl;\n\t function d3_interpolateHsl(a, b) {\n\t a = d3.hsl(a);\n\t b = d3.hsl(b);\n\t var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n\t if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateLab = d3_interpolateLab;\n\t function d3_interpolateLab(a, b) {\n\t a = d3.lab(a);\n\t b = d3.lab(b);\n\t var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n\t return function(t) {\n\t return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n\t };\n\t }\n\t d3.interpolateRound = d3_interpolateRound;\n\t function d3_interpolateRound(a, b) {\n\t b -= a;\n\t return function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t }\n\t d3.transform = function(string) {\n\t var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n\t return (d3.transform = function(string) {\n\t if (string != null) {\n\t g.setAttribute(\"transform\", string);\n\t var t = g.transform.baseVal.consolidate();\n\t }\n\t return new d3_transform(t ? t.matrix : d3_transformIdentity);\n\t })(string);\n\t };\n\t function d3_transform(m) {\n\t var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n\t if (r0[0] * r1[1] < r1[0] * r0[1]) {\n\t r0[0] *= -1;\n\t r0[1] *= -1;\n\t kx *= -1;\n\t kz *= -1;\n\t }\n\t this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n\t this.translate = [ m.e, m.f ];\n\t this.scale = [ kx, ky ];\n\t this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n\t }\n\t d3_transform.prototype.toString = function() {\n\t return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n\t };\n\t function d3_transformDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1];\n\t }\n\t function d3_transformNormalize(a) {\n\t var k = Math.sqrt(d3_transformDot(a, a));\n\t if (k) {\n\t a[0] /= k;\n\t a[1] /= k;\n\t }\n\t return k;\n\t }\n\t function d3_transformCombine(a, b, k) {\n\t a[0] += k * b[0];\n\t a[1] += k * b[1];\n\t return a;\n\t }\n\t var d3_transformIdentity = {\n\t a: 1,\n\t b: 0,\n\t c: 0,\n\t d: 1,\n\t e: 0,\n\t f: 0\n\t };\n\t d3.interpolateTransform = d3_interpolateTransform;\n\t function d3_interpolateTransformPop(s) {\n\t return s.length ? s.pop() + \",\" : \"\";\n\t }\n\t function d3_interpolateTranslate(ta, tb, s, q) {\n\t if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n\t var i = s.push(\"translate(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ta[0], tb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ta[1], tb[1])\n\t });\n\t } else if (tb[0] || tb[1]) {\n\t s.push(\"translate(\" + tb + \")\");\n\t }\n\t }\n\t function d3_interpolateRotate(ra, rb, s, q) {\n\t if (ra !== rb) {\n\t if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(ra, rb)\n\t });\n\t } else if (rb) {\n\t s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n\t }\n\t }\n\t function d3_interpolateSkew(wa, wb, s, q) {\n\t if (wa !== wb) {\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(wa, wb)\n\t });\n\t } else if (wb) {\n\t s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n\t }\n\t }\n\t function d3_interpolateScale(ka, kb, s, q) {\n\t if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n\t var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ka[0], kb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ka[1], kb[1])\n\t });\n\t } else if (kb[0] !== 1 || kb[1] !== 1) {\n\t s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n\t }\n\t }\n\t function d3_interpolateTransform(a, b) {\n\t var s = [], q = [];\n\t a = d3.transform(a), b = d3.transform(b);\n\t d3_interpolateTranslate(a.translate, b.translate, s, q);\n\t d3_interpolateRotate(a.rotate, b.rotate, s, q);\n\t d3_interpolateSkew(a.skew, b.skew, s, q);\n\t d3_interpolateScale(a.scale, b.scale, s, q);\n\t a = b = null;\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t }\n\t function d3_uninterpolateNumber(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return (x - a) / b;\n\t };\n\t }\n\t function d3_uninterpolateClamp(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return Math.max(0, Math.min(1, (x - a) / b));\n\t };\n\t }\n\t d3.layout = {};\n\t d3.layout.bundle = function() {\n\t return function(links) {\n\t var paths = [], i = -1, n = links.length;\n\t while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n\t return paths;\n\t };\n\t };\n\t function d3_layout_bundlePath(link) {\n\t var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n\t while (start !== lca) {\n\t start = start.parent;\n\t points.push(start);\n\t }\n\t var k = points.length;\n\t while (end !== lca) {\n\t points.splice(k, 0, end);\n\t end = end.parent;\n\t }\n\t return points;\n\t }\n\t function d3_layout_bundleAncestors(node) {\n\t var ancestors = [], parent = node.parent;\n\t while (parent != null) {\n\t ancestors.push(node);\n\t node = parent;\n\t parent = parent.parent;\n\t }\n\t ancestors.push(node);\n\t return ancestors;\n\t }\n\t function d3_layout_bundleLeastCommonAncestor(a, b) {\n\t if (a === b) return a;\n\t var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n\t while (aNode === bNode) {\n\t sharedNode = aNode;\n\t aNode = aNodes.pop();\n\t bNode = bNodes.pop();\n\t }\n\t return sharedNode;\n\t }\n\t d3.layout.chord = function() {\n\t var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n\t function relayout() {\n\t var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n\t chords = [];\n\t groups = [];\n\t k = 0, i = -1;\n\t while (++i < n) {\n\t x = 0, j = -1;\n\t while (++j < n) {\n\t x += matrix[i][j];\n\t }\n\t groupSums.push(x);\n\t subgroupIndex.push(d3.range(n));\n\t k += x;\n\t }\n\t if (sortGroups) {\n\t groupIndex.sort(function(a, b) {\n\t return sortGroups(groupSums[a], groupSums[b]);\n\t });\n\t }\n\t if (sortSubgroups) {\n\t subgroupIndex.forEach(function(d, i) {\n\t d.sort(function(a, b) {\n\t return sortSubgroups(matrix[i][a], matrix[i][b]);\n\t });\n\t });\n\t }\n\t k = (τ - padding * n) / k;\n\t x = 0, i = -1;\n\t while (++i < n) {\n\t x0 = x, j = -1;\n\t while (++j < n) {\n\t var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n\t subgroups[di + \"-\" + dj] = {\n\t index: di,\n\t subindex: dj,\n\t startAngle: a0,\n\t endAngle: a1,\n\t value: v\n\t };\n\t }\n\t groups[di] = {\n\t index: di,\n\t startAngle: x0,\n\t endAngle: x,\n\t value: groupSums[di]\n\t };\n\t x += padding;\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t j = i - 1;\n\t while (++j < n) {\n\t var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n\t if (source.value || target.value) {\n\t chords.push(source.value < target.value ? {\n\t source: target,\n\t target: source\n\t } : {\n\t source: source,\n\t target: target\n\t });\n\t }\n\t }\n\t }\n\t if (sortChords) resort();\n\t }\n\t function resort() {\n\t chords.sort(function(a, b) {\n\t return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n\t });\n\t }\n\t chord.matrix = function(x) {\n\t if (!arguments.length) return matrix;\n\t n = (matrix = x) && matrix.length;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t padding = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortGroups = function(x) {\n\t if (!arguments.length) return sortGroups;\n\t sortGroups = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortSubgroups = function(x) {\n\t if (!arguments.length) return sortSubgroups;\n\t sortSubgroups = x;\n\t chords = null;\n\t return chord;\n\t };\n\t chord.sortChords = function(x) {\n\t if (!arguments.length) return sortChords;\n\t sortChords = x;\n\t if (chords) resort();\n\t return chord;\n\t };\n\t chord.chords = function() {\n\t if (!chords) relayout();\n\t return chords;\n\t };\n\t chord.groups = function() {\n\t if (!groups) relayout();\n\t return groups;\n\t };\n\t return chord;\n\t };\n\t d3.layout.force = function() {\n\t var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n\t function repulse(node) {\n\t return function(quad, x1, _, x2) {\n\t if (quad.point !== node) {\n\t var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n\t if (dw * dw / theta2 < dn) {\n\t if (dn < chargeDistance2) {\n\t var k = quad.charge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t return true;\n\t }\n\t if (quad.point && dn && dn < chargeDistance2) {\n\t var k = quad.pointCharge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t }\n\t return !quad.charge;\n\t };\n\t }\n\t force.tick = function() {\n\t if ((alpha *= .99) < .005) {\n\t timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t return true;\n\t }\n\t var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t s = o.source;\n\t t = o.target;\n\t x = t.x - s.x;\n\t y = t.y - s.y;\n\t if (l = x * x + y * y) {\n\t l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n\t x *= l;\n\t y *= l;\n\t t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n\t t.y -= y * k;\n\t s.x += x * (k = 1 - k);\n\t s.y += y * k;\n\t }\n\t }\n\t if (k = alpha * gravity) {\n\t x = size[0] / 2;\n\t y = size[1] / 2;\n\t i = -1;\n\t if (k) while (++i < n) {\n\t o = nodes[i];\n\t o.x += (x - o.x) * k;\n\t o.y += (y - o.y) * k;\n\t }\n\t }\n\t if (charge) {\n\t d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n\t i = -1;\n\t while (++i < n) {\n\t if (!(o = nodes[i]).fixed) {\n\t q.visit(repulse(o));\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t o = nodes[i];\n\t if (o.fixed) {\n\t o.x = o.px;\n\t o.y = o.py;\n\t } else {\n\t o.x -= (o.px - (o.px = o.x)) * friction;\n\t o.y -= (o.py - (o.py = o.y)) * friction;\n\t }\n\t }\n\t event.tick({\n\t type: \"tick\",\n\t alpha: alpha\n\t });\n\t };\n\t force.nodes = function(x) {\n\t if (!arguments.length) return nodes;\n\t nodes = x;\n\t return force;\n\t };\n\t force.links = function(x) {\n\t if (!arguments.length) return links;\n\t links = x;\n\t return force;\n\t };\n\t force.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return force;\n\t };\n\t force.linkDistance = function(x) {\n\t if (!arguments.length) return linkDistance;\n\t linkDistance = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.distance = force.linkDistance;\n\t force.linkStrength = function(x) {\n\t if (!arguments.length) return linkStrength;\n\t linkStrength = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.friction = function(x) {\n\t if (!arguments.length) return friction;\n\t friction = +x;\n\t return force;\n\t };\n\t force.charge = function(x) {\n\t if (!arguments.length) return charge;\n\t charge = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.chargeDistance = function(x) {\n\t if (!arguments.length) return Math.sqrt(chargeDistance2);\n\t chargeDistance2 = x * x;\n\t return force;\n\t };\n\t force.gravity = function(x) {\n\t if (!arguments.length) return gravity;\n\t gravity = +x;\n\t return force;\n\t };\n\t force.theta = function(x) {\n\t if (!arguments.length) return Math.sqrt(theta2);\n\t theta2 = x * x;\n\t return force;\n\t };\n\t force.alpha = function(x) {\n\t if (!arguments.length) return alpha;\n\t x = +x;\n\t if (alpha) {\n\t if (x > 0) {\n\t alpha = x;\n\t } else {\n\t timer.c = null, timer.t = NaN, timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t }\n\t } else if (x > 0) {\n\t event.start({\n\t type: \"start\",\n\t alpha: alpha = x\n\t });\n\t timer = d3_timer(force.tick);\n\t }\n\t return force;\n\t };\n\t force.start = function() {\n\t var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n\t for (i = 0; i < n; ++i) {\n\t (o = nodes[i]).index = i;\n\t o.weight = 0;\n\t }\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t if (typeof o.source == \"number\") o.source = nodes[o.source];\n\t if (typeof o.target == \"number\") o.target = nodes[o.target];\n\t ++o.source.weight;\n\t ++o.target.weight;\n\t }\n\t for (i = 0; i < n; ++i) {\n\t o = nodes[i];\n\t if (isNaN(o.x)) o.x = position(\"x\", w);\n\t if (isNaN(o.y)) o.y = position(\"y\", h);\n\t if (isNaN(o.px)) o.px = o.x;\n\t if (isNaN(o.py)) o.py = o.y;\n\t }\n\t distances = [];\n\t if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n\t strengths = [];\n\t if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n\t charges = [];\n\t if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n\t function position(dimension, size) {\n\t if (!neighbors) {\n\t neighbors = new Array(n);\n\t for (j = 0; j < n; ++j) {\n\t neighbors[j] = [];\n\t }\n\t for (j = 0; j < m; ++j) {\n\t var o = links[j];\n\t neighbors[o.source.index].push(o.target);\n\t neighbors[o.target.index].push(o.source);\n\t }\n\t }\n\t var candidates = neighbors[i], j = -1, l = candidates.length, x;\n\t while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n\t return Math.random() * size;\n\t }\n\t return force.resume();\n\t };\n\t force.resume = function() {\n\t return force.alpha(.1);\n\t };\n\t force.stop = function() {\n\t return force.alpha(0);\n\t };\n\t force.drag = function() {\n\t if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n\t if (!arguments.length) return drag;\n\t this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n\t };\n\t function dragmove(d) {\n\t d.px = d3.event.x, d.py = d3.event.y;\n\t force.resume();\n\t }\n\t return d3.rebind(force, event, \"on\");\n\t };\n\t function d3_layout_forceDragstart(d) {\n\t d.fixed |= 2;\n\t }\n\t function d3_layout_forceDragend(d) {\n\t d.fixed &= ~6;\n\t }\n\t function d3_layout_forceMouseover(d) {\n\t d.fixed |= 4;\n\t d.px = d.x, d.py = d.y;\n\t }\n\t function d3_layout_forceMouseout(d) {\n\t d.fixed &= ~4;\n\t }\n\t function d3_layout_forceAccumulate(quad, alpha, charges) {\n\t var cx = 0, cy = 0;\n\t quad.charge = 0;\n\t if (!quad.leaf) {\n\t var nodes = quad.nodes, n = nodes.length, i = -1, c;\n\t while (++i < n) {\n\t c = nodes[i];\n\t if (c == null) continue;\n\t d3_layout_forceAccumulate(c, alpha, charges);\n\t quad.charge += c.charge;\n\t cx += c.charge * c.cx;\n\t cy += c.charge * c.cy;\n\t }\n\t }\n\t if (quad.point) {\n\t if (!quad.leaf) {\n\t quad.point.x += Math.random() - .5;\n\t quad.point.y += Math.random() - .5;\n\t }\n\t var k = alpha * charges[quad.point.index];\n\t quad.charge += quad.pointCharge = k;\n\t cx += k * quad.point.x;\n\t cy += k * quad.point.y;\n\t }\n\t quad.cx = cx / quad.charge;\n\t quad.cy = cy / quad.charge;\n\t }\n\t var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n\t d3.layout.hierarchy = function() {\n\t var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n\t function hierarchy(root) {\n\t var stack = [ root ], nodes = [], node;\n\t root.depth = 0;\n\t while ((node = stack.pop()) != null) {\n\t nodes.push(node);\n\t if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n\t var n, childs, child;\n\t while (--n >= 0) {\n\t stack.push(child = childs[n]);\n\t child.parent = node;\n\t child.depth = node.depth + 1;\n\t }\n\t if (value) node.value = 0;\n\t node.children = childs;\n\t } else {\n\t if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t delete node.children;\n\t }\n\t }\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var childs, parent;\n\t if (sort && (childs = node.children)) childs.sort(sort);\n\t if (value && (parent = node.parent)) parent.value += node.value;\n\t });\n\t return nodes;\n\t }\n\t hierarchy.sort = function(x) {\n\t if (!arguments.length) return sort;\n\t sort = x;\n\t return hierarchy;\n\t };\n\t hierarchy.children = function(x) {\n\t if (!arguments.length) return children;\n\t children = x;\n\t return hierarchy;\n\t };\n\t hierarchy.value = function(x) {\n\t if (!arguments.length) return value;\n\t value = x;\n\t return hierarchy;\n\t };\n\t hierarchy.revalue = function(root) {\n\t if (value) {\n\t d3_layout_hierarchyVisitBefore(root, function(node) {\n\t if (node.children) node.value = 0;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var parent;\n\t if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t if (parent = node.parent) parent.value += node.value;\n\t });\n\t }\n\t return root;\n\t };\n\t return hierarchy;\n\t };\n\t function d3_layout_hierarchyRebind(object, hierarchy) {\n\t d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n\t object.nodes = object;\n\t object.links = d3_layout_hierarchyLinks;\n\t return object;\n\t }\n\t function d3_layout_hierarchyVisitBefore(node, callback) {\n\t var nodes = [ node ];\n\t while ((node = nodes.pop()) != null) {\n\t callback(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var n, children;\n\t while (--n >= 0) nodes.push(children[n]);\n\t }\n\t }\n\t }\n\t function d3_layout_hierarchyVisitAfter(node, callback) {\n\t var nodes = [ node ], nodes2 = [];\n\t while ((node = nodes.pop()) != null) {\n\t nodes2.push(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var i = -1, n, children;\n\t while (++i < n) nodes.push(children[i]);\n\t }\n\t }\n\t while ((node = nodes2.pop()) != null) {\n\t callback(node);\n\t }\n\t }\n\t function d3_layout_hierarchyChildren(d) {\n\t return d.children;\n\t }\n\t function d3_layout_hierarchyValue(d) {\n\t return d.value;\n\t }\n\t function d3_layout_hierarchySort(a, b) {\n\t return b.value - a.value;\n\t }\n\t function d3_layout_hierarchyLinks(nodes) {\n\t return d3.merge(nodes.map(function(parent) {\n\t return (parent.children || []).map(function(child) {\n\t return {\n\t source: parent,\n\t target: child\n\t };\n\t });\n\t }));\n\t }\n\t d3.layout.partition = function() {\n\t var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n\t function position(node, x, dx, dy) {\n\t var children = node.children;\n\t node.x = x;\n\t node.y = node.depth * dy;\n\t node.dx = dx;\n\t node.dy = dy;\n\t if (children && (n = children.length)) {\n\t var i = -1, n, c, d;\n\t dx = node.value ? dx / node.value : 0;\n\t while (++i < n) {\n\t position(c = children[i], x, d = c.value * dx, dy);\n\t x += d;\n\t }\n\t }\n\t }\n\t function depth(node) {\n\t var children = node.children, d = 0;\n\t if (children && (n = children.length)) {\n\t var i = -1, n;\n\t while (++i < n) d = Math.max(d, depth(children[i]));\n\t }\n\t return 1 + d;\n\t }\n\t function partition(d, i) {\n\t var nodes = hierarchy.call(this, d, i);\n\t position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n\t return nodes;\n\t }\n\t partition.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return partition;\n\t };\n\t return d3_layout_hierarchyRebind(partition, hierarchy);\n\t };\n\t d3.layout.pie = function() {\n\t var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n\t function pie(data) {\n\t var n = data.length, values = data.map(function(d, i) {\n\t return +value.call(pie, d, i);\n\t }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n\t if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n\t return values[j] - values[i];\n\t } : function(i, j) {\n\t return sort(data[i], data[j]);\n\t });\n\t index.forEach(function(i) {\n\t arcs[i] = {\n\t data: data[i],\n\t value: v = values[i],\n\t startAngle: a,\n\t endAngle: a += v * k + pa,\n\t padAngle: p\n\t };\n\t });\n\t return arcs;\n\t }\n\t pie.value = function(_) {\n\t if (!arguments.length) return value;\n\t value = _;\n\t return pie;\n\t };\n\t pie.sort = function(_) {\n\t if (!arguments.length) return sort;\n\t sort = _;\n\t return pie;\n\t };\n\t pie.startAngle = function(_) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = _;\n\t return pie;\n\t };\n\t pie.endAngle = function(_) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = _;\n\t return pie;\n\t };\n\t pie.padAngle = function(_) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = _;\n\t return pie;\n\t };\n\t return pie;\n\t };\n\t var d3_layout_pieSortByValue = {};\n\t d3.layout.stack = function() {\n\t var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n\t function stack(data, index) {\n\t if (!(n = data.length)) return data;\n\t var series = data.map(function(d, i) {\n\t return values.call(stack, d, i);\n\t });\n\t var points = series.map(function(d) {\n\t return d.map(function(v, i) {\n\t return [ x.call(stack, v, i), y.call(stack, v, i) ];\n\t });\n\t });\n\t var orders = order.call(stack, points, index);\n\t series = d3.permute(series, orders);\n\t points = d3.permute(points, orders);\n\t var offsets = offset.call(stack, points, index);\n\t var m = series[0].length, n, i, j, o;\n\t for (j = 0; j < m; ++j) {\n\t out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n\t for (i = 1; i < n; ++i) {\n\t out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n\t }\n\t }\n\t return data;\n\t }\n\t stack.values = function(x) {\n\t if (!arguments.length) return values;\n\t values = x;\n\t return stack;\n\t };\n\t stack.order = function(x) {\n\t if (!arguments.length) return order;\n\t order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n\t return stack;\n\t };\n\t stack.offset = function(x) {\n\t if (!arguments.length) return offset;\n\t offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n\t return stack;\n\t };\n\t stack.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t return stack;\n\t };\n\t stack.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t return stack;\n\t };\n\t stack.out = function(z) {\n\t if (!arguments.length) return out;\n\t out = z;\n\t return stack;\n\t };\n\t return stack;\n\t };\n\t function d3_layout_stackX(d) {\n\t return d.x;\n\t }\n\t function d3_layout_stackY(d) {\n\t return d.y;\n\t }\n\t function d3_layout_stackOut(d, y0, y) {\n\t d.y0 = y0;\n\t d.y = y;\n\t }\n\t var d3_layout_stackOrders = d3.map({\n\t \"inside-out\": function(data) {\n\t var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n\t return max[a] - max[b];\n\t }), top = 0, bottom = 0, tops = [], bottoms = [];\n\t for (i = 0; i < n; ++i) {\n\t j = index[i];\n\t if (top < bottom) {\n\t top += sums[j];\n\t tops.push(j);\n\t } else {\n\t bottom += sums[j];\n\t bottoms.push(j);\n\t }\n\t }\n\t return bottoms.reverse().concat(tops);\n\t },\n\t reverse: function(data) {\n\t return d3.range(data.length).reverse();\n\t },\n\t \"default\": d3_layout_stackOrderDefault\n\t });\n\t var d3_layout_stackOffsets = d3.map({\n\t silhouette: function(data) {\n\t var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o > max) max = o;\n\t sums.push(o);\n\t }\n\t for (j = 0; j < m; ++j) {\n\t y0[j] = (max - sums[j]) / 2;\n\t }\n\t return y0;\n\t },\n\t wiggle: function(data) {\n\t var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n\t y0[0] = o = o0 = 0;\n\t for (j = 1; j < m; ++j) {\n\t for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n\t for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n\t for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n\t s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n\t }\n\t s2 += s3 * data[i][j][1];\n\t }\n\t y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n\t if (o < o0) o0 = o;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] -= o0;\n\t return y0;\n\t },\n\t expand: function(data) {\n\t var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] = 0;\n\t return y0;\n\t },\n\t zero: d3_layout_stackOffsetZero\n\t });\n\t function d3_layout_stackOrderDefault(data) {\n\t return d3.range(data.length);\n\t }\n\t function d3_layout_stackOffsetZero(data) {\n\t var j = -1, m = data[0].length, y0 = [];\n\t while (++j < m) y0[j] = 0;\n\t return y0;\n\t }\n\t function d3_layout_stackMaxIndex(array) {\n\t var i = 1, j = 0, v = array[0][1], k, n = array.length;\n\t for (;i < n; ++i) {\n\t if ((k = array[i][1]) > v) {\n\t j = i;\n\t v = k;\n\t }\n\t }\n\t return j;\n\t }\n\t function d3_layout_stackReduceSum(d) {\n\t return d.reduce(d3_layout_stackSum, 0);\n\t }\n\t function d3_layout_stackSum(p, d) {\n\t return p + d[1];\n\t }\n\t d3.layout.histogram = function() {\n\t var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n\t function histogram(data, i) {\n\t var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n\t while (++i < m) {\n\t bin = bins[i] = [];\n\t bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n\t bin.y = 0;\n\t }\n\t if (m > 0) {\n\t i = -1;\n\t while (++i < n) {\n\t x = values[i];\n\t if (x >= range[0] && x <= range[1]) {\n\t bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n\t bin.y += k;\n\t bin.push(data[i]);\n\t }\n\t }\n\t }\n\t return bins;\n\t }\n\t histogram.value = function(x) {\n\t if (!arguments.length) return valuer;\n\t valuer = x;\n\t return histogram;\n\t };\n\t histogram.range = function(x) {\n\t if (!arguments.length) return ranger;\n\t ranger = d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.bins = function(x) {\n\t if (!arguments.length) return binner;\n\t binner = typeof x === \"number\" ? function(range) {\n\t return d3_layout_histogramBinFixed(range, x);\n\t } : d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.frequency = function(x) {\n\t if (!arguments.length) return frequency;\n\t frequency = !!x;\n\t return histogram;\n\t };\n\t return histogram;\n\t };\n\t function d3_layout_histogramBinSturges(range, values) {\n\t return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n\t }\n\t function d3_layout_histogramBinFixed(range, n) {\n\t var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n\t while (++x <= n) f[x] = m * x + b;\n\t return f;\n\t }\n\t function d3_layout_histogramRange(values) {\n\t return [ d3.min(values), d3.max(values) ];\n\t }\n\t d3.layout.pack = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n\t function pack(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n\t return radius;\n\t };\n\t root.x = root.y = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r = +r(d.value);\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t if (padding) {\n\t var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r += dr;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r -= dr;\n\t });\n\t }\n\t d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n\t return nodes;\n\t }\n\t pack.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _;\n\t return pack;\n\t };\n\t pack.radius = function(_) {\n\t if (!arguments.length) return radius;\n\t radius = _ == null || typeof _ === \"function\" ? _ : +_;\n\t return pack;\n\t };\n\t pack.padding = function(_) {\n\t if (!arguments.length) return padding;\n\t padding = +_;\n\t return pack;\n\t };\n\t return d3_layout_hierarchyRebind(pack, hierarchy);\n\t };\n\t function d3_layout_packSort(a, b) {\n\t return a.value - b.value;\n\t }\n\t function d3_layout_packInsert(a, b) {\n\t var c = a._pack_next;\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t b._pack_next = c;\n\t c._pack_prev = b;\n\t }\n\t function d3_layout_packSplice(a, b) {\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t }\n\t function d3_layout_packIntersects(a, b) {\n\t var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n\t return .999 * dr * dr > dx * dx + dy * dy;\n\t }\n\t function d3_layout_packSiblings(node) {\n\t if (!(nodes = node.children) || !(n = nodes.length)) return;\n\t var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n\t function bound(node) {\n\t xMin = Math.min(node.x - node.r, xMin);\n\t xMax = Math.max(node.x + node.r, xMax);\n\t yMin = Math.min(node.y - node.r, yMin);\n\t yMax = Math.max(node.y + node.r, yMax);\n\t }\n\t nodes.forEach(d3_layout_packLink);\n\t a = nodes[0];\n\t a.x = -a.r;\n\t a.y = 0;\n\t bound(a);\n\t if (n > 1) {\n\t b = nodes[1];\n\t b.x = b.r;\n\t b.y = 0;\n\t bound(b);\n\t if (n > 2) {\n\t c = nodes[2];\n\t d3_layout_packPlace(a, b, c);\n\t bound(c);\n\t d3_layout_packInsert(a, c);\n\t a._pack_prev = c;\n\t d3_layout_packInsert(c, b);\n\t b = a._pack_next;\n\t for (i = 3; i < n; i++) {\n\t d3_layout_packPlace(a, b, c = nodes[i]);\n\t var isect = 0, s1 = 1, s2 = 1;\n\t for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n\t if (d3_layout_packIntersects(j, c)) {\n\t isect = 1;\n\t break;\n\t }\n\t }\n\t if (isect == 1) {\n\t for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n\t if (d3_layout_packIntersects(k, c)) {\n\t break;\n\t }\n\t }\n\t }\n\t if (isect) {\n\t if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n\t i--;\n\t } else {\n\t d3_layout_packInsert(a, c);\n\t b = c;\n\t bound(c);\n\t }\n\t }\n\t }\n\t }\n\t var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n\t for (i = 0; i < n; i++) {\n\t c = nodes[i];\n\t c.x -= cx;\n\t c.y -= cy;\n\t cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n\t }\n\t node.r = cr;\n\t nodes.forEach(d3_layout_packUnlink);\n\t }\n\t function d3_layout_packLink(node) {\n\t node._pack_next = node._pack_prev = node;\n\t }\n\t function d3_layout_packUnlink(node) {\n\t delete node._pack_next;\n\t delete node._pack_prev;\n\t }\n\t function d3_layout_packTransform(node, x, y, k) {\n\t var children = node.children;\n\t node.x = x += k * node.x;\n\t node.y = y += k * node.y;\n\t node.r *= k;\n\t if (children) {\n\t var i = -1, n = children.length;\n\t while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n\t }\n\t }\n\t function d3_layout_packPlace(a, b, c) {\n\t var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n\t if (db && (dx || dy)) {\n\t var da = b.r + c.r, dc = dx * dx + dy * dy;\n\t da *= da;\n\t db *= db;\n\t var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n\t c.x = a.x + x * dx + y * dy;\n\t c.y = a.y + x * dy - y * dx;\n\t } else {\n\t c.x = a.x + db;\n\t c.y = a.y;\n\t }\n\t }\n\t d3.layout.tree = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n\t function tree(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n\t d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n\t d3_layout_hierarchyVisitBefore(root1, secondWalk);\n\t if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n\t var left = root0, right = root0, bottom = root0;\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t if (node.x < left.x) left = node;\n\t if (node.x > right.x) right = node;\n\t if (node.depth > bottom.depth) bottom = node;\n\t });\n\t var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t node.x = (node.x + tx) * kx;\n\t node.y = node.depth * ky;\n\t });\n\t }\n\t return nodes;\n\t }\n\t function wrapTree(root0) {\n\t var root1 = {\n\t A: null,\n\t children: [ root0 ]\n\t }, queue = [ root1 ], node1;\n\t while ((node1 = queue.pop()) != null) {\n\t for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n\t queue.push((children[i] = child = {\n\t _: children[i],\n\t parent: node1,\n\t children: (child = children[i].children) && child.slice() || [],\n\t A: null,\n\t a: null,\n\t z: 0,\n\t m: 0,\n\t c: 0,\n\t s: 0,\n\t t: null,\n\t i: i\n\t }).a = child);\n\t }\n\t }\n\t return root1.children[0];\n\t }\n\t function firstWalk(v) {\n\t var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n\t if (children.length) {\n\t d3_layout_treeShift(v);\n\t var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n\t if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t v.m = v.z - midpoint;\n\t } else {\n\t v.z = midpoint;\n\t }\n\t } else if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t }\n\t v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n\t }\n\t function secondWalk(v) {\n\t v._.x = v.z + v.parent.m;\n\t v.m += v.parent.m;\n\t }\n\t function apportion(v, w, ancestor) {\n\t if (w) {\n\t var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n\t while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n\t vom = d3_layout_treeLeft(vom);\n\t vop = d3_layout_treeRight(vop);\n\t vop.a = v;\n\t shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n\t if (shift > 0) {\n\t d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n\t sip += shift;\n\t sop += shift;\n\t }\n\t sim += vim.m;\n\t sip += vip.m;\n\t som += vom.m;\n\t sop += vop.m;\n\t }\n\t if (vim && !d3_layout_treeRight(vop)) {\n\t vop.t = vim;\n\t vop.m += sim - sop;\n\t }\n\t if (vip && !d3_layout_treeLeft(vom)) {\n\t vom.t = vip;\n\t vom.m += sip - som;\n\t ancestor = v;\n\t }\n\t }\n\t return ancestor;\n\t }\n\t function sizeNode(node) {\n\t node.x *= size[0];\n\t node.y = node.depth * size[1];\n\t }\n\t tree.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return tree;\n\t };\n\t tree.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null ? sizeNode : null;\n\t return tree;\n\t };\n\t tree.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) == null ? null : sizeNode;\n\t return tree;\n\t };\n\t return d3_layout_hierarchyRebind(tree, hierarchy);\n\t };\n\t function d3_layout_treeSeparation(a, b) {\n\t return a.parent == b.parent ? 1 : 2;\n\t }\n\t function d3_layout_treeLeft(v) {\n\t var children = v.children;\n\t return children.length ? children[0] : v.t;\n\t }\n\t function d3_layout_treeRight(v) {\n\t var children = v.children, n;\n\t return (n = children.length) ? children[n - 1] : v.t;\n\t }\n\t function d3_layout_treeMove(wm, wp, shift) {\n\t var change = shift / (wp.i - wm.i);\n\t wp.c -= change;\n\t wp.s += shift;\n\t wm.c += change;\n\t wp.z += shift;\n\t wp.m += shift;\n\t }\n\t function d3_layout_treeShift(v) {\n\t var shift = 0, change = 0, children = v.children, i = children.length, w;\n\t while (--i >= 0) {\n\t w = children[i];\n\t w.z += shift;\n\t w.m += shift;\n\t shift += w.s + (change += w.c);\n\t }\n\t }\n\t function d3_layout_treeAncestor(vim, v, ancestor) {\n\t return vim.a.parent === v.parent ? vim.a : ancestor;\n\t }\n\t d3.layout.cluster = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n\t function cluster(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t node.x = d3_layout_clusterX(children);\n\t node.y = d3_layout_clusterY(children);\n\t } else {\n\t node.x = previousNode ? x += separation(node, previousNode) : 0;\n\t node.y = 0;\n\t previousNode = node;\n\t }\n\t });\n\t var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n\t d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n\t node.x = (node.x - root.x) * size[0];\n\t node.y = (root.y - node.y) * size[1];\n\t } : function(node) {\n\t node.x = (node.x - x0) / (x1 - x0) * size[0];\n\t node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n\t });\n\t return nodes;\n\t }\n\t cluster.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return cluster;\n\t };\n\t cluster.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null;\n\t return cluster;\n\t };\n\t cluster.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) != null;\n\t return cluster;\n\t };\n\t return d3_layout_hierarchyRebind(cluster, hierarchy);\n\t };\n\t function d3_layout_clusterY(children) {\n\t return 1 + d3.max(children, function(child) {\n\t return child.y;\n\t });\n\t }\n\t function d3_layout_clusterX(children) {\n\t return children.reduce(function(x, child) {\n\t return x + child.x;\n\t }, 0) / children.length;\n\t }\n\t function d3_layout_clusterLeft(node) {\n\t var children = node.children;\n\t return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n\t }\n\t function d3_layout_clusterRight(node) {\n\t var children = node.children, n;\n\t return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n\t }\n\t d3.layout.treemap = function() {\n\t var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n\t function scale(children, k) {\n\t var i = -1, n = children.length, child, area;\n\t while (++i < n) {\n\t area = (child = children[i]).value * (k < 0 ? 0 : k);\n\t child.area = isNaN(area) || area <= 0 ? 0 : area;\n\t }\n\t }\n\t function squarify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while ((n = remaining.length) > 0) {\n\t row.push(child = remaining[n - 1]);\n\t row.area += child.area;\n\t if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n\t remaining.pop();\n\t best = score;\n\t } else {\n\t row.area -= row.pop().area;\n\t position(row, u, rect, false);\n\t u = Math.min(rect.dx, rect.dy);\n\t row.length = row.area = 0;\n\t best = Infinity;\n\t }\n\t }\n\t if (row.length) {\n\t position(row, u, rect, true);\n\t row.length = row.area = 0;\n\t }\n\t children.forEach(squarify);\n\t }\n\t }\n\t function stickify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), remaining = children.slice(), child, row = [];\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while (child = remaining.pop()) {\n\t row.push(child);\n\t row.area += child.area;\n\t if (child.z != null) {\n\t position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n\t row.length = row.area = 0;\n\t }\n\t }\n\t children.forEach(stickify);\n\t }\n\t }\n\t function worst(row, u) {\n\t var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n\t while (++i < n) {\n\t if (!(r = row[i].area)) continue;\n\t if (r < rmin) rmin = r;\n\t if (r > rmax) rmax = r;\n\t }\n\t s *= s;\n\t u *= u;\n\t return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n\t }\n\t function position(row, u, rect, flush) {\n\t var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n\t if (u == rect.dx) {\n\t if (flush || v > rect.dy) v = rect.dy;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dy = v;\n\t x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n\t }\n\t o.z = true;\n\t o.dx += rect.x + rect.dx - x;\n\t rect.y += v;\n\t rect.dy -= v;\n\t } else {\n\t if (flush || v > rect.dx) v = rect.dx;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dx = v;\n\t y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n\t }\n\t o.z = false;\n\t o.dy += rect.y + rect.dy - y;\n\t rect.x += v;\n\t rect.dx -= v;\n\t }\n\t }\n\t function treemap(d) {\n\t var nodes = stickies || hierarchy(d), root = nodes[0];\n\t root.x = root.y = 0;\n\t if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n\t if (stickies) hierarchy.revalue(root);\n\t scale([ root ], root.dx * root.dy / root.value);\n\t (stickies ? stickify : squarify)(root);\n\t if (sticky) stickies = nodes;\n\t return nodes;\n\t }\n\t treemap.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return treemap;\n\t };\n\t treemap.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t function padFunction(node) {\n\t var p = x.call(treemap, node, node.depth);\n\t return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n\t }\n\t function padConstant(node) {\n\t return d3_layout_treemapPad(node, x);\n\t }\n\t var type;\n\t pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n\t padConstant) : padConstant;\n\t return treemap;\n\t };\n\t treemap.round = function(x) {\n\t if (!arguments.length) return round != Number;\n\t round = x ? Math.round : Number;\n\t return treemap;\n\t };\n\t treemap.sticky = function(x) {\n\t if (!arguments.length) return sticky;\n\t sticky = x;\n\t stickies = null;\n\t return treemap;\n\t };\n\t treemap.ratio = function(x) {\n\t if (!arguments.length) return ratio;\n\t ratio = x;\n\t return treemap;\n\t };\n\t treemap.mode = function(x) {\n\t if (!arguments.length) return mode;\n\t mode = x + \"\";\n\t return treemap;\n\t };\n\t return d3_layout_hierarchyRebind(treemap, hierarchy);\n\t };\n\t function d3_layout_treemapPadNull(node) {\n\t return {\n\t x: node.x,\n\t y: node.y,\n\t dx: node.dx,\n\t dy: node.dy\n\t };\n\t }\n\t function d3_layout_treemapPad(node, padding) {\n\t var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n\t if (dx < 0) {\n\t x += dx / 2;\n\t dx = 0;\n\t }\n\t if (dy < 0) {\n\t y += dy / 2;\n\t dy = 0;\n\t }\n\t return {\n\t x: x,\n\t y: y,\n\t dx: dx,\n\t dy: dy\n\t };\n\t }\n\t d3.random = {\n\t normal: function(µ, σ) {\n\t var n = arguments.length;\n\t if (n < 2) σ = 1;\n\t if (n < 1) µ = 0;\n\t return function() {\n\t var x, y, r;\n\t do {\n\t x = Math.random() * 2 - 1;\n\t y = Math.random() * 2 - 1;\n\t r = x * x + y * y;\n\t } while (!r || r > 1);\n\t return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n\t };\n\t },\n\t logNormal: function() {\n\t var random = d3.random.normal.apply(d3, arguments);\n\t return function() {\n\t return Math.exp(random());\n\t };\n\t },\n\t bates: function(m) {\n\t var random = d3.random.irwinHall(m);\n\t return function() {\n\t return random() / m;\n\t };\n\t },\n\t irwinHall: function(m) {\n\t return function() {\n\t for (var s = 0, j = 0; j < m; j++) s += Math.random();\n\t return s;\n\t };\n\t }\n\t };\n\t d3.scale = {};\n\t function d3_scaleExtent(domain) {\n\t var start = domain[0], stop = domain[domain.length - 1];\n\t return start < stop ? [ start, stop ] : [ stop, start ];\n\t }\n\t function d3_scaleRange(scale) {\n\t return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n\t }\n\t function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n\t var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n\t return function(x) {\n\t return i(u(x));\n\t };\n\t }\n\t function d3_scale_nice(domain, nice) {\n\t var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n\t if (x1 < x0) {\n\t dx = i0, i0 = i1, i1 = dx;\n\t dx = x0, x0 = x1, x1 = dx;\n\t }\n\t domain[i0] = nice.floor(x0);\n\t domain[i1] = nice.ceil(x1);\n\t return domain;\n\t }\n\t function d3_scale_niceStep(step) {\n\t return step ? {\n\t floor: function(x) {\n\t return Math.floor(x / step) * step;\n\t },\n\t ceil: function(x) {\n\t return Math.ceil(x / step) * step;\n\t }\n\t } : d3_scale_niceIdentity;\n\t }\n\t var d3_scale_niceIdentity = {\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n\t var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n\t if (domain[k] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range = range.slice().reverse();\n\t }\n\t while (++j <= k) {\n\t u.push(uninterpolate(domain[j - 1], domain[j]));\n\t i.push(interpolate(range[j - 1], range[j]));\n\t }\n\t return function(x) {\n\t var j = d3.bisect(domain, x, 1, k) - 1;\n\t return i[j](u[j](x));\n\t };\n\t }\n\t d3.scale.linear = function() {\n\t return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n\t };\n\t function d3_scale_linear(domain, range, interpolate, clamp) {\n\t var output, input;\n\t function rescale() {\n\t var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n\t output = linear(domain, range, uninterpolate, interpolate);\n\t input = linear(range, domain, uninterpolate, d3_interpolate);\n\t return scale;\n\t }\n\t function scale(x) {\n\t return output(x);\n\t }\n\t scale.invert = function(y) {\n\t return input(y);\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(Number);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.rangeRound = function(x) {\n\t return scale.range(x).interpolate(d3_interpolateRound);\n\t };\n\t scale.clamp = function(x) {\n\t if (!arguments.length) return clamp;\n\t clamp = x;\n\t return rescale();\n\t };\n\t scale.interpolate = function(x) {\n\t if (!arguments.length) return interpolate;\n\t interpolate = x;\n\t return rescale();\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t d3_scale_linearNice(domain, m);\n\t return rescale();\n\t };\n\t scale.copy = function() {\n\t return d3_scale_linear(domain, range, interpolate, clamp);\n\t };\n\t return rescale();\n\t }\n\t function d3_scale_linearRebind(scale, linear) {\n\t return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n\t }\n\t function d3_scale_linearNice(domain, m) {\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t return domain;\n\t }\n\t function d3_scale_linearTickRange(domain, m) {\n\t if (m == null) m = 10;\n\t var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n\t if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n\t extent[0] = Math.ceil(extent[0] / step) * step;\n\t extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n\t extent[2] = step;\n\t return extent;\n\t }\n\t function d3_scale_linearTicks(domain, m) {\n\t return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n\t }\n\t function d3_scale_linearTickFormat(domain, m, format) {\n\t var range = d3_scale_linearTickRange(domain, m);\n\t if (format) {\n\t var match = d3_format_re.exec(format);\n\t match.shift();\n\t if (match[8] === \"s\") {\n\t var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n\t match[8] = \"f\";\n\t format = d3.format(match.join(\"\"));\n\t return function(d) {\n\t return format(prefix.scale(d)) + prefix.symbol;\n\t };\n\t }\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n\t format = match.join(\"\");\n\t } else {\n\t format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n\t }\n\t return d3.format(format);\n\t }\n\t var d3_scale_linearFormatSignificant = {\n\t s: 1,\n\t g: 1,\n\t p: 1,\n\t r: 1,\n\t e: 1\n\t };\n\t function d3_scale_linearPrecision(value) {\n\t return -Math.floor(Math.log(value) / Math.LN10 + .01);\n\t }\n\t function d3_scale_linearFormatPrecision(type, range) {\n\t var p = d3_scale_linearPrecision(range[2]);\n\t return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n\t }\n\t d3.scale.log = function() {\n\t return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n\t };\n\t function d3_scale_log(linear, base, positive, domain) {\n\t function log(x) {\n\t return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n\t }\n\t function pow(x) {\n\t return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n\t }\n\t function scale(x) {\n\t return linear(log(x));\n\t }\n\t scale.invert = function(x) {\n\t return pow(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t positive = x[0] >= 0;\n\t linear.domain((domain = x.map(Number)).map(log));\n\t return scale;\n\t };\n\t scale.base = function(_) {\n\t if (!arguments.length) return base;\n\t base = +_;\n\t linear.domain(domain.map(log));\n\t return scale;\n\t };\n\t scale.nice = function() {\n\t var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n\t linear.domain(niced);\n\t domain = niced.map(pow);\n\t return scale;\n\t };\n\t scale.ticks = function() {\n\t var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n\t if (isFinite(j - i)) {\n\t if (positive) {\n\t for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n\t ticks.push(pow(i));\n\t } else {\n\t ticks.push(pow(i));\n\t for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n\t }\n\t for (i = 0; ticks[i] < u; i++) {}\n\t for (j = ticks.length; ticks[j - 1] > v; j--) {}\n\t ticks = ticks.slice(i, j);\n\t }\n\t return ticks;\n\t };\n\t scale.tickFormat = function(n, format) {\n\t if (!arguments.length) return d3_scale_logFormat;\n\t if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n\t var k = Math.max(1, base * n / scale.ticks().length);\n\t return function(d) {\n\t var i = d / pow(Math.round(log(d)));\n\t if (i * base < base - .5) i *= base;\n\t return i <= k ? format(d) : \"\";\n\t };\n\t };\n\t scale.copy = function() {\n\t return d3_scale_log(linear.copy(), base, positive, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n\t floor: function(x) {\n\t return -Math.ceil(-x);\n\t },\n\t ceil: function(x) {\n\t return -Math.floor(-x);\n\t }\n\t };\n\t d3.scale.pow = function() {\n\t return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_pow(linear, exponent, domain) {\n\t var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n\t function scale(x) {\n\t return linear(powp(x));\n\t }\n\t scale.invert = function(x) {\n\t return powb(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t linear.domain((domain = x.map(Number)).map(powp));\n\t return scale;\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t return scale.domain(d3_scale_linearNice(domain, m));\n\t };\n\t scale.exponent = function(x) {\n\t if (!arguments.length) return exponent;\n\t powp = d3_scale_powPow(exponent = x);\n\t powb = d3_scale_powPow(1 / exponent);\n\t linear.domain(domain.map(powp));\n\t return scale;\n\t };\n\t scale.copy = function() {\n\t return d3_scale_pow(linear.copy(), exponent, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_scale_powPow(e) {\n\t return function(x) {\n\t return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n\t };\n\t }\n\t d3.scale.sqrt = function() {\n\t return d3.scale.pow().exponent(.5);\n\t };\n\t d3.scale.ordinal = function() {\n\t return d3_scale_ordinal([], {\n\t t: \"range\",\n\t a: [ [] ]\n\t });\n\t };\n\t function d3_scale_ordinal(domain, ranger) {\n\t var index, range, rangeBand;\n\t function scale(x) {\n\t return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n\t }\n\t function steps(start, step) {\n\t return d3.range(domain.length).map(function(i) {\n\t return start + step * i;\n\t });\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = [];\n\t index = new d3_Map();\n\t var i = -1, n = x.length, xi;\n\t while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n\t return scale[ranger.t].apply(scale, ranger.a);\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"range\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangePoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n\t 0) : (stop - start) / (domain.length - 1 + padding);\n\t range = steps(start + step * padding / 2, step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangePoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundPoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n\t 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n\t range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangeRoundPoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n\t range = steps(start + step * outerPadding, step);\n\t if (reverse) range.reverse();\n\t rangeBand = step * (1 - padding);\n\t ranger = {\n\t t: \"rangeBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n\t range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n\t if (reverse) range.reverse();\n\t rangeBand = Math.round(step * (1 - padding));\n\t ranger = {\n\t t: \"rangeRoundBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBand = function() {\n\t return rangeBand;\n\t };\n\t scale.rangeExtent = function() {\n\t return d3_scaleExtent(ranger.a[0]);\n\t };\n\t scale.copy = function() {\n\t return d3_scale_ordinal(domain, ranger);\n\t };\n\t return scale.domain(domain);\n\t }\n\t d3.scale.category10 = function() {\n\t return d3.scale.ordinal().range(d3_category10);\n\t };\n\t d3.scale.category20 = function() {\n\t return d3.scale.ordinal().range(d3_category20);\n\t };\n\t d3.scale.category20b = function() {\n\t return d3.scale.ordinal().range(d3_category20b);\n\t };\n\t d3.scale.category20c = function() {\n\t return d3.scale.ordinal().range(d3_category20c);\n\t };\n\t var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n\t var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n\t var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n\t var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n\t d3.scale.quantile = function() {\n\t return d3_scale_quantile([], []);\n\t };\n\t function d3_scale_quantile(domain, range) {\n\t var thresholds;\n\t function rescale() {\n\t var k = 0, q = range.length;\n\t thresholds = [];\n\t while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n\t return scale;\n\t }\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.quantiles = function() {\n\t return thresholds;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantile(domain, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.quantize = function() {\n\t return d3_scale_quantize(0, 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_quantize(x0, x1, range) {\n\t var kx, i;\n\t function scale(x) {\n\t return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n\t }\n\t function rescale() {\n\t kx = range.length / (x1 - x0);\n\t i = range.length - 1;\n\t return scale;\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return [ x0, x1 ];\n\t x0 = +x[0];\n\t x1 = +x[x.length - 1];\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t y = y < 0 ? NaN : y / kx + x0;\n\t return [ y, y + 1 / kx ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantize(x0, x1, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.threshold = function() {\n\t return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n\t };\n\t function d3_scale_threshold(domain, range) {\n\t function scale(x) {\n\t if (x <= x) return range[d3.bisect(domain, x)];\n\t }\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain;\n\t domain = _;\n\t return scale;\n\t };\n\t scale.range = function(_) {\n\t if (!arguments.length) return range;\n\t range = _;\n\t return scale;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return [ domain[y - 1], domain[y] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_threshold(domain, range);\n\t };\n\t return scale;\n\t }\n\t d3.scale.identity = function() {\n\t return d3_scale_identity([ 0, 1 ]);\n\t };\n\t function d3_scale_identity(domain) {\n\t function identity(x) {\n\t return +x;\n\t }\n\t identity.invert = identity;\n\t identity.domain = identity.range = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(identity);\n\t return identity;\n\t };\n\t identity.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t identity.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t identity.copy = function() {\n\t return d3_scale_identity(domain);\n\t };\n\t return identity;\n\t }\n\t d3.svg = {};\n\t function d3_zero() {\n\t return 0;\n\t }\n\t d3.svg.arc = function() {\n\t var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n\t function arc() {\n\t var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n\t if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n\t if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n\t var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n\t if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n\t rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n\t if (!cw) p1 *= -1;\n\t if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n\t if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n\t }\n\t if (r1) {\n\t x0 = r1 * Math.cos(a0 + p1);\n\t y0 = r1 * Math.sin(a0 + p1);\n\t x1 = r1 * Math.cos(a1 - p1);\n\t y1 = r1 * Math.sin(a1 - p1);\n\t var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n\t if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n\t var h1 = (a0 + a1) / 2;\n\t x0 = r1 * Math.cos(h1);\n\t y0 = r1 * Math.sin(h1);\n\t x1 = y1 = null;\n\t }\n\t } else {\n\t x0 = y0 = 0;\n\t }\n\t if (r0) {\n\t x2 = r0 * Math.cos(a1 - p0);\n\t y2 = r0 * Math.sin(a1 - p0);\n\t x3 = r0 * Math.cos(a0 + p0);\n\t y3 = r0 * Math.sin(a0 + p0);\n\t var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n\t if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n\t var h0 = (a0 + a1) / 2;\n\t x2 = r0 * Math.cos(h0);\n\t y2 = r0 * Math.sin(h0);\n\t x3 = y3 = null;\n\t }\n\t } else {\n\t x2 = y2 = 0;\n\t }\n\t if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n\t cr = r0 < r1 ^ cw ? 0 : 1;\n\t var rc1 = rc, rc0 = rc;\n\t if (da < π) {\n\t var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\t rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n\t rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n\t }\n\t if (x1 != null) {\n\t var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n\t if (rc === rc1) {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n\t } else {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t }\n\t if (x3 != null) {\n\t var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n\t if (rc === rc0) {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t } else {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t }\n\t } else {\n\t path.push(\"L\", x2, \",\", y2);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n\t path.push(\"L\", x2, \",\", y2);\n\t if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n\t }\n\t path.push(\"Z\");\n\t return path.join(\"\");\n\t }\n\t function circleSegment(r1, cw) {\n\t return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n\t }\n\t arc.innerRadius = function(v) {\n\t if (!arguments.length) return innerRadius;\n\t innerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.outerRadius = function(v) {\n\t if (!arguments.length) return outerRadius;\n\t outerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.cornerRadius = function(v) {\n\t if (!arguments.length) return cornerRadius;\n\t cornerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padRadius = function(v) {\n\t if (!arguments.length) return padRadius;\n\t padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n\t return arc;\n\t };\n\t arc.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padAngle = function(v) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.centroid = function() {\n\t var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n\t return [ Math.cos(a) * r, Math.sin(a) * r ];\n\t };\n\t return arc;\n\t };\n\t var d3_svg_arcAuto = \"auto\";\n\t function d3_svg_arcInnerRadius(d) {\n\t return d.innerRadius;\n\t }\n\t function d3_svg_arcOuterRadius(d) {\n\t return d.outerRadius;\n\t }\n\t function d3_svg_arcStartAngle(d) {\n\t return d.startAngle;\n\t }\n\t function d3_svg_arcEndAngle(d) {\n\t return d.endAngle;\n\t }\n\t function d3_svg_arcPadAngle(d) {\n\t return d && d.padAngle;\n\t }\n\t function d3_svg_arcSweep(x0, y0, x1, y1) {\n\t return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n\t }\n\t function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n\t var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n\t if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\t return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n\t }\n\t function d3_svg_line(projection) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n\t function line(data) {\n\t var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points), tension));\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n\t } else if (points.length) {\n\t segment();\n\t points = [];\n\t }\n\t }\n\t if (points.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t line.x = function(_) {\n\t if (!arguments.length) return x;\n\t x = _;\n\t return line;\n\t };\n\t line.y = function(_) {\n\t if (!arguments.length) return y;\n\t y = _;\n\t return line;\n\t };\n\t line.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return line;\n\t };\n\t line.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t return line;\n\t };\n\t line.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return line;\n\t };\n\t return line;\n\t }\n\t d3.svg.line = function() {\n\t return d3_svg_line(d3_identity);\n\t };\n\t var d3_svg_lineInterpolators = d3.map({\n\t linear: d3_svg_lineLinear,\n\t \"linear-closed\": d3_svg_lineLinearClosed,\n\t step: d3_svg_lineStep,\n\t \"step-before\": d3_svg_lineStepBefore,\n\t \"step-after\": d3_svg_lineStepAfter,\n\t basis: d3_svg_lineBasis,\n\t \"basis-open\": d3_svg_lineBasisOpen,\n\t \"basis-closed\": d3_svg_lineBasisClosed,\n\t bundle: d3_svg_lineBundle,\n\t cardinal: d3_svg_lineCardinal,\n\t \"cardinal-open\": d3_svg_lineCardinalOpen,\n\t \"cardinal-closed\": d3_svg_lineCardinalClosed,\n\t monotone: d3_svg_lineMonotone\n\t });\n\t d3_svg_lineInterpolators.forEach(function(key, value) {\n\t value.key = key;\n\t value.closed = /-closed$/.test(key);\n\t });\n\t function d3_svg_lineLinear(points) {\n\t return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n\t }\n\t function d3_svg_lineLinearClosed(points) {\n\t return points.join(\"L\") + \"Z\";\n\t }\n\t function d3_svg_lineStep(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n\t if (n > 1) path.push(\"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepBefore(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepAfter(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineCardinalOpen(points, tension) {\n\t return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineCardinalClosed(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n\t points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n\t }\n\t function d3_svg_lineCardinal(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineHermite(points, tangents) {\n\t if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n\t return d3_svg_lineLinear(points);\n\t }\n\t var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n\t if (quad) {\n\t path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n\t p0 = points[1];\n\t pi = 2;\n\t }\n\t if (tangents.length > 1) {\n\t t = tangents[1];\n\t p = points[pi];\n\t pi++;\n\t path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t for (var i = 2; i < tangents.length; i++, pi++) {\n\t p = points[pi];\n\t t = tangents[i];\n\t path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t }\n\t }\n\t if (quad) {\n\t var lp = points[pi];\n\t path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n\t }\n\t return path;\n\t }\n\t function d3_svg_lineCardinalTangents(points, tension) {\n\t var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n\t while (++i < n) {\n\t p0 = p1;\n\t p1 = p2;\n\t p2 = points[i];\n\t tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineBasis(points) {\n\t if (points.length < 3) return d3_svg_lineLinear(points);\n\t var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t points.push(points[n - 1]);\n\t while (++i <= n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t points.pop();\n\t path.push(\"L\", pi);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisOpen(points) {\n\t if (points.length < 4) return d3_svg_lineLinear(points);\n\t var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n\t while (++i < 3) {\n\t pi = points[i];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n\t --i;\n\t while (++i < n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisClosed(points) {\n\t var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n\t while (++i < 4) {\n\t pi = points[i % n];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t --i;\n\t while (++i < m) {\n\t pi = points[i % n];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBundle(points, tension) {\n\t var n = points.length - 1;\n\t if (n) {\n\t var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n\t while (++i <= n) {\n\t p = points[i];\n\t t = i / n;\n\t p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n\t p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n\t }\n\t }\n\t return d3_svg_lineBasis(points);\n\t }\n\t function d3_svg_lineDot4(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t }\n\t var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n\t function d3_svg_lineBasisBezier(path, x, y) {\n\t path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n\t }\n\t function d3_svg_lineSlope(p0, p1) {\n\t return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n\t }\n\t function d3_svg_lineFiniteDifferences(points) {\n\t var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n\t while (++i < j) {\n\t m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n\t }\n\t m[i] = d;\n\t return m;\n\t }\n\t function d3_svg_lineMonotoneTangents(points) {\n\t var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n\t while (++i < j) {\n\t d = d3_svg_lineSlope(points[i], points[i + 1]);\n\t if (abs(d) < ε) {\n\t m[i] = m[i + 1] = 0;\n\t } else {\n\t a = m[i] / d;\n\t b = m[i + 1] / d;\n\t s = a * a + b * b;\n\t if (s > 9) {\n\t s = d * 3 / Math.sqrt(s);\n\t m[i] = s * a;\n\t m[i + 1] = s * b;\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i <= j) {\n\t s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n\t tangents.push([ s || 0, m[i] * s || 0 ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineMonotone(points) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n\t }\n\t d3.svg.line.radial = function() {\n\t var line = d3_svg_line(d3_svg_lineRadial);\n\t line.radius = line.x, delete line.x;\n\t line.angle = line.y, delete line.y;\n\t return line;\n\t };\n\t function d3_svg_lineRadial(points) {\n\t var point, i = -1, n = points.length, r, a;\n\t while (++i < n) {\n\t point = points[i];\n\t r = point[0];\n\t a = point[1] - halfπ;\n\t point[0] = r * Math.cos(a);\n\t point[1] = r * Math.sin(a);\n\t }\n\t return points;\n\t }\n\t function d3_svg_area(projection) {\n\t var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n\t function area(data) {\n\t var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n\t return x;\n\t } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n\t return y;\n\t } : d3_functor(y1), x, y;\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n\t points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n\t } else if (points0.length) {\n\t segment();\n\t points0 = [];\n\t points1 = [];\n\t }\n\t }\n\t if (points0.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t area.x = function(_) {\n\t if (!arguments.length) return x1;\n\t x0 = x1 = _;\n\t return area;\n\t };\n\t area.x0 = function(_) {\n\t if (!arguments.length) return x0;\n\t x0 = _;\n\t return area;\n\t };\n\t area.x1 = function(_) {\n\t if (!arguments.length) return x1;\n\t x1 = _;\n\t return area;\n\t };\n\t area.y = function(_) {\n\t if (!arguments.length) return y1;\n\t y0 = y1 = _;\n\t return area;\n\t };\n\t area.y0 = function(_) {\n\t if (!arguments.length) return y0;\n\t y0 = _;\n\t return area;\n\t };\n\t area.y1 = function(_) {\n\t if (!arguments.length) return y1;\n\t y1 = _;\n\t return area;\n\t };\n\t area.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return area;\n\t };\n\t area.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t interpolateReverse = interpolate.reverse || interpolate;\n\t L = interpolate.closed ? \"M\" : \"L\";\n\t return area;\n\t };\n\t area.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return area;\n\t };\n\t return area;\n\t }\n\t d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n\t d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n\t d3.svg.area = function() {\n\t return d3_svg_area(d3_identity);\n\t };\n\t d3.svg.area.radial = function() {\n\t var area = d3_svg_area(d3_svg_lineRadial);\n\t area.radius = area.x, delete area.x;\n\t area.innerRadius = area.x0, delete area.x0;\n\t area.outerRadius = area.x1, delete area.x1;\n\t area.angle = area.y, delete area.y;\n\t area.startAngle = area.y0, delete area.y0;\n\t area.endAngle = area.y1, delete area.y1;\n\t return area;\n\t };\n\t d3.svg.chord = function() {\n\t var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n\t function chord(d, i) {\n\t var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n\t return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n\t }\n\t function subgroup(self, f, d, i) {\n\t var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n\t return {\n\t r: r,\n\t a0: a0,\n\t a1: a1,\n\t p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n\t p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n\t };\n\t }\n\t function equals(a, b) {\n\t return a.a0 == b.a0 && a.a1 == b.a1;\n\t }\n\t function arc(r, p, a) {\n\t return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n\t }\n\t function curve(r0, p0, r1, p1) {\n\t return \"Q 0,0 \" + p1;\n\t }\n\t chord.radius = function(v) {\n\t if (!arguments.length) return radius;\n\t radius = d3_functor(v);\n\t return chord;\n\t };\n\t chord.source = function(v) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(v);\n\t return chord;\n\t };\n\t chord.target = function(v) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(v);\n\t return chord;\n\t };\n\t chord.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return chord;\n\t };\n\t chord.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return chord;\n\t };\n\t return chord;\n\t };\n\t function d3_svg_chordRadius(d) {\n\t return d.radius;\n\t }\n\t d3.svg.diagonal = function() {\n\t var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n\t function diagonal(d, i) {\n\t var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n\t x: p0.x,\n\t y: m\n\t }, {\n\t x: p3.x,\n\t y: m\n\t }, p3 ];\n\t p = p.map(projection);\n\t return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n\t }\n\t diagonal.source = function(x) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.target = function(x) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.projection = function(x) {\n\t if (!arguments.length) return projection;\n\t projection = x;\n\t return diagonal;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalProjection(d) {\n\t return [ d.x, d.y ];\n\t }\n\t d3.svg.diagonal.radial = function() {\n\t var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n\t diagonal.projection = function(x) {\n\t return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalRadialProjection(projection) {\n\t return function() {\n\t var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n\t return [ r * Math.cos(a), r * Math.sin(a) ];\n\t };\n\t }\n\t d3.svg.symbol = function() {\n\t var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n\t function symbol(d, i) {\n\t return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n\t }\n\t symbol.type = function(x) {\n\t if (!arguments.length) return type;\n\t type = d3_functor(x);\n\t return symbol;\n\t };\n\t symbol.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = d3_functor(x);\n\t return symbol;\n\t };\n\t return symbol;\n\t };\n\t function d3_svg_symbolSize() {\n\t return 64;\n\t }\n\t function d3_svg_symbolType() {\n\t return \"circle\";\n\t }\n\t function d3_svg_symbolCircle(size) {\n\t var r = Math.sqrt(size / π);\n\t return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n\t }\n\t var d3_svg_symbols = d3.map({\n\t circle: d3_svg_symbolCircle,\n\t cross: function(size) {\n\t var r = Math.sqrt(size / 5) / 2;\n\t return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n\t },\n\t diamond: function(size) {\n\t var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n\t return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n\t },\n\t square: function(size) {\n\t var r = Math.sqrt(size) / 2;\n\t return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n\t },\n\t \"triangle-down\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n\t },\n\t \"triangle-up\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n\t }\n\t });\n\t d3.svg.symbolTypes = d3_svg_symbols.keys();\n\t var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n\t d3_selectionPrototype.transition = function(name) {\n\t var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n\t time: Date.now(),\n\t ease: d3_ease_cubicInOut,\n\t delay: 0,\n\t duration: 250\n\t };\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_selectionPrototype.interrupt = function(name) {\n\t return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n\t };\n\t var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n\t function d3_selection_interruptNS(ns) {\n\t return function() {\n\t var lock, activeId, active;\n\t if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t if (--lock.count) delete lock[activeId]; else delete this[ns];\n\t lock.active += .5;\n\t active.event && active.event.interrupt.call(this, this.__data__, active.index);\n\t }\n\t };\n\t }\n\t function d3_transition(groups, ns, id) {\n\t d3_subclass(groups, d3_transitionPrototype);\n\t groups.namespace = ns;\n\t groups.id = id;\n\t return groups;\n\t }\n\t var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n\t d3_transitionPrototype.call = d3_selectionPrototype.call;\n\t d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n\t d3_transitionPrototype.node = d3_selectionPrototype.node;\n\t d3_transitionPrototype.size = d3_selectionPrototype.size;\n\t d3.transition = function(selection, name) {\n\t return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n\t };\n\t d3.transition.prototype = d3_transitionPrototype;\n\t d3_transitionPrototype.select = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n\t subgroup.push(subnode);\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.selectAll = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t transition = node[ns][id];\n\t subnodes = selector.call(node, node.__data__, i, j);\n\t subgroups.push(subgroup = []);\n\t for (var k = -1, o = subnodes.length; ++k < o; ) {\n\t if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n\t subgroup.push(subnode);\n\t }\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, this.namespace, this.id);\n\t };\n\t d3_transitionPrototype.tween = function(name, tween) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n\t return d3_selection_each(this, tween == null ? function(node) {\n\t node[ns][id].tween.remove(name);\n\t } : function(node) {\n\t node[ns][id].tween.set(name, tween);\n\t });\n\t };\n\t function d3_transition_tween(groups, name, value, tween) {\n\t var id = groups.id, ns = groups.namespace;\n\t return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n\t } : (value = tween(value), function(node) {\n\t node[ns][id].tween.set(name, value);\n\t }));\n\t }\n\t d3_transitionPrototype.attr = function(nameNS, value) {\n\t if (arguments.length < 2) {\n\t for (value in nameNS) this.attr(value, nameNS[value]);\n\t return this;\n\t }\n\t var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrTween(b) {\n\t return b == null ? attrNull : (b += \"\", function() {\n\t var a = this.getAttribute(name), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttribute(name, i(t));\n\t });\n\t });\n\t }\n\t function attrTweenNS(b) {\n\t return b == null ? attrNullNS : (b += \"\", function() {\n\t var a = this.getAttributeNS(name.space, name.local), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttributeNS(name.space, name.local, i(t));\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.attrTween = function(nameNS, tween) {\n\t var name = d3.ns.qualify(nameNS);\n\t function attrTween(d, i) {\n\t var f = tween.call(this, d, i, this.getAttribute(name));\n\t return f && function(t) {\n\t this.setAttribute(name, f(t));\n\t };\n\t }\n\t function attrTweenNS(d, i) {\n\t var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n\t return f && function(t) {\n\t this.setAttributeNS(name.space, name.local, f(t));\n\t };\n\t }\n\t return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.style(priority, name[priority], value);\n\t return this;\n\t }\n\t priority = \"\";\n\t }\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleString(b) {\n\t return b == null ? styleNull : (b += \"\", function() {\n\t var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n\t return a !== b && (i = d3_interpolate(a, b), function(t) {\n\t this.style.setProperty(name, i(t), priority);\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"style.\" + name, value, styleString);\n\t };\n\t d3_transitionPrototype.styleTween = function(name, tween, priority) {\n\t if (arguments.length < 3) priority = \"\";\n\t function styleTween(d, i) {\n\t var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n\t return f && function(t) {\n\t this.style.setProperty(name, f(t), priority);\n\t };\n\t }\n\t return this.tween(\"style.\" + name, styleTween);\n\t };\n\t d3_transitionPrototype.text = function(value) {\n\t return d3_transition_tween(this, \"text\", value, d3_transition_text);\n\t };\n\t function d3_transition_text(b) {\n\t if (b == null) b = \"\";\n\t return function() {\n\t this.textContent = b;\n\t };\n\t }\n\t d3_transitionPrototype.remove = function() {\n\t var ns = this.namespace;\n\t return this.each(\"end.transition\", function() {\n\t var p;\n\t if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n\t });\n\t };\n\t d3_transitionPrototype.ease = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].ease;\n\t if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n\t return d3_selection_each(this, function(node) {\n\t node[ns][id].ease = value;\n\t });\n\t };\n\t d3_transitionPrototype.delay = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].delay;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].delay = +value.call(node, node.__data__, i, j);\n\t } : (value = +value, function(node) {\n\t node[ns][id].delay = value;\n\t }));\n\t };\n\t d3_transitionPrototype.duration = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].duration;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n\t } : (value = Math.max(1, value), function(node) {\n\t node[ns][id].duration = value;\n\t }));\n\t };\n\t d3_transitionPrototype.each = function(type, listener) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) {\n\t var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n\t try {\n\t d3_transitionInheritId = id;\n\t d3_selection_each(this, function(node, i, j) {\n\t d3_transitionInherit = node[ns][id];\n\t type.call(node, node.__data__, i, j);\n\t });\n\t } finally {\n\t d3_transitionInherit = inherit;\n\t d3_transitionInheritId = inheritId;\n\t }\n\t } else {\n\t d3_selection_each(this, function(node) {\n\t var transition = node[ns][id];\n\t (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n\t });\n\t }\n\t return this;\n\t };\n\t d3_transitionPrototype.transition = function() {\n\t var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if (node = group[i]) {\n\t transition = node[ns][id0];\n\t d3_transitionNode(node, i, ns, id1, {\n\t time: transition.time,\n\t ease: transition.ease,\n\t delay: transition.delay + transition.duration,\n\t duration: transition.duration\n\t });\n\t }\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id1);\n\t };\n\t function d3_transitionNamespace(name) {\n\t return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n\t }\n\t function d3_transitionNode(node, i, ns, id, inherit) {\n\t var lock = node[ns] || (node[ns] = {\n\t active: 0,\n\t count: 0\n\t }), transition = lock[id], time, timer, duration, ease, tweens;\n\t function schedule(elapsed) {\n\t var delay = transition.delay;\n\t timer.t = delay + time;\n\t if (delay <= elapsed) return start(elapsed - delay);\n\t timer.c = start;\n\t }\n\t function start(elapsed) {\n\t var activeId = lock.active, active = lock[activeId];\n\t if (active) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t --lock.count;\n\t delete lock[activeId];\n\t active.event && active.event.interrupt.call(node, node.__data__, active.index);\n\t }\n\t for (var cancelId in lock) {\n\t if (+cancelId < id) {\n\t var cancel = lock[cancelId];\n\t cancel.timer.c = null;\n\t cancel.timer.t = NaN;\n\t --lock.count;\n\t delete lock[cancelId];\n\t }\n\t }\n\t timer.c = tick;\n\t d3_timer(function() {\n\t if (timer.c && tick(elapsed || 1)) {\n\t timer.c = null;\n\t timer.t = NaN;\n\t }\n\t return 1;\n\t }, 0, time);\n\t lock.active = id;\n\t transition.event && transition.event.start.call(node, node.__data__, i);\n\t tweens = [];\n\t transition.tween.forEach(function(key, value) {\n\t if (value = value.call(node, node.__data__, i)) {\n\t tweens.push(value);\n\t }\n\t });\n\t ease = transition.ease;\n\t duration = transition.duration;\n\t }\n\t function tick(elapsed) {\n\t var t = elapsed / duration, e = ease(t), n = tweens.length;\n\t while (n > 0) {\n\t tweens[--n].call(node, e);\n\t }\n\t if (t >= 1) {\n\t transition.event && transition.event.end.call(node, node.__data__, i);\n\t if (--lock.count) delete lock[id]; else delete node[ns];\n\t return 1;\n\t }\n\t }\n\t if (!transition) {\n\t time = inherit.time;\n\t timer = d3_timer(schedule, 0, time);\n\t transition = lock[id] = {\n\t tween: new d3_Map(),\n\t time: time,\n\t timer: timer,\n\t delay: inherit.delay,\n\t duration: inherit.duration,\n\t ease: inherit.ease,\n\t index: i\n\t };\n\t inherit = null;\n\t ++lock.count;\n\t }\n\t }\n\t d3.svg.axis = function() {\n\t var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n\t function axis(g) {\n\t g.each(function() {\n\t var g = d3.select(this);\n\t var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n\t var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n\t var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n\t d3.transition(path));\n\t tickEnter.append(\"line\");\n\t tickEnter.append(\"text\");\n\t var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n\t if (orient === \"bottom\" || orient === \"top\") {\n\t tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n\t text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n\t pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n\t } else {\n\t tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n\t text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n\t pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n\t }\n\t lineEnter.attr(y2, sign * innerTickSize);\n\t textEnter.attr(y1, sign * tickSpacing);\n\t lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n\t textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n\t if (scale1.rangeBand) {\n\t var x = scale1, dx = x.rangeBand() / 2;\n\t scale0 = scale1 = function(d) {\n\t return x(d) + dx;\n\t };\n\t } else if (scale0.rangeBand) {\n\t scale0 = scale1;\n\t } else {\n\t tickExit.call(tickTransform, scale1, scale0);\n\t }\n\t tickEnter.call(tickTransform, scale0, scale1);\n\t tickUpdate.call(tickTransform, scale1, scale1);\n\t });\n\t }\n\t axis.scale = function(x) {\n\t if (!arguments.length) return scale;\n\t scale = x;\n\t return axis;\n\t };\n\t axis.orient = function(x) {\n\t if (!arguments.length) return orient;\n\t orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n\t return axis;\n\t };\n\t axis.ticks = function() {\n\t if (!arguments.length) return tickArguments_;\n\t tickArguments_ = d3_array(arguments);\n\t return axis;\n\t };\n\t axis.tickValues = function(x) {\n\t if (!arguments.length) return tickValues;\n\t tickValues = x;\n\t return axis;\n\t };\n\t axis.tickFormat = function(x) {\n\t if (!arguments.length) return tickFormat_;\n\t tickFormat_ = x;\n\t return axis;\n\t };\n\t axis.tickSize = function(x) {\n\t var n = arguments.length;\n\t if (!n) return innerTickSize;\n\t innerTickSize = +x;\n\t outerTickSize = +arguments[n - 1];\n\t return axis;\n\t };\n\t axis.innerTickSize = function(x) {\n\t if (!arguments.length) return innerTickSize;\n\t innerTickSize = +x;\n\t return axis;\n\t };\n\t axis.outerTickSize = function(x) {\n\t if (!arguments.length) return outerTickSize;\n\t outerTickSize = +x;\n\t return axis;\n\t };\n\t axis.tickPadding = function(x) {\n\t if (!arguments.length) return tickPadding;\n\t tickPadding = +x;\n\t return axis;\n\t };\n\t axis.tickSubdivide = function() {\n\t return arguments.length && axis;\n\t };\n\t return axis;\n\t };\n\t var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n\t top: 1,\n\t right: 1,\n\t bottom: 1,\n\t left: 1\n\t };\n\t function d3_svg_axisX(selection, x0, x1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = x0(d);\n\t return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n\t });\n\t }\n\t function d3_svg_axisY(selection, y0, y1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = y0(d);\n\t return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n\t });\n\t }\n\t d3.svg.brush = function() {\n\t var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n\t function brush(g) {\n\t g.each(function() {\n\t var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n\t var background = g.selectAll(\".background\").data([ 0 ]);\n\t background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n\t g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n\t var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n\t resize.exit().remove();\n\t resize.enter().append(\"g\").attr(\"class\", function(d) {\n\t return \"resize \" + d;\n\t }).style(\"cursor\", function(d) {\n\t return d3_svg_brushCursor[d];\n\t }).append(\"rect\").attr(\"x\", function(d) {\n\t return /[ew]$/.test(d) ? -3 : null;\n\t }).attr(\"y\", function(d) {\n\t return /^[ns]/.test(d) ? -3 : null;\n\t }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n\t resize.style(\"display\", brush.empty() ? \"none\" : null);\n\t var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n\t if (x) {\n\t range = d3_scaleRange(x);\n\t backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n\t redrawX(gUpdate);\n\t }\n\t if (y) {\n\t range = d3_scaleRange(y);\n\t backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n\t redrawY(gUpdate);\n\t }\n\t redraw(gUpdate);\n\t });\n\t }\n\t brush.event = function(g) {\n\t g.each(function() {\n\t var event_ = event.of(this, arguments), extent1 = {\n\t x: xExtent,\n\t y: yExtent,\n\t i: xExtentDomain,\n\t j: yExtentDomain\n\t }, extent0 = this.__chart__ || extent1;\n\t this.__chart__ = extent1;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.brush\", function() {\n\t xExtentDomain = extent0.i;\n\t yExtentDomain = extent0.j;\n\t xExtent = extent0.x;\n\t yExtent = extent0.y;\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t }).tween(\"brush:brush\", function() {\n\t var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n\t xExtentDomain = yExtentDomain = null;\n\t return function(t) {\n\t xExtent = extent1.x = xi(t);\n\t yExtent = extent1.y = yi(t);\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t };\n\t }).each(\"end.brush\", function() {\n\t xExtentDomain = extent1.i;\n\t yExtentDomain = extent1.j;\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t });\n\t } else {\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t });\n\t };\n\t function redraw(g) {\n\t g.selectAll(\".resize\").attr(\"transform\", function(d) {\n\t return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n\t });\n\t }\n\t function redrawX(g) {\n\t g.select(\".extent\").attr(\"x\", xExtent[0]);\n\t g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n\t }\n\t function redrawY(g) {\n\t g.select(\".extent\").attr(\"y\", yExtent[0]);\n\t g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n\t }\n\t function brushstart() {\n\t var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n\t var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n\t if (d3.event.changedTouches) {\n\t w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n\t } else {\n\t w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n\t }\n\t g.interrupt().selectAll(\"*\").interrupt();\n\t if (dragging) {\n\t origin[0] = xExtent[0] - origin[0];\n\t origin[1] = yExtent[0] - origin[1];\n\t } else if (resizing) {\n\t var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n\t offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n\t origin[0] = xExtent[ex];\n\t origin[1] = yExtent[ey];\n\t } else if (d3.event.altKey) center = origin.slice();\n\t g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n\t d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t brushmove();\n\t function keydown() {\n\t if (d3.event.keyCode == 32) {\n\t if (!dragging) {\n\t center = null;\n\t origin[0] -= xExtent[1];\n\t origin[1] -= yExtent[1];\n\t dragging = 2;\n\t }\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function keyup() {\n\t if (d3.event.keyCode == 32 && dragging == 2) {\n\t origin[0] += xExtent[1];\n\t origin[1] += yExtent[1];\n\t dragging = 0;\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function brushmove() {\n\t var point = d3.mouse(target), moved = false;\n\t if (offset) {\n\t point[0] += offset[0];\n\t point[1] += offset[1];\n\t }\n\t if (!dragging) {\n\t if (d3.event.altKey) {\n\t if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n\t origin[0] = xExtent[+(point[0] < center[0])];\n\t origin[1] = yExtent[+(point[1] < center[1])];\n\t } else center = null;\n\t }\n\t if (resizingX && move1(point, x, 0)) {\n\t redrawX(g);\n\t moved = true;\n\t }\n\t if (resizingY && move1(point, y, 1)) {\n\t redrawY(g);\n\t moved = true;\n\t }\n\t if (moved) {\n\t redraw(g);\n\t event_({\n\t type: \"brush\",\n\t mode: dragging ? \"move\" : \"resize\"\n\t });\n\t }\n\t }\n\t function move1(point, scale, i) {\n\t var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n\t if (dragging) {\n\t r0 -= position;\n\t r1 -= size + position;\n\t }\n\t min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n\t if (dragging) {\n\t max = (min += position) + size;\n\t } else {\n\t if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n\t if (position < min) {\n\t max = min;\n\t min = position;\n\t } else {\n\t max = position;\n\t }\n\t }\n\t if (extent[0] != min || extent[1] != max) {\n\t if (i) yExtentDomain = null; else xExtentDomain = null;\n\t extent[0] = min;\n\t extent[1] = max;\n\t return true;\n\t }\n\t }\n\t function brushend() {\n\t brushmove();\n\t g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n\t d3.select(\"body\").style(\"cursor\", null);\n\t w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n\t dragRestore();\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t }\n\t brush.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.clamp = function(z) {\n\t if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n\t if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n\t return brush;\n\t };\n\t brush.extent = function(z) {\n\t var x0, x1, y0, y1, t;\n\t if (!arguments.length) {\n\t if (x) {\n\t if (xExtentDomain) {\n\t x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n\t } else {\n\t x0 = xExtent[0], x1 = xExtent[1];\n\t if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t }\n\t }\n\t if (y) {\n\t if (yExtentDomain) {\n\t y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n\t } else {\n\t y0 = yExtent[0], y1 = yExtent[1];\n\t if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t }\n\t }\n\t return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n\t }\n\t if (x) {\n\t x0 = z[0], x1 = z[1];\n\t if (y) x0 = x0[0], x1 = x1[0];\n\t xExtentDomain = [ x0, x1 ];\n\t if (x.invert) x0 = x(x0), x1 = x(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n\t }\n\t if (y) {\n\t y0 = z[0], y1 = z[1];\n\t if (x) y0 = y0[1], y1 = y1[1];\n\t yExtentDomain = [ y0, y1 ];\n\t if (y.invert) y0 = y(y0), y1 = y(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n\t }\n\t return brush;\n\t };\n\t brush.clear = function() {\n\t if (!brush.empty()) {\n\t xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n\t xExtentDomain = yExtentDomain = null;\n\t }\n\t return brush;\n\t };\n\t brush.empty = function() {\n\t return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n\t };\n\t return d3.rebind(brush, event, \"on\");\n\t };\n\t var d3_svg_brushCursor = {\n\t n: \"ns-resize\",\n\t e: \"ew-resize\",\n\t s: \"ns-resize\",\n\t w: \"ew-resize\",\n\t nw: \"nwse-resize\",\n\t ne: \"nesw-resize\",\n\t se: \"nwse-resize\",\n\t sw: \"nesw-resize\"\n\t };\n\t var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n\t var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n\t var d3_time_formatUtc = d3_time_format.utc;\n\t var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n\t d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n\t function d3_time_formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t d3_time_formatIsoNative.parse = function(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t };\n\t d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n\t d3_time.second = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 1e3) * 1e3);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t d3_time.seconds = d3_time.second.range;\n\t d3_time.seconds.utc = d3_time.second.utc.range;\n\t d3_time.minute = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 6e4) * 6e4);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t d3_time.minutes = d3_time.minute.range;\n\t d3_time.minutes.utc = d3_time.minute.utc.range;\n\t d3_time.hour = d3_time_interval(function(date) {\n\t var timezone = date.getTimezoneOffset() / 60;\n\t return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t d3_time.hours = d3_time.hour.range;\n\t d3_time.hours.utc = d3_time.hour.utc.range;\n\t d3_time.month = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setDate(1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setMonth(date.getMonth() + offset);\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t d3_time.months = d3_time.month.range;\n\t d3_time.months.utc = d3_time.month.utc.range;\n\t function d3_time_scale(linear, methods, format) {\n\t function scale(x) {\n\t return linear(x);\n\t }\n\t scale.invert = function(x) {\n\t return d3_time_scaleDate(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n\t linear.domain(x);\n\t return scale;\n\t };\n\t function tickMethod(extent, count) {\n\t var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n\t return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n\t return d / 31536e6;\n\t }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n\t }\n\t scale.nice = function(interval, skip) {\n\t var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n\t if (method) interval = method[0], skip = method[1];\n\t function skipped(date) {\n\t return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n\t }\n\t return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n\t floor: function(date) {\n\t while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n\t return date;\n\t },\n\t ceil: function(date) {\n\t while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n\t return date;\n\t }\n\t } : interval));\n\t };\n\t scale.ticks = function(interval, skip) {\n\t var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n\t range: interval\n\t }, skip ];\n\t if (method) interval = method[0], skip = method[1];\n\t return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n\t };\n\t scale.tickFormat = function() {\n\t return format;\n\t };\n\t scale.copy = function() {\n\t return d3_time_scale(linear.copy(), methods, format);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_time_scaleDate(t) {\n\t return new Date(t);\n\t }\n\t var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n\t var d3_time_scaleLocalMethods = [ [ 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 ] ];\n\t var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n\t return d.getMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getDay() && d.getDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t var d3_time_scaleMilliseconds = {\n\t range: function(start, stop, step) {\n\t return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n\t },\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t d3_time_scaleLocalMethods.year = d3_time.year;\n\t d3_time.scale = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n\t };\n\t var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n\t return [ m[0].utc, m[1] ];\n\t });\n\t var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n\t return d.getUTCMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getUTCSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getUTCMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getUTCHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getUTCDay() && d.getUTCDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getUTCDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getUTCMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t d3_time_scaleUtcMethods.year = d3_time.year.utc;\n\t d3_time.scale.utc = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n\t };\n\t d3.text = d3_xhrType(function(request) {\n\t return request.responseText;\n\t });\n\t d3.json = function(url, callback) {\n\t return d3_xhr(url, \"application/json\", d3_json, callback);\n\t };\n\t function d3_json(request) {\n\t return JSON.parse(request.responseText);\n\t }\n\t d3.html = function(url, callback) {\n\t return d3_xhr(url, \"text/html\", d3_html, callback);\n\t };\n\t function d3_html(request) {\n\t var range = d3_document.createRange();\n\t range.selectNode(d3_document.body);\n\t return range.createContextualFragment(request.responseText);\n\t }\n\t d3.xml = d3_xhrType(function(request) {\n\t return request.responseXML;\n\t });\n\t if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n\t}();\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t version: '__VERSION__',\n\t dataflow: __webpack_require__(4),\n\t parse: __webpack_require__(52),\n\t scene: {\n\t Bounder: __webpack_require__(153),\n\t Builder: __webpack_require__(151),\n\t Encoder: __webpack_require__(152),\n\t GroupBuilder: __webpack_require__(150),\n\t visit: __webpack_require__(155)\n\t },\n\t transforms: __webpack_require__(103),\n\t Transform: __webpack_require__(105),\n\t BatchTransform: __webpack_require__(109),\n\t Parameter: __webpack_require__(106),\n\t schema: __webpack_require__(161),\n\t config: __webpack_require__(156),\n\t util: __webpack_require__(58),\n\t logging: __webpack_require__(8),\n\t debug: __webpack_require__(8).debug\n\t};\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t ChangeSet: __webpack_require__(5),\n\t Collector: __webpack_require__(7),\n\t DataSource: __webpack_require__(11),\n\t Dependencies: __webpack_require__(6),\n\t Graph: __webpack_require__(49),\n\t Node: __webpack_require__(10),\n\t Signal: __webpack_require__(51),\n\t Tuple: __webpack_require__(9),\n\t debug: __webpack_require__(8).debug\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar DEPS = __webpack_require__(6).ALL;\n\t\n\tfunction create(cs, reflow) {\n\t var out = {};\n\t copy(cs, out);\n\t\n\t out.add = [];\n\t out.mod = [];\n\t out.rem = [];\n\t\n\t out.reflow = reflow;\n\t\n\t return out;\n\t}\n\t\n\tfunction copy(a, b) {\n\t b.stamp = a ? a.stamp : 0;\n\t b.sort = a ? a.sort : null;\n\t b.facet = a ? a.facet : null;\n\t b.trans = a ? a.trans : null;\n\t b.dirty = a ? a.dirty : [];\n\t b.request = a ? a.request : null;\n\t for (var d, i=0, n=DEPS.length; i0;) {\n\t idMap(arguments[i], ids);\n\t }\n\t return data.filter(function(x) { return !ids[x._id]; });\n\t }\n\t};\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar DEPS = __webpack_require__(6).ALL,\n\t nodeID = 0;\n\t\n\tfunction Node(graph) {\n\t if (graph) this.init(graph);\n\t}\n\t\n\tvar Flags = Node.Flags = {\n\t Router: 0x01, // Responsible for propagating tuples, cannot be skipped.\n\t Collector: 0x02, // Holds a materialized dataset, pulse node to reflow.\n\t Produces: 0x04, // Produces new tuples. \n\t Mutates: 0x08, // Sets properties of incoming tuples.\n\t Reflows: 0x10, // Forwards a reflow pulse.\n\t Batch: 0x20 // Performs batch data processing, needs collector.\n\t};\n\t\n\tvar prototype = Node.prototype;\n\t\n\tprototype.init = function(graph) {\n\t this._id = ++nodeID;\n\t this._graph = graph;\n\t this._rank = graph.rank(); // Topological sort by rank\n\t this._qrank = null; // Rank when enqueued for propagation\n\t this._stamp = 0; // Last stamp seen\n\t\n\t this._listeners = [];\n\t this._listeners._ids = {}; // To prevent duplicate listeners\n\t\n\t // Initialize dependencies.\n\t this._deps = {};\n\t for (var i=0, n=DEPS.length; i l._rank) {\n\t l.rerank();\n\t }\n\t\n\t return this;\n\t};\n\t\n\tprototype.removeListener = function(l) {\n\t if (!this._listeners._ids[l._id]) return false;\n\t \n\t var idx = this._listeners.indexOf(l),\n\t b = idx >= 0;\n\t\n\t if (b) {\n\t this._listeners.splice(idx, 1);\n\t this._listeners._ids[l._id] = null;\n\t }\n\t return b;\n\t};\n\t\n\tprototype.disconnect = function() {\n\t this._listeners = [];\n\t this._listeners._ids = {};\n\t};\n\t\n\t// Evaluate this dataflow node for the current pulse.\n\t// Subclasses should override to perform custom processing.\n\tprototype.evaluate = function(pulse) {\n\t return pulse;\n\t};\n\t\n\t// Should this node be re-evaluated for the current pulse?\n\t// Searches pulse to see if any dependencies have updated.\n\tprototype.reevaluate = function(pulse) {\n\t var prop, dep, i, n, j, m;\n\t\n\t for (i=0, n=DEPS.length; i 1 ?\n\t function(x, v) {\n\t for (var i=0; i y) return sign[i];\n\t }\n\t return 0;\n\t };\n\t};\n\t\n\tu.cmp = function(a, b) {\n\t if (a < b) {\n\t return -1;\n\t } else if (a > b) {\n\t return 1;\n\t } else if (a >= b) {\n\t return 0;\n\t } else if (a === null) {\n\t return -1;\n\t } else if (b === null) {\n\t return 1;\n\t }\n\t return NaN;\n\t};\n\t\n\tu.numcmp = function(a, b) { return a - b; };\n\t\n\tu.stablesort = function(array, sortBy, keyFn) {\n\t var indices = array.reduce(function(idx, v, i) {\n\t return (idx[keyFn(v)] = i, idx);\n\t }, {});\n\t\n\t array.sort(function(a, b) {\n\t var sa = sortBy(a),\n\t sb = sortBy(b);\n\t return sa < sb ? -1 : sa > sb ? 1\n\t : (indices[keyFn(a)] - indices[keyFn(b)]);\n\t });\n\t\n\t return array;\n\t};\n\t\n\t\n\t// string functions\n\t\n\tu.pad = function(s, length, pos, padchar) {\n\t padchar = padchar || \" \";\n\t var d = length - s.length;\n\t if (d <= 0) return s;\n\t switch (pos) {\n\t case 'left':\n\t return strrep(d, padchar) + s;\n\t case 'middle':\n\t case 'center':\n\t return strrep(Math.floor(d/2), padchar) +\n\t s + strrep(Math.ceil(d/2), padchar);\n\t default:\n\t return s + strrep(d, padchar);\n\t }\n\t};\n\t\n\tfunction strrep(n, str) {\n\t var s = \"\", i;\n\t for (i=0; i \n\t * @license MIT\n\t */\n\t/* eslint-disable no-proto */\n\t\n\t'use strict'\n\t\n\tvar base64 = __webpack_require__(15)\n\tvar ieee754 = __webpack_require__(16)\n\tvar isArray = __webpack_require__(17)\n\t\n\texports.Buffer = Buffer\n\texports.SlowBuffer = SlowBuffer\n\texports.INSPECT_MAX_BYTES = 50\n\tBuffer.poolSize = 8192 // not used by this implementation\n\t\n\tvar rootParent = {}\n\t\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Use Object implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * Due to various browser bugs, sometimes the Object implementation will be used even\n\t * when the browser supports typed arrays.\n\t *\n\t * Note:\n\t *\n\t * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n\t * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n\t *\n\t * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n\t * on objects.\n\t *\n\t * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n\t *\n\t * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n\t * incorrect length in some situations.\n\t\n\t * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n\t * get the Object implementation, which is slower but behaves correctly.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n\t ? global.TYPED_ARRAY_SUPPORT\n\t : typedArraySupport()\n\t\n\tfunction typedArraySupport () {\n\t function Bar () {}\n\t try {\n\t var arr = new Uint8Array(1)\n\t arr.foo = function () { return 42 }\n\t arr.constructor = Bar\n\t return arr.foo() === 42 && // typed array instances can be augmented\n\t arr.constructor === Bar && // constructor can be set\n\t typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n\t arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\t\n\tfunction kMaxLength () {\n\t return Buffer.TYPED_ARRAY_SUPPORT\n\t ? 0x7fffffff\n\t : 0x3fffffff\n\t}\n\t\n\t/**\n\t * Class: Buffer\n\t * =============\n\t *\n\t * The Buffer constructor returns instances of `Uint8Array` that are augmented\n\t * with function properties for all the node `Buffer` API functions. We use\n\t * `Uint8Array` so that square bracket notation works as expected -- it returns\n\t * a single octet.\n\t *\n\t * By augmenting the instances, we can avoid modifying the `Uint8Array`\n\t * prototype.\n\t */\n\tfunction Buffer (arg) {\n\t if (!(this instanceof Buffer)) {\n\t // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n\t if (arguments.length > 1) return new Buffer(arg, arguments[1])\n\t return new Buffer(arg)\n\t }\n\t\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t this.length = 0\n\t this.parent = undefined\n\t }\n\t\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t return fromNumber(this, arg)\n\t }\n\t\n\t // Slightly less common case.\n\t if (typeof arg === 'string') {\n\t return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n\t }\n\t\n\t // Unusual.\n\t return fromObject(this, arg)\n\t}\n\t\n\tfunction fromNumber (that, length) {\n\t that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < length; i++) {\n\t that[i] = 0\n\t }\n\t }\n\t return that\n\t}\n\t\n\tfunction fromString (that, string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\t\n\t // Assumption: byteLength() return value is always < kMaxLength.\n\t var length = byteLength(string, encoding) | 0\n\t that = allocate(that, length)\n\t\n\t that.write(string, encoding)\n\t return that\n\t}\n\t\n\tfunction fromObject (that, object) {\n\t if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\t\n\t if (isArray(object)) return fromArray(that, object)\n\t\n\t if (object == null) {\n\t throw new TypeError('must start with number, buffer, array or string')\n\t }\n\t\n\t if (typeof ArrayBuffer !== 'undefined') {\n\t if (object.buffer instanceof ArrayBuffer) {\n\t return fromTypedArray(that, object)\n\t }\n\t if (object instanceof ArrayBuffer) {\n\t return fromArrayBuffer(that, object)\n\t }\n\t }\n\t\n\t if (object.length) return fromArrayLike(that, object)\n\t\n\t return fromJsonObject(that, object)\n\t}\n\t\n\tfunction fromBuffer (that, buffer) {\n\t var length = checked(buffer.length) | 0\n\t that = allocate(that, length)\n\t buffer.copy(that, 0, 0, length)\n\t return that\n\t}\n\t\n\tfunction fromArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\t// Duplicate of fromArray() to keep fromArray() monomorphic.\n\tfunction fromTypedArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t // Truncating the elements is probably not what people expect from typed\n\t // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n\t // of the old Buffer constructor.\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\tfunction fromArrayBuffer (that, array) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t array.byteLength\n\t that = Buffer._augment(new Uint8Array(array))\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that = fromTypedArray(that, new Uint8Array(array))\n\t }\n\t return that\n\t}\n\t\n\tfunction fromArrayLike (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\t// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n\t// Returns a zero-length buffer for inputs that don't conform to the spec.\n\tfunction fromJsonObject (that, object) {\n\t var array\n\t var length = 0\n\t\n\t if (object.type === 'Buffer' && isArray(object.data)) {\n\t array = object.data\n\t length = checked(array.length) | 0\n\t }\n\t that = allocate(that, length)\n\t\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t Buffer.prototype.__proto__ = Uint8Array.prototype\n\t Buffer.__proto__ = Uint8Array\n\t} else {\n\t // pre-set for values that may exist in the future\n\t Buffer.prototype.length = undefined\n\t Buffer.prototype.parent = undefined\n\t}\n\t\n\tfunction allocate (that, length) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t that = Buffer._augment(new Uint8Array(length))\n\t that.__proto__ = Buffer.prototype\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that.length = length\n\t that._isBuffer = true\n\t }\n\t\n\t var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n\t if (fromPool) that.parent = rootParent\n\t\n\t return that\n\t}\n\t\n\tfunction checked (length) {\n\t // Note: cannot use `length < kMaxLength` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= kMaxLength()) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\t\n\tfunction SlowBuffer (subject, encoding) {\n\t if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\t\n\t var buf = new Buffer(subject, encoding)\n\t delete buf.parent\n\t return buf\n\t}\n\t\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t}\n\t\n\tBuffer.compare = function compare (a, b) {\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError('Arguments must be Buffers')\n\t }\n\t\n\t if (a === b) return 0\n\t\n\t var x = a.length\n\t var y = b.length\n\t\n\t var i = 0\n\t var len = Math.min(x, y)\n\t while (i < len) {\n\t if (a[i] !== b[i]) break\n\t\n\t ++i\n\t }\n\t\n\t if (i !== len) {\n\t x = a[i]\n\t y = b[i]\n\t }\n\t\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t}\n\t\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'binary':\n\t case 'base64':\n\t case 'raw':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t}\n\t\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\t\n\t if (list.length === 0) {\n\t return new Buffer(0)\n\t }\n\t\n\t var i\n\t if (length === undefined) {\n\t length = 0\n\t for (i = 0; i < list.length; i++) {\n\t length += list[i].length\n\t }\n\t }\n\t\n\t var buf = new Buffer(length)\n\t var pos = 0\n\t for (i = 0; i < list.length; i++) {\n\t var item = list[i]\n\t item.copy(buf, pos)\n\t pos += item.length\n\t }\n\t return buf\n\t}\n\t\n\tfunction byteLength (string, encoding) {\n\t if (typeof string !== 'string') string = '' + string\n\t\n\t var len = string.length\n\t if (len === 0) return 0\n\t\n\t // Use a for loop to avoid recursion\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'binary':\n\t // Deprecated\n\t case 'raw':\n\t case 'raws':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) return utf8ToBytes(string).length // assume utf8\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength\n\t\n\tfunction slowToString (encoding, start, end) {\n\t var loweredCase = false\n\t\n\t start = start | 0\n\t end = end === undefined || end === Infinity ? this.length : end | 0\n\t\n\t if (!encoding) encoding = 'utf8'\n\t if (start < 0) start = 0\n\t if (end > this.length) end = this.length\n\t if (end <= start) return ''\n\t\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\t\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\t\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\t\n\t case 'binary':\n\t return binarySlice(this, start, end)\n\t\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\t\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\t\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\t\n\tBuffer.prototype.toString = function toString () {\n\t var length = this.length | 0\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t}\n\t\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t}\n\t\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = ''\n\t var max = exports.INSPECT_MAX_BYTES\n\t if (this.length > 0) {\n\t str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n\t if (this.length > max) str += ' ... '\n\t }\n\t return ''\n\t}\n\t\n\tBuffer.prototype.compare = function compare (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return 0\n\t return Buffer.compare(this, b)\n\t}\n\t\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n\t if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n\t else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n\t byteOffset >>= 0\n\t\n\t if (this.length === 0) return -1\n\t if (byteOffset >= this.length) return -1\n\t\n\t // Negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\t\n\t if (typeof val === 'string') {\n\t if (val.length === 0) return -1 // special case: looking for empty string always fails\n\t return String.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t if (Buffer.isBuffer(val)) {\n\t return arrayIndexOf(this, val, byteOffset)\n\t }\n\t if (typeof val === 'number') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n\t return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t return arrayIndexOf(this, [ val ], byteOffset)\n\t }\n\t\n\t function arrayIndexOf (arr, val, byteOffset) {\n\t var foundIndex = -1\n\t for (var i = 0; byteOffset + i < arr.length; i++) {\n\t if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n\t if (foundIndex === -1) foundIndex = i\n\t if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n\t } else {\n\t foundIndex = -1\n\t }\n\t }\n\t return -1\n\t }\n\t\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\t\n\t// `get` is deprecated\n\tBuffer.prototype.get = function get (offset) {\n\t console.log('.get() is deprecated. Access using array indexes instead.')\n\t return this.readUInt8(offset)\n\t}\n\t\n\t// `set` is deprecated\n\tBuffer.prototype.set = function set (v, offset) {\n\t console.log('.set() is deprecated. Access using array indexes instead.')\n\t return this.writeUInt8(v, offset)\n\t}\n\t\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0\n\t var remaining = buf.length - offset\n\t if (!length) {\n\t length = remaining\n\t } else {\n\t length = Number(length)\n\t if (length > remaining) {\n\t length = remaining\n\t }\n\t }\n\t\n\t // must be an even number of digits\n\t var strLen = string.length\n\t if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\t\n\t if (length > strLen / 2) {\n\t length = strLen / 2\n\t }\n\t for (var i = 0; i < length; i++) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16)\n\t if (isNaN(parsed)) throw new Error('Invalid hex string')\n\t buf[offset + i] = parsed\n\t }\n\t return i\n\t}\n\t\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\t\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\t\n\tfunction binaryWrite (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\t\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\t\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\t\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8'\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0\n\t if (isFinite(length)) {\n\t length = length | 0\n\t if (encoding === undefined) encoding = 'utf8'\n\t } else {\n\t encoding = length\n\t length = undefined\n\t }\n\t // legacy write(string, encoding, offset, length) - remove in v0.13\n\t } else {\n\t var swap = encoding\n\t encoding = offset\n\t offset = length | 0\n\t length = swap\n\t }\n\t\n\t var remaining = this.length - offset\n\t if (length === undefined || length > remaining) length = remaining\n\t\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('attempt to write outside buffer bounds')\n\t }\n\t\n\t if (!encoding) encoding = 'utf8'\n\t\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\t\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\t\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\t\n\t case 'binary':\n\t return binaryWrite(this, string, offset, length)\n\t\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\t\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\t\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\t\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t}\n\t\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\t\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end)\n\t var res = []\n\t\n\t var i = start\n\t while (i < end) {\n\t var firstByte = buf[i]\n\t var codePoint = null\n\t var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t : (firstByte > 0xDF) ? 3\n\t : (firstByte > 0xBF) ? 2\n\t : 1\n\t\n\t if (i + bytesPerSequence <= end) {\n\t var secondByte, thirdByte, fourthByte, tempCodePoint\n\t\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1]\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t fourthByte = buf[i + 3]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD\n\t bytesPerSequence = 1\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n\t codePoint = 0xDC00 | codePoint & 0x3FF\n\t }\n\t\n\t res.push(codePoint)\n\t i += bytesPerSequence\n\t }\n\t\n\t return decodeCodePointsArray(res)\n\t}\n\t\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000\n\t\n\tfunction decodeCodePointsArray (codePoints) {\n\t var len = codePoints.length\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\t\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t var res = ''\n\t var i = 0\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t )\n\t }\n\t return res\n\t}\n\t\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\t\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i] & 0x7F)\n\t }\n\t return ret\n\t}\n\t\n\tfunction binarySlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\t\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i])\n\t }\n\t return ret\n\t}\n\t\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length\n\t\n\t if (!start || start < 0) start = 0\n\t if (!end || end < 0 || end > len) end = len\n\t\n\t var out = ''\n\t for (var i = start; i < end; i++) {\n\t out += toHex(buf[i])\n\t }\n\t return out\n\t}\n\t\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end)\n\t var res = ''\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n\t }\n\t return res\n\t}\n\t\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length\n\t start = ~~start\n\t end = end === undefined ? len : ~~end\n\t\n\t if (start < 0) {\n\t start += len\n\t if (start < 0) start = 0\n\t } else if (start > len) {\n\t start = len\n\t }\n\t\n\t if (end < 0) {\n\t end += len\n\t if (end < 0) end = 0\n\t } else if (end > len) {\n\t end = len\n\t }\n\t\n\t if (end < start) end = start\n\t\n\t var newBuf\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = Buffer._augment(this.subarray(start, end))\n\t } else {\n\t var sliceLen = end - start\n\t newBuf = new Buffer(sliceLen, undefined)\n\t for (var i = 0; i < sliceLen; i++) {\n\t newBuf[i] = this[i + start]\n\t }\n\t }\n\t\n\t if (newBuf.length) newBuf.parent = this.parent || this\n\t\n\t return newBuf\n\t}\n\t\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\t\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length)\n\t }\n\t\n\t var val = this[offset + --byteLength]\n\t var mul = 1\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul\n\t }\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t return this[offset]\n\t}\n\t\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return this[offset] | (this[offset + 1] << 8)\n\t}\n\t\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return (this[offset] << 8) | this[offset + 1]\n\t}\n\t\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t}\n\t\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t}\n\t\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t mul *= 0x80\n\t\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var i = byteLength\n\t var mul = 1\n\t var val = this[offset + --i]\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul\n\t }\n\t mul *= 0x80\n\t\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t}\n\t\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset] | (this[offset + 1] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\t\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset + 1] | (this[offset] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\t\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t}\n\t\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t}\n\t\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, true, 23, 4)\n\t}\n\t\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, false, 23, 4)\n\t}\n\t\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, true, 52, 8)\n\t}\n\t\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, false, 52, 8)\n\t}\n\t\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t}\n\t\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\t\n\t var mul = 1\n\t var i = 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\t\n\t var i = byteLength - 1\n\t var mul = 1\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\t\n\tfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n\t buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n\t (littleEndian ? i : 1 - i) * 8\n\t }\n\t}\n\t\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\t\n\tfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffffffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n\t buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n\t }\n\t}\n\t\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset + 3] = (value >>> 24)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\t\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\t\n\t var i = 0\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\t\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\t\n\t var i = byteLength - 1\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t if (value < 0) value = 0xff + value + 1\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\t\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 3] = (value >>> 24)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (value < 0) value = 0xffffffff + value + 1\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\t\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t if (offset < 0) throw new RangeError('index out of range')\n\t}\n\t\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4)\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t}\n\t\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t}\n\t\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8)\n\t return offset + 8\n\t}\n\t\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t}\n\t\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t}\n\t\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0\n\t if (!end && end !== 0) end = this.length\n\t if (targetStart >= target.length) targetStart = target.length\n\t if (!targetStart) targetStart = 0\n\t if (end > 0 && end < start) end = start\n\t\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\t\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\t\n\t // Are we oob?\n\t if (end > this.length) end = this.length\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start\n\t }\n\t\n\t var len = end - start\n\t var i\n\t\n\t if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (i = len - 1; i >= 0; i--) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t // ascending copy from start\n\t for (i = 0; i < len; i++) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else {\n\t target._set(this.subarray(start, start + len), targetStart)\n\t }\n\t\n\t return len\n\t}\n\t\n\t// fill(value, start=0, end=buffer.length)\n\tBuffer.prototype.fill = function fill (value, start, end) {\n\t if (!value) value = 0\n\t if (!start) start = 0\n\t if (!end) end = this.length\n\t\n\t if (end < start) throw new RangeError('end < start')\n\t\n\t // Fill 0 bytes; we're done\n\t if (end === start) return\n\t if (this.length === 0) return\n\t\n\t if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n\t if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\t\n\t var i\n\t if (typeof value === 'number') {\n\t for (i = start; i < end; i++) {\n\t this[i] = value\n\t }\n\t } else {\n\t var bytes = utf8ToBytes(value.toString())\n\t var len = bytes.length\n\t for (i = start; i < end; i++) {\n\t this[i] = bytes[i % len]\n\t }\n\t }\n\t\n\t return this\n\t}\n\t\n\t/**\n\t * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n\t * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n\t */\n\tBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n\t if (typeof Uint8Array !== 'undefined') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t return (new Buffer(this)).buffer\n\t } else {\n\t var buf = new Uint8Array(this.length)\n\t for (var i = 0, len = buf.length; i < len; i += 1) {\n\t buf[i] = this[i]\n\t }\n\t return buf.buffer\n\t }\n\t } else {\n\t throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n\t }\n\t}\n\t\n\t// HELPER FUNCTIONS\n\t// ================\n\t\n\tvar BP = Buffer.prototype\n\t\n\t/**\n\t * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n\t */\n\tBuffer._augment = function _augment (arr) {\n\t arr.constructor = Buffer\n\t arr._isBuffer = true\n\t\n\t // save reference to original Uint8Array set method before overwriting\n\t arr._set = arr.set\n\t\n\t // deprecated\n\t arr.get = BP.get\n\t arr.set = BP.set\n\t\n\t arr.write = BP.write\n\t arr.toString = BP.toString\n\t arr.toLocaleString = BP.toString\n\t arr.toJSON = BP.toJSON\n\t arr.equals = BP.equals\n\t arr.compare = BP.compare\n\t arr.indexOf = BP.indexOf\n\t arr.copy = BP.copy\n\t arr.slice = BP.slice\n\t arr.readUIntLE = BP.readUIntLE\n\t arr.readUIntBE = BP.readUIntBE\n\t arr.readUInt8 = BP.readUInt8\n\t arr.readUInt16LE = BP.readUInt16LE\n\t arr.readUInt16BE = BP.readUInt16BE\n\t arr.readUInt32LE = BP.readUInt32LE\n\t arr.readUInt32BE = BP.readUInt32BE\n\t arr.readIntLE = BP.readIntLE\n\t arr.readIntBE = BP.readIntBE\n\t arr.readInt8 = BP.readInt8\n\t arr.readInt16LE = BP.readInt16LE\n\t arr.readInt16BE = BP.readInt16BE\n\t arr.readInt32LE = BP.readInt32LE\n\t arr.readInt32BE = BP.readInt32BE\n\t arr.readFloatLE = BP.readFloatLE\n\t arr.readFloatBE = BP.readFloatBE\n\t arr.readDoubleLE = BP.readDoubleLE\n\t arr.readDoubleBE = BP.readDoubleBE\n\t arr.writeUInt8 = BP.writeUInt8\n\t arr.writeUIntLE = BP.writeUIntLE\n\t arr.writeUIntBE = BP.writeUIntBE\n\t arr.writeUInt16LE = BP.writeUInt16LE\n\t arr.writeUInt16BE = BP.writeUInt16BE\n\t arr.writeUInt32LE = BP.writeUInt32LE\n\t arr.writeUInt32BE = BP.writeUInt32BE\n\t arr.writeIntLE = BP.writeIntLE\n\t arr.writeIntBE = BP.writeIntBE\n\t arr.writeInt8 = BP.writeInt8\n\t arr.writeInt16LE = BP.writeInt16LE\n\t arr.writeInt16BE = BP.writeInt16BE\n\t arr.writeInt32LE = BP.writeInt32LE\n\t arr.writeInt32BE = BP.writeInt32BE\n\t arr.writeFloatLE = BP.writeFloatLE\n\t arr.writeFloatBE = BP.writeFloatBE\n\t arr.writeDoubleLE = BP.writeDoubleLE\n\t arr.writeDoubleBE = BP.writeDoubleBE\n\t arr.fill = BP.fill\n\t arr.inspect = BP.inspect\n\t arr.toArrayBuffer = BP.toArrayBuffer\n\t\n\t return arr\n\t}\n\t\n\tvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\t\n\tfunction base64clean (str) {\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '='\n\t }\n\t return str\n\t}\n\t\n\tfunction stringtrim (str) {\n\t if (str.trim) return str.trim()\n\t return str.replace(/^\\s+|\\s+$/g, '')\n\t}\n\t\n\tfunction toHex (n) {\n\t if (n < 16) return '0' + n.toString(16)\n\t return n.toString(16)\n\t}\n\t\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity\n\t var codePoint\n\t var length = string.length\n\t var leadSurrogate = null\n\t var bytes = []\n\t\n\t for (var i = 0; i < length; i++) {\n\t codePoint = string.charCodeAt(i)\n\t\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t }\n\t\n\t // valid lead\n\t leadSurrogate = codePoint\n\t\n\t continue\n\t }\n\t\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t leadSurrogate = codePoint\n\t continue\n\t }\n\t\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t }\n\t\n\t leadSurrogate = null\n\t\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint)\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\t\n\t return bytes\n\t}\n\t\n\tfunction asciiToBytes (str) {\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF)\n\t }\n\t return byteArray\n\t}\n\t\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t if ((units -= 2) < 0) break\n\t\n\t c = str.charCodeAt(i)\n\t hi = c >> 8\n\t lo = c % 256\n\t byteArray.push(lo)\n\t byteArray.push(hi)\n\t }\n\t\n\t return byteArray\n\t}\n\t\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\t\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; i++) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i]\n\t }\n\t return i\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14).Buffer, (function() { return this; }())))\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t\n\t;(function (exports) {\n\t\t'use strict';\n\t\n\t var Arr = (typeof Uint8Array !== 'undefined')\n\t ? Uint8Array\n\t : Array\n\t\n\t\tvar PLUS = '+'.charCodeAt(0)\n\t\tvar SLASH = '/'.charCodeAt(0)\n\t\tvar NUMBER = '0'.charCodeAt(0)\n\t\tvar LOWER = 'a'.charCodeAt(0)\n\t\tvar UPPER = 'A'.charCodeAt(0)\n\t\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\t\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\t\n\t\tfunction decode (elt) {\n\t\t\tvar code = elt.charCodeAt(0)\n\t\t\tif (code === PLUS ||\n\t\t\t code === PLUS_URL_SAFE)\n\t\t\t\treturn 62 // '+'\n\t\t\tif (code === SLASH ||\n\t\t\t code === SLASH_URL_SAFE)\n\t\t\t\treturn 63 // '/'\n\t\t\tif (code < NUMBER)\n\t\t\t\treturn -1 //no match\n\t\t\tif (code < NUMBER + 10)\n\t\t\t\treturn code - NUMBER + 26 + 26\n\t\t\tif (code < UPPER + 26)\n\t\t\t\treturn code - UPPER\n\t\t\tif (code < LOWER + 26)\n\t\t\t\treturn code - LOWER + 26\n\t\t}\n\t\n\t\tfunction b64ToByteArray (b64) {\n\t\t\tvar i, j, l, tmp, placeHolders, arr\n\t\n\t\t\tif (b64.length % 4 > 0) {\n\t\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t\t}\n\t\n\t\t\t// the number of equal signs (place holders)\n\t\t\t// if there are two placeholders, than the two characters before it\n\t\t\t// represent one byte\n\t\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t\t// this is just a cheap hack to not do indexOf twice\n\t\t\tvar len = b64.length\n\t\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\t\n\t\t\t// base64 is 4/3 + up to two characters of the original data\n\t\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\t\n\t\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\t\n\t\t\tvar L = 0\n\t\n\t\t\tfunction push (v) {\n\t\t\t\tarr[L++] = v\n\t\t\t}\n\t\n\t\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t}\n\t\n\t\t\tif (placeHolders === 2) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t} else if (placeHolders === 1) {\n\t\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\t\tpush(tmp & 0xFF)\n\t\t\t}\n\t\n\t\t\treturn arr\n\t\t}\n\t\n\t\tfunction uint8ToBase64 (uint8) {\n\t\t\tvar i,\n\t\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\t\toutput = \"\",\n\t\t\t\ttemp, length\n\t\n\t\t\tfunction encode (num) {\n\t\t\t\treturn lookup.charAt(num)\n\t\t\t}\n\t\n\t\t\tfunction tripletToBase64 (num) {\n\t\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t\t}\n\t\n\t\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\t\toutput += tripletToBase64(temp)\n\t\t\t}\n\t\n\t\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\t\tswitch (extraBytes) {\n\t\t\t\tcase 1:\n\t\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\t\toutput += '=='\n\t\t\t\t\tbreak\n\t\t\t\tcase 2:\n\t\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\t\toutput += '='\n\t\t\t\t\tbreak\n\t\t\t}\n\t\n\t\t\treturn output\n\t\t}\n\t\n\t\texports.toByteArray = b64ToByteArray\n\t\texports.fromByteArray = uint8ToBase64\n\t}( false ? (this.base64js = {}) : exports))\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var nBits = -7\n\t var i = isLE ? (nBytes - 1) : 0\n\t var d = isLE ? -1 : 1\n\t var s = buffer[offset + i]\n\t\n\t i += d\n\t\n\t e = s & ((1 << (-nBits)) - 1)\n\t s >>= (-nBits)\n\t nBits += eLen\n\t for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\t\n\t m = e & ((1 << (-nBits)) - 1)\n\t e >>= (-nBits)\n\t nBits += mLen\n\t for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\t\n\t if (e === 0) {\n\t e = 1 - eBias\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen)\n\t e = e - eBias\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t}\n\t\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n\t var i = isLE ? 0 : (nBytes - 1)\n\t var d = isLE ? 1 : -1\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\t\n\t value = Math.abs(value)\n\t\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0\n\t e = eMax\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2)\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--\n\t c *= 2\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias)\n\t }\n\t if (value * c >= 2) {\n\t e++\n\t c /= 2\n\t }\n\t\n\t if (e + eBias >= eMax) {\n\t m = 0\n\t e = eMax\n\t } else if (e + eBias >= 1) {\n\t m = (value * c - 1) * Math.pow(2, mLen)\n\t e = e + eBias\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n\t e = 0\n\t }\n\t }\n\t\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\t\n\t e = (e << mLen) | m\n\t eLen += mLen\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\t\n\t buffer[offset + i - d] |= s * 128\n\t}\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = Array.isArray || function (arr) {\n\t return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\t\n\t// Matches absolute URLs with optional protocol\n\t// https://... file://... //...\n\tvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\t\n\t// Special treatment in node.js for the file: protocol\n\tvar fileProtocol = 'file://';\n\t\n\t// Validate and cleanup URL to ensure that it is allowed to be accessed\n\t// Returns cleaned up URL, or false if access is not allowed\n\tfunction sanitizeUrl(opt) {\n\t var url = opt.url;\n\t if (!url && opt.file) { return fileProtocol + opt.file; }\n\t\n\t // In case this is a relative url (has no host), prepend opt.baseURL\n\t if (opt.baseURL && !protocol_re.test(url)) {\n\t if (!startsWith(url, '/') && opt.baseURL[opt.baseURL.length-1] !== '/') {\n\t url = '/' + url; // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n\t }\n\t url = opt.baseURL + url;\n\t }\n\t // relative protocol, starts with '//'\n\t if (!load.useXHR && startsWith(url, '//')) {\n\t url = (opt.defaultProtocol || 'http') + ':' + url;\n\t }\n\t // If opt.domainWhiteList is set, only allows url, whose hostname\n\t // * Is the same as the origin (window.location.hostname)\n\t // * Equals one of the values in the whitelist\n\t // * Is a proper subdomain of one of the values in the whitelist\n\t if (opt.domainWhiteList) {\n\t var domain, origin;\n\t if (load.useXHR) {\n\t var a = document.createElement('a');\n\t a.href = url;\n\t // From http://stackoverflow.com/questions/736513/how-do-i-parse-a-url-into-hostname-and-path-in-javascript\n\t // IE doesn't populate all link properties when setting .href with a relative URL,\n\t // however .href will return an absolute URL which then can be used on itself\n\t // to populate these additional fields.\n\t if (a.host === '') {\n\t a.href = a.href;\n\t }\n\t domain = a.hostname.toLowerCase();\n\t origin = window.location.hostname;\n\t } else {\n\t // relative protocol is broken: https://github.com/defunctzombie/node-url/issues/5\n\t var parts = __webpack_require__(19).parse(url);\n\t domain = parts.hostname;\n\t origin = null;\n\t }\n\t\n\t if (origin !== domain) {\n\t var whiteListed = opt.domainWhiteList.some(function(d) {\n\t var idx = domain.length - d.length;\n\t return d === domain ||\n\t (idx > 1 && domain[idx-1] === '.' && domain.lastIndexOf(d) === idx);\n\t });\n\t if (!whiteListed) {\n\t throw 'URL is not whitelisted: ' + url;\n\t }\n\t }\n\t }\n\t return url;\n\t}\n\t\n\tfunction load(opt, callback) {\n\t return load.loader(opt, callback);\n\t}\n\t\n\tfunction loader(opt, callback) {\n\t var error = callback || function(e) { throw e; }, url;\n\t\n\t try {\n\t url = load.sanitizeUrl(opt); // enable override\n\t } catch (err) {\n\t error(err);\n\t return;\n\t }\n\t\n\t if (!url) {\n\t error('Invalid URL: ' + opt.url);\n\t } else if (load.useXHR) {\n\t // on client, use xhr\n\t return load.xhr(url, opt, callback);\n\t } else if (startsWith(url, fileProtocol)) {\n\t // on server, if url starts with 'file://', strip it and load from file\n\t return load.file(url.slice(fileProtocol.length), opt, callback);\n\t } else if (url.indexOf('://') < 0) { // TODO better protocol check?\n\t // on server, if no protocol assume file\n\t return load.file(url, opt, callback);\n\t } else {\n\t // for regular URLs on server\n\t return load.http(url, opt, callback);\n\t }\n\t}\n\t\n\tfunction xhrHasResponse(request) {\n\t var type = request.responseType;\n\t return type && type !== 'text' ?\n\t request.response : // null on error\n\t request.responseText; // '' on error\n\t}\n\t\n\tfunction xhr(url, opt, callback) {\n\t var async = !!callback;\n\t var request = new XMLHttpRequest();\n\t // If IE does not support CORS, use XDomainRequest (copied from d3.xhr)\n\t if (typeof XDomainRequest !== 'undefined' &&\n\t !('withCredentials' in request) &&\n\t /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\t\n\t function respond() {\n\t var status = request.status;\n\t if (!status && xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n\t callback(null, request.responseText);\n\t } else {\n\t callback(request, null);\n\t }\n\t }\n\t\n\t if (async) {\n\t if ('onload' in request) {\n\t request.onload = request.onerror = respond;\n\t } else {\n\t request.onreadystatechange = function() {\n\t if (request.readyState > 3) respond();\n\t };\n\t }\n\t }\n\t\n\t request.open('GET', url, async);\n\t /* istanbul ignore else */\n\t if (request.setRequestHeader) {\n\t var headers = util.extend({}, load.headers, opt.headers);\n\t for (var name in headers) {\n\t request.setRequestHeader(name, headers[name]);\n\t }\n\t }\n\t request.send();\n\t\n\t if (!async && xhrHasResponse(request)) {\n\t return request.responseText;\n\t }\n\t}\n\t\n\tfunction file(filename, opt, callback) {\n\t var fs = __webpack_require__(20);\n\t if (!callback) {\n\t return fs.readFileSync(filename, 'utf8');\n\t }\n\t fs.readFile(filename, callback);\n\t}\n\t\n\tfunction http(url, opt, callback) {\n\t var headers = util.extend({}, load.headers, opt.headers);\n\t\n\t if (!callback) {\n\t return __webpack_require__(21)('GET', url, {headers: headers}).getBody();\n\t }\n\t\n\t var options = {url: url, encoding: null, gzip: true, headers: headers};\n\t __webpack_require__(22)(options, function(error, response, body) {\n\t if (!error && response.statusCode === 200) {\n\t callback(null, body);\n\t } else {\n\t error = error ||\n\t 'Load failed with response code ' + response.statusCode + '.';\n\t callback(error, null);\n\t }\n\t });\n\t}\n\t\n\tfunction startsWith(string, searchString) {\n\t return string == null ? false : string.lastIndexOf(searchString, 0) === 0;\n\t}\n\t\n\t// Allow these functions to be overriden by the user of the library\n\tload.loader = loader;\n\tload.sanitizeUrl = sanitizeUrl;\n\tload.xhr = xhr;\n\tload.file = file;\n\tload.http = http;\n\t\n\t// Default settings\n\tload.useXHR = (typeof XMLHttpRequest !== 'undefined');\n\tload.headers = {};\n\t\n\tmodule.exports = load;\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t type = __webpack_require__(24),\n\t formats = __webpack_require__(25),\n\t timeF = __webpack_require__(32).time;\n\t\n\tfunction read(data, format) {\n\t var type = (format && format.type) || 'json';\n\t data = formats[type](data, format);\n\t if (format && format.parse) parse(data, format.parse);\n\t return data;\n\t}\n\t\n\tfunction parse(data, types) {\n\t var cols, parsers, d, i, j, clen, len = data.length;\n\t\n\t types = (types==='auto') ? type.inferAll(data) : util.duplicate(types);\n\t cols = util.keys(types);\n\t parsers = cols.map(function(c) {\n\t var t = types[c];\n\t if (t && t.indexOf('date:') === 0) {\n\t var parts = t.split(':', 2),\n\t pattern = parts[1];\n\t if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n\t (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n\t pattern = pattern.slice(1, -1);\n\t } else {\n\t throw Error('Format pattern must be quoted: ' + pattern);\n\t }\n\t pattern = timeF(pattern);\n\t return function(v) { return pattern.parse(v); };\n\t }\n\t if (!type.parsers[t]) {\n\t throw Error('Illegal format pattern: ' + c + ':' + t);\n\t }\n\t return type.parsers[t];\n\t });\n\t\n\t for (i=0, clen=cols.length; i= N) return EOF; // special case: end of file\n\t if (eol) return eol = false, EOL; // special case: end of line\n\t\n\t // special case: quotes\n\t var j = I, c;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, \"\\\"\");\n\t }\n\t\n\t // common case: find next delimiter or newline\n\t while (I < N) {\n\t var k = 1;\n\t c = text.charCodeAt(I++);\n\t if (c === 10) eol = true; // \\n\n\t else if (c === 13) { eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } // \\r|\\r\\n\n\t else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t\n\t // special case: last token before EOF\n\t return text.slice(j);\n\t }\n\t\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t\n\t return rows;\n\t }\n\t\n\t this.format = function(rows, columns) {\n\t if (columns == null) columns = inferColumns(rows);\n\t return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n\t return columns.map(function(column) {\n\t return formatValue(row[column]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t };\n\t\n\t this.formatRows = function(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t };\n\t\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t\n\t function formatValue(text) {\n\t return reFormat.test(text) ? \"\\\"\" + text.replace(/\\\"/g, \"\\\"\\\"\") + \"\\\"\" : text;\n\t }\n\t }\n\t\n\t dsv.prototype = Dsv.prototype;\n\t\n\t var csv = dsv(\",\");\n\t var tsv = dsv(\"\\t\");\n\t\n\t var version = \"0.1.14\";\n\t\n\t exports.version = version;\n\t exports.dsv = dsv;\n\t exports.csv = csv;\n\t exports.tsv = tsv;\n\t\n\t}));\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\t\n\tmodule.exports = function(data, format) {\n\t var d = util.isObject(data) && !util.isBuffer(data) ?\n\t data : JSON.parse(data);\n\t if (format && format.property) {\n\t d = util.accessor(format.property)(d);\n\t }\n\t return d;\n\t};\n\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar json = __webpack_require__(28);\n\t\n\tvar reader = function(data, format) {\n\t var topojson = reader.topojson;\n\t if (topojson == null) { throw Error('TopoJSON library not loaded.'); }\n\t\n\t var t = json(data, format), obj;\n\t\n\t if (format && format.feature) {\n\t if ((obj = t.objects[format.feature])) {\n\t return topojson.feature(t, obj).features;\n\t } else {\n\t throw Error('Invalid TopoJSON object: ' + format.feature);\n\t }\n\t } else if (format && format.mesh) {\n\t if ((obj = t.objects[format.mesh])) {\n\t return [topojson.mesh(t, t.objects[format.mesh])];\n\t } else {\n\t throw Error('Invalid TopoJSON object: ' + format.mesh);\n\t }\n\t } else {\n\t throw Error('Missing TopoJSON feature or mesh parameter.');\n\t }\n\t};\n\t\n\treader.topojson = __webpack_require__(30);\n\tmodule.exports = reader;\n\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.topojson = global.topojson || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t function noop() {}\n\t\n\t function transformAbsolute(transform) {\n\t if (!transform) return noop;\n\t var x0,\n\t y0,\n\t kx = transform.scale[0],\n\t ky = transform.scale[1],\n\t dx = transform.translate[0],\n\t dy = transform.translate[1];\n\t return function(point, i) {\n\t if (!i) x0 = y0 = 0;\n\t point[0] = (x0 += point[0]) * kx + dx;\n\t point[1] = (y0 += point[1]) * ky + dy;\n\t };\n\t }\n\t\n\t function transformRelative(transform) {\n\t if (!transform) return noop;\n\t var x0,\n\t y0,\n\t kx = transform.scale[0],\n\t ky = transform.scale[1],\n\t dx = transform.translate[0],\n\t dy = transform.translate[1];\n\t return function(point, i) {\n\t if (!i) x0 = y0 = 0;\n\t var x1 = Math.round((point[0] - dx) / kx),\n\t y1 = Math.round((point[1] - dy) / ky);\n\t point[0] = x1 - x0;\n\t point[1] = y1 - y0;\n\t x0 = x1;\n\t y0 = y1;\n\t };\n\t }\n\t\n\t function reverse(array, n) {\n\t var t, j = array.length, i = j - n;\n\t while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n\t }\n\t\n\t function bisect(a, x) {\n\t var lo = 0, hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (a[mid] < x) lo = mid + 1;\n\t else hi = mid;\n\t }\n\t return lo;\n\t }\n\t\n\t function feature(topology, o) {\n\t return o.type === \"GeometryCollection\" ? {\n\t type: \"FeatureCollection\",\n\t features: o.geometries.map(function(o) { return feature$1(topology, o); })\n\t } : feature$1(topology, o);\n\t }\n\t\n\t function feature$1(topology, o) {\n\t var f = {\n\t type: \"Feature\",\n\t id: o.id,\n\t properties: o.properties || {},\n\t geometry: object(topology, o)\n\t };\n\t if (o.id == null) delete f.id;\n\t return f;\n\t }\n\t\n\t function object(topology, o) {\n\t var absolute = transformAbsolute(topology.transform),\n\t arcs = topology.arcs;\n\t\n\t function arc(i, points) {\n\t if (points.length) points.pop();\n\t for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n\t points.push(p = a[k].slice());\n\t absolute(p, k);\n\t }\n\t if (i < 0) reverse(points, n);\n\t }\n\t\n\t function point(p) {\n\t p = p.slice();\n\t absolute(p, 0);\n\t return p;\n\t }\n\t\n\t function line(arcs) {\n\t var points = [];\n\t for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n\t if (points.length < 2) points.push(points[0].slice());\n\t return points;\n\t }\n\t\n\t function ring(arcs) {\n\t var points = line(arcs);\n\t while (points.length < 4) points.push(points[0].slice());\n\t return points;\n\t }\n\t\n\t function polygon(arcs) {\n\t return arcs.map(ring);\n\t }\n\t\n\t function geometry(o) {\n\t var t = o.type;\n\t return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n\t : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n\t : null;\n\t }\n\t\n\t var geometryType = {\n\t Point: function(o) { return point(o.coordinates); },\n\t MultiPoint: function(o) { return o.coordinates.map(point); },\n\t LineString: function(o) { return line(o.arcs); },\n\t MultiLineString: function(o) { return o.arcs.map(line); },\n\t Polygon: function(o) { return polygon(o.arcs); },\n\t MultiPolygon: function(o) { return o.arcs.map(polygon); }\n\t };\n\t\n\t return geometry(o);\n\t }\n\t\n\t function stitchArcs(topology, arcs) {\n\t var stitchedArcs = {},\n\t fragmentByStart = {},\n\t fragmentByEnd = {},\n\t fragments = [],\n\t emptyIndex = -1;\n\t\n\t // Stitch empty arcs first, since they may be subsumed by other arcs.\n\t arcs.forEach(function(i, j) {\n\t var arc = topology.arcs[i < 0 ? ~i : i], t;\n\t if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n\t t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n\t }\n\t });\n\t\n\t arcs.forEach(function(i) {\n\t var e = ends(i),\n\t start = e[0],\n\t end = e[1],\n\t f, g;\n\t\n\t if (f = fragmentByEnd[start]) {\n\t delete fragmentByEnd[f.end];\n\t f.push(i);\n\t f.end = end;\n\t if (g = fragmentByStart[end]) {\n\t delete fragmentByStart[g.start];\n\t var fg = g === f ? f : f.concat(g);\n\t fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n\t } else {\n\t fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n\t }\n\t } else if (f = fragmentByStart[end]) {\n\t delete fragmentByStart[f.start];\n\t f.unshift(i);\n\t f.start = start;\n\t if (g = fragmentByEnd[start]) {\n\t delete fragmentByEnd[g.end];\n\t var gf = g === f ? f : g.concat(f);\n\t fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n\t } else {\n\t fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n\t }\n\t } else {\n\t f = [i];\n\t fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n\t }\n\t });\n\t\n\t function ends(i) {\n\t var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n\t if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n\t else p1 = arc[arc.length - 1];\n\t return i < 0 ? [p1, p0] : [p0, p1];\n\t }\n\t\n\t function flush(fragmentByEnd, fragmentByStart) {\n\t for (var k in fragmentByEnd) {\n\t var f = fragmentByEnd[k];\n\t delete fragmentByStart[f.start];\n\t delete f.start;\n\t delete f.end;\n\t f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n\t fragments.push(f);\n\t }\n\t }\n\t\n\t flush(fragmentByEnd, fragmentByStart);\n\t flush(fragmentByStart, fragmentByEnd);\n\t arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\t\n\t return fragments;\n\t }\n\t\n\t function mesh(topology) {\n\t return object(topology, meshArcs.apply(this, arguments));\n\t }\n\t\n\t function meshArcs(topology, o, filter) {\n\t var arcs = [];\n\t\n\t function arc(i) {\n\t var j = i < 0 ? ~i : i;\n\t (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n\t }\n\t\n\t function line(arcs) {\n\t arcs.forEach(arc);\n\t }\n\t\n\t function polygon(arcs) {\n\t arcs.forEach(line);\n\t }\n\t\n\t function geometry(o) {\n\t if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n\t else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n\t }\n\t\n\t if (arguments.length > 1) {\n\t var geomsByArc = [],\n\t geom;\n\t\n\t var geometryType = {\n\t LineString: line,\n\t MultiLineString: polygon,\n\t Polygon: polygon,\n\t MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n\t };\n\t\n\t geometry(o);\n\t\n\t geomsByArc.forEach(arguments.length < 3\n\t ? function(geoms) { arcs.push(geoms[0].i); }\n\t : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\t } else {\n\t for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n\t }\n\t\n\t return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n\t }\n\t\n\t function cartesianTriangleArea(triangle) {\n\t var a = triangle[0], b = triangle[1], c = triangle[2];\n\t return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n\t }\n\t\n\t function ring(ring) {\n\t var i = -1,\n\t n = ring.length,\n\t a,\n\t b = ring[n - 1],\n\t area = 0;\n\t\n\t while (++i < n) {\n\t a = b;\n\t b = ring[i];\n\t area += a[0] * b[1] - a[1] * b[0];\n\t }\n\t\n\t return area / 2;\n\t }\n\t\n\t function merge(topology) {\n\t return object(topology, mergeArcs.apply(this, arguments));\n\t }\n\t\n\t function mergeArcs(topology, objects) {\n\t var polygonsByArc = {},\n\t polygons = [],\n\t components = [];\n\t\n\t objects.forEach(function(o) {\n\t if (o.type === \"Polygon\") register(o.arcs);\n\t else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n\t });\n\t\n\t function register(polygon) {\n\t polygon.forEach(function(ring$$) {\n\t ring$$.forEach(function(arc) {\n\t (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n\t });\n\t });\n\t polygons.push(polygon);\n\t }\n\t\n\t function area(ring$$) {\n\t return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n\t }\n\t\n\t polygons.forEach(function(polygon) {\n\t if (!polygon._) {\n\t var component = [],\n\t neighbors = [polygon];\n\t polygon._ = 1;\n\t components.push(component);\n\t while (polygon = neighbors.pop()) {\n\t component.push(polygon);\n\t polygon.forEach(function(ring$$) {\n\t ring$$.forEach(function(arc) {\n\t polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n\t if (!polygon._) {\n\t polygon._ = 1;\n\t neighbors.push(polygon);\n\t }\n\t });\n\t });\n\t });\n\t }\n\t }\n\t });\n\t\n\t polygons.forEach(function(polygon) {\n\t delete polygon._;\n\t });\n\t\n\t return {\n\t type: \"MultiPolygon\",\n\t arcs: components.map(function(polygons) {\n\t var arcs = [], n;\n\t\n\t // Extract the exterior (unique) arcs.\n\t polygons.forEach(function(polygon) {\n\t polygon.forEach(function(ring$$) {\n\t ring$$.forEach(function(arc) {\n\t if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n\t arcs.push(arc);\n\t }\n\t });\n\t });\n\t });\n\t\n\t // Stitch the arcs into one or more rings.\n\t arcs = stitchArcs(topology, arcs);\n\t\n\t // If more than one ring is returned,\n\t // at most one of these rings can be the exterior;\n\t // choose the one with the greatest absolute area.\n\t if ((n = arcs.length) > 1) {\n\t for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n\t if ((ki = area(arcs[i])) > k) {\n\t t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n\t }\n\t }\n\t }\n\t\n\t return arcs;\n\t })\n\t };\n\t }\n\t\n\t function neighbors(objects) {\n\t var indexesByArc = {}, // arc index -> array of object indexes\n\t neighbors = objects.map(function() { return []; });\n\t\n\t function line(arcs, i) {\n\t arcs.forEach(function(a) {\n\t if (a < 0) a = ~a;\n\t var o = indexesByArc[a];\n\t if (o) o.push(i);\n\t else indexesByArc[a] = [i];\n\t });\n\t }\n\t\n\t function polygon(arcs, i) {\n\t arcs.forEach(function(arc) { line(arc, i); });\n\t }\n\t\n\t function geometry(o, i) {\n\t if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n\t else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n\t }\n\t\n\t var geometryType = {\n\t LineString: line,\n\t MultiLineString: polygon,\n\t Polygon: polygon,\n\t MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n\t };\n\t\n\t objects.forEach(geometry);\n\t\n\t for (var i in indexesByArc) {\n\t for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n\t for (var k = j + 1; k < m; ++k) {\n\t var ij = indexes[j], ik = indexes[k], n;\n\t if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n\t if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n\t }\n\t }\n\t }\n\t\n\t return neighbors;\n\t }\n\t\n\t function compareArea(a, b) {\n\t return a[1][2] - b[1][2];\n\t }\n\t\n\t function minAreaHeap() {\n\t var heap = {},\n\t array = [],\n\t size = 0;\n\t\n\t heap.push = function(object) {\n\t up(array[object._ = size] = object, size++);\n\t return size;\n\t };\n\t\n\t heap.pop = function() {\n\t if (size <= 0) return;\n\t var removed = array[0], object;\n\t if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n\t return removed;\n\t };\n\t\n\t heap.remove = function(removed) {\n\t var i = removed._, object;\n\t if (array[i] !== removed) return; // invalid request\n\t if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n\t return i;\n\t };\n\t\n\t function up(object, i) {\n\t while (i > 0) {\n\t var j = ((i + 1) >> 1) - 1,\n\t parent = array[j];\n\t if (compareArea(object, parent) >= 0) break;\n\t array[parent._ = i] = parent;\n\t array[object._ = i = j] = object;\n\t }\n\t }\n\t\n\t function down(object, i) {\n\t while (true) {\n\t var r = (i + 1) << 1,\n\t l = r - 1,\n\t j = i,\n\t child = array[j];\n\t if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n\t if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n\t if (j === i) break;\n\t array[child._ = i] = child;\n\t array[object._ = i = j] = object;\n\t }\n\t }\n\t\n\t return heap;\n\t }\n\t\n\t function presimplify(topology, triangleArea) {\n\t var absolute = transformAbsolute(topology.transform),\n\t relative = transformRelative(topology.transform),\n\t heap = minAreaHeap();\n\t\n\t if (!triangleArea) triangleArea = cartesianTriangleArea;\n\t\n\t topology.arcs.forEach(function(arc) {\n\t var triangles = [],\n\t maxArea = 0,\n\t triangle,\n\t i,\n\t n,\n\t p;\n\t\n\t // To store each point’s effective area, we create a new array rather than\n\t // extending the passed-in point to workaround a Chrome/V8 bug (getting\n\t // stuck in smi mode). For midpoints, the initial effective area of\n\t // Infinity will be computed in the next step.\n\t for (i = 0, n = arc.length; i < n; ++i) {\n\t p = arc[i];\n\t absolute(arc[i] = [p[0], p[1], Infinity], i);\n\t }\n\t\n\t for (i = 1, n = arc.length - 1; i < n; ++i) {\n\t triangle = arc.slice(i - 1, i + 2);\n\t triangle[1][2] = triangleArea(triangle);\n\t triangles.push(triangle);\n\t heap.push(triangle);\n\t }\n\t\n\t for (i = 0, n = triangles.length; i < n; ++i) {\n\t triangle = triangles[i];\n\t triangle.previous = triangles[i - 1];\n\t triangle.next = triangles[i + 1];\n\t }\n\t\n\t while (triangle = heap.pop()) {\n\t var previous = triangle.previous,\n\t next = triangle.next;\n\t\n\t // If the area of the current point is less than that of the previous point\n\t // to be eliminated, use the latter's area instead. This ensures that the\n\t // current point cannot be eliminated without eliminating previously-\n\t // eliminated points.\n\t if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n\t else maxArea = triangle[1][2];\n\t\n\t if (previous) {\n\t previous.next = next;\n\t previous[2] = triangle[2];\n\t update(previous);\n\t }\n\t\n\t if (next) {\n\t next.previous = previous;\n\t next[0] = triangle[0];\n\t update(next);\n\t }\n\t }\n\t\n\t arc.forEach(relative);\n\t });\n\t\n\t function update(triangle) {\n\t heap.remove(triangle);\n\t triangle[1][2] = triangleArea(triangle);\n\t heap.push(triangle);\n\t }\n\t\n\t return topology;\n\t }\n\t\n\t var version = \"1.6.26\";\n\t\n\t exports.version = version;\n\t exports.mesh = mesh;\n\t exports.meshArcs = meshArcs;\n\t exports.merge = merge;\n\t exports.mergeArcs = mergeArcs;\n\t exports.feature = feature;\n\t exports.neighbors = neighbors;\n\t exports.presimplify = presimplify;\n\t\n\t}));\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar json = __webpack_require__(28);\n\t\n\tmodule.exports = function(tree, format) {\n\t return toTable(json(tree, format), format);\n\t};\n\t\n\tfunction toTable(root, fields) {\n\t var childrenField = fields && fields.children || 'children',\n\t parentField = fields && fields.parent || 'parent',\n\t table = [];\n\t\n\t function visit(node, parent) {\n\t node[parentField] = parent;\n\t table.push(node);\n\t var children = node[childrenField];\n\t if (children) {\n\t for (var i=0; i 4 && 'locale' + (\n\t l[0].toUpperCase() + l[1].toLowerCase() +\n\t l[3].toUpperCase() + l[4].toLowerCase()\n\t );\n\t}\n\t\n\tfunction numberLocale(l) {\n\t var f = util.isString(l) ? d3_numberF[localeRef(l)] : d3_numberF.locale(l);\n\t if (f == null) throw Error('Unrecognized locale: ' + l);\n\t numberF = f;\n\t}\n\t\n\tfunction timeLocale(l) {\n\t var f = util.isString(l) ? d3_timeF[localeRef(l)] : d3_timeF.locale(l);\n\t if (f == null) throw Error('Unrecognized locale: ' + l);\n\t timeF = f;\n\t monthFull = monthAbbr = dayFull = dayAbbr = null;\n\t}\n\t\n\t// -- Number Formatting ----\n\t\n\tvar e10 = Math.sqrt(50),\n\t e5 = Math.sqrt(10),\n\t e2 = Math.sqrt(2);\n\t\n\tfunction linearRange(domain, count) {\n\t if (!domain.length) domain = [0];\n\t if (count == null) count = 10;\n\t\n\t var start = domain[0],\n\t stop = domain[domain.length - 1];\n\t\n\t if (stop < start) { error = stop; stop = start; start = error; }\n\t\n\t var span = (stop - start) || (count = 1, start || stop || 1),\n\t step = Math.pow(10, Math.floor(Math.log(span / count) / Math.LN10)),\n\t error = span / count / step;\n\t\n\t // Filter ticks to get closer to the desired count.\n\t if (error >= e10) step *= 10;\n\t else if (error >= e5) step *= 5;\n\t else if (error >= e2) step *= 2;\n\t\n\t // Round start and stop values to step interval.\n\t return [\n\t Math.ceil(start / step) * step,\n\t Math.floor(stop / step) * step + step / 2, // inclusive\n\t step\n\t ];\n\t}\n\t\n\tfunction trimZero(f, decimal) {\n\t return function(x) {\n\t var s = f(x),\n\t n = s.indexOf(decimal);\n\t if (n < 0) return s;\n\t\n\t var idx = rightmostDigit(s, n),\n\t end = idx < s.length ? s.slice(idx) : '';\n\t\n\t while (--idx > n) {\n\t if (s[idx] !== '0') { ++idx; break; }\n\t }\n\t return s.slice(0, idx) + end;\n\t };\n\t}\n\t\n\tfunction rightmostDigit(s, n) {\n\t var i = s.lastIndexOf('e'), c;\n\t if (i > 0) return i;\n\t for (i=s.length; --i > n;) {\n\t c = s.charCodeAt(i);\n\t if (c >= 48 && c <= 57) return i+1; // is digit\n\t }\n\t}\n\t\n\tfunction autoNumberFormat(f) {\n\t var decimal = numberF.format('.1f')(1)[1]; // get decimal char\n\t if (f == null) f = ',';\n\t f = d3_numberF.formatSpecifier(f);\n\t if (f.precision == null) f.precision = 12;\n\t switch (f.type) {\n\t case '%': f.precision -= 2; break;\n\t case 'e': f.precision -= 1; break;\n\t }\n\t return trimZero(numberF.format(f), decimal);\n\t}\n\t\n\tfunction linearNumberFormat(domain, count, f) {\n\t var range = linearRange(domain, count);\n\t\n\t if (f == null) f = ',f';\n\t\n\t switch (f = d3_numberF.formatSpecifier(f), f.type) {\n\t case 's': {\n\t var value = Math.max(Math.abs(range[0]), Math.abs(range[1]));\n\t if (f.precision == null) f.precision = d3_numberF.precisionPrefix(range[2], value);\n\t return numberF.formatPrefix(f, value);\n\t }\n\t case '':\n\t case 'e':\n\t case 'g':\n\t case 'p':\n\t case 'r': {\n\t if (f.precision == null) f.precision = d3_numberF.precisionRound(range[2], Math.max(Math.abs(range[0]), Math.abs(range[1]))) - (f.type === 'e');\n\t break;\n\t }\n\t case 'f':\n\t case '%': {\n\t if (f.precision == null) f.precision = d3_numberF.precisionFixed(range[2]) - 2 * (f.type === '%');\n\t break;\n\t }\n\t }\n\t return numberF.format(f);\n\t}\n\t\n\t// -- Datetime Formatting ----\n\t\n\tfunction timeAutoFormat() {\n\t var f = timeF.format,\n\t formatMillisecond = f('.%L'),\n\t formatSecond = f(':%S'),\n\t formatMinute = f('%I:%M'),\n\t formatHour = f('%I %p'),\n\t formatDay = f('%a %d'),\n\t formatWeek = f('%b %d'),\n\t formatMonth = f('%B'),\n\t formatYear = f('%Y');\n\t\n\t return function(date) {\n\t var d = +date;\n\t return (d3_time.second(date) < d ? formatMillisecond\n\t : d3_time.minute(date) < d ? formatSecond\n\t : d3_time.hour(date) < d ? formatMinute\n\t : d3_time.day(date) < d ? formatHour\n\t : d3_time.month(date) < d ?\n\t (d3_time.week(date) < d ? formatDay : formatWeek)\n\t : d3_time.year(date) < d ? formatMonth\n\t : formatYear)(date);\n\t };\n\t}\n\t\n\tfunction utcAutoFormat() {\n\t var f = timeF.utcFormat,\n\t formatMillisecond = f('.%L'),\n\t formatSecond = f(':%S'),\n\t formatMinute = f('%I:%M'),\n\t formatHour = f('%I %p'),\n\t formatDay = f('%a %d'),\n\t formatWeek = f('%b %d'),\n\t formatMonth = f('%B'),\n\t formatYear = f('%Y');\n\t\n\t return function(date) {\n\t var d = +date;\n\t return (d3_time.utcSecond(date) < d ? formatMillisecond\n\t : d3_time.utcMinute(date) < d ? formatSecond\n\t : d3_time.utcHour(date) < d ? formatMinute\n\t : d3_time.utcDay(date) < d ? formatHour\n\t : d3_time.utcMonth(date) < d ?\n\t (d3_time.utcWeek(date) < d ? formatDay : formatWeek)\n\t : d3_time.utcYear(date) < d ? formatMonth\n\t : formatYear)(date);\n\t };\n\t}\n\t\n\tfunction monthFormat(month, abbreviate) {\n\t var f = abbreviate ?\n\t (monthAbbr || (monthAbbr = timeF.format('%b'))) :\n\t (monthFull || (monthFull = timeF.format('%B')));\n\t return (tmpDate.setMonth(month), f(tmpDate));\n\t}\n\t\n\tfunction dayFormat(day, abbreviate) {\n\t var f = abbreviate ?\n\t (dayAbbr || (dayAbbr = timeF.format('%a'))) :\n\t (dayFull || (dayFull = timeF.format('%A')));\n\t return (tmpDate.setMonth(0), tmpDate.setDate(2 + day), f(tmpDate));\n\t}\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define('d3-time', ['exports'], factory) :\n\t factory((global.d3_time = {}));\n\t}(this, function (exports) { 'use strict';\n\t\n\t var t0 = new Date;\n\t var t1 = new Date;\n\t function newInterval(floori, offseti, count, field) {\n\t\n\t function interval(date) {\n\t return floori(date = new Date(+date)), date;\n\t }\n\t\n\t interval.floor = interval;\n\t\n\t interval.round = function(date) {\n\t var d0 = new Date(+date),\n\t d1 = new Date(date - 1);\n\t floori(d0), floori(d1), offseti(d1, 1);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t };\n\t\n\t interval.ceil = function(date) {\n\t return floori(date = new Date(date - 1)), offseti(date, 1), date;\n\t };\n\t\n\t interval.offset = function(date, step) {\n\t return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n\t };\n\t\n\t interval.range = function(start, stop, step) {\n\t var range = [];\n\t start = new Date(start - 1);\n\t stop = new Date(+stop);\n\t step = step == null ? 1 : Math.floor(step);\n\t if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\t offseti(start, 1), floori(start);\n\t if (start < stop) range.push(new Date(+start));\n\t while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t while (--step >= 0) while (offseti(date, 1), !test(date));\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t };\n\t\n\t var millisecond = newInterval(function() {\n\t // noop\n\t }, function(date, step) {\n\t date.setTime(+date + step);\n\t }, function(start, end) {\n\t return end - start;\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t millisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t };\n\t\n\t var second = newInterval(function(date) {\n\t date.setMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t\n\t var minute = newInterval(function(date) {\n\t date.setSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t\n\t var hour = newInterval(function(date) {\n\t date.setMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t\n\t var day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t\n\t function weekday(i) {\n\t return newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n\t });\n\t }\n\t\n\t var sunday = weekday(0);\n\t var monday = weekday(1);\n\t var tuesday = weekday(2);\n\t var wednesday = weekday(3);\n\t var thursday = weekday(4);\n\t var friday = weekday(5);\n\t var saturday = weekday(6);\n\t\n\t var month = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(1);\n\t }, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t }, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t\n\t var year = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setMonth(0, 1);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t }, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t\n\t var utcSecond = newInterval(function(date) {\n\t date.setUTCMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getUTCSeconds();\n\t });\n\t\n\t var utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getUTCMinutes();\n\t });\n\t\n\t var utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getUTCHours();\n\t });\n\t\n\t var utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t }, function(start, end) {\n\t return (end - start) / 864e5;\n\t }, function(date) {\n\t return date.getUTCDate() - 1;\n\t });\n\t\n\t function utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / 6048e5;\n\t });\n\t }\n\t\n\t var utcSunday = utcWeekday(0);\n\t var utcMonday = utcWeekday(1);\n\t var utcTuesday = utcWeekday(2);\n\t var utcWednesday = utcWeekday(3);\n\t var utcThursday = utcWeekday(4);\n\t var utcFriday = utcWeekday(5);\n\t var utcSaturday = utcWeekday(6);\n\t\n\t var utcMonth = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(1);\n\t }, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t }, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t }, function(date) {\n\t return date.getUTCMonth();\n\t });\n\t\n\t var utcYear = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCMonth(0, 1);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t }, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t }, function(date) {\n\t return date.getUTCFullYear();\n\t });\n\t\n\t var milliseconds = millisecond.range;\n\t var seconds = second.range;\n\t var minutes = minute.range;\n\t var hours = hour.range;\n\t var days = day.range;\n\t var sundays = sunday.range;\n\t var mondays = monday.range;\n\t var tuesdays = tuesday.range;\n\t var wednesdays = wednesday.range;\n\t var thursdays = thursday.range;\n\t var fridays = friday.range;\n\t var saturdays = saturday.range;\n\t var weeks = sunday.range;\n\t var months = month.range;\n\t var years = year.range;\n\t\n\t var utcMillisecond = millisecond;\n\t var utcMilliseconds = milliseconds;\n\t var utcSeconds = utcSecond.range;\n\t var utcMinutes = utcMinute.range;\n\t var utcHours = utcHour.range;\n\t var utcDays = utcDay.range;\n\t var utcSundays = utcSunday.range;\n\t var utcMondays = utcMonday.range;\n\t var utcTuesdays = utcTuesday.range;\n\t var utcWednesdays = utcWednesday.range;\n\t var utcThursdays = utcThursday.range;\n\t var utcFridays = utcFriday.range;\n\t var utcSaturdays = utcSaturday.range;\n\t var utcWeeks = utcSunday.range;\n\t var utcMonths = utcMonth.range;\n\t var utcYears = utcYear.range;\n\t\n\t var version = \"0.1.1\";\n\t\n\t exports.version = version;\n\t exports.milliseconds = milliseconds;\n\t exports.seconds = seconds;\n\t exports.minutes = minutes;\n\t exports.hours = hours;\n\t exports.days = days;\n\t exports.sundays = sundays;\n\t exports.mondays = mondays;\n\t exports.tuesdays = tuesdays;\n\t exports.wednesdays = wednesdays;\n\t exports.thursdays = thursdays;\n\t exports.fridays = fridays;\n\t exports.saturdays = saturdays;\n\t exports.weeks = weeks;\n\t exports.months = months;\n\t exports.years = years;\n\t exports.utcMillisecond = utcMillisecond;\n\t exports.utcMilliseconds = utcMilliseconds;\n\t exports.utcSeconds = utcSeconds;\n\t exports.utcMinutes = utcMinutes;\n\t exports.utcHours = utcHours;\n\t exports.utcDays = utcDays;\n\t exports.utcSundays = utcSundays;\n\t exports.utcMondays = utcMondays;\n\t exports.utcTuesdays = utcTuesdays;\n\t exports.utcWednesdays = utcWednesdays;\n\t exports.utcThursdays = utcThursdays;\n\t exports.utcFridays = utcFridays;\n\t exports.utcSaturdays = utcSaturdays;\n\t exports.utcWeeks = utcWeeks;\n\t exports.utcMonths = utcMonths;\n\t exports.utcYears = utcYears;\n\t exports.millisecond = millisecond;\n\t exports.second = second;\n\t exports.minute = minute;\n\t exports.hour = hour;\n\t exports.day = day;\n\t exports.sunday = sunday;\n\t exports.monday = monday;\n\t exports.tuesday = tuesday;\n\t exports.wednesday = wednesday;\n\t exports.thursday = thursday;\n\t exports.friday = friday;\n\t exports.saturday = saturday;\n\t exports.week = sunday;\n\t exports.month = month;\n\t exports.year = year;\n\t exports.utcSecond = utcSecond;\n\t exports.utcMinute = utcMinute;\n\t exports.utcHour = utcHour;\n\t exports.utcDay = utcDay;\n\t exports.utcSunday = utcSunday;\n\t exports.utcMonday = utcMonday;\n\t exports.utcTuesday = utcTuesday;\n\t exports.utcWednesday = utcWednesday;\n\t exports.utcThursday = utcThursday;\n\t exports.utcFriday = utcFriday;\n\t exports.utcSaturday = utcSaturday;\n\t exports.utcWeek = utcSunday;\n\t exports.utcMonth = utcMonth;\n\t exports.utcYear = utcYear;\n\t exports.interval = newInterval;\n\t\n\t}));\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports, __webpack_require__(33)) :\n\t typeof define === 'function' && define.amd ? define('d3-time-format', ['exports', 'd3-time'], factory) :\n\t factory((global.d3_time_format = {}),global.d3_time);\n\t}(this, function (exports,d3Time) { 'use strict';\n\t\n\t function localDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n\t date.setFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n\t }\n\t\n\t function utcDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n\t date.setUTCFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n\t }\n\t\n\t function newYear(y) {\n\t return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n\t }\n\t\n\t function locale$1(locale) {\n\t var locale_dateTime = locale.dateTime,\n\t locale_date = locale.date,\n\t locale_time = locale.time,\n\t locale_periods = locale.periods,\n\t locale_weekdays = locale.days,\n\t locale_shortWeekdays = locale.shortDays,\n\t locale_months = locale.months,\n\t locale_shortMonths = locale.shortMonths;\n\t\n\t var periodRe = formatRe(locale_periods),\n\t periodLookup = formatLookup(locale_periods),\n\t weekdayRe = formatRe(locale_weekdays),\n\t weekdayLookup = formatLookup(locale_weekdays),\n\t shortWeekdayRe = formatRe(locale_shortWeekdays),\n\t shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n\t monthRe = formatRe(locale_months),\n\t monthLookup = formatLookup(locale_months),\n\t shortMonthRe = formatRe(locale_shortMonths),\n\t shortMonthLookup = formatLookup(locale_shortMonths);\n\t\n\t var formats = {\n\t \"a\": formatShortWeekday,\n\t \"A\": formatWeekday,\n\t \"b\": formatShortMonth,\n\t \"B\": formatMonth,\n\t \"c\": null,\n\t \"d\": formatDayOfMonth,\n\t \"e\": formatDayOfMonth,\n\t \"H\": formatHour24,\n\t \"I\": formatHour12,\n\t \"j\": formatDayOfYear,\n\t \"L\": formatMilliseconds,\n\t \"m\": formatMonthNumber,\n\t \"M\": formatMinutes,\n\t \"p\": formatPeriod,\n\t \"S\": formatSeconds,\n\t \"U\": formatWeekNumberSunday,\n\t \"w\": formatWeekdayNumber,\n\t \"W\": formatWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatYear,\n\t \"Y\": formatFullYear,\n\t \"Z\": formatZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var utcFormats = {\n\t \"a\": formatUTCShortWeekday,\n\t \"A\": formatUTCWeekday,\n\t \"b\": formatUTCShortMonth,\n\t \"B\": formatUTCMonth,\n\t \"c\": null,\n\t \"d\": formatUTCDayOfMonth,\n\t \"e\": formatUTCDayOfMonth,\n\t \"H\": formatUTCHour24,\n\t \"I\": formatUTCHour12,\n\t \"j\": formatUTCDayOfYear,\n\t \"L\": formatUTCMilliseconds,\n\t \"m\": formatUTCMonthNumber,\n\t \"M\": formatUTCMinutes,\n\t \"p\": formatUTCPeriod,\n\t \"S\": formatUTCSeconds,\n\t \"U\": formatUTCWeekNumberSunday,\n\t \"w\": formatUTCWeekdayNumber,\n\t \"W\": formatUTCWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatUTCYear,\n\t \"Y\": formatUTCFullYear,\n\t \"Z\": formatUTCZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var parses = {\n\t \"a\": parseShortWeekday,\n\t \"A\": parseWeekday,\n\t \"b\": parseShortMonth,\n\t \"B\": parseMonth,\n\t \"c\": parseLocaleDateTime,\n\t \"d\": parseDayOfMonth,\n\t \"e\": parseDayOfMonth,\n\t \"H\": parseHour24,\n\t \"I\": parseHour24,\n\t \"j\": parseDayOfYear,\n\t \"L\": parseMilliseconds,\n\t \"m\": parseMonthNumber,\n\t \"M\": parseMinutes,\n\t \"p\": parsePeriod,\n\t \"S\": parseSeconds,\n\t \"U\": parseWeekNumberSunday,\n\t \"w\": parseWeekdayNumber,\n\t \"W\": parseWeekNumberMonday,\n\t \"x\": parseLocaleDate,\n\t \"X\": parseLocaleTime,\n\t \"y\": parseYear,\n\t \"Y\": parseFullYear,\n\t \"Z\": parseZone,\n\t \"%\": parseLiteralPercent\n\t };\n\t\n\t // These recursive directive definitions must be deferred.\n\t formats.x = newFormat(locale_date, formats);\n\t formats.X = newFormat(locale_time, formats);\n\t formats.c = newFormat(locale_dateTime, formats);\n\t utcFormats.x = newFormat(locale_date, utcFormats);\n\t utcFormats.X = newFormat(locale_time, utcFormats);\n\t utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\t\n\t function newFormat(specifier, formats) {\n\t return function(date) {\n\t var string = [],\n\t i = -1,\n\t j = 0,\n\t n = specifier.length,\n\t c,\n\t pad,\n\t format;\n\t\n\t if (!(date instanceof Date)) date = new Date(+date);\n\t\n\t while (++i < n) {\n\t if (specifier.charCodeAt(i) === 37) {\n\t string.push(specifier.slice(j, i));\n\t if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n\t else pad = c === \"e\" ? \" \" : \"0\";\n\t if (format = formats[c]) c = format(date, pad);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t\n\t string.push(specifier.slice(j, i));\n\t return string.join(\"\");\n\t };\n\t }\n\t\n\t function newParse(specifier, newDate) {\n\t return function(string) {\n\t var d = newYear(1900),\n\t i = parseSpecifier(d, specifier, string += \"\", 0);\n\t if (i != string.length) return null;\n\t\n\t // The am-pm flag is 0 for AM, and 1 for PM.\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t\n\t // Convert day-of-week and week-of-year to day-of-year.\n\t if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n\t d.m = 0;\n\t d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n\t }\n\t\n\t // If a time zone is specified, all fields are interpreted as UTC and then\n\t // offset according to the specified time zone.\n\t if (\"Z\" in d) {\n\t d.H += d.Z / 100 | 0;\n\t d.M += d.Z % 100;\n\t return utcDate(d);\n\t }\n\t\n\t // Otherwise, all fields are in local time.\n\t return newDate(d);\n\t };\n\t }\n\t\n\t function parseSpecifier(d, specifier, string, j) {\n\t var i = 0,\n\t n = specifier.length,\n\t m = string.length,\n\t c,\n\t parse;\n\t\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = specifier.charCodeAt(i++);\n\t if (c === 37) {\n\t c = specifier.charAt(i++);\n\t parse = parses[c in pads ? specifier.charAt(i++) : c];\n\t if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t\n\t return j;\n\t }\n\t\n\t function parsePeriod(d, string, i) {\n\t var n = periodRe.exec(string.slice(i));\n\t return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortWeekday(d, string, i) {\n\t var n = shortWeekdayRe.exec(string.slice(i));\n\t return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekday(d, string, i) {\n\t var n = weekdayRe.exec(string.slice(i));\n\t return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortMonth(d, string, i) {\n\t var n = shortMonthRe.exec(string.slice(i));\n\t return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonth(d, string, i) {\n\t var n = monthRe.exec(string.slice(i));\n\t return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLocaleDateTime(d, string, i) {\n\t return parseSpecifier(d, locale_dateTime, string, i);\n\t }\n\t\n\t function parseLocaleDate(d, string, i) {\n\t return parseSpecifier(d, locale_date, string, i);\n\t }\n\t\n\t function parseLocaleTime(d, string, i) {\n\t return parseSpecifier(d, locale_time, string, i);\n\t }\n\t\n\t function formatShortWeekday(d) {\n\t return locale_shortWeekdays[d.getDay()];\n\t }\n\t\n\t function formatWeekday(d) {\n\t return locale_weekdays[d.getDay()];\n\t }\n\t\n\t function formatShortMonth(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t }\n\t\n\t function formatMonth(d) {\n\t return locale_months[d.getMonth()];\n\t }\n\t\n\t function formatPeriod(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t }\n\t\n\t function formatUTCShortWeekday(d) {\n\t return locale_shortWeekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCWeekday(d) {\n\t return locale_weekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCShortMonth(d) {\n\t return locale_shortMonths[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCMonth(d) {\n\t return locale_months[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCPeriod(d) {\n\t return locale_periods[+(d.getUTCHours() >= 12)];\n\t }\n\t\n\t return {\n\t format: function(specifier) {\n\t var f = newFormat(specifier += \"\", formats);\n\t f.parse = newParse(specifier, localDate);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t utcFormat: function(specifier) {\n\t var f = newFormat(specifier += \"\", utcFormats);\n\t f.parse = newParse(specifier, utcDate);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t }\n\t };\n\t };\n\t\n\t var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n\t var numberRe = /^\\s*\\d+/;\n\t var percentRe = /^%/;\n\t var requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t function pad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\",\n\t string = (sign ? -value : value) + \"\",\n\t length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t\n\t function requote(s) {\n\t return s.replace(requoteRe, \"\\\\$&\");\n\t }\n\t\n\t function formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n\t }\n\t\n\t function formatLookup(names) {\n\t var map = {}, i = -1, n = names.length;\n\t while (++i < n) map[names[i].toLowerCase()] = i;\n\t return map;\n\t }\n\t\n\t function parseWeekdayNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 1));\n\t return n ? (d.w = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberSunday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.U = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberMonday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.W = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseFullYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 4));\n\t return n ? (d.y = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n\t }\n\t\n\t function parseZone(d, string, i) {\n\t var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n\t return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonthNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfMonth(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseHour24(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.H = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMinutes(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.M = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseSeconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.S = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMilliseconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.L = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLiteralPercent(d, string, i) {\n\t var n = percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t\n\t function formatDayOfMonth(d, p) {\n\t return pad(d.getDate(), p, 2);\n\t }\n\t\n\t function formatHour24(d, p) {\n\t return pad(d.getHours(), p, 2);\n\t }\n\t\n\t function formatHour12(d, p) {\n\t return pad(d.getHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatDayOfYear(d, p) {\n\t return pad(1 + d3Time.day.count(d3Time.year(d), d), p, 3);\n\t }\n\t\n\t function formatMilliseconds(d, p) {\n\t return pad(d.getMilliseconds(), p, 3);\n\t }\n\t\n\t function formatMonthNumber(d, p) {\n\t return pad(d.getMonth() + 1, p, 2);\n\t }\n\t\n\t function formatMinutes(d, p) {\n\t return pad(d.getMinutes(), p, 2);\n\t }\n\t\n\t function formatSeconds(d, p) {\n\t return pad(d.getSeconds(), p, 2);\n\t }\n\t\n\t function formatWeekNumberSunday(d, p) {\n\t return pad(d3Time.sunday.count(d3Time.year(d), d), p, 2);\n\t }\n\t\n\t function formatWeekdayNumber(d) {\n\t return d.getDay();\n\t }\n\t\n\t function formatWeekNumberMonday(d, p) {\n\t return pad(d3Time.monday.count(d3Time.year(d), d), p, 2);\n\t }\n\t\n\t function formatYear(d, p) {\n\t return pad(d.getFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatFullYear(d, p) {\n\t return pad(d.getFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatZone(d) {\n\t var z = d.getTimezoneOffset();\n\t return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n\t + pad(z / 60 | 0, \"0\", 2)\n\t + pad(z % 60, \"0\", 2);\n\t }\n\t\n\t function formatUTCDayOfMonth(d, p) {\n\t return pad(d.getUTCDate(), p, 2);\n\t }\n\t\n\t function formatUTCHour24(d, p) {\n\t return pad(d.getUTCHours(), p, 2);\n\t }\n\t\n\t function formatUTCHour12(d, p) {\n\t return pad(d.getUTCHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatUTCDayOfYear(d, p) {\n\t return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n\t }\n\t\n\t function formatUTCMilliseconds(d, p) {\n\t return pad(d.getUTCMilliseconds(), p, 3);\n\t }\n\t\n\t function formatUTCMonthNumber(d, p) {\n\t return pad(d.getUTCMonth() + 1, p, 2);\n\t }\n\t\n\t function formatUTCMinutes(d, p) {\n\t return pad(d.getUTCMinutes(), p, 2);\n\t }\n\t\n\t function formatUTCSeconds(d, p) {\n\t return pad(d.getUTCSeconds(), p, 2);\n\t }\n\t\n\t function formatUTCWeekNumberSunday(d, p) {\n\t return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCWeekdayNumber(d) {\n\t return d.getUTCDay();\n\t }\n\t\n\t function formatUTCWeekNumberMonday(d, p) {\n\t return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCYear(d, p) {\n\t return pad(d.getUTCFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatUTCFullYear(d, p) {\n\t return pad(d.getUTCFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatUTCZone() {\n\t return \"+0000\";\n\t }\n\t\n\t function formatLiteralPercent() {\n\t return \"%\";\n\t }\n\t\n\t var locale = locale$1({\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%m/%d/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var caES = locale$1({\n\t dateTime: \"%A, %e de %B de %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"diumenge\", \"dilluns\", \"dimarts\", \"dimecres\", \"dijous\", \"divendres\", \"dissabte\"],\n\t shortDays: [\"dg.\", \"dl.\", \"dt.\", \"dc.\", \"dj.\", \"dv.\", \"ds.\"],\n\t months: [\"gener\", \"febrer\", \"març\", \"abril\", \"maig\", \"juny\", \"juliol\", \"agost\", \"setembre\", \"octubre\", \"novembre\", \"desembre\"],\n\t shortMonths: [\"gen.\", \"febr.\", \"març\", \"abr.\", \"maig\", \"juny\", \"jul.\", \"ag.\", \"set.\", \"oct.\", \"nov.\", \"des.\"]\n\t });\n\t\n\t var deCH = locale$1({\n\t dateTime: \"%A, der %e. %B %Y, %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n\t shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n\t months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n\t });\n\t\n\t var deDE = locale$1({\n\t dateTime: \"%A, der %e. %B %Y, %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n\t shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n\t months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n\t });\n\t\n\t var enCA = locale$1({\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%Y-%m-%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var enGB = locale$1({\n\t dateTime: \"%a %e %b %X %Y\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var esES = locale$1({\n\t dateTime: \"%A, %e de %B de %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"],\n\t shortDays: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\n\t months: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"],\n\t shortMonths: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\", \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"]\n\t });\n\t\n\t var fiFI = locale$1({\n\t dateTime: \"%A, %-d. %Bta %Y klo %X\",\n\t date: \"%-d.%-m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"a.m.\", \"p.m.\"],\n\t days: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"],\n\t shortDays: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n\t months: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n\t shortMonths: [\"Tammi\", \"Helmi\", \"Maalis\", \"Huhti\", \"Touko\", \"Kesä\", \"Heinä\", \"Elo\", \"Syys\", \"Loka\", \"Marras\", \"Joulu\"]\n\t });\n\t\n\t var frCA = locale$1({\n\t dateTime: \"%a %e %b %Y %X\",\n\t date: \"%Y-%m-%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"\", \"\"],\n\t days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n\t shortDays: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n\t months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n\t shortMonths: [\"jan\", \"fév\", \"mar\", \"avr\", \"mai\", \"jui\", \"jul\", \"aoû\", \"sep\", \"oct\", \"nov\", \"déc\"]\n\t });\n\t\n\t var frFR = locale$1({\n\t dateTime: \"%A, le %e %B %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n\t shortDays: [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"],\n\t months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n\t shortMonths: [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"]\n\t });\n\t\n\t var heIL = locale$1({\n\t dateTime: \"%A, %e ב%B %Y %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\n\t shortDays: [\"א׳\", \"ב׳\", \"ג׳\", \"ד׳\", \"ה׳\", \"ו׳\", \"ש׳\"],\n\t months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n\t shortMonths: [\"ינו׳\", \"פבר׳\", \"מרץ\", \"אפר׳\", \"מאי\", \"יוני\", \"יולי\", \"אוג׳\", \"ספט׳\", \"אוק׳\", \"נוב׳\", \"דצמ׳\"]\n\t });\n\t\n\t var huHU = locale$1({\n\t dateTime: \"%Y. %B %-e., %A %X\",\n\t date: \"%Y. %m. %d.\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"de.\", \"du.\"], // unused\n\t days: [\"vasárnap\", \"hétfő\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"],\n\t shortDays: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\"],\n\t months: [\"január\", \"február\", \"március\", \"április\", \"május\", \"június\", \"július\", \"augusztus\", \"szeptember\", \"október\", \"november\", \"december\"],\n\t shortMonths: [\"jan.\", \"feb.\", \"már.\", \"ápr.\", \"máj.\", \"jún.\", \"júl.\", \"aug.\", \"szept.\", \"okt.\", \"nov.\", \"dec.\"]\n\t });\n\t\n\t var itIT = locale$1({\n\t dateTime: \"%A %e %B %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n\t shortDays: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n\t months: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t shortMonths: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"]\n\t });\n\t\n\t var jaJP = locale$1({\n\t dateTime: \"%Y %b %e %a %X\",\n\t date: \"%Y/%m/%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\n\t shortDays: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n\t months: [\"睦月\", \"如月\", \"弥生\", \"卯月\", \"皐月\", \"水無月\", \"文月\", \"葉月\", \"長月\", \"神無月\", \"霜月\", \"師走\"],\n\t shortMonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"]\n\t });\n\t\n\t var koKR = locale$1({\n\t dateTime: \"%Y/%m/%d %a %X\",\n\t date: \"%Y/%m/%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"오전\", \"오후\"],\n\t days: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n\t shortDays: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n\t months: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t shortMonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"]\n\t });\n\t\n\t var mkMK = locale$1({\n\t dateTime: \"%A, %e %B %Y г. %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"недела\", \"понеделник\", \"вторник\", \"среда\", \"четврток\", \"петок\", \"сабота\"],\n\t shortDays: [\"нед\", \"пон\", \"вто\", \"сре\", \"чет\", \"пет\", \"саб\"],\n\t months: [\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"август\", \"септември\", \"октомври\", \"ноември\", \"декември\"],\n\t shortMonths: [\"јан\", \"фев\", \"мар\", \"апр\", \"мај\", \"јун\", \"јул\", \"авг\", \"сеп\", \"окт\", \"ное\", \"дек\"]\n\t });\n\t\n\t var nlNL = locale$1({\n\t dateTime: \"%a %e %B %Y %T\",\n\t date: \"%d-%m-%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"],\n\t shortDays: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n\t months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n\t shortMonths: [\"jan\", \"feb\", \"mrt\", \"apr\", \"mei\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n\t });\n\t\n\t var plPL = locale$1({\n\t dateTime: \"%A, %e %B %Y, %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"], // unused\n\t days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n\t shortDays: [\"Niedz.\", \"Pon.\", \"Wt.\", \"Śr.\", \"Czw.\", \"Pt.\", \"Sob.\"],\n\t months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n\t shortMonths: [\"Stycz.\", \"Luty\", \"Marz.\", \"Kwie.\", \"Maj\", \"Czerw.\", \"Lipc.\", \"Sierp.\", \"Wrz.\", \"Paźdz.\", \"Listop.\", \"Grudz.\"]/* In Polish language abbraviated months are not commonly used so there is a dispute about the proper abbraviations. */\n\t });\n\t\n\t var ptBR = locale$1({\n\t dateTime: \"%A, %e de %B de %Y. %X\",\n\t date: \"%d/%m/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n\t shortDays: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n\t months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t shortMonths: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"]\n\t });\n\t\n\t var ruRU = locale$1({\n\t dateTime: \"%A, %e %B %Y г. %X\",\n\t date: \"%d.%m.%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"воскресенье\", \"понедельник\", \"вторник\", \"среда\", \"четверг\", \"пятница\", \"суббота\"],\n\t shortDays: [\"вс\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"],\n\t months: [\"января\", \"февраля\", \"марта\", \"апреля\", \"мая\", \"июня\", \"июля\", \"августа\", \"сентября\", \"октября\", \"ноября\", \"декабря\"],\n\t shortMonths: [\"янв\", \"фев\", \"мар\", \"апр\", \"май\", \"июн\", \"июл\", \"авг\", \"сен\", \"окт\", \"ноя\", \"дек\"]\n\t });\n\t\n\t var svSE = locale$1({\n\t dateTime: \"%A den %d %B %Y %X\",\n\t date: \"%Y-%m-%d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"fm\", \"em\"],\n\t days: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\n\t shortDays: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n\t months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t var zhCN = locale$1({\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%Y/%-m/%-d\",\n\t time: \"%H:%M:%S\",\n\t periods: [\"上午\", \"下午\"],\n\t days: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t shortDays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t shortMonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"]\n\t });\n\t\n\t var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\t\n\t function formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t\n\t formatIsoNative.parse = function(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t };\n\t\n\t formatIsoNative.toString = function() {\n\t return isoSpecifier;\n\t };\n\t\n\t var formatIso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\")\n\t ? formatIsoNative\n\t : locale.utcFormat(isoSpecifier);\n\t\n\t var format = locale.format;\n\t var utcFormat = locale.utcFormat;\n\t\n\t var version = \"0.2.1\";\n\t\n\t exports.version = version;\n\t exports.format = format;\n\t exports.utcFormat = utcFormat;\n\t exports.locale = locale$1;\n\t exports.localeCaEs = caES;\n\t exports.localeDeCh = deCH;\n\t exports.localeDeDe = deDE;\n\t exports.localeEnCa = enCA;\n\t exports.localeEnGb = enGB;\n\t exports.localeEnUs = locale;\n\t exports.localeEsEs = esES;\n\t exports.localeFiFi = fiFI;\n\t exports.localeFrCa = frCA;\n\t exports.localeFrFr = frFR;\n\t exports.localeHeIl = heIL;\n\t exports.localeHuHu = huHU;\n\t exports.localeItIt = itIT;\n\t exports.localeJaJp = jaJP;\n\t exports.localeKoKr = koKR;\n\t exports.localeMkMk = mkMK;\n\t exports.localeNlNl = nlNL;\n\t exports.localePlPl = plPL;\n\t exports.localePtBr = ptBR;\n\t exports.localeRuRu = ruRU;\n\t exports.localeSvSe = svSE;\n\t exports.localeZhCn = zhCN;\n\t exports.isoFormat = formatIso;\n\t\n\t}));\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define('d3-format', ['exports'], factory) :\n\t factory((global.d3_format = {}));\n\t}(this, function (exports) { 'use strict';\n\t\n\t // Computes the decimal coefficient and exponent of the specified number x with\n\t // significant digits p, where x is positive and p is in [1, 21] or undefined.\n\t // For example, formatDecimal(1.23) returns [\"123\", 0].\n\t function formatDecimal(x, p) {\n\t if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\t var i, coefficient = x.slice(0, i);\n\t\n\t // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n\t // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\t return [\n\t coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n\t +x.slice(i + 1)\n\t ];\n\t };\n\t\n\t function exponent(x) {\n\t return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n\t };\n\t\n\t function formatGroup(grouping, thousands) {\n\t return function(value, width) {\n\t var i = value.length,\n\t t = [],\n\t j = 0,\n\t g = grouping[0],\n\t length = 0;\n\t\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = grouping[j = (j + 1) % grouping.length];\n\t }\n\t\n\t return t.reverse().join(thousands);\n\t };\n\t };\n\t\n\t var prefixExponent;\n\t\n\t function formatPrefixAuto(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1],\n\t i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n\t n = coefficient.length;\n\t return i === n ? coefficient\n\t : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n\t : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n\t : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n\t };\n\t\n\t function formatRounded(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1];\n\t return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n\t : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n\t : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n\t };\n\t\n\t function formatDefault(x, p) {\n\t x = x.toPrecision(p);\n\t\n\t out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n\t switch (x[i]) {\n\t case \".\": i0 = i1 = i; break;\n\t case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n\t case \"e\": break out;\n\t default: if (i0 > 0) i0 = 0; break;\n\t }\n\t }\n\t\n\t return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n\t };\n\t\n\t var formatTypes = {\n\t \"\": formatDefault,\n\t \"%\": function(x, p) { return (x * 100).toFixed(p); },\n\t \"b\": function(x) { return Math.round(x).toString(2); },\n\t \"c\": function(x) { return x + \"\"; },\n\t \"d\": function(x) { return Math.round(x).toString(10); },\n\t \"e\": function(x, p) { return x.toExponential(p); },\n\t \"f\": function(x, p) { return x.toFixed(p); },\n\t \"g\": function(x, p) { return x.toPrecision(p); },\n\t \"o\": function(x) { return Math.round(x).toString(8); },\n\t \"p\": function(x, p) { return formatRounded(x * 100, p); },\n\t \"r\": formatRounded,\n\t \"s\": formatPrefixAuto,\n\t \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n\t \"x\": function(x) { return Math.round(x).toString(16); }\n\t };\n\t\n\t // [[fill]align][sign][symbol][0][width][,][.precision][type]\n\t var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\t\n\t function formatSpecifier(specifier) {\n\t return new FormatSpecifier(specifier);\n\t };\n\t\n\t function FormatSpecifier(specifier) {\n\t if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\t\n\t var match,\n\t fill = match[1] || \" \",\n\t align = match[2] || \">\",\n\t sign = match[3] || \"-\",\n\t symbol = match[4] || \"\",\n\t zero = !!match[5],\n\t width = match[6] && +match[6],\n\t comma = !!match[7],\n\t precision = match[8] && +match[8].slice(1),\n\t type = match[9] || \"\";\n\t\n\t // The \"n\" type is an alias for \",g\".\n\t if (type === \"n\") comma = true, type = \"g\";\n\t\n\t // Map invalid types to the default format.\n\t else if (!formatTypes[type]) type = \"\";\n\t\n\t // If zero fill is specified, padding goes after sign and before digits.\n\t if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\t\n\t this.fill = fill;\n\t this.align = align;\n\t this.sign = sign;\n\t this.symbol = symbol;\n\t this.zero = zero;\n\t this.width = width;\n\t this.comma = comma;\n\t this.precision = precision;\n\t this.type = type;\n\t }\n\t\n\t FormatSpecifier.prototype.toString = function() {\n\t return this.fill\n\t + this.align\n\t + this.sign\n\t + this.symbol\n\t + (this.zero ? \"0\" : \"\")\n\t + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n\t + (this.comma ? \",\" : \"\")\n\t + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n\t + this.type;\n\t };\n\t\n\t var prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\t\n\t function identity(x) {\n\t return x;\n\t }\n\t\n\t function locale(locale) {\n\t var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n\t currency = locale.currency,\n\t decimal = locale.decimal;\n\t\n\t function format(specifier) {\n\t specifier = formatSpecifier(specifier);\n\t\n\t var fill = specifier.fill,\n\t align = specifier.align,\n\t sign = specifier.sign,\n\t symbol = specifier.symbol,\n\t zero = specifier.zero,\n\t width = specifier.width,\n\t comma = specifier.comma,\n\t precision = specifier.precision,\n\t type = specifier.type;\n\t\n\t // Compute the prefix and suffix.\n\t // For SI-prefix, the suffix is lazily computed.\n\t var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n\t suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? \"%\" : \"\";\n\t\n\t // What format function should we use?\n\t // Is this an integer type?\n\t // Can this type generate exponential notation?\n\t var formatType = formatTypes[type],\n\t maybeSuffix = !type || /[defgprs%]/.test(type);\n\t\n\t // Set the default precision if not specified,\n\t // or clamp the specified precision to the supported range.\n\t // For significant precision, it must be in [1, 21].\n\t // For fixed precision, it must be in [0, 20].\n\t precision = precision == null ? (type ? 6 : 12)\n\t : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n\t : Math.max(0, Math.min(20, precision));\n\t\n\t return function(value) {\n\t var valuePrefix = prefix,\n\t valueSuffix = suffix;\n\t\n\t if (type === \"c\") {\n\t valueSuffix = formatType(value) + valueSuffix;\n\t value = \"\";\n\t } else {\n\t value = +value;\n\t\n\t // Convert negative to positive, and compute the prefix.\n\t // Note that -0 is not less than 0, but 1 / -0 is!\n\t var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);\n\t\n\t // Perform the initial formatting.\n\t value = formatType(value, precision);\n\t\n\t // If the original value was negative, it may be rounded to zero during\n\t // formatting; treat this as (positive) zero.\n\t if (valueNegative) {\n\t var i = -1, n = value.length, c;\n\t valueNegative = false;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), (48 < c && c < 58)\n\t || (type === \"x\" && 96 < c && c < 103)\n\t || (type === \"X\" && 64 < c && c < 71)) {\n\t valueNegative = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t // Compute the prefix and suffix.\n\t valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\t valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\t\n\t // Break the formatted value into the integer “value” part that can be\n\t // grouped, and fractional or exponential “suffix” part that is not.\n\t if (maybeSuffix) {\n\t var i = -1, n = value.length, c;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), 48 > c || c > 57) {\n\t valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n\t value = value.slice(0, i);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // If the fill character is not \"0\", grouping is applied before padding.\n\t if (comma && !zero) value = group(value, Infinity);\n\t\n\t // Compute the padding.\n\t var length = valuePrefix.length + value.length + valueSuffix.length,\n\t padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\t\n\t // If the fill character is \"0\", grouping is applied after padding.\n\t if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\t\n\t // Reconstruct the final output based on the desired alignment.\n\t switch (align) {\n\t case \"<\": return valuePrefix + value + valueSuffix + padding;\n\t case \"=\": return valuePrefix + padding + value + valueSuffix;\n\t case \"^\": return padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n\t }\n\t return padding + valuePrefix + value + valueSuffix;\n\t };\n\t }\n\t\n\t function formatPrefix(specifier, value) {\n\t var f = format((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n\t e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n\t k = Math.pow(10, -e),\n\t prefix = prefixes[8 + e / 3];\n\t return function(value) {\n\t return f(k * value) + prefix;\n\t };\n\t }\n\t\n\t return {\n\t format: format,\n\t formatPrefix: formatPrefix\n\t };\n\t };\n\t\n\t var defaultLocale = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t });\n\t\n\t var caES = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var csCZ = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0Kč\"],\n\t });\n\t\n\t var deCH = locale({\n\t decimal: \",\",\n\t thousands: \"'\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0CHF\"]\n\t });\n\t\n\t var deDE = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var enCA = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t });\n\t\n\t var enGB = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"£\", \"\"]\n\t });\n\t\n\t var esES = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var fiFI = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var frCA = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"$\"]\n\t });\n\t\n\t var frFR = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0€\"]\n\t });\n\t\n\t var heIL = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"₪\", \"\"]\n\t });\n\t\n\t var huHU = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0Ft\"]\n\t });\n\t\n\t var itIT = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"€\", \"\"]\n\t });\n\t\n\t var jaJP = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"\", \"円\"]\n\t });\n\t\n\t var koKR = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"₩\", \"\"]\n\t });\n\t\n\t var mkMK = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0ден.\"]\n\t });\n\t\n\t var nlNL = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"€\\xa0\", \"\"]\n\t });\n\t\n\t var plPL = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"\", \"zł\"]\n\t });\n\t\n\t var ptBR = locale({\n\t decimal: \",\",\n\t thousands: \".\",\n\t grouping: [3],\n\t currency: [\"R$\", \"\"]\n\t });\n\t\n\t var ruRU = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"\\xa0руб.\"]\n\t });\n\t\n\t var svSE = locale({\n\t decimal: \",\",\n\t thousands: \"\\xa0\",\n\t grouping: [3],\n\t currency: [\"\", \"SEK\"]\n\t });\n\t\n\t var zhCN = locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"¥\", \"\"]\n\t });\n\t\n\t function precisionFixed(step) {\n\t return Math.max(0, -exponent(Math.abs(step)));\n\t };\n\t\n\t function precisionPrefix(step, value) {\n\t return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n\t };\n\t\n\t function precisionRound(step, max) {\n\t step = Math.abs(step), max = Math.abs(max) - step;\n\t return Math.max(0, exponent(max) - exponent(step)) + 1;\n\t };\n\t\n\t var format = defaultLocale.format;\n\t var formatPrefix = defaultLocale.formatPrefix;\n\t\n\t var version = \"0.4.2\";\n\t\n\t exports.version = version;\n\t exports.format = format;\n\t exports.formatPrefix = formatPrefix;\n\t exports.locale = locale;\n\t exports.localeCaEs = caES;\n\t exports.localeCsCz = csCZ;\n\t exports.localeDeCh = deCH;\n\t exports.localeDeDe = deDE;\n\t exports.localeEnCa = enCA;\n\t exports.localeEnGb = enGB;\n\t exports.localeEnUs = defaultLocale;\n\t exports.localeEsEs = esES;\n\t exports.localeFiFi = fiFI;\n\t exports.localeFrCa = frCA;\n\t exports.localeFrFr = frFR;\n\t exports.localeHeIl = heIL;\n\t exports.localeHuHu = huHU;\n\t exports.localeItIt = itIT;\n\t exports.localeJaJp = jaJP;\n\t exports.localeKoKr = koKR;\n\t exports.localeMkMk = mkMK;\n\t exports.localeNlNl = nlNL;\n\t exports.localePlPl = plPL;\n\t exports.localePtBr = ptBR;\n\t exports.localeRuRu = ruRU;\n\t exports.localeSvSe = svSE;\n\t exports.localeZhCn = zhCN;\n\t exports.formatSpecifier = formatSpecifier;\n\t exports.precisionFixed = precisionFixed;\n\t exports.precisionPrefix = precisionPrefix;\n\t exports.precisionRound = precisionRound;\n\t\n\t}));\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t Measures = __webpack_require__(37),\n\t Collector = __webpack_require__(40);\n\t\n\tfunction Aggregator() {\n\t this._cells = {};\n\t this._aggr = [];\n\t this._stream = false;\n\t}\n\t\n\tvar Flags = Aggregator.Flags = {\n\t ADD_CELL: 1,\n\t MOD_CELL: 2\n\t};\n\t\n\tvar proto = Aggregator.prototype;\n\t\n\t// Parameters\n\t\n\tproto.stream = function(v) {\n\t if (v == null) return this._stream;\n\t this._stream = !!v;\n\t this._aggr = [];\n\t return this;\n\t};\n\t\n\t// key accessor to use for streaming removes\n\tproto.key = function(key) {\n\t if (key == null) return this._key;\n\t this._key = util.$(key);\n\t return this;\n\t};\n\t\n\t// Input: array of objects of the form\n\t// {name: string, get: function}\n\tproto.groupby = function(dims) {\n\t this._dims = util.array(dims).map(function(d, i) {\n\t d = util.isString(d) ? {name: d, get: util.$(d)}\n\t : util.isFunction(d) ? {name: util.name(d) || d.name || ('_' + i), get: d}\n\t : (d.name && util.isFunction(d.get)) ? d : null;\n\t if (d == null) throw 'Invalid groupby argument: ' + d;\n\t return d;\n\t });\n\t return this.clear();\n\t};\n\t\n\t// Input: array of objects of the form\n\t// {name: string, ops: [string, ...]}\n\tproto.summarize = function(fields) {\n\t fields = summarize_args(fields);\n\t this._count = true;\n\t var aggr = (this._aggr = []),\n\t m, f, i, j, op, as, get;\n\t\n\t for (i=0; i 0) {\n\t // consolidate collector values\n\t if (cell.collect) {\n\t cell.data.values();\n\t }\n\t // update tuple properties\n\t for (i=0; i 1 ? this.dev / (this.valid-1) : 0',\n\t req: ['mean'], idx: 1\n\t }),\n\t 'variancep': measure({\n\t name: 'variancep',\n\t set: 'this.valid > 1 ? this.dev / this.valid : 0',\n\t req: ['variance'], idx: 2\n\t }),\n\t 'stdev': measure({\n\t name: 'stdev',\n\t set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : 0',\n\t req: ['variance'], idx: 2\n\t }),\n\t 'stdevp': measure({\n\t name: 'stdevp',\n\t set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : 0',\n\t req: ['variance'], idx: 2\n\t }),\n\t 'median': measure({\n\t name: 'median',\n\t set: 'cell.data.q2(this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'q1': measure({\n\t name: 'q1',\n\t set: 'cell.data.q1(this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'q3': measure({\n\t name: 'q3',\n\t set: 'cell.data.q3(this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'distinct': measure({\n\t name: 'distinct',\n\t set: 'this.distinct(cell.data.values(), this.get)',\n\t req: ['values'], idx: 3\n\t }),\n\t 'argmin': measure({\n\t name: 'argmin',\n\t add: 'if (v < this.min) this.argmin = t;',\n\t rem: 'if (v <= this.min) this.argmin = null;',\n\t set: 'this.argmin = this.argmin || cell.data.argmin(this.get)',\n\t req: ['min'], str: ['values'], idx: 3\n\t }),\n\t 'argmax': measure({\n\t name: 'argmax',\n\t add: 'if (v > this.max) this.argmax = t;',\n\t rem: 'if (v >= this.max) this.argmax = null;',\n\t set: 'this.argmax = this.argmax || cell.data.argmax(this.get)',\n\t req: ['max'], str: ['values'], idx: 3\n\t }),\n\t 'min': measure({\n\t name: 'min',\n\t init: 'this.min = +Infinity;',\n\t add: 'if (v < this.min) this.min = v;',\n\t rem: 'if (v <= this.min) this.min = NaN;',\n\t set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n\t str: ['values'], idx: 4\n\t }),\n\t 'max': measure({\n\t name: 'max',\n\t init: 'this.max = -Infinity;',\n\t add: 'if (v > this.max) this.max = v;',\n\t rem: 'if (v >= this.max) this.max = NaN;',\n\t set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n\t str: ['values'], idx: 4\n\t }),\n\t 'modeskew': measure({\n\t name: 'modeskew',\n\t set: 'this.dev===0 ? 0 : (this.mean - cell.data.q2(this.get)) / Math.sqrt(this.dev/(this.valid-1))',\n\t req: ['mean', 'stdev', 'median'], idx: 5\n\t })\n\t};\n\t\n\tfunction measure(base) {\n\t return function(out) {\n\t var m = util.extend({init:'', add:'', rem:'', idx:0}, base);\n\t m.out = out || base.name;\n\t return m;\n\t };\n\t}\n\t\n\tfunction resolve(agg, stream) {\n\t function collect(m, a) {\n\t function helper(r) { if (!m[r]) collect(m, m[r] = types[r]()); }\n\t if (a.req) a.req.forEach(helper);\n\t if (stream && a.str) a.str.forEach(helper);\n\t return m;\n\t }\n\t var map = agg.reduce(\n\t collect,\n\t agg.reduce(function(m, a) { return (m[a.name] = a, m); }, {})\n\t );\n\t return util.vals(map).sort(function(a, b) { return a.idx - b.idx; });\n\t}\n\t\n\tfunction create(agg, stream, accessor, mutator) {\n\t var all = resolve(agg, stream),\n\t ctr = 'this.cell = cell; this.tuple = t; this.valid = 0; this.missing = 0;',\n\t add = 'if (v==null) this.missing++; if (!this.isValid(v)) return; ++this.valid;',\n\t rem = 'if (v==null) this.missing--; if (!this.isValid(v)) return; --this.valid;',\n\t set = 'var t = this.tuple; var cell = this.cell;';\n\t\n\t all.forEach(function(a) {\n\t if (a.idx < 0) {\n\t ctr = a.init + ctr;\n\t add = a.add + add;\n\t rem = a.rem + rem;\n\t } else {\n\t ctr += a.init;\n\t add += a.add;\n\t rem += a.rem;\n\t }\n\t });\n\t agg.slice()\n\t .sort(function(a, b) { return a.idx - b.idx; })\n\t .forEach(function(a) {\n\t set += 'this.assign(t,\\''+a.out+'\\','+a.set+');';\n\t });\n\t set += 'return t;';\n\t\n\t /* jshint evil: true */\n\t ctr = Function('cell', 't', ctr);\n\t ctr.prototype.assign = mutator;\n\t ctr.prototype.add = Function('t', 'var v = this.get(t);' + add);\n\t ctr.prototype.rem = Function('t', 'var v = this.get(t);' + rem);\n\t ctr.prototype.set = Function(set);\n\t ctr.prototype.get = accessor;\n\t ctr.prototype.distinct = __webpack_require__(38).count.distinct;\n\t ctr.prototype.isValid = util.isValid;\n\t ctr.fields = agg.map(util.$('out'));\n\t return ctr;\n\t}\n\t\n\ttypes.create = create;\n\tmodule.exports = types;\n\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\tvar type = __webpack_require__(24);\n\tvar gen = __webpack_require__(39);\n\t\n\tvar stats = module.exports;\n\t\n\t// Collect unique values.\n\t// Output: an array of unique values, in first-observed order\n\tstats.unique = function(values, f, results) {\n\t f = util.$(f);\n\t results = results || [];\n\t var u = {}, v, i, n;\n\t for (i=0, n=values.length; i 0 ? Math.pow(mean, 1/c) : 0;\n\t return mean;\n\t};\n\t\n\t// Compute the harmonic mean of an array of numbers.\n\tstats.mean.harmonic = function(values, f) {\n\t f = util.$(f);\n\t var mean = 0, c, n, v, i;\n\t for (i=0, c=0, n=values.length; i b) b = v;\n\t }\n\t }\n\t return [a, b];\n\t};\n\t\n\t// Find the integer indices of the minimum and maximum values.\n\tstats.extent.index = function(values, f) {\n\t f = util.$(f);\n\t var x = -1, y = -1, a, b, v, i, n = values.length;\n\t for (i=0; i b) { b = v; y = i; }\n\t }\n\t }\n\t return [x, y];\n\t};\n\t\n\t// Compute the dot product of two arrays of numbers.\n\tstats.dot = function(values, a, b) {\n\t var sum = 0, i, v;\n\t if (!b) {\n\t if (values.length !== a.length) {\n\t throw Error('Array lengths must match.');\n\t }\n\t for (i=0; i -1 && p !== v) {\n\t mu = 1 + (i-1 + tie) / 2;\n\t for (; tie -1) {\n\t mu = 1 + (n-1 + tie) / 2;\n\t for (; tie max) max = x;\n\t delta = x - mean;\n\t mean = mean + delta / (++valid);\n\t M2 = M2 + delta * (x - mean);\n\t vals.push(x);\n\t }\n\t }\n\t M2 = M2 / (valid - 1);\n\t sd = Math.sqrt(M2);\n\t\n\t // sort values for median and iqr\n\t vals.sort(util.cmp);\n\t\n\t return {\n\t type: type(values, f),\n\t unique: u,\n\t count: values.length,\n\t valid: valid,\n\t missing: missing,\n\t distinct: distinct,\n\t min: min,\n\t max: max,\n\t mean: mean,\n\t stdev: sd,\n\t median: (v = stats.quantile(vals, 0.5)),\n\t q1: stats.quantile(vals, 0.25),\n\t q3: stats.quantile(vals, 0.75),\n\t modeskew: sd === 0 ? 0 : (mean - v) / sd\n\t };\n\t};\n\t\n\t// Compute profiles for all variables in a data set.\n\tstats.summary = function(data, fields) {\n\t fields = fields || util.keys(data[0]);\n\t var s = fields.map(function(f) {\n\t var p = stats.profile(data, util.$(f));\n\t return (p.field = f, p);\n\t });\n\t return (s.__summary__ = true, s);\n\t};\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t gen = module.exports;\n\t\n\tgen.repeat = function(val, n) {\n\t var a = Array(n), i;\n\t for (i=0; i stop) range.push(j);\n\t else while ((j = start + step * ++i) < stop) range.push(j);\n\t return range;\n\t};\n\t\n\tgen.random = {};\n\t\n\tgen.random.uniform = function(min, max) {\n\t if (max === undefined) {\n\t max = min === undefined ? 1 : min;\n\t min = 0;\n\t }\n\t var d = max - min;\n\t var f = function() {\n\t return min + d * Math.random();\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x >= min && x <= max) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t return x < min ? 0 : x > max ? 1 : (x - min) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? min + p*d : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.integer = function(a, b) {\n\t if (b === undefined) {\n\t b = a;\n\t a = 0;\n\t }\n\t var d = b - a;\n\t var f = function() {\n\t return a + Math.floor(d * Math.random());\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t var v = Math.floor(x);\n\t return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.normal = function(mean, stdev) {\n\t mean = mean || 0;\n\t stdev = stdev || 1;\n\t var next;\n\t var f = function() {\n\t var x = 0, y = 0, rds, c;\n\t if (next !== undefined) {\n\t x = next;\n\t next = undefined;\n\t return x;\n\t }\n\t do {\n\t x = Math.random()*2-1;\n\t y = Math.random()*2-1;\n\t rds = x*x + y*y;\n\t } while (rds === 0 || rds > 1);\n\t c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n\t next = mean + y*c*stdev;\n\t return mean + x*c*stdev;\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n\t return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n\t };\n\t f.cdf = function(x) {\n\t // Approximation from West (2009)\n\t // Better Approximations to Cumulative Normal Functions\n\t var cd,\n\t z = (x - mean) / stdev,\n\t Z = Math.abs(z);\n\t if (Z > 37) {\n\t cd = 0;\n\t } else {\n\t var sum, exp = Math.exp(-Z*Z/2);\n\t if (Z < 7.07106781186547) {\n\t sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n\t sum = sum * Z + 6.37396220353165;\n\t sum = sum * Z + 33.912866078383;\n\t sum = sum * Z + 112.079291497871;\n\t sum = sum * Z + 221.213596169931;\n\t sum = sum * Z + 220.206867912376;\n\t cd = exp * sum;\n\t sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n\t sum = sum * Z + 16.064177579207;\n\t sum = sum * Z + 86.7807322029461;\n\t sum = sum * Z + 296.564248779674;\n\t sum = sum * Z + 637.333633378831;\n\t sum = sum * Z + 793.826512519948;\n\t sum = sum * Z + 440.413735824752;\n\t cd = cd / sum;\n\t } else {\n\t sum = Z + 0.65;\n\t sum = Z + 4 / sum;\n\t sum = Z + 3 / sum;\n\t sum = Z + 2 / sum;\n\t sum = Z + 1 / sum;\n\t cd = exp / sum / 2.506628274631;\n\t }\n\t }\n\t return z > 0 ? 1 - cd : cd;\n\t };\n\t f.icdf = function(p) {\n\t // Approximation of Probit function using inverse error function.\n\t if (p <= 0 || p >= 1) return NaN;\n\t var x = 2*p - 1,\n\t v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n\t a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n\t b = Math.log(1 - (x*x)) / v,\n\t s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n\t return mean + stdev * Math.SQRT2 * s;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.bootstrap = function(domain, smooth) {\n\t // Generates a bootstrap sample from a set of observations.\n\t // Smooth bootstrapping adds random zero-centered noise to the samples.\n\t var val = domain.filter(util.isValid),\n\t len = val.length,\n\t err = smooth ? gen.random.normal(0, smooth) : null;\n\t var f = function() {\n\t return val[~~(Math.random()*len)] + (err ? err() : 0);\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t return f;\n\t};\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\tvar stats = __webpack_require__(38);\n\t\n\tvar REM = '__dl_rem__';\n\t\n\tfunction Collector(key) {\n\t this._add = [];\n\t this._rem = [];\n\t this._key = key || null;\n\t this._last = null;\n\t}\n\t\n\tvar proto = Collector.prototype;\n\t\n\tproto.add = function(v) {\n\t this._add.push(v);\n\t};\n\t\n\tproto.rem = function(v) {\n\t this._rem.push(v);\n\t};\n\t\n\tproto.values = function() {\n\t this._get = null;\n\t if (this._rem.length === 0) return this._add;\n\t\n\t var a = this._add,\n\t r = this._rem,\n\t k = this._key,\n\t x = Array(a.length - r.length),\n\t i, j, n, m;\n\t\n\t if (!util.isObject(r[0])) {\n\t // processing raw values\n\t m = stats.count.map(r);\n\t for (i=0, j=0, n=a.length; i 0) {\n\t m[a[i]] -= 1;\n\t } else {\n\t x[j++] = a[i];\n\t }\n\t }\n\t } else if (k) {\n\t // has unique key field, so use that\n\t m = util.toMap(r, k);\n\t for (i=0, j=0, n=a.length; i maxb) { step *= base; }\n\t\n\t // decrease step size if allowed\n\t for (i=0; i= minstep && span / v <= maxb) step = v;\n\t }\n\t }\n\t\n\t // update precision, min and max\n\t v = Math.log(step);\n\t precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n\t eps = Math.pow(base, -precision - 1);\n\t min = Math.min(min, Math.floor(min / step + eps) * step);\n\t max = Math.ceil(max / step) * step;\n\t\n\t return {\n\t start: min,\n\t stop: max,\n\t step: step,\n\t unit: {precision: precision},\n\t value: value,\n\t index: index\n\t };\n\t}\n\t\n\tfunction bisect(a, x, lo, hi) {\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n\t else { hi = mid; }\n\t }\n\t return lo;\n\t}\n\t\n\tfunction value(v) {\n\t return this.step * Math.floor(v / this.step + EPSILON);\n\t}\n\t\n\tfunction index(v) {\n\t return Math.floor((v - this.start) / this.step + EPSILON);\n\t}\n\t\n\tfunction date_value(v) {\n\t return this.unit.date(value.call(this, v));\n\t}\n\t\n\tfunction date_index(v) {\n\t return index.call(this, this.unit.unit(v));\n\t}\n\t\n\tbins.date = function(opt) {\n\t if (!opt) { throw Error(\"Missing date binning options.\"); }\n\t\n\t // find time step, then bin\n\t var units = opt.utc ? time.utc : time,\n\t dmin = opt.min,\n\t dmax = opt.max,\n\t maxb = opt.maxbins || 20,\n\t minb = opt.minbins || 4,\n\t span = (+dmax) - (+dmin),\n\t unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n\t spec = bins({\n\t min: unit.min != null ? unit.min : unit.unit(dmin),\n\t max: unit.max != null ? unit.max : unit.unit(dmax),\n\t maxbins: maxb,\n\t minstep: unit.minstep,\n\t steps: unit.step\n\t });\n\t\n\t spec.unit = unit;\n\t spec.index = date_index;\n\t if (!opt.raw) spec.value = date_value;\n\t return spec;\n\t};\n\t\n\tmodule.exports = bins;\n\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3_time = __webpack_require__(33);\n\t\n\tvar tempDate = new Date(),\n\t baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n\t utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\t\n\tfunction date(d) {\n\t return (tempDate.setTime(+d), tempDate);\n\t}\n\t\n\t// create a time unit entry\n\tfunction entry(type, date, unit, step, min, max) {\n\t var e = {\n\t type: type,\n\t date: date,\n\t unit: unit\n\t };\n\t if (step) {\n\t e.step = step;\n\t } else {\n\t e.minstep = 1;\n\t }\n\t if (min != null) e.min = min;\n\t if (max != null) e.max = max;\n\t return e;\n\t}\n\t\n\tfunction create(type, unit, base, step, min, max) {\n\t return entry(type,\n\t function(d) { return unit.offset(base, d); },\n\t function(d) { return unit.count(base, d); },\n\t step, min, max);\n\t}\n\t\n\tvar locale = [\n\t create('second', d3_time.second, baseDate),\n\t create('minute', d3_time.minute, baseDate),\n\t create('hour', d3_time.hour, baseDate),\n\t create('day', d3_time.day, baseDate, [1, 7]),\n\t create('month', d3_time.month, baseDate, [1, 3, 6]),\n\t create('year', d3_time.year, baseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n\t function(d) { return date(d).getSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(1970, 0, 1, 0, d); },\n\t function(d) { return date(d).getMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(1970, 0, 1, d); },\n\t function(d) { return date(d).getHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(1970, 0, 4+d); },\n\t function(d) { return date(d).getDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(1970, 0, d); },\n\t function(d) { return date(d).getDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(1970, d % 12, 1); },\n\t function(d) { return date(d).getMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar utc = [\n\t create('second', d3_time.utcSecond, utcBaseDate),\n\t create('minute', d3_time.utcMinute, utcBaseDate),\n\t create('hour', d3_time.utcHour, utcBaseDate),\n\t create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n\t create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n\t create('year', d3_time.utcYear, utcBaseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n\t function(d) { return date(d).getUTCSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n\t function(d) { return date(d).getUTCMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n\t function(d) { return date(d).getUTCHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n\t function(d) { return date(d).getUTCDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(Date.UTC(1970, 0, d)); },\n\t function(d) { return date(d).getUTCDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n\t function(d) { return date(d).getUTCMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar STEPS = [\n\t [31536e6, 5], // 1-year\n\t [7776e6, 4], // 3-month\n\t [2592e6, 4], // 1-month\n\t [12096e5, 3], // 2-week\n\t [6048e5, 3], // 1-week\n\t [1728e5, 3], // 2-day\n\t [864e5, 3], // 1-day\n\t [432e5, 2], // 12-hour\n\t [216e5, 2], // 6-hour\n\t [108e5, 2], // 3-hour\n\t [36e5, 2], // 1-hour\n\t [18e5, 1], // 30-minute\n\t [9e5, 1], // 15-minute\n\t [3e5, 1], // 5-minute\n\t [6e4, 1], // 1-minute\n\t [3e4, 0], // 30-second\n\t [15e3, 0], // 15-second\n\t [5e3, 0], // 5-second\n\t [1e3, 0] // 1-second\n\t];\n\t\n\tfunction find(units, span, minb, maxb) {\n\t var step = STEPS[0], i, n, bins;\n\t\n\t for (i=1, n=STEPS.length; i step[0]) {\n\t bins = span / step[0];\n\t if (bins > maxb) {\n\t return units[STEPS[i-1][1]];\n\t }\n\t if (bins >= minb) {\n\t return units[step[1]];\n\t }\n\t }\n\t }\n\t return units[STEPS[n-1][1]];\n\t}\n\t\n\tfunction toUnitMap(units) {\n\t var map = {}, i, n;\n\t for (i=0, n=units.length; i= h.length || !isFinite(j)) continue;\n\t h[j].count += 1;\n\t }\n\t }\n\t h.bins = b;\n\t return h;\n\t}\n\t\n\tfunction categorical(values, f, sort) {\n\t var u = stats.unique(values, f),\n\t c = stats.count.map(values, f);\n\t return u.map(function(k) { return {value: k, count: c[k]}; })\n\t .sort(util.comparator(sort ? '-count' : '+value'));\n\t}\n\t\n\tmodule.exports = {\n\t $bin: $bin,\n\t histogram: histogram\n\t};\n\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t format = __webpack_require__(32);\n\t\n\tvar context = {\n\t formats: [],\n\t format_map: {},\n\t truncate: util.truncate,\n\t pad: util.pad,\n\t day: format.day,\n\t month: format.month\n\t};\n\t\n\tfunction template(text) {\n\t var src = source(text, 'd');\n\t src = 'var __t; return ' + src + ';';\n\t\n\t /* jshint evil: true */\n\t return (new Function('d', src)).bind(context);\n\t}\n\t\n\ttemplate.source = source;\n\ttemplate.context = context;\n\ttemplate.format = get_format;\n\tmodule.exports = template;\n\t\n\t// Clear cache of format objects.\n\t// This can *break* prior template functions, so invoke with care!\n\ttemplate.clearFormatCache = function() {\n\t context.formats = [];\n\t context.format_map = {};\n\t};\n\t\n\t// Generate property access code for use within template source.\n\t// object: the name of the object (variable) containing template data\n\t// property: the property access string, verbatim from template tag\n\ttemplate.property = function(object, property) {\n\t var src = util.field(property).map(util.str).join('][');\n\t return object + '[' + src + ']';\n\t};\n\t\n\t// Generate source code for a template function.\n\t// text: the template text\n\t// variable: the name of the data object variable ('obj' by default)\n\t// properties: optional hash for collecting all accessed properties\n\tfunction source(text, variable, properties) {\n\t variable = variable || 'obj';\n\t var index = 0;\n\t var src = '\\'';\n\t var regex = template_re;\n\t\n\t // Compile the template source, escaping string literals appropriately.\n\t text.replace(regex, function(match, interpolate, offset) {\n\t src += text\n\t .slice(index, offset)\n\t .replace(template_escaper, template_escapeChar);\n\t index = offset + match.length;\n\t\n\t if (interpolate) {\n\t src += '\\'\\n+((__t=(' +\n\t template_var(interpolate, variable, properties) +\n\t '))==null?\\'\\':__t)+\\n\\'';\n\t }\n\t\n\t // Adobe VMs need the match returned to produce the correct offest.\n\t return match;\n\t });\n\t return src + '\\'';\n\t}\n\t\n\tfunction template_var(text, variable, properties) {\n\t var filters = text.match(filter_re);\n\t var prop = filters.shift().trim();\n\t var stringCast = true;\n\t\n\t function strcall(fn) {\n\t fn = fn || '';\n\t if (stringCast) {\n\t stringCast = false;\n\t src = 'String(' + src + ')' + fn;\n\t } else {\n\t src += fn;\n\t }\n\t return src;\n\t }\n\t\n\t function date() {\n\t return '(typeof ' + src + '===\"number\"?new Date('+src+'):'+src+')';\n\t }\n\t\n\t function formatter(type) {\n\t var pattern = args[0];\n\t if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n\t (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n\t pattern = pattern.slice(1, -1);\n\t } else {\n\t throw Error('Format pattern must be quoted: ' + pattern);\n\t }\n\t a = template_format(pattern, type);\n\t stringCast = false;\n\t var arg = type === 'number' ? src : date();\n\t src = 'this.formats['+a+']('+arg+')';\n\t }\n\t\n\t if (properties) properties[prop] = 1;\n\t var src = template.property(variable, prop);\n\t\n\t for (var i=0; i 0) {\n\t f = f.slice(0, pidx);\n\t args = filters[i].slice(pidx+1)\n\t .match(args_re)\n\t .map(function(s) { return s.trim(); });\n\t }\n\t f = f.trim();\n\t\n\t switch (f) {\n\t case 'length':\n\t strcall('.length');\n\t break;\n\t case 'lower':\n\t strcall('.toLowerCase()');\n\t break;\n\t case 'upper':\n\t strcall('.toUpperCase()');\n\t break;\n\t case 'lower-locale':\n\t strcall('.toLocaleLowerCase()');\n\t break;\n\t case 'upper-locale':\n\t strcall('.toLocaleUpperCase()');\n\t break;\n\t case 'trim':\n\t strcall('.trim()');\n\t break;\n\t case 'left':\n\t a = util.number(args[0]);\n\t strcall('.slice(0,' + a + ')');\n\t break;\n\t case 'right':\n\t a = util.number(args[0]);\n\t strcall('.slice(-' + a +')');\n\t break;\n\t case 'mid':\n\t a = util.number(args[0]);\n\t b = a + util.number(args[1]);\n\t strcall('.slice(+'+a+','+b+')');\n\t break;\n\t case 'slice':\n\t a = util.number(args[0]);\n\t strcall('.slice('+ a +\n\t (args.length > 1 ? ',' + util.number(args[1]) : '') +\n\t ')');\n\t break;\n\t case 'truncate':\n\t a = util.number(args[0]);\n\t b = args[1];\n\t b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n\t src = 'this.truncate(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n\t break;\n\t case 'pad':\n\t a = util.number(args[0]);\n\t b = args[1];\n\t b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n\t src = 'this.pad(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n\t break;\n\t case 'number':\n\t formatter('number');\n\t break;\n\t case 'time':\n\t formatter('time');\n\t break;\n\t case 'time-utc':\n\t formatter('utc');\n\t break;\n\t case 'month':\n\t src = 'this.month(' + src + ')';\n\t break;\n\t case 'month-abbrev':\n\t src = 'this.month(' + src + ',true)';\n\t break;\n\t case 'day':\n\t src = 'this.day(' + src + ')';\n\t break;\n\t case 'day-abbrev':\n\t src = 'this.day(' + src + ',true)';\n\t break;\n\t default:\n\t throw Error('Unrecognized template filter: ' + f);\n\t }\n\t }\n\t\n\t return src;\n\t}\n\t\n\tvar template_re = /\\{\\{(.+?)\\}\\}|$/g,\n\t filter_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^\\|\"]+|[^\\|\\']+)+/g,\n\t args_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^,\"]+|[^,\\']+)+/g;\n\t\n\t// Certain characters need to be escaped so that they can be put into a\n\t// string literal.\n\tvar template_escapes = {\n\t '\\'': '\\'',\n\t '\\\\': '\\\\',\n\t '\\r': 'r',\n\t '\\n': 'n',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t};\n\t\n\tvar template_escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\t\n\tfunction template_escapeChar(match) {\n\t return '\\\\' + template_escapes[match];\n\t}\n\t\n\tfunction template_format(pattern, type) {\n\t var key = type + ':' + pattern;\n\t if (context.format_map[key] == null) {\n\t var f = format[type](pattern);\n\t var i = context.formats.length;\n\t context.formats.push(f);\n\t context.format_map[key] = i;\n\t return i;\n\t }\n\t return context.format_map[key];\n\t}\n\t\n\tfunction get_format(pattern, type) {\n\t return context.formats[template_format(pattern, type)];\n\t}\n\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t time = __webpack_require__(43),\n\t utc = time.utc;\n\t\n\tvar u = module.exports;\n\t\n\tu.$year = util.$func('year', time.year.unit);\n\tu.$month = util.$func('month', time.months.unit);\n\tu.$date = util.$func('date', time.dates.unit);\n\tu.$day = util.$func('day', time.weekdays.unit);\n\tu.$hour = util.$func('hour', time.hours.unit);\n\tu.$minute = util.$func('minute', time.minutes.unit);\n\tu.$second = util.$func('second', time.seconds.unit);\n\t\n\tu.$utcYear = util.$func('utcYear', utc.year.unit);\n\tu.$utcMonth = util.$func('utcMonth', utc.months.unit);\n\tu.$utcDate = util.$func('utcDate', utc.dates.unit);\n\tu.$utcDay = util.$func('utcDay', utc.weekdays.unit);\n\tu.$utcHour = util.$func('utcHour', utc.hours.unit);\n\tu.$utcMinute = util.$func('utcMinute', utc.minutes.unit);\n\tu.$utcSecond = util.$func('utcSecond', utc.seconds.unit);\n\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13);\n\tvar load = __webpack_require__(18);\n\tvar read = __webpack_require__(23);\n\t\n\tmodule.exports = util\n\t .keys(read.formats)\n\t .reduce(function(out, type) {\n\t out[type] = function(opt, format, callback) {\n\t // process arguments\n\t if (util.isString(opt)) { opt = {url: opt}; }\n\t if (arguments.length === 2 && util.isFunction(format)) {\n\t callback = format;\n\t format = undefined;\n\t }\n\t\n\t // set up read format\n\t format = util.extend({parse: 'auto'}, format);\n\t format.type = type;\n\t\n\t // load data\n\t var data = load(opt, callback ? function(error, data) {\n\t if (error) { callback(error, null); return; }\n\t try {\n\t // data loaded, now parse it (async)\n\t data = read(data, format);\n\t callback(null, data);\n\t } catch (e) {\n\t callback(e, null);\n\t }\n\t } : undefined);\n\t\n\t // data loaded, now parse it (sync)\n\t if (!callback) return read(data, format);\n\t };\n\t return out;\n\t }, {});\n\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(13),\n\t type = __webpack_require__(24),\n\t stats = __webpack_require__(38),\n\t template = __webpack_require__(45);\n\t\n\tmodule.exports = {\n\t table: formatTable, // format a data table\n\t summary: formatSummary // format a data table summary\n\t};\n\t\n\tvar FMT = {\n\t 'date': '|time:\"%m/%d/%Y %H:%M:%S\"',\n\t 'number': '|number:\".4f\"',\n\t 'integer': '|number:\"d\"'\n\t};\n\t\n\tvar POS = {\n\t 'number': 'left',\n\t 'integer': 'left'\n\t};\n\t\n\tfunction formatTable(data, opt) {\n\t opt = util.extend({separator:' ', minwidth: 8, maxwidth: 15}, opt);\n\t var fields = opt.fields || util.keys(data[0]),\n\t types = type.all(data);\n\t\n\t if (opt.start || opt.limit) {\n\t var a = opt.start || 0,\n\t b = opt.limit ? a + opt.limit : data.length;\n\t data = data.slice(a, b);\n\t }\n\t\n\t // determine char width of fields\n\t var lens = fields.map(function(name) {\n\t var format = FMT[types[name]] || '',\n\t t = template('{{' + name + format + '}}'),\n\t l = stats.max(data, function(x) { return t(x).length; });\n\t l = Math.max(Math.min(name.length, opt.minwidth), l);\n\t return opt.maxwidth > 0 ? Math.min(l, opt.maxwidth) : l;\n\t });\n\t\n\t // print header row\n\t var head = fields.map(function(name, i) {\n\t return util.truncate(util.pad(name, lens[i], 'center'), lens[i]);\n\t }).join(opt.separator);\n\t\n\t // build template function for each row\n\t var tmpl = template(fields.map(function(name, i) {\n\t return '{{' +\n\t name +\n\t (FMT[types[name]] || '') +\n\t ('|pad:' + lens[i] + ',' + (POS[types[name]] || 'right')) +\n\t ('|truncate:' + lens[i]) +\n\t '}}';\n\t }).join(opt.separator));\n\t\n\t // print table\n\t return head + \"\\n\" + data.map(tmpl).join('\\n');\n\t}\n\t\n\tfunction formatSummary(s) {\n\t s = s ? s.__summary__ ? s : stats.summary(s) : this;\n\t var str = [], i, n;\n\t for (i=0, n=s.length; i 1) {\n\t for (var i=1, n=ref.length; i 0) {\n\t node = pq.peek();\n\t isSg = node instanceof Signal;\n\t pulse = pulses[node._id];\n\t\n\t if (node.rank() !== node.qrank()) {\n\t // A node's rank might change during a propagation. Re-queue if so.\n\t pq.replace(node.qrank(true));\n\t } else {\n\t // Evaluate node and propagate pulse.\n\t pq.pop();\n\t pulses[node._id] = null;\n\t listeners = node._listeners;\n\t\n\t if (!isSg || (isSg && !skipSignals)) {\n\t pulse = this.evaluate(pulse, node);\n\t }\n\t\n\t // Propagate the pulse.\n\t if (pulse !== this.doNotPropagate) {\n\t // Ensure reflow pulses always send reflow pulses even if skipped.\n\t if (!pulse.reflow && node.reflows()) {\n\t pulse = ChangeSet.create(pulse, true);\n\t }\n\t\n\t for (i=0, len=listeners.length; i 0) branch[i-1].addListener(node);\n\t }\n\t\n\t return branch;\n\t};\n\t\n\tprototype.disconnect = function(branch) {\n\t var collector, node, data, signals, i, n, j, m;\n\t\n\t for (i=0, n=branch.length; i= pulse.stamp,\n\t run = node.router() || pulse.add.length || pulse.rem.length;\n\t\n\t return run || !reflowed || node.reevaluate(pulse);\n\t};\n\t\n\tprototype.evaluate = function(pulse, node) {\n\t if (!this.reevaluate(pulse, node)) return pulse;\n\t pulse = node.evaluate(pulse);\n\t node.last(pulse.stamp);\n\t return pulse;\n\t};\n\t\n\tmodule.exports = Graph;\n\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\tfunction Heap(comparator) {\n\t this.cmp = comparator;\n\t this.nodes = [];\n\t}\n\t\n\tvar prototype = Heap.prototype;\n\t\n\tprototype.size = function() {\n\t return this.nodes.length;\n\t};\n\t\n\tprototype.clear = function() {\n\t return (this.nodes = [], this);\n\t};\n\t\n\tprototype.peek = function() {\n\t return this.nodes[0];\n\t};\n\t\n\tprototype.push = function(x) {\n\t var array = this.nodes;\n\t array.push(x);\n\t return _siftdown(array, 0, array.length-1, this.cmp);\n\t};\n\t\n\tprototype.pop = function() {\n\t var array = this.nodes,\n\t last = array.pop(),\n\t item;\n\t\n\t if (array.length) {\n\t item = array[0];\n\t array[0] = last;\n\t _siftup(array, 0, this.cmp);\n\t } else {\n\t item = last;\n\t }\n\t return item;\n\t};\n\t\n\tprototype.replace = function(item) {\n\t var array = this.nodes,\n\t retval = array[0];\n\t array[0] = item;\n\t _siftup(array, 0, this.cmp);\n\t return retval;\n\t};\n\t\n\tprototype.pushpop = function(item) {\n\t var array = this.nodes, ref = array[0];\n\t if (array.length && this.cmp(ref, item) < 0) {\n\t array[0] = item;\n\t item = ref;\n\t _siftup(array, 0, this.cmp);\n\t }\n\t return item;\n\t};\n\t\n\tfunction _siftdown(array, start, idx, cmp) {\n\t var item, parent, pidx;\n\t\n\t item = array[idx];\n\t while (idx > start) {\n\t pidx = (idx - 1) >> 1;\n\t parent = array[pidx];\n\t if (cmp(item, parent) < 0) {\n\t array[idx] = parent;\n\t idx = pidx;\n\t continue;\n\t }\n\t break;\n\t }\n\t return (array[idx] = item);\n\t}\n\t\n\tfunction _siftup(array, idx, cmp) {\n\t var start = idx,\n\t end = array.length,\n\t item = array[idx],\n\t cidx = 2 * idx + 1, ridx;\n\t\n\t while (cidx < end) {\n\t ridx = cidx + 1;\n\t if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n\t cidx = ridx;\n\t }\n\t array[idx] = array[cidx];\n\t idx = cidx;\n\t cidx = 2 * idx + 1;\n\t }\n\t array[idx] = item;\n\t return _siftdown(array, start, idx, cmp);\n\t}\n\t\n\tmodule.exports = Heap;\n\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ChangeSet = __webpack_require__(5),\n\t Node = __webpack_require__(10), // jshint ignore:line\n\t Base = Node.prototype;\n\t\n\tfunction Signal(graph, name, initialValue) {\n\t Base.init.call(this, graph);\n\t this._name = name;\n\t this._value = initialValue;\n\t this._verbose = false; // Verbose signals re-pulse the graph even if prev === val.\n\t this._handlers = [];\n\t return this;\n\t}\n\t\n\tvar prototype = (Signal.prototype = Object.create(Base));\n\tprototype.constructor = Signal;\n\t\n\tprototype.name = function() {\n\t return this._name;\n\t};\n\t\n\tprototype.value = function(val) {\n\t if (!arguments.length) return this._value;\n\t return (this._value = val, this);\n\t};\n\t\n\t// Alias to value, for shared API with DataSource\n\tprototype.values = prototype.value;\n\t\n\tprototype.verbose = function(v) {\n\t if (!arguments.length) return this._verbose;\n\t return (this._verbose = !!v, this);\n\t};\n\t\n\tprototype.evaluate = function(input) {\n\t return input.signals[this._name] ? input : this._graph.doNotPropagate;\n\t};\n\t\n\tprototype.fire = function(cs) {\n\t if (!cs) cs = ChangeSet.create(null, true);\n\t cs.signals[this._name] = 1;\n\t this._graph.propagate(cs, this);\n\t};\n\t\n\tprototype.on = function(handler) {\n\t var signal = this,\n\t node = new Node(this._graph);\n\t\n\t node.evaluate = function(input) {\n\t handler(signal.name(), signal.value());\n\t return input;\n\t };\n\t\n\t this._handlers.push({\n\t handler: handler,\n\t node: node\n\t });\n\t\n\t return this.addListener(node);\n\t};\n\t\n\tprototype.off = function(handler) {\n\t var h = this._handlers, i, x;\n\t\n\t for (i=h.length; --i>=0;) {\n\t if (!handler || h[i].handler === handler) {\n\t x = h.splice(i, 1)[0];\n\t this.removeListener(x.node);\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tmodule.exports = Signal;\n\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t axes: __webpack_require__(53),\n\t background: __webpack_require__(100),\n\t data: __webpack_require__(101),\n\t events: __webpack_require__(135),\n\t expr: __webpack_require__(136),\n\t legends: __webpack_require__(142),\n\t mark: __webpack_require__(55),\n\t marks: __webpack_require__(144),\n\t modify: __webpack_require__(134),\n\t padding: __webpack_require__(145),\n\t predicates: __webpack_require__(146),\n\t properties: __webpack_require__(56),\n\t signals: __webpack_require__(147),\n\t spec: __webpack_require__(148),\n\t streams: __webpack_require__(158),\n\t transforms: __webpack_require__(102)\n\t};\n\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t axs = __webpack_require__(54);\n\t\n\tvar ORIENT = {\n\t \"x\": \"bottom\",\n\t \"y\": \"left\",\n\t \"top\": \"top\",\n\t \"bottom\": \"bottom\",\n\t \"left\": \"left\",\n\t \"right\": \"right\"\n\t};\n\t\n\tfunction parseAxes(model, spec, axes, group) {\n\t var config = model.config();\n\t (spec || []).forEach(function(def, index) {\n\t axes[index] = axes[index] || axs(model);\n\t parseAxis(config, def, index, axes[index], group);\n\t });\n\t}\n\t\n\tfunction parseAxis(config, def, index, axis, group) {\n\t // axis scale\n\t if (def.scale !== undefined) {\n\t axis.scale(group.scale(def.scale));\n\t }\n\t\n\t // axis orientation\n\t axis.orient(def.orient || ORIENT[def.type]);\n\t // axis offset\n\t axis.offset(def.offset || 0);\n\t // axis layer\n\t axis.layer(def.layer || \"front\");\n\t // axis grid lines\n\t axis.grid(def.grid || false);\n\t // axis title\n\t axis.title(def.title || null);\n\t // axis title offset\n\t axis.titleOffset(def.titleOffset != null ?\n\t def.titleOffset : config.axis.titleOffset);\n\t // axis values\n\t axis.tickValues(def.values || null);\n\t // axis label formatting\n\t axis.tickFormat(def.format || null);\n\t axis.tickFormatType(def.formatType || null);\n\t // axis tick subdivision\n\t axis.tickSubdivide(def.subdivide || 0);\n\t // axis tick padding\n\t axis.tickPadding(def.tickPadding || config.axis.padding);\n\t\n\t // axis tick size(s)\n\t var size = [];\n\t if (def.tickSize !== undefined) {\n\t for (var i=0; i<3; ++i) size.push(def.tickSize);\n\t } else {\n\t var ts = config.axis.tickSize;\n\t size = [ts, ts, ts];\n\t }\n\t if (def.tickSizeMajor != null) size[0] = def.tickSizeMajor;\n\t if (def.tickSizeMinor != null) size[1] = def.tickSizeMinor;\n\t if (def.tickSizeEnd != null) size[2] = def.tickSizeEnd;\n\t if (size.length) {\n\t axis.tickSize.apply(axis, size);\n\t }\n\t\n\t // axis tick count\n\t axis.tickCount(def.ticks || config.axis.ticks);\n\t\n\t // style properties\n\t var p = def.properties;\n\t if (p && p.ticks) {\n\t axis.majorTickProperties(p.majorTicks ?\n\t dl.extend({}, p.ticks, p.majorTicks) : p.ticks);\n\t axis.minorTickProperties(p.minorTicks ?\n\t dl.extend({}, p.ticks, p.minorTicks) : p.ticks);\n\t } else {\n\t axis.majorTickProperties(p && p.majorTicks || {});\n\t axis.minorTickProperties(p && p.minorTicks || {});\n\t }\n\t axis.tickLabelProperties(p && p.labels || {});\n\t axis.titleProperties(p && p.title || {});\n\t axis.gridLineProperties(p && p.grid || {});\n\t axis.domainProperties(p && p.axis || {});\n\t}\n\t\n\tmodule.exports = parseAxes;\n\t\n\tparseAxes.schema = {\n\t \"defs\": {\n\t \"axis\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"x\", \"y\"]},\n\t \"scale\": {\"type\": \"string\"},\n\t \"orient\": {\"enum\": [\"top\", \"bottom\", \"left\", \"right\"]},\n\t \"title\": {\"type\": \"string\"},\n\t \"titleOffset\": {\"type\": \"number\"},\n\t \"format\": {\"type\": \"string\"},\n\t \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n\t \"ticks\": {\"type\": \"number\"},\n\t \"values\": {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": [\"string\", \"number\"]}\n\t },\n\t \"subdivide\": {\"type\": \"number\"},\n\t \"tickPadding\": {\"type\": \"number\"},\n\t \"tickSize\": {\"type\": \"number\"},\n\t \"tickSizeMajor\": {\"type\": \"number\"},\n\t \"tickSizeMinor\": {\"type\": \"number\"},\n\t \"tickSizeEnd\": {\"type\": \"number\"},\n\t \"offset\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"scale\": {\"type\": \"string\"},\n\t \"value\": {\"type\": [\"string\", \"number\"]}\n\t },\n\t \"required\": [\"scale\", \"value\"],\n\t \"additionalProperties\": false\n\t }]\n\t },\n\t \"layer\": {\"enum\": [\"front\", \"back\"], \"default\": \"front\"},\n\t \"grid\": {\"type\": \"boolean\"},\n\t \"properties\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"ticks\": {\"$ref\": \"#/defs/propset\"},\n\t \"majorTicks\": {\"$ref\": \"#/defs/propset\"},\n\t \"minorTicks\": {\"$ref\": \"#/defs/propset\"},\n\t \"labels\": {\"$ref\": \"#/defs/propset\"},\n\t \"title\": {\"$ref\": \"#/defs/propset\"},\n\t \"grid\": {\"$ref\": \"#/defs/propset\"},\n\t \"axis\": {\"$ref\": \"#/defs/propset\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"scale\"]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t parseMark = __webpack_require__(55),\n\t util = __webpack_require__(58);\n\t\n\tvar axisBounds = new (__webpack_require__(60).Bounds)();\n\tvar ORDINAL = 'ordinal';\n\t\n\tfunction axs(model) {\n\t var scale,\n\t config = model.config().axis,\n\t orient = config.orient,\n\t offset = 0,\n\t titleOffset = config.titleOffset,\n\t axisDef = {},\n\t layer = 'front',\n\t grid = false,\n\t title = null,\n\t tickMajorSize = config.tickSize,\n\t tickMinorSize = config.tickSize,\n\t tickEndSize = config.tickSize,\n\t tickPadding = config.padding,\n\t tickValues = null,\n\t tickFormatString = null,\n\t tickFormatType = null,\n\t tickSubdivide = 0,\n\t tickCount = config.ticks,\n\t gridLineStyle = {},\n\t tickLabelStyle = {},\n\t majorTickStyle = {},\n\t minorTickStyle = {},\n\t titleStyle = {},\n\t domainStyle = {},\n\t m = { // Axis marks as references for updates\n\t gridLines: {},\n\t majorTicks: {},\n\t minorTicks: {},\n\t tickLabels: {},\n\t domain: {},\n\t title: {}\n\t };\n\t\n\t var axis = {};\n\t\n\t function reset() {\n\t axisDef.type = null;\n\t }\n\t\n\t function ingest(d) {\n\t return {data: d};\n\t }\n\t\n\t function getTicks(format) {\n\t var major = tickValues || (scale.ticks ? scale.ticks(tickCount) : scale.domain()),\n\t minor = axisSubdivide(scale, major, tickSubdivide).map(ingest);\n\t major = major.map(function(d) { return (d = ingest(d), d.label = format(d.data), d); });\n\t return [major, minor];\n\t }\n\t\n\t axis.def = function() {\n\t if (!axisDef.type) axis_def(scale);\n\t\n\t var format = util.getTickFormat(scale, tickCount, tickFormatType, tickFormatString),\n\t ticks = getTicks(format),\n\t tdata = title ? [title].map(ingest) : [];\n\t\n\t axisDef.marks[0].from = function() { return grid ? ticks[0] : []; };\n\t axisDef.marks[1].from = function() { return ticks[0]; };\n\t axisDef.marks[2].from = function() { return ticks[1]; };\n\t axisDef.marks[3].from = axisDef.marks[1].from;\n\t axisDef.marks[4].from = function() { return [1]; };\n\t axisDef.marks[5].from = function() { return tdata; };\n\t axisDef.offset = offset;\n\t axisDef.orient = orient;\n\t axisDef.layer = layer;\n\t if (titleOffset === 'auto') titleAutoOffset(axisDef);\n\t\n\t return axisDef;\n\t };\n\t\n\t function titleAutoOffset(axisDef) {\n\t var orient = axisDef.orient,\n\t update = axisDef.marks[5].properties.update,\n\t fn = update.encode,\n\t min = config.titleOffsetAutoMin,\n\t max = config.titleOffsetAutoMax,\n\t pad = config.titleOffsetAutoMargin;\n\t\n\t // Offset axis title using bounding box of axis domain and labels\n\t // Assumes other components are **encoded and bounded** beforehand\n\t update.encode = function(item, group, trans, db, signals, preds) {\n\t var dirty = fn.call(fn, item, group, trans, db, signals, preds),\n\t field = (orient==='bottom' || orient==='top') ? 'y' : 'x';\n\t if (titleStyle[field] != null) return dirty;\n\t\n\t axisBounds.clear()\n\t .union(group.items[3].bounds)\n\t .union(group.items[4].bounds);\n\t\n\t var o = trans ? {} : item,\n\t method = (orient==='left' || orient==='right') ? 'width' : 'height',\n\t sign = (orient==='top' || orient==='left') ? -1 : 1,\n\t off = ~~(axisBounds[method]() + item.fontSize/2 + pad);\n\t\n\t Tuple.set(o, field, sign * Math.min(Math.max(min, off), max));\n\t if (trans) trans.interpolate(item, o);\n\t return true;\n\t };\n\t }\n\t\n\t function axis_def(scale) {\n\t // setup scale mapping\n\t var newScale, oldScale, range;\n\t if (scale.type === ORDINAL) {\n\t newScale = {scale: scale.scaleName, offset: 0.5 + scale.rangeBand()/2};\n\t oldScale = newScale;\n\t } else {\n\t newScale = {scale: scale.scaleName, offset: 0.5};\n\t oldScale = {scale: scale.scaleName+':prev', offset: 0.5};\n\t }\n\t range = axisScaleRange(scale);\n\t\n\t // setup axis marks\n\t dl.extend(m.gridLines, axisTicks(config));\n\t dl.extend(m.majorTicks, axisTicks(config));\n\t dl.extend(m.minorTicks, axisTicks(config));\n\t dl.extend(m.tickLabels, axisTickLabels(config));\n\t dl.extend(m.domain, axisDomain(config));\n\t dl.extend(m.title, axisTitle(config));\n\t m.gridLines.properties.enter.stroke = {value: config.gridColor};\n\t m.gridLines.properties.enter.strokeOpacity = {value: config.gridOpacity};\n\t\n\t // extend axis marks based on axis orientation\n\t axisTicksExtend(orient, m.gridLines, oldScale, newScale, Infinity, offset);\n\t axisTicksExtend(orient, m.majorTicks, oldScale, newScale, tickMajorSize);\n\t axisTicksExtend(orient, m.minorTicks, oldScale, newScale, tickMinorSize);\n\t axisLabelExtend(orient, m.tickLabels, oldScale, newScale, tickMajorSize, tickPadding);\n\t\n\t axisDomainExtend(orient, m.domain, range, tickEndSize);\n\t axisTitleExtend(orient, m.title, range, +titleOffset || -1);\n\t\n\t // add / override custom style properties\n\t dl.extend(m.gridLines.properties.update, gridLineStyle);\n\t dl.extend(m.majorTicks.properties.update, majorTickStyle);\n\t dl.extend(m.minorTicks.properties.update, minorTickStyle);\n\t dl.extend(m.tickLabels.properties.update, tickLabelStyle);\n\t dl.extend(m.domain.properties.update, domainStyle);\n\t dl.extend(m.title.properties.update, titleStyle);\n\t\n\t var marks = [m.gridLines, m.majorTicks, m.minorTicks, m.tickLabels, m.domain, m.title];\n\t dl.extend(axisDef, {\n\t type: 'group',\n\t interactive: false,\n\t properties: {\n\t enter: {\n\t encode: axisUpdate,\n\t scales: [scale.scaleName],\n\t signals: [], data: []\n\t },\n\t update: {\n\t encode: axisUpdate,\n\t scales: [scale.scaleName],\n\t signals: [], data: []\n\t }\n\t }\n\t });\n\t\n\t axisDef.marks = marks.map(function(m) { return parseMark(model, m); });\n\t }\n\t\n\t axis.scale = function(x) {\n\t if (!arguments.length) return scale;\n\t if (scale !== x) { scale = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.orient = function(x) {\n\t if (!arguments.length) return orient;\n\t if (orient !== x) {\n\t orient = x in axisOrients ? x + '' : config.orient;\n\t reset();\n\t }\n\t return axis;\n\t };\n\t\n\t axis.title = function(x) {\n\t if (!arguments.length) return title;\n\t if (title !== x) { title = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.tickCount = function(x) {\n\t if (!arguments.length) return tickCount;\n\t tickCount = x;\n\t return axis;\n\t };\n\t\n\t axis.tickValues = function(x) {\n\t if (!arguments.length) return tickValues;\n\t tickValues = x;\n\t return axis;\n\t };\n\t\n\t axis.tickFormat = function(x) {\n\t if (!arguments.length) return tickFormatString;\n\t if (tickFormatString !== x) {\n\t tickFormatString = x;\n\t reset();\n\t }\n\t return axis;\n\t };\n\t\n\t axis.tickFormatType = function(x) {\n\t if (!arguments.length) return tickFormatType;\n\t if (tickFormatType !== x) {\n\t tickFormatType = x;\n\t reset();\n\t }\n\t return axis;\n\t };\n\t\n\t axis.tickSize = function(x, y) {\n\t if (!arguments.length) return tickMajorSize;\n\t var n = arguments.length - 1,\n\t major = +x,\n\t minor = n > 1 ? +y : tickMajorSize,\n\t end = n > 0 ? +arguments[n] : tickMajorSize;\n\t\n\t if (tickMajorSize !== major ||\n\t tickMinorSize !== minor ||\n\t tickEndSize !== end) {\n\t reset();\n\t }\n\t\n\t tickMajorSize = major;\n\t tickMinorSize = minor;\n\t tickEndSize = end;\n\t return axis;\n\t };\n\t\n\t axis.tickSubdivide = function(x) {\n\t if (!arguments.length) return tickSubdivide;\n\t tickSubdivide = +x;\n\t return axis;\n\t };\n\t\n\t axis.offset = function(x) {\n\t if (!arguments.length) return offset;\n\t offset = dl.isObject(x) ? x : +x;\n\t return axis;\n\t };\n\t\n\t axis.tickPadding = function(x) {\n\t if (!arguments.length) return tickPadding;\n\t if (tickPadding !== +x) { tickPadding = +x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.titleOffset = function(x) {\n\t if (!arguments.length) return titleOffset;\n\t if (titleOffset !== x) { titleOffset = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.layer = function(x) {\n\t if (!arguments.length) return layer;\n\t if (layer !== x) { layer = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.grid = function(x) {\n\t if (!arguments.length) return grid;\n\t if (grid !== x) { grid = x; reset(); }\n\t return axis;\n\t };\n\t\n\t axis.gridLineProperties = function(x) {\n\t if (!arguments.length) return gridLineStyle;\n\t if (gridLineStyle !== x) { gridLineStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.majorTickProperties = function(x) {\n\t if (!arguments.length) return majorTickStyle;\n\t if (majorTickStyle !== x) { majorTickStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.minorTickProperties = function(x) {\n\t if (!arguments.length) return minorTickStyle;\n\t if (minorTickStyle !== x) { minorTickStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.tickLabelProperties = function(x) {\n\t if (!arguments.length) return tickLabelStyle;\n\t if (tickLabelStyle !== x) { tickLabelStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.titleProperties = function(x) {\n\t if (!arguments.length) return titleStyle;\n\t if (titleStyle !== x) { titleStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.domainProperties = function(x) {\n\t if (!arguments.length) return domainStyle;\n\t if (domainStyle !== x) { domainStyle = x; }\n\t return axis;\n\t };\n\t\n\t axis.reset = function() {\n\t reset();\n\t return axis;\n\t };\n\t\n\t return axis;\n\t}\n\t\n\tvar axisOrients = {top: 1, right: 1, bottom: 1, left: 1};\n\t\n\tfunction axisSubdivide(scale, ticks, m) {\n\t var subticks = [];\n\t if (m && ticks.length > 1) {\n\t var extent = axisScaleExtent(scale.domain()),\n\t i = -1,\n\t n = ticks.length,\n\t d = (ticks[1] - ticks[0]) / ++m,\n\t j,\n\t v;\n\t while (++i < n) {\n\t for (j = m; --j > 0;) {\n\t if ((v = +ticks[i] - j * d) >= extent[0]) {\n\t subticks.push(v);\n\t }\n\t }\n\t }\n\t for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1];) {\n\t subticks.push(v);\n\t }\n\t }\n\t return subticks;\n\t}\n\t\n\tfunction axisScaleExtent(domain) {\n\t var start = domain[0], stop = domain[domain.length - 1];\n\t return start < stop ? [start, stop] : [stop, start];\n\t}\n\t\n\tfunction axisScaleRange(scale) {\n\t return scale.rangeExtent ?\n\t scale.rangeExtent() :\n\t axisScaleExtent(scale.range());\n\t}\n\t\n\tvar axisAlign = {\n\t bottom: 'center',\n\t top: 'center',\n\t left: 'right',\n\t right: 'left'\n\t};\n\t\n\tvar axisBaseline = {\n\t bottom: 'top',\n\t top: 'bottom',\n\t left: 'middle',\n\t right: 'middle'\n\t};\n\t\n\tfunction axisLabelExtend(orient, labels, oldScale, newScale, size, pad) {\n\t size = Math.max(size, 0) + pad;\n\t if (orient === 'left' || orient === 'top') {\n\t size *= -1;\n\t }\n\t if (orient === 'top' || orient === 'bottom') {\n\t dl.extend(labels.properties.enter, {\n\t x: oldScale,\n\t y: {value: size},\n\t });\n\t dl.extend(labels.properties.update, {\n\t x: newScale,\n\t y: {value: size},\n\t align: {value: 'center'},\n\t baseline: {value: axisBaseline[orient]}\n\t });\n\t } else {\n\t dl.extend(labels.properties.enter, {\n\t x: {value: size},\n\t y: oldScale,\n\t });\n\t dl.extend(labels.properties.update, {\n\t x: {value: size},\n\t y: newScale,\n\t align: {value: axisAlign[orient]},\n\t baseline: {value: 'middle'}\n\t });\n\t }\n\t}\n\t\n\tfunction axisTicksExtend(orient, ticks, oldScale, newScale, size, offset) {\n\t var sign = (orient === 'left' || orient === 'top') ? -1 : 1;\n\t if (size === Infinity) {\n\t size = (orient === 'top' || orient === 'bottom') ?\n\t {field: {group: 'height', level: 2}, mult: -sign, offset: offset*-sign} :\n\t {field: {group: 'width', level: 2}, mult: -sign, offset: offset*-sign};\n\t } else {\n\t size = {value: sign * size, offset: offset};\n\t }\n\t if (orient === 'top' || orient === 'bottom') {\n\t dl.extend(ticks.properties.enter, {\n\t x: oldScale,\n\t y: {value: 0},\n\t y2: size\n\t });\n\t dl.extend(ticks.properties.update, {\n\t x: newScale,\n\t y: {value: 0},\n\t y2: size\n\t });\n\t dl.extend(ticks.properties.exit, {\n\t x: newScale,\n\t });\n\t } else {\n\t dl.extend(ticks.properties.enter, {\n\t x: {value: 0},\n\t x2: size,\n\t y: oldScale\n\t });\n\t dl.extend(ticks.properties.update, {\n\t x: {value: 0},\n\t x2: size,\n\t y: newScale\n\t });\n\t dl.extend(ticks.properties.exit, {\n\t y: newScale,\n\t });\n\t }\n\t}\n\t\n\tfunction axisTitleExtend(orient, title, range, offset) {\n\t var update = title.properties.update,\n\t mid = ~~((range[0] + range[1]) / 2),\n\t sign = (orient === 'top' || orient === 'left') ? -1 : 1;\n\t\n\t if (orient === 'bottom' || orient === 'top') {\n\t update.x = {value: mid};\n\t update.angle = {value: 0};\n\t if (offset >= 0) update.y = {value: sign * offset};\n\t } else {\n\t update.y = {value: mid};\n\t update.angle = {value: orient === 'left' ? -90 : 90};\n\t if (offset >= 0) update.x = {value: sign * offset};\n\t }\n\t}\n\t\n\tfunction axisDomainExtend(orient, domain, range, size) {\n\t var path;\n\t if (orient === 'top' || orient === 'left') {\n\t size = -1 * size;\n\t }\n\t if (orient === 'bottom' || orient === 'top') {\n\t path = 'M' + range[0] + ',' + size + 'V0H' + range[1] + 'V' + size;\n\t } else {\n\t path = 'M' + size + ',' + range[0] + 'H0V' + range[1] + 'H' + size;\n\t }\n\t domain.properties.update.path = {value: path};\n\t}\n\t\n\tfunction axisUpdate(item, group, trans) {\n\t var o = trans ? {} : item,\n\t offset = item.mark.def.offset,\n\t orient = item.mark.def.orient,\n\t width = group.width,\n\t height = group.height; // TODO fallback to global w,h?\n\t\n\t if (dl.isArray(offset)) {\n\t var ofx = offset[0],\n\t ofy = offset[1];\n\t\n\t switch (orient) {\n\t case 'left': { Tuple.set(o, 'x', -ofx); Tuple.set(o, 'y', ofy); break; }\n\t case 'right': { Tuple.set(o, 'x', width + ofx); Tuple.set(o, 'y', ofy); break; }\n\t case 'bottom': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', height + ofy); break; }\n\t case 'top': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', -ofy); break; }\n\t default: { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', ofy); }\n\t }\n\t } else {\n\t if (dl.isObject(offset)) {\n\t offset = -group.scale(offset.scale)(offset.value);\n\t }\n\t\n\t switch (orient) {\n\t case 'left': { Tuple.set(o, 'x', -offset); Tuple.set(o, 'y', 0); break; }\n\t case 'right': { Tuple.set(o, 'x', width + offset); Tuple.set(o, 'y', 0); break; }\n\t case 'bottom': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', height + offset); break; }\n\t case 'top': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', -offset); break; }\n\t default: { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', 0); }\n\t }\n\t }\n\t\n\t if (trans) trans.interpolate(item, o);\n\t return true;\n\t}\n\t\n\tfunction axisTicks(config) {\n\t return {\n\t type: 'rule',\n\t interactive: false,\n\t key: 'data',\n\t properties: {\n\t enter: {\n\t stroke: {value: config.tickColor},\n\t strokeWidth: {value: config.tickWidth},\n\t opacity: {value: 1e-6}\n\t },\n\t exit: { opacity: {value: 1e-6} },\n\t update: { opacity: {value: 1} }\n\t }\n\t };\n\t}\n\t\n\tfunction axisTickLabels(config) {\n\t return {\n\t type: 'text',\n\t interactive: true,\n\t key: 'data',\n\t properties: {\n\t enter: {\n\t fill: {value: config.tickLabelColor},\n\t font: {value: config.tickLabelFont},\n\t fontSize: {value: config.tickLabelFontSize},\n\t opacity: {value: 1e-6},\n\t text: {field: 'label'}\n\t },\n\t exit: { opacity: {value: 1e-6} },\n\t update: { opacity: {value: 1} }\n\t }\n\t };\n\t}\n\t\n\tfunction axisTitle(config) {\n\t return {\n\t type: 'text',\n\t interactive: true,\n\t properties: {\n\t enter: {\n\t font: {value: config.titleFont},\n\t fontSize: {value: config.titleFontSize},\n\t fontWeight: {value: config.titleFontWeight},\n\t fill: {value: config.titleColor},\n\t align: {value: 'center'},\n\t baseline: {value: 'middle'},\n\t text: {field: 'data'}\n\t },\n\t update: {}\n\t }\n\t };\n\t}\n\t\n\tfunction axisDomain(config) {\n\t return {\n\t type: 'path',\n\t interactive: false,\n\t properties: {\n\t enter: {\n\t x: {value: 0.5},\n\t y: {value: 0.5},\n\t stroke: {value: config.axisColor},\n\t strokeWidth: {value: config.axisWidth}\n\t },\n\t update: {}\n\t }\n\t };\n\t}\n\t\n\tmodule.exports = axs;\n\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t parseProperties = __webpack_require__(56);\n\t\n\tfunction parseMark(model, mark) {\n\t var props = mark.properties,\n\t group = mark.marks;\n\t\n\t // parse mark property definitions\n\t dl.keys(props).forEach(function(k) {\n\t props[k] = parseProperties(model, mark.type, props[k]);\n\t });\n\t\n\t // parse delay function\n\t if (mark.delay) {\n\t mark.delay = parseProperties(model, mark.type, {delay: mark.delay});\n\t }\n\t\n\t // recurse if group type\n\t if (group) {\n\t mark.marks = group.map(function(g) { return parseMark(model, g); });\n\t }\n\t\n\t return mark;\n\t}\n\t\n\tmodule.exports = parseMark;\n\t\n\tparseMark.schema = {\n\t \"defs\": {\n\t \"mark\": {\n\t \"type\": \"object\",\n\t\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"key\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"rect\", \"symbol\", \"path\", \"arc\",\n\t \"area\", \"line\", \"rule\", \"image\", \"text\", \"group\"]},\n\t\n\t \"from\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"data\": {\"type\": \"string\"},\n\t \"mark\": {\"type\": \"string\"},\n\t \"transform\": {\"$ref\": \"#/defs/transform\"}\n\t },\n\t \"additionalProperties\": false\n\t },\n\t\n\t \"delay\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"ease\": {\n\t \"enum\": [\"linear\", \"quad\", \"cubic\", \"sin\",\n\t \"exp\", \"circle\", \"bounce\"].reduce(function(acc, e) {\n\t [\"in\", \"out\", \"in-out\", \"out-in\"].forEach(function(m) {\n\t acc.push(e+\"-\"+m);\n\t });\n\t return acc;\n\t }, [])\n\t },\n\t\n\t \"interactive\": {\"type\": \"boolean\"},\n\t\n\t \"properties\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"enter\": {\"$ref\": \"#/defs/propset\"},\n\t \"update\": {\"$ref\": \"#/defs/propset\"},\n\t \"exit\": {\"$ref\": \"#/defs/propset\"},\n\t \"hover\": {\"$ref\": \"#/defs/propset\"}\n\t },\n\t \"additionalProperties\": false,\n\t \"anyOf\": [{\"required\": [\"enter\"]}, {\"required\": [\"update\"]}]\n\t }\n\t },\n\t\n\t // \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t Tuple = __webpack_require__(4).Tuple;\n\t\n\tvar DEPS = [\"signals\", \"scales\", \"data\", \"fields\"];\n\t\n\tfunction properties(model, mark, spec) {\n\t var config = model.config(),\n\t code = \"\",\n\t names = dl.keys(spec),\n\t exprs = [], // parsed expressions injected in the generated code\n\t i, len, name, ref, vars = {},\n\t deps = {\n\t signals: {},\n\t scales: {},\n\t data: {},\n\t fields: {},\n\t nested: [],\n\t _nRefs: {}, // Temp stash to de-dupe nested refs.\n\t reflow: false\n\t };\n\t\n\t code += \"var o = trans ? {} : item, d=0, exprs=this.exprs, set=this.tpl.set, tmpl=signals||{}, t;\\n\" +\n\t // Stash for dl.template\n\t \"tmpl.datum = item.datum;\\n\" +\n\t \"tmpl.group = group;\\n\" +\n\t \"tmpl.parent = group.datum;\\n\";\n\t\n\t function handleDep(p) {\n\t if (ref[p] == null) return;\n\t var k = dl.array(ref[p]), i, n;\n\t for (i=0, n=k.length; i 0) ? \"\\n \" : \" \";\n\t if (ref.rule) {\n\t // a production rule valueref\n\t ref = rule(model, name, ref.rule, exprs);\n\t code += \"\\n \" + ref.code;\n\t } else if (dl.isArray(ref)) {\n\t // a production rule valueref as an array\n\t ref = rule(model, name, ref, exprs);\n\t code += \"\\n \" + ref.code;\n\t } else {\n\t // a simple valueref\n\t ref = valueRef(config, name, ref);\n\t code += \"d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n\t }\n\t\n\t vars[name] = true;\n\t DEPS.forEach(handleDep);\n\t deps.reflow = deps.reflow || ref.reflow;\n\t if (ref.nested.length) ref.nested.forEach(handleNestedRefs);\n\t }\n\t\n\t // If nested references are present, sort them based on their level\n\t // to speed up determination of whether encoders should be reeval'd.\n\t dl.keys(deps._nRefs).forEach(function(k) { deps.nested.push(deps._nRefs[k]); });\n\t deps.nested.sort(function(a, b) {\n\t a = a.level;\n\t b = b.level;\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t });\n\t\n\t if (vars.x2) {\n\t if (vars.x) {\n\t code += \"\\n if (o.x > o.x2) { \" +\n\t \"\\n t = o.x;\" +\n\t \"\\n d += set(o, 'x', o.x2);\" +\n\t \"\\n d += set(o, 'x2', t); \" +\n\t \"\\n };\";\n\t code += \"\\n d += set(o, 'width', (o.x2 - o.x));\";\n\t } else if (vars.width) {\n\t code += \"\\n d += set(o, 'x', (o.x2 - o.width));\";\n\t } else {\n\t code += \"\\n d += set(o, 'x', o.x2);\";\n\t }\n\t }\n\t\n\t if (vars.xc) {\n\t if (vars.width) {\n\t code += \"\\n d += set(o, 'x', (o.xc - o.width/2));\" ;\n\t } else {\n\t code += \"\\n d += set(o, 'x', o.xc);\" ;\n\t }\n\t }\n\t\n\t if (vars.y2) {\n\t if (vars.y) {\n\t code += \"\\n if (o.y > o.y2) { \" +\n\t \"\\n t = o.y;\" +\n\t \"\\n d += set(o, 'y', o.y2);\" +\n\t \"\\n d += set(o, 'y2', t);\" +\n\t \"\\n };\";\n\t code += \"\\n d += set(o, 'height', (o.y2 - o.y));\";\n\t } else if (vars.height) {\n\t code += \"\\n d += set(o, 'y', (o.y2 - o.height));\";\n\t } else {\n\t code += \"\\n d += set(o, 'y', o.y2);\";\n\t }\n\t }\n\t\n\t if (vars.yc) {\n\t if (vars.height) {\n\t code += \"\\n d += set(o, 'y', (o.yc - o.height/2));\" ;\n\t } else {\n\t code += \"\\n d += set(o, 'y', o.yc);\" ;\n\t }\n\t }\n\t\n\t if (hasPath(mark, vars)) code += \"\\n d += (item.touch(), 1);\";\n\t code += \"\\n if (trans) trans.interpolate(item, o);\";\n\t code += \"\\n return d > 0;\";\n\t\n\t try {\n\t /* jshint evil:true */\n\t var encoder = Function('item', 'group', 'trans', 'db',\n\t 'signals', 'predicates', code);\n\t\n\t encoder.tpl = Tuple;\n\t encoder.exprs = exprs;\n\t encoder.util = dl;\n\t encoder.d3 = d3; // For color spaces\n\t dl.extend(encoder, dl.template.context);\n\t return {\n\t encode: encoder,\n\t signals: dl.keys(deps.signals),\n\t scales: dl.keys(deps.scales),\n\t data: dl.keys(deps.data),\n\t fields: dl.keys(deps.fields),\n\t nested: deps.nested,\n\t reflow: deps.reflow\n\t };\n\t } catch (e) {\n\t log.error(e);\n\t log.log(code);\n\t }\n\t}\n\t\n\tfunction dependencies(a, b) {\n\t if (!dl.isObject(a)) {\n\t a = {reflow: false, nested: []};\n\t DEPS.forEach(function(d) { a[d] = []; });\n\t }\n\t\n\t if (dl.isObject(b)) {\n\t a.reflow = a.reflow || b.reflow;\n\t a.nested.push.apply(a.nested, b.nested);\n\t DEPS.forEach(function(d) { a[d].push.apply(a[d], b[d]); });\n\t }\n\t\n\t return a;\n\t}\n\t\n\tfunction hasPath(mark, vars) {\n\t return vars.path ||\n\t ((mark==='area' || mark==='line') &&\n\t (vars.x || vars.x2 || vars.width ||\n\t vars.y || vars.y2 || vars.height ||\n\t vars.tension || vars.interpolate));\n\t}\n\t\n\tfunction rule(model, name, rules, exprs) {\n\t var config = model.config(),\n\t deps = dependencies(),\n\t inputs = [],\n\t code = '';\n\t\n\t (rules||[]).forEach(function(r, i) {\n\t var ref = valueRef(config, name, r);\n\t dependencies(deps, ref);\n\t\n\t if (r.test) {\n\t // rule uses an expression instead of a predicate.\n\t var exprFn = model.expr(r.test);\n\t deps.signals.push.apply(deps.signals, exprFn.globals);\n\t deps.data.push.apply(deps.data, exprFn.dataSources);\n\t\n\t code += \"if (exprs[\" + exprs.length + \"](item.datum, null)) {\" +\n\t \"\\n d += set(o, \"+dl.str(name)+\", \" +ref.val+\");\";\n\t code += rules[i+1] ? \"\\n } else \" : \" }\";\n\t\n\t exprs.push(exprFn.fn);\n\t } else {\n\t var def = r.predicate,\n\t predName = def && (def.name || def),\n\t pred = model.predicate(predName),\n\t p = 'predicates['+dl.str(predName)+']',\n\t input = [], args = name+'_arg'+i;\n\t\n\t if (dl.isObject(def)) {\n\t dl.keys(def).forEach(function(k) {\n\t if (k === 'name') return;\n\t var ref = valueRef(config, i, def[k], true);\n\t input.push(dl.str(k)+': '+ref.val);\n\t dependencies(deps, ref);\n\t });\n\t }\n\t\n\t if (predName) {\n\t // append the predicates dependencies to our dependencies\n\t deps.signals.push.apply(deps.signals, pred.signals);\n\t deps.data.push.apply(deps.data, pred.data);\n\t inputs.push(args+\" = {\\n \"+input.join(\",\\n \")+\"\\n }\");\n\t code += \"if (\"+p+\".call(\"+p+\",\"+args+\", db, signals, predicates)) {\" +\n\t \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n\t code += rules[i+1] ? \"\\n } else \" : \" }\";\n\t } else {\n\t code += \"{\" +\n\t \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\"+\n\t \"\\n }\\n\";\n\t }\n\t }\n\t });\n\t\n\t if (inputs.length) code = \"var \" + inputs.join(\",\\n \") + \";\\n \" + code;\n\t return (deps.code = code, deps);\n\t}\n\t\n\tfunction valueRef(config, name, ref, predicateArg) {\n\t if (ref == null) return null;\n\t\n\t if (name==='fill' || name==='stroke') {\n\t if (ref.c) {\n\t return colorRef(config, 'hcl', ref.h, ref.c, ref.l);\n\t } else if (ref.h || ref.s) {\n\t return colorRef(config, 'hsl', ref.h, ref.s, ref.l);\n\t } else if (ref.l || ref.a) {\n\t return colorRef(config, 'lab', ref.l, ref.a, ref.b);\n\t } else if (ref.r || ref.g || ref.b) {\n\t return colorRef(config, 'rgb', ref.r, ref.g, ref.b);\n\t }\n\t }\n\t\n\t // initialize value\n\t var val = null, scale = null,\n\t deps = dependencies(),\n\t sgRef = null, fRef = null, sRef = null, tmpl = {};\n\t\n\t if (ref.template !== undefined) {\n\t val = dl.template.source(ref.template, 'tmpl', tmpl);\n\t dl.keys(tmpl).forEach(function(k) {\n\t var f = dl.field(k),\n\t a = f.shift();\n\t if (a === 'parent' || a === 'group') {\n\t deps.nested.push({\n\t parent: a === 'parent',\n\t group: a === 'group',\n\t level: 1\n\t });\n\t } else if (a === 'datum') {\n\t deps.fields.push(f[0]);\n\t } else {\n\t deps.signals.push(a);\n\t }\n\t });\n\t }\n\t\n\t if (ref.value !== undefined) {\n\t val = dl.str(ref.value);\n\t }\n\t\n\t if (ref.signal !== undefined) {\n\t sgRef = dl.field(ref.signal);\n\t val = 'signals['+sgRef.map(dl.str).join('][')+']';\n\t deps.signals.push(sgRef.shift());\n\t }\n\t\n\t if (ref.field !== undefined) {\n\t ref.field = dl.isString(ref.field) ? {datum: ref.field} : ref.field;\n\t fRef = fieldRef(ref.field);\n\t val = fRef.val;\n\t dependencies(deps, fRef);\n\t }\n\t\n\t if (ref.scale !== undefined) {\n\t sRef = scaleRef(ref.scale);\n\t scale = sRef.val;\n\t dependencies(deps, sRef);\n\t deps.scales.push(ref.scale.name || ref.scale);\n\t\n\t // run through scale function if val specified.\n\t // if no val, scale function is predicate arg.\n\t if (val !== null || ref.band || ref.mult || ref.offset || !predicateArg) {\n\t val = scale + (ref.band ? '.rangeBand()' :\n\t '('+(val !== null ? val : 'item.datum.data')+')');\n\t } else if (predicateArg) {\n\t val = scale;\n\t }\n\t }\n\t\n\t // multiply, offset, return value\n\t val = '(' + (ref.mult?(dl.number(ref.mult)+' * '):'') + val + ')' +\n\t (ref.offset ? ' + ' + dl.number(ref.offset) : '');\n\t\n\t // Collate dependencies\n\t return (deps.val = val, deps);\n\t}\n\t\n\tfunction colorRef(config, type, x, y, z) {\n\t var xx = x ? valueRef(config, '', x) : config.color[type][0],\n\t yy = y ? valueRef(config, '', y) : config.color[type][1],\n\t zz = z ? valueRef(config, '', z) : config.color[type][2],\n\t deps = dependencies();\n\t\n\t [xx, yy, zz].forEach(function(v) {\n\t if (dl.isArray) return;\n\t dependencies(deps, v);\n\t });\n\t\n\t var val = '(this.d3.' + type + '(' + [xx.val, yy.val, zz.val].join(',') + ') + \"\")';\n\t return (deps.val = val, deps);\n\t}\n\t\n\t// {field: {datum: \"foo\"} } -> item.datum.foo\n\t// {field: {group: \"foo\"} } -> group.foo\n\t// {field: {parent: \"foo\"} } -> group.datum.foo\n\tfunction fieldRef(ref) {\n\t if (dl.isString(ref)) {\n\t return {val: dl.field(ref).map(dl.str).join('][')};\n\t }\n\t\n\t // Resolve nesting/parent lookups\n\t var l = ref.level || 1,\n\t nested = (ref.group || ref.parent) && l,\n\t scope = nested ? Array(l).join('group.mark.') : '',\n\t r = fieldRef(ref.datum || ref.group || ref.parent || ref.signal),\n\t val = r.val,\n\t deps = dependencies(null, r);\n\t\n\t if (ref.datum) {\n\t val = 'item.datum['+val+']';\n\t deps.fields.push(ref.datum);\n\t } else if (ref.group) {\n\t val = scope+'group['+val+']';\n\t deps.nested.push({ level: l, group: true });\n\t } else if (ref.parent) {\n\t val = scope+'group.datum['+val+']';\n\t deps.nested.push({ level: l, parent: true });\n\t } else if (ref.signal) {\n\t val = 'signals['+val+']';\n\t deps.signals.push(dl.field(ref.signal)[0]);\n\t deps.reflow = true;\n\t }\n\t\n\t return (deps.val = val, deps);\n\t}\n\t\n\t// {scale: \"x\"}\n\t// {scale: {name: \"x\"}},\n\t// {scale: fieldRef}\n\tfunction scaleRef(ref) {\n\t var scale = null,\n\t fr = null,\n\t deps = dependencies();\n\t\n\t if (dl.isString(ref)) {\n\t scale = dl.str(ref);\n\t } else if (ref.name) {\n\t scale = dl.isString(ref.name) ? dl.str(ref.name) : (fr = fieldRef(ref.name)).val;\n\t } else {\n\t scale = (fr = fieldRef(ref)).val;\n\t }\n\t\n\t scale = '(item.mark._scaleRefs['+scale+'] = 1, group.scale('+scale+'))';\n\t if (ref.invert) scale += '.invert';\n\t\n\t // Mark scale refs as they're dealt with separately in mark._scaleRefs.\n\t if (fr) fr.nested.forEach(function(g) { g.scale = true; });\n\t return fr ? (fr.val = scale, fr) : (deps.val = scale, deps);\n\t}\n\t\n\tmodule.exports = properties;\n\t\n\tfunction valueSchema(type) {\n\t type = dl.isArray(type) ? {\"enum\": type} : {\"type\": type};\n\t var modType = type.type === \"number\" && type.type || \"string\";\n\t var valRef = {\n\t \"type\": \"object\",\n\t \"allOf\": [{\"$ref\": \"#/refs/\" + modType + \"Modifiers\"}, {\n\t \"oneOf\": [{\n\t \"$ref\": \"#/refs/signal\",\n\t \"required\": [\"signal\"]\n\t }, {\n\t \"properties\": {\"value\": type},\n\t \"required\": [\"value\"]\n\t }, {\n\t \"properties\": {\"field\": {\"$ref\": \"#/refs/field\"}},\n\t \"required\": [\"field\"]\n\t }, {\n\t \"properties\": {\"band\": {\"type\": \"boolean\"}},\n\t \"required\": [\"band\"]\n\t }]\n\t }]\n\t };\n\t\n\t if (type.type === \"string\") {\n\t valRef.allOf[1].oneOf.push({\n\t \"properties\": {\"template\": {\"type\": \"string\"}},\n\t \"required\": [\"template\"]\n\t });\n\t }\n\t\n\t return {\n\t \"oneOf\": [{\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"rule\": {\n\t \"type\": \"array\",\n\t \"items\": {\n\t \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n\t }\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"rule\"]\n\t },\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\n\t \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n\t }\n\t },\n\t valRef]\n\t };\n\t}\n\t\n\tproperties.schema = {\n\t \"refs\": {\n\t \"field\": {\n\t \"title\": \"FieldRef\",\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"oneOf\": [\n\t {\"$ref\": \"#/refs/signal\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"datum\": {\"$ref\": \"#/refs/field\"}},\n\t \"required\": [\"datum\"],\n\t \"additionalProperties\": false\n\t },\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"group\": {\"$ref\": \"#/refs/field\"},\n\t \"level\": {\"type\": \"number\"}\n\t },\n\t \"required\": [\"group\"],\n\t \"additionalProperties\": false\n\t },\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"parent\": {\"$ref\": \"#/refs/field\"},\n\t \"level\": {\"type\": \"number\"}\n\t },\n\t \"required\": [\"parent\"],\n\t \"additionalProperties\": false\n\t }\n\t ]\n\t }\n\t ]\n\t },\n\t\n\t \"scale\": {\n\t \"title\": \"ScaleRef\",\n\t \"oneOf\": [\n\t {\"$ref\": \"#/refs/field\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"name\": {\"$ref\": \"#/refs/field\"},\n\t \"invert\": {\"type\": \"boolean\", \"default\": false}\n\t },\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t },\n\t\n\t \"stringModifiers\": {\n\t \"properties\": {\n\t \"scale\": {\"$ref\": \"#/refs/scale\"}\n\t }\n\t },\n\t\n\t \"numberModifiers\": {\n\t \"properties\": {\n\t \"mult\": {\"type\": \"number\"},\n\t \"offset\": {\"type\": \"number\"},\n\t \"scale\": {\"$ref\": \"#/refs/scale\"}\n\t }\n\t },\n\t\n\t \"value\": valueSchema({}, \"value\"),\n\t \"numberValue\": valueSchema(\"number\", \"numberValue\"),\n\t \"stringValue\": valueSchema(\"string\", \"stringValue\"),\n\t \"booleanValue\": valueSchema(\"boolean\", \"booleanValue\"),\n\t \"arrayValue\": valueSchema(\"array\", \"arrayValue\"),\n\t\n\t \"colorValue\": {\n\t \"title\": \"ColorRef\",\n\t \"oneOf\": [{\"$ref\": \"#/refs/stringValue\"}, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"r\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"g\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"b\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"r\", \"g\", \"b\"]\n\t }, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"h\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"s\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"l\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"h\", \"s\", \"l\"]\n\t }, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"l\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"a\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"b\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"l\", \"a\", \"b\"]\n\t }, {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"h\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"c\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"l\": {\"$ref\": \"#/refs/numberValue\"}\n\t },\n\t \"required\": [\"h\", \"c\", \"l\"]\n\t }]\n\t }\n\t },\n\t\n\t \"defs\": {\n\t \"rule\": {\n\t \"anyOf\": [\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"predicate\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"name\": { \"type\": \"string\" }},\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t }\n\t }\n\t },\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"test\": {\"type\": \"string\"}}\n\t }\n\t ]\n\t },\n\t \"propset\": {\n\t \"title\": \"Mark property set\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t // Common Properties\n\t \"x\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"x2\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"xc\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"width\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"y\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"y2\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"yc\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"height\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"opacity\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"fill\": {\"$ref\": \"#/refs/colorValue\"},\n\t \"fillOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"stroke\": {\"$ref\": \"#/refs/colorValue\"},\n\t \"strokeWidth\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"strokeOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"strokeDash\": {\"$ref\": \"#/refs/arrayValue\"},\n\t \"strokeDashOffset\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"cursor\": {\"$ref\": \"#/refs/stringValue\"},\n\t\n\t // Group-mark properties\n\t \"clip\": {\"$ref\": \"#/refs/booleanValue\"},\n\t\n\t // Symbol-mark properties\n\t \"size\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"shape\": valueSchema([\"circle\", \"square\",\n\t \"cross\", \"diamond\", \"triangle-up\", \"triangle-down\"]),\n\t\n\t // Path-mark properties\n\t \"path\": {\"$ref\": \"#/refs/stringValue\"},\n\t\n\t // Arc-mark properties\n\t \"innerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"outerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"startAngle\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"endAngle\": {\"$ref\": \"#/refs/numberValue\"},\n\t\n\t // Area- and line-mark properties\n\t \"interpolate\": valueSchema([\"linear\", \"step-before\", \"step-after\",\n\t \"basis\", \"basis-open\", \"cardinal\", \"cardinal-open\", \"monotone\"]),\n\t \"tension\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"orient\": valueSchema([\"horizontal\", \"vertical\"]),\n\t\n\t // Image-mark properties\n\t \"url\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"align\": valueSchema([\"left\", \"right\", \"center\"]),\n\t \"baseline\": valueSchema([\"top\", \"middle\", \"bottom\", \"alphabetic\"]),\n\t\n\t // Text-mark properties\n\t \"text\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"dx\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"dy\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"radius\":{\"$ref\": \"#/refs/numberValue\"},\n\t \"theta\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"angle\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"font\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"fontSize\": {\"$ref\": \"#/refs/numberValue\"},\n\t \"fontWeight\": {\"$ref\": \"#/refs/stringValue\"},\n\t \"fontStyle\": {\"$ref\": \"#/refs/stringValue\"}\n\t },\n\t\n\t \"additionalProperties\": false\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n\t var d3 = {\n\t version: \"3.5.17\"\n\t };\n\t var d3_arraySlice = [].slice, d3_array = function(list) {\n\t return d3_arraySlice.call(list);\n\t };\n\t var d3_document = this.document;\n\t function d3_documentElement(node) {\n\t return node && (node.ownerDocument || node.document || node).documentElement;\n\t }\n\t function d3_window(node) {\n\t return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n\t }\n\t if (d3_document) {\n\t try {\n\t d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n\t } catch (e) {\n\t d3_array = function(list) {\n\t var i = list.length, array = new Array(i);\n\t while (i--) array[i] = list[i];\n\t return array;\n\t };\n\t }\n\t }\n\t if (!Date.now) Date.now = function() {\n\t return +new Date();\n\t };\n\t if (d3_document) {\n\t try {\n\t d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n\t } catch (error) {\n\t var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n\t d3_element_prototype.setAttribute = function(name, value) {\n\t d3_element_setAttribute.call(this, name, value + \"\");\n\t };\n\t d3_element_prototype.setAttributeNS = function(space, local, value) {\n\t d3_element_setAttributeNS.call(this, space, local, value + \"\");\n\t };\n\t d3_style_prototype.setProperty = function(name, value, priority) {\n\t d3_style_setProperty.call(this, name, value + \"\", priority);\n\t };\n\t }\n\t }\n\t d3.ascending = d3_ascending;\n\t function d3_ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t d3.descending = function(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t };\n\t d3.min = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n\t }\n\t return a;\n\t };\n\t d3.max = function(array, f) {\n\t var i = -1, n = array.length, a, b;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n\t }\n\t return a;\n\t };\n\t d3.extent = function(array, f) {\n\t var i = -1, n = array.length, a, b, c;\n\t if (arguments.length === 1) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = array[i]) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t } else {\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n\t a = c = b;\n\t break;\n\t }\n\t while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t return [ a, c ];\n\t };\n\t function d3_number(x) {\n\t return x === null ? NaN : +x;\n\t }\n\t function d3_numeric(x) {\n\t return !isNaN(x);\n\t }\n\t d3.sum = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n\t }\n\t return s;\n\t };\n\t d3.mean = function(array, f) {\n\t var s = 0, n = array.length, a, i = -1, j = n;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n\t }\n\t if (j) return s / j;\n\t };\n\t d3.quantile = function(values, p) {\n\t var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n\t return e ? v + e * (values[h] - v) : v;\n\t };\n\t d3.median = function(array, f) {\n\t var numbers = [], n = array.length, a, i = -1;\n\t if (arguments.length === 1) {\n\t while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n\t } else {\n\t while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n\t }\n\t if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n\t };\n\t d3.variance = function(array, f) {\n\t var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n\t if (arguments.length === 1) {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(array[i]))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t } else {\n\t while (++i < n) {\n\t if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t if (j > 1) return s / (j - 1);\n\t };\n\t d3.deviation = function() {\n\t var v = d3.variance.apply(this, arguments);\n\t return v ? Math.sqrt(v) : v;\n\t };\n\t function d3_bisector(compare) {\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (arguments.length < 3) lo = 0;\n\t if (arguments.length < 4) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t }\n\t var d3_bisect = d3_bisector(d3_ascending);\n\t d3.bisectLeft = d3_bisect.left;\n\t d3.bisect = d3.bisectRight = d3_bisect.right;\n\t d3.bisector = function(f) {\n\t return d3_bisector(f.length === 1 ? function(d, x) {\n\t return d3_ascending(f(d), x);\n\t } : f);\n\t };\n\t d3.shuffle = function(array, i0, i1) {\n\t if ((m = arguments.length) < 3) {\n\t i1 = array.length;\n\t if (m < 2) i0 = 0;\n\t }\n\t var m = i1 - i0, t, i;\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n\t }\n\t return array;\n\t };\n\t d3.permute = function(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t };\n\t d3.pairs = function(array) {\n\t var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n\t return pairs;\n\t };\n\t d3.transpose = function(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t };\n\t function d3_transposeLength(d) {\n\t return d.length;\n\t }\n\t d3.zip = function() {\n\t return d3.transpose(arguments);\n\t };\n\t d3.keys = function(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t };\n\t d3.values = function(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t };\n\t d3.entries = function(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({\n\t key: key,\n\t value: map[key]\n\t });\n\t return entries;\n\t };\n\t d3.merge = function(arrays) {\n\t var n = arrays.length, m, i = -1, j = 0, merged, array;\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t return merged;\n\t };\n\t var abs = Math.abs;\n\t d3.range = function(start, stop, step) {\n\t if (arguments.length < 3) {\n\t step = 1;\n\t if (arguments.length < 2) {\n\t stop = start;\n\t start = 0;\n\t }\n\t }\n\t if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n\t var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n\t start *= k, stop *= k, step *= k;\n\t if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n\t return range;\n\t };\n\t function d3_range_integerScale(x) {\n\t var k = 1;\n\t while (x * k % 1) k *= 10;\n\t return k;\n\t }\n\t function d3_class(ctor, properties) {\n\t for (var key in properties) {\n\t Object.defineProperty(ctor.prototype, key, {\n\t value: properties[key],\n\t enumerable: false\n\t });\n\t }\n\t }\n\t d3.map = function(object, f) {\n\t var map = new d3_Map();\n\t if (object instanceof d3_Map) {\n\t object.forEach(function(key, value) {\n\t map.set(key, value);\n\t });\n\t } else if (Array.isArray(object)) {\n\t var i = -1, n = object.length, o;\n\t if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n\t } else {\n\t for (var key in object) map.set(key, object[key]);\n\t }\n\t return map;\n\t };\n\t function d3_Map() {\n\t this._ = Object.create(null);\n\t }\n\t var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n\t d3_class(d3_Map, {\n\t has: d3_map_has,\n\t get: function(key) {\n\t return this._[d3_map_escape(key)];\n\t },\n\t set: function(key, value) {\n\t return this._[d3_map_escape(key)] = value;\n\t },\n\t remove: d3_map_remove,\n\t keys: d3_map_keys,\n\t values: function() {\n\t var values = [];\n\t for (var key in this._) values.push(this._[key]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var key in this._) entries.push({\n\t key: d3_map_unescape(key),\n\t value: this._[key]\n\t });\n\t return entries;\n\t },\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n\t }\n\t });\n\t function d3_map_escape(key) {\n\t return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n\t }\n\t function d3_map_unescape(key) {\n\t return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n\t }\n\t function d3_map_has(key) {\n\t return d3_map_escape(key) in this._;\n\t }\n\t function d3_map_remove(key) {\n\t return (key = d3_map_escape(key)) in this._ && delete this._[key];\n\t }\n\t function d3_map_keys() {\n\t var keys = [];\n\t for (var key in this._) keys.push(d3_map_unescape(key));\n\t return keys;\n\t }\n\t function d3_map_size() {\n\t var size = 0;\n\t for (var key in this._) ++size;\n\t return size;\n\t }\n\t function d3_map_empty() {\n\t for (var key in this._) return false;\n\t return true;\n\t }\n\t d3.nest = function() {\n\t var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n\t function map(mapType, array, depth) {\n\t if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n\t var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n\t values.push(object);\n\t } else {\n\t valuesByKey.set(keyValue, [ object ]);\n\t }\n\t }\n\t if (mapType) {\n\t object = mapType();\n\t setter = function(keyValue, values) {\n\t object.set(keyValue, map(mapType, values, depth));\n\t };\n\t } else {\n\t object = {};\n\t setter = function(keyValue, values) {\n\t object[keyValue] = map(mapType, values, depth);\n\t };\n\t }\n\t valuesByKey.forEach(setter);\n\t return object;\n\t }\n\t function entries(map, depth) {\n\t if (depth >= keys.length) return map;\n\t var array = [], sortKey = sortKeys[depth++];\n\t map.forEach(function(key, keyMap) {\n\t array.push({\n\t key: key,\n\t values: entries(keyMap, depth)\n\t });\n\t });\n\t return sortKey ? array.sort(function(a, b) {\n\t return sortKey(a.key, b.key);\n\t }) : array;\n\t }\n\t nest.map = function(array, mapType) {\n\t return map(mapType, array, 0);\n\t };\n\t nest.entries = function(array) {\n\t return entries(map(d3.map, array, 0), 0);\n\t };\n\t nest.key = function(d) {\n\t keys.push(d);\n\t return nest;\n\t };\n\t nest.sortKeys = function(order) {\n\t sortKeys[keys.length - 1] = order;\n\t return nest;\n\t };\n\t nest.sortValues = function(order) {\n\t sortValues = order;\n\t return nest;\n\t };\n\t nest.rollup = function(f) {\n\t rollup = f;\n\t return nest;\n\t };\n\t return nest;\n\t };\n\t d3.set = function(array) {\n\t var set = new d3_Set();\n\t if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n\t return set;\n\t };\n\t function d3_Set() {\n\t this._ = Object.create(null);\n\t }\n\t d3_class(d3_Set, {\n\t has: d3_map_has,\n\t add: function(key) {\n\t this._[d3_map_escape(key += \"\")] = true;\n\t return key;\n\t },\n\t remove: d3_map_remove,\n\t values: d3_map_keys,\n\t size: d3_map_size,\n\t empty: d3_map_empty,\n\t forEach: function(f) {\n\t for (var key in this._) f.call(this, d3_map_unescape(key));\n\t }\n\t });\n\t d3.behavior = {};\n\t function d3_identity(d) {\n\t return d;\n\t }\n\t d3.rebind = function(target, source) {\n\t var i = 1, n = arguments.length, method;\n\t while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n\t return target;\n\t };\n\t function d3_rebind(target, source, method) {\n\t return function() {\n\t var value = method.apply(source, arguments);\n\t return value === source ? target : value;\n\t };\n\t }\n\t function d3_vendorSymbol(object, name) {\n\t if (name in object) return name;\n\t name = name.charAt(0).toUpperCase() + name.slice(1);\n\t for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n\t var prefixName = d3_vendorPrefixes[i] + name;\n\t if (prefixName in object) return prefixName;\n\t }\n\t }\n\t var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n\t function d3_noop() {}\n\t d3.dispatch = function() {\n\t var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t return dispatch;\n\t };\n\t function d3_dispatch() {}\n\t d3_dispatch.prototype.on = function(type, listener) {\n\t var i = type.indexOf(\".\"), name = \"\";\n\t if (i >= 0) {\n\t name = type.slice(i + 1);\n\t type = type.slice(0, i);\n\t }\n\t if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n\t if (arguments.length === 2) {\n\t if (listener == null) for (type in this) {\n\t if (this.hasOwnProperty(type)) this[type].on(name, null);\n\t }\n\t return this;\n\t }\n\t };\n\t function d3_dispatch_event(dispatch) {\n\t var listeners = [], listenerByName = new d3_Map();\n\t function event() {\n\t var z = listeners, i = -1, n = z.length, l;\n\t while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n\t return dispatch;\n\t }\n\t event.on = function(name, listener) {\n\t var l = listenerByName.get(name), i;\n\t if (arguments.length < 2) return l && l.on;\n\t if (l) {\n\t l.on = null;\n\t listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n\t listenerByName.remove(name);\n\t }\n\t if (listener) listeners.push(listenerByName.set(name, {\n\t on: listener\n\t }));\n\t return dispatch;\n\t };\n\t return event;\n\t }\n\t d3.event = null;\n\t function d3_eventPreventDefault() {\n\t d3.event.preventDefault();\n\t }\n\t function d3_eventSource() {\n\t var e = d3.event, s;\n\t while (s = e.sourceEvent) e = s;\n\t return e;\n\t }\n\t function d3_eventDispatch(target) {\n\t var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n\t while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n\t dispatch.of = function(thiz, argumentz) {\n\t return function(e1) {\n\t try {\n\t var e0 = e1.sourceEvent = d3.event;\n\t e1.target = target;\n\t d3.event = e1;\n\t dispatch[e1.type].apply(thiz, argumentz);\n\t } finally {\n\t d3.event = e0;\n\t }\n\t };\n\t };\n\t return dispatch;\n\t }\n\t d3.requote = function(s) {\n\t return s.replace(d3_requote_re, \"\\\\$&\");\n\t };\n\t var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t var d3_subclass = {}.__proto__ ? function(object, prototype) {\n\t object.__proto__ = prototype;\n\t } : function(object, prototype) {\n\t for (var property in prototype) object[property] = prototype[property];\n\t };\n\t function d3_selection(groups) {\n\t d3_subclass(groups, d3_selectionPrototype);\n\t return groups;\n\t }\n\t var d3_select = function(s, n) {\n\t return n.querySelector(s);\n\t }, d3_selectAll = function(s, n) {\n\t return n.querySelectorAll(s);\n\t }, d3_selectMatches = function(n, s) {\n\t var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n\t d3_selectMatches = function(n, s) {\n\t return d3_selectMatcher.call(n, s);\n\t };\n\t return d3_selectMatches(n, s);\n\t };\n\t if (typeof Sizzle === \"function\") {\n\t d3_select = function(s, n) {\n\t return Sizzle(s, n)[0] || null;\n\t };\n\t d3_selectAll = Sizzle;\n\t d3_selectMatches = Sizzle.matchesSelector;\n\t }\n\t d3.selection = function() {\n\t return d3.select(d3_document.documentElement);\n\t };\n\t var d3_selectionPrototype = d3.selection.prototype = [];\n\t d3_selectionPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, group, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n\t if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selector(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_select(selector, this);\n\t };\n\t }\n\t d3_selectionPrototype.selectAll = function(selector) {\n\t var subgroups = [], subgroup, node;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n\t subgroup.parentNode = node;\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_selectorAll(selector) {\n\t return typeof selector === \"function\" ? selector : function() {\n\t return d3_selectAll(selector, this);\n\t };\n\t }\n\t var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n\t var d3_nsPrefix = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: d3_nsXhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t };\n\t d3.ns = {\n\t prefix: d3_nsPrefix,\n\t qualify: function(name) {\n\t var i = name.indexOf(\":\"), prefix = name;\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return d3_nsPrefix.hasOwnProperty(prefix) ? {\n\t space: d3_nsPrefix[prefix],\n\t local: name\n\t } : name;\n\t }\n\t };\n\t d3_selectionPrototype.attr = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node();\n\t name = d3.ns.qualify(name);\n\t return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n\t }\n\t for (value in name) this.each(d3_selection_attr(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_attr(name, value));\n\t };\n\t function d3_selection_attr(name, value) {\n\t name = d3.ns.qualify(name);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrConstant() {\n\t this.setAttribute(name, value);\n\t }\n\t function attrConstantNS() {\n\t this.setAttributeNS(name.space, name.local, value);\n\t }\n\t function attrFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n\t }\n\t function attrFunctionNS() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n\t }\n\t return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n\t }\n\t function d3_collapse(s) {\n\t return s.trim().replace(/\\s+/g, \" \");\n\t }\n\t d3_selectionPrototype.classed = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") {\n\t var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n\t if (value = node.classList) {\n\t while (++i < n) if (!value.contains(name[i])) return false;\n\t } else {\n\t value = node.getAttribute(\"class\");\n\t while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n\t }\n\t return true;\n\t }\n\t for (value in name) this.each(d3_selection_classed(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_classed(name, value));\n\t };\n\t function d3_selection_classedRe(name) {\n\t return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n\t }\n\t function d3_selection_classes(name) {\n\t return (name + \"\").trim().split(/^|\\s+/);\n\t }\n\t function d3_selection_classed(name, value) {\n\t name = d3_selection_classes(name).map(d3_selection_classedName);\n\t var n = name.length;\n\t function classedConstant() {\n\t var i = -1;\n\t while (++i < n) name[i](this, value);\n\t }\n\t function classedFunction() {\n\t var i = -1, x = value.apply(this, arguments);\n\t while (++i < n) name[i](this, x);\n\t }\n\t return typeof value === \"function\" ? classedFunction : classedConstant;\n\t }\n\t function d3_selection_classedName(name) {\n\t var re = d3_selection_classedRe(name);\n\t return function(node, value) {\n\t if (c = node.classList) return value ? c.add(name) : c.remove(name);\n\t var c = node.getAttribute(\"class\") || \"\";\n\t if (value) {\n\t re.lastIndex = 0;\n\t if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n\t } else {\n\t node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n\t }\n\t };\n\t }\n\t d3_selectionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n\t return this;\n\t }\n\t if (n < 2) {\n\t var node = this.node();\n\t return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n\t }\n\t priority = \"\";\n\t }\n\t return this.each(d3_selection_style(name, value, priority));\n\t };\n\t function d3_selection_style(name, value, priority) {\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleConstant() {\n\t this.style.setProperty(name, value, priority);\n\t }\n\t function styleFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n\t }\n\t return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n\t }\n\t d3_selectionPrototype.property = function(name, value) {\n\t if (arguments.length < 2) {\n\t if (typeof name === \"string\") return this.node()[name];\n\t for (value in name) this.each(d3_selection_property(value, name[value]));\n\t return this;\n\t }\n\t return this.each(d3_selection_property(name, value));\n\t };\n\t function d3_selection_property(name, value) {\n\t function propertyNull() {\n\t delete this[name];\n\t }\n\t function propertyConstant() {\n\t this[name] = value;\n\t }\n\t function propertyFunction() {\n\t var x = value.apply(this, arguments);\n\t if (x == null) delete this[name]; else this[name] = x;\n\t }\n\t return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n\t }\n\t d3_selectionPrototype.text = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.textContent = \"\";\n\t } : function() {\n\t this.textContent = value;\n\t }) : this.node().textContent;\n\t };\n\t d3_selectionPrototype.html = function(value) {\n\t return arguments.length ? this.each(typeof value === \"function\" ? function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t } : value == null ? function() {\n\t this.innerHTML = \"\";\n\t } : function() {\n\t this.innerHTML = value;\n\t }) : this.node().innerHTML;\n\t };\n\t d3_selectionPrototype.append = function(name) {\n\t name = d3_selection_creator(name);\n\t return this.select(function() {\n\t return this.appendChild(name.apply(this, arguments));\n\t });\n\t };\n\t function d3_selection_creator(name) {\n\t function create() {\n\t var document = this.ownerDocument, namespace = this.namespaceURI;\n\t return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n\t }\n\t function createNS() {\n\t return this.ownerDocument.createElementNS(name.space, name.local);\n\t }\n\t return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n\t }\n\t d3_selectionPrototype.insert = function(name, before) {\n\t name = d3_selection_creator(name);\n\t before = d3_selection_selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n\t });\n\t };\n\t d3_selectionPrototype.remove = function() {\n\t return this.each(d3_selectionRemove);\n\t };\n\t function d3_selectionRemove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t }\n\t d3_selectionPrototype.data = function(value, key) {\n\t var i = -1, n = this.length, group, node;\n\t if (!arguments.length) {\n\t value = new Array(n = (group = this[0]).length);\n\t while (++i < n) {\n\t if (node = group[i]) {\n\t value[i] = node.__data__;\n\t }\n\t }\n\t return value;\n\t }\n\t function bind(group, groupData) {\n\t var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n\t if (key) {\n\t var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n\t for (i = -1; ++i < n; ) {\n\t if (node = group[i]) {\n\t if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n\t exitNodes[i] = node;\n\t } else {\n\t nodeByKeyValue.set(keyValue, node);\n\t }\n\t keyValues[i] = keyValue;\n\t }\n\t }\n\t for (i = -1; ++i < m; ) {\n\t if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t } else if (node !== true) {\n\t updateNodes[i] = node;\n\t node.__data__ = nodeData;\n\t }\n\t nodeByKeyValue.set(keyValue, true);\n\t }\n\t for (i = -1; ++i < n; ) {\n\t if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t } else {\n\t for (i = -1; ++i < n0; ) {\n\t node = group[i];\n\t nodeData = groupData[i];\n\t if (node) {\n\t node.__data__ = nodeData;\n\t updateNodes[i] = node;\n\t } else {\n\t enterNodes[i] = d3_selection_dataNode(nodeData);\n\t }\n\t }\n\t for (;i < m; ++i) {\n\t enterNodes[i] = d3_selection_dataNode(groupData[i]);\n\t }\n\t for (;i < n; ++i) {\n\t exitNodes[i] = group[i];\n\t }\n\t }\n\t enterNodes.update = updateNodes;\n\t enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n\t enter.push(enterNodes);\n\t update.push(updateNodes);\n\t exit.push(exitNodes);\n\t }\n\t var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n\t if (typeof value === \"function\") {\n\t while (++i < n) {\n\t bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n\t }\n\t } else {\n\t while (++i < n) {\n\t bind(group = this[i], value);\n\t }\n\t }\n\t update.enter = function() {\n\t return enter;\n\t };\n\t update.exit = function() {\n\t return exit;\n\t };\n\t return update;\n\t };\n\t function d3_selection_dataNode(data) {\n\t return {\n\t __data__: data\n\t };\n\t }\n\t d3_selectionPrototype.datum = function(value) {\n\t return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n\t };\n\t d3_selectionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = (group = this[j]).parentNode;\n\t for (var i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t function d3_selection_filter(selector) {\n\t return function() {\n\t return d3_selectMatches(this, selector);\n\t };\n\t }\n\t d3_selectionPrototype.order = function() {\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t return this;\n\t };\n\t d3_selectionPrototype.sort = function(comparator) {\n\t comparator = d3_selection_sortComparator.apply(this, arguments);\n\t for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n\t return this.order();\n\t };\n\t function d3_selection_sortComparator(comparator) {\n\t if (!arguments.length) comparator = d3_ascending;\n\t return function(a, b) {\n\t return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n\t };\n\t }\n\t d3_selectionPrototype.each = function(callback) {\n\t return d3_selection_each(this, function(node, i, j) {\n\t callback.call(node, node.__data__, i, j);\n\t });\n\t };\n\t function d3_selection_each(groups, callback) {\n\t for (var j = 0, m = groups.length; j < m; j++) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n\t if (node = group[i]) callback(node, i, j);\n\t }\n\t }\n\t return groups;\n\t }\n\t d3_selectionPrototype.call = function(callback) {\n\t var args = d3_array(arguments);\n\t callback.apply(args[0] = this, args);\n\t return this;\n\t };\n\t d3_selectionPrototype.empty = function() {\n\t return !this.node();\n\t };\n\t d3_selectionPrototype.node = function() {\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t return null;\n\t };\n\t d3_selectionPrototype.size = function() {\n\t var n = 0;\n\t d3_selection_each(this, function() {\n\t ++n;\n\t });\n\t return n;\n\t };\n\t function d3_selection_enter(selection) {\n\t d3_subclass(selection, d3_selection_enterPrototype);\n\t return selection;\n\t }\n\t var d3_selection_enterPrototype = [];\n\t d3.selection.enter = d3_selection_enter;\n\t d3.selection.enter.prototype = d3_selection_enterPrototype;\n\t d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n\t d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n\t d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n\t d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n\t d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n\t d3_selection_enterPrototype.select = function(selector) {\n\t var subgroups = [], subgroup, subnode, upgroup, group, node;\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t upgroup = (group = this[j]).update;\n\t subgroups.push(subgroup = []);\n\t subgroup.parentNode = group.parentNode;\n\t for (var i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n\t subnode.__data__ = node.__data__;\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_selection(subgroups);\n\t };\n\t d3_selection_enterPrototype.insert = function(name, before) {\n\t if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n\t return d3_selectionPrototype.insert.call(this, name, before);\n\t };\n\t function d3_selection_enterInsertBefore(enter) {\n\t var i0, j0;\n\t return function(d, i, j) {\n\t var group = enter[j].update, n = group.length, node;\n\t if (j != j0) j0 = j, i0 = 0;\n\t if (i >= i0) i0 = i + 1;\n\t while (!(node = group[i0]) && ++i0 < n) ;\n\t return node;\n\t };\n\t }\n\t d3.select = function(node) {\n\t var group;\n\t if (typeof node === \"string\") {\n\t group = [ d3_select(node, d3_document) ];\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = [ node ];\n\t group.parentNode = d3_documentElement(node);\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3.selectAll = function(nodes) {\n\t var group;\n\t if (typeof nodes === \"string\") {\n\t group = d3_array(d3_selectAll(nodes, d3_document));\n\t group.parentNode = d3_document.documentElement;\n\t } else {\n\t group = d3_array(nodes);\n\t group.parentNode = null;\n\t }\n\t return d3_selection([ group ]);\n\t };\n\t d3_selectionPrototype.on = function(type, listener, capture) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof type !== \"string\") {\n\t if (n < 2) listener = false;\n\t for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n\t return this;\n\t }\n\t if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n\t capture = false;\n\t }\n\t return this.each(d3_selection_on(type, listener, capture));\n\t };\n\t function d3_selection_on(type, listener, capture) {\n\t var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n\t if (i > 0) type = type.slice(0, i);\n\t var filter = d3_selection_onFilters.get(type);\n\t if (filter) type = filter, wrap = d3_selection_onFilter;\n\t function onRemove() {\n\t var l = this[name];\n\t if (l) {\n\t this.removeEventListener(type, l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t function onAdd() {\n\t var l = wrap(listener, d3_array(arguments));\n\t onRemove.call(this);\n\t this.addEventListener(type, this[name] = l, l.$ = capture);\n\t l._ = listener;\n\t }\n\t function removeAll() {\n\t var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n\t for (var name in this) {\n\t if (match = name.match(re)) {\n\t var l = this[name];\n\t this.removeEventListener(match[1], l, l.$);\n\t delete this[name];\n\t }\n\t }\n\t }\n\t return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n\t }\n\t var d3_selection_onFilters = d3.map({\n\t mouseenter: \"mouseover\",\n\t mouseleave: \"mouseout\"\n\t });\n\t if (d3_document) {\n\t d3_selection_onFilters.forEach(function(k) {\n\t if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n\t });\n\t }\n\t function d3_selection_onListener(listener, argumentz) {\n\t return function(e) {\n\t var o = d3.event;\n\t d3.event = e;\n\t argumentz[0] = this.__data__;\n\t try {\n\t listener.apply(this, argumentz);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t }\n\t function d3_selection_onFilter(listener, argumentz) {\n\t var l = d3_selection_onListener(listener, argumentz);\n\t return function(e) {\n\t var target = this, related = e.relatedTarget;\n\t if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n\t l.call(target, e);\n\t }\n\t };\n\t }\n\t var d3_event_dragSelect, d3_event_dragId = 0;\n\t function d3_event_dragSuppress(node) {\n\t var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n\t if (d3_event_dragSelect == null) {\n\t d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n\t }\n\t if (d3_event_dragSelect) {\n\t var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n\t style[d3_event_dragSelect] = \"none\";\n\t }\n\t return function(suppressClick) {\n\t w.on(name, null);\n\t if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n\t if (suppressClick) {\n\t var off = function() {\n\t w.on(click, null);\n\t };\n\t w.on(click, function() {\n\t d3_eventPreventDefault();\n\t off();\n\t }, true);\n\t setTimeout(off, 0);\n\t }\n\t };\n\t }\n\t d3.mouse = function(container) {\n\t return d3_mousePoint(container, d3_eventSource());\n\t };\n\t var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n\t function d3_mousePoint(container, e) {\n\t if (e.changedTouches) e = e.changedTouches[0];\n\t var svg = container.ownerSVGElement || container;\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t if (d3_mouse_bug44083 < 0) {\n\t var window = d3_window(container);\n\t if (window.scrollX || window.scrollY) {\n\t svg = d3.select(\"body\").append(\"svg\").style({\n\t position: \"absolute\",\n\t top: 0,\n\t left: 0,\n\t margin: 0,\n\t padding: 0,\n\t border: \"none\"\n\t }, \"important\");\n\t var ctm = svg[0][0].getScreenCTM();\n\t d3_mouse_bug44083 = !(ctm.f || ctm.e);\n\t svg.remove();\n\t }\n\t }\n\t if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n\t point.y = e.clientY;\n\t point = point.matrixTransform(container.getScreenCTM().inverse());\n\t return [ point.x, point.y ];\n\t }\n\t var rect = container.getBoundingClientRect();\n\t return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n\t }\n\t d3.touch = function(container, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n\t if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return d3_mousePoint(container, touch);\n\t }\n\t }\n\t };\n\t d3.behavior.drag = function() {\n\t var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n\t function drag() {\n\t this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n\t }\n\t function dragstart(id, position, subject, move, end) {\n\t return function() {\n\t var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n\t if (origin) {\n\t dragOffset = origin.apply(that, arguments);\n\t dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n\t } else {\n\t dragOffset = [ 0, 0 ];\n\t }\n\t dispatch({\n\t type: \"dragstart\"\n\t });\n\t function moved() {\n\t var position1 = position(parent, dragId), dx, dy;\n\t if (!position1) return;\n\t dx = position1[0] - position0[0];\n\t dy = position1[1] - position0[1];\n\t dragged |= dx | dy;\n\t position0 = position1;\n\t dispatch({\n\t type: \"drag\",\n\t x: position1[0] + dragOffset[0],\n\t y: position1[1] + dragOffset[1],\n\t dx: dx,\n\t dy: dy\n\t });\n\t }\n\t function ended() {\n\t if (!position(parent, dragId)) return;\n\t dragSubject.on(move + dragName, null).on(end + dragName, null);\n\t dragRestore(dragged);\n\t dispatch({\n\t type: \"dragend\"\n\t });\n\t }\n\t };\n\t }\n\t drag.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return drag;\n\t };\n\t return d3.rebind(drag, event, \"on\");\n\t };\n\t function d3_behavior_dragTouchId() {\n\t return d3.event.changedTouches[0].identifier;\n\t }\n\t d3.touches = function(container, touches) {\n\t if (arguments.length < 2) touches = d3_eventSource().touches;\n\t return touches ? d3_array(touches).map(function(touch) {\n\t var point = d3_mousePoint(container, touch);\n\t point.identifier = touch.identifier;\n\t return point;\n\t }) : [];\n\t };\n\t var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n\t function d3_sgn(x) {\n\t return x > 0 ? 1 : x < 0 ? -1 : 0;\n\t }\n\t function d3_cross2d(a, b, c) {\n\t return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n\t }\n\t function d3_acos(x) {\n\t return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n\t }\n\t function d3_asin(x) {\n\t return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n\t }\n\t function d3_sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t }\n\t function d3_cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t }\n\t function d3_tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t }\n\t function d3_haversin(x) {\n\t return (x = Math.sin(x / 2)) * x;\n\t }\n\t var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n\t d3.interpolateZoom = function(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n\t if (d2 < ε2) {\n\t S = Math.log(w1 / w0) / ρ;\n\t i = function(t) {\n\t return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n\t };\n\t } else {\n\t var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / ρ;\n\t i = function(t) {\n\t var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n\t return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n\t };\n\t }\n\t i.duration = S * 1e3;\n\t return i;\n\t };\n\t d3.behavior.zoom = function() {\n\t var view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n\t if (!d3_behavior_zoomWheel) {\n\t d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n\t }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n\t return d3.event.wheelDelta;\n\t }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n\t return -d3.event.detail;\n\t }, \"MozMousePixelScroll\");\n\t }\n\t function zoom(g) {\n\t g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n\t }\n\t zoom.event = function(g) {\n\t g.each(function() {\n\t var dispatch = event.of(this, arguments), view1 = view;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.zoom\", function() {\n\t view = this.__chart__ || {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t zoomstarted(dispatch);\n\t }).tween(\"zoom:zoom\", function() {\n\t var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n\t return function(t) {\n\t var l = i(t), k = dx / l[2];\n\t this.__chart__ = view = {\n\t x: cx - l[0] * k,\n\t y: cy - l[1] * k,\n\t k: k\n\t };\n\t zoomed(dispatch);\n\t };\n\t }).each(\"interrupt.zoom\", function() {\n\t zoomended(dispatch);\n\t }).each(\"end.zoom\", function() {\n\t zoomended(dispatch);\n\t });\n\t } else {\n\t this.__chart__ = view;\n\t zoomstarted(dispatch);\n\t zoomed(dispatch);\n\t zoomended(dispatch);\n\t }\n\t });\n\t };\n\t zoom.translate = function(_) {\n\t if (!arguments.length) return [ view.x, view.y ];\n\t view = {\n\t x: +_[0],\n\t y: +_[1],\n\t k: view.k\n\t };\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scale = function(_) {\n\t if (!arguments.length) return view.k;\n\t view = {\n\t x: view.x,\n\t y: view.y,\n\t k: null\n\t };\n\t scaleTo(+_);\n\t rescale();\n\t return zoom;\n\t };\n\t zoom.scaleExtent = function(_) {\n\t if (!arguments.length) return scaleExtent;\n\t scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.center = function(_) {\n\t if (!arguments.length) return center;\n\t center = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _ && [ +_[0], +_[1] ];\n\t return zoom;\n\t };\n\t zoom.duration = function(_) {\n\t if (!arguments.length) return duration;\n\t duration = +_;\n\t return zoom;\n\t };\n\t zoom.x = function(z) {\n\t if (!arguments.length) return x1;\n\t x1 = z;\n\t x0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t zoom.y = function(z) {\n\t if (!arguments.length) return y1;\n\t y1 = z;\n\t y0 = z.copy();\n\t view = {\n\t x: 0,\n\t y: 0,\n\t k: 1\n\t };\n\t return zoom;\n\t };\n\t function location(p) {\n\t return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n\t }\n\t function point(l) {\n\t return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n\t }\n\t function scaleTo(s) {\n\t view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n\t }\n\t function translateTo(p, l) {\n\t l = point(l);\n\t view.x += p[0] - l[0];\n\t view.y += p[1] - l[1];\n\t }\n\t function zoomTo(that, p, l, k) {\n\t that.__chart__ = {\n\t x: view.x,\n\t y: view.y,\n\t k: view.k\n\t };\n\t scaleTo(Math.pow(2, k));\n\t translateTo(center0 = p, l);\n\t that = d3.select(that);\n\t if (duration > 0) that = that.transition().duration(duration);\n\t that.call(zoom.event);\n\t }\n\t function rescale() {\n\t if (x1) x1.domain(x0.range().map(function(x) {\n\t return (x - view.x) / view.k;\n\t }).map(x0.invert));\n\t if (y1) y1.domain(y0.range().map(function(y) {\n\t return (y - view.y) / view.k;\n\t }).map(y0.invert));\n\t }\n\t function zoomstarted(dispatch) {\n\t if (!zooming++) dispatch({\n\t type: \"zoomstart\"\n\t });\n\t }\n\t function zoomed(dispatch) {\n\t rescale();\n\t dispatch({\n\t type: \"zoom\",\n\t scale: view.k,\n\t translate: [ view.x, view.y ]\n\t });\n\t }\n\t function zoomended(dispatch) {\n\t if (!--zooming) dispatch({\n\t type: \"zoomend\"\n\t }), center0 = null;\n\t }\n\t function mousedowned() {\n\t var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n\t d3_selection_interrupt.call(that);\n\t zoomstarted(dispatch);\n\t function moved() {\n\t dragged = 1;\n\t translateTo(d3.mouse(that), location0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t subject.on(mousemove, null).on(mouseup, null);\n\t dragRestore(dragged);\n\t zoomended(dispatch);\n\t }\n\t }\n\t function touchstarted() {\n\t var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n\t started();\n\t zoomstarted(dispatch);\n\t subject.on(mousedown, null).on(touchstart, started);\n\t function relocate() {\n\t var touches = d3.touches(that);\n\t scale0 = view.k;\n\t touches.forEach(function(t) {\n\t if (t.identifier in locations0) locations0[t.identifier] = location(t);\n\t });\n\t return touches;\n\t }\n\t function started() {\n\t var target = d3.event.target;\n\t d3.select(target).on(touchmove, moved).on(touchend, ended);\n\t targets.push(target);\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t locations0[changed[i].identifier] = null;\n\t }\n\t var touches = relocate(), now = Date.now();\n\t if (touches.length === 1) {\n\t if (now - touchtime < 500) {\n\t var p = touches[0];\n\t zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n\t d3_eventPreventDefault();\n\t }\n\t touchtime = now;\n\t } else if (touches.length > 1) {\n\t var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n\t distance0 = dx * dx + dy * dy;\n\t }\n\t }\n\t function moved() {\n\t var touches = d3.touches(that), p0, l0, p1, l1;\n\t d3_selection_interrupt.call(that);\n\t for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n\t p1 = touches[i];\n\t if (l1 = locations0[p1.identifier]) {\n\t if (l0) break;\n\t p0 = p1, l0 = l1;\n\t }\n\t }\n\t if (l1) {\n\t var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n\t p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n\t l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n\t scaleTo(scale1 * scale0);\n\t }\n\t touchtime = null;\n\t translateTo(p0, l0);\n\t zoomed(dispatch);\n\t }\n\t function ended() {\n\t if (d3.event.touches.length) {\n\t var changed = d3.event.changedTouches;\n\t for (var i = 0, n = changed.length; i < n; ++i) {\n\t delete locations0[changed[i].identifier];\n\t }\n\t for (var identifier in locations0) {\n\t return void relocate();\n\t }\n\t }\n\t d3.selectAll(targets).on(zoomName, null);\n\t subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n\t dragRestore();\n\t zoomended(dispatch);\n\t }\n\t }\n\t function mousewheeled() {\n\t var dispatch = event.of(this, arguments);\n\t if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n\t translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n\t mousewheelTimer = setTimeout(function() {\n\t mousewheelTimer = null;\n\t zoomended(dispatch);\n\t }, 50);\n\t d3_eventPreventDefault();\n\t scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n\t translateTo(center0, translate0);\n\t zoomed(dispatch);\n\t }\n\t function dblclicked() {\n\t var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n\t zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n\t }\n\t return d3.rebind(zoom, event, \"on\");\n\t };\n\t var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n\t d3.color = d3_color;\n\t function d3_color() {}\n\t d3_color.prototype.toString = function() {\n\t return this.rgb() + \"\";\n\t };\n\t d3.hsl = d3_hsl;\n\t function d3_hsl(h, s, l) {\n\t return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n\t }\n\t var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n\t d3_hslPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, this.l / k);\n\t };\n\t d3_hslPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_hsl(this.h, this.s, k * this.l);\n\t };\n\t d3_hslPrototype.rgb = function() {\n\t return d3_hsl_rgb(this.h, this.s, this.l);\n\t };\n\t function d3_hsl_rgb(h, s, l) {\n\t var m1, m2;\n\t h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n\t s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n\t l = l < 0 ? 0 : l > 1 ? 1 : l;\n\t m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n\t m1 = 2 * l - m2;\n\t function v(h) {\n\t if (h > 360) h -= 360; else if (h < 0) h += 360;\n\t if (h < 60) return m1 + (m2 - m1) * h / 60;\n\t if (h < 180) return m2;\n\t if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n\t return m1;\n\t }\n\t function vv(h) {\n\t return Math.round(v(h) * 255);\n\t }\n\t return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n\t }\n\t d3.hcl = d3_hcl;\n\t function d3_hcl(h, c, l) {\n\t return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n\t }\n\t var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n\t d3_hclPrototype.brighter = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.darker = function(k) {\n\t return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n\t };\n\t d3_hclPrototype.rgb = function() {\n\t return d3_hcl_lab(this.h, this.c, this.l).rgb();\n\t };\n\t function d3_hcl_lab(h, c, l) {\n\t if (isNaN(h)) h = 0;\n\t if (isNaN(c)) c = 0;\n\t return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n\t }\n\t d3.lab = d3_lab;\n\t function d3_lab(l, a, b) {\n\t return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n\t }\n\t var d3_lab_K = 18;\n\t var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n\t var d3_labPrototype = d3_lab.prototype = new d3_color();\n\t d3_labPrototype.brighter = function(k) {\n\t return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.darker = function(k) {\n\t return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n\t };\n\t d3_labPrototype.rgb = function() {\n\t return d3_lab_rgb(this.l, this.a, this.b);\n\t };\n\t function d3_lab_rgb(l, a, b) {\n\t var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n\t x = d3_lab_xyz(x) * d3_lab_X;\n\t y = d3_lab_xyz(y) * d3_lab_Y;\n\t z = d3_lab_xyz(z) * d3_lab_Z;\n\t return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n\t }\n\t function d3_lab_hcl(l, a, b) {\n\t return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n\t }\n\t function d3_lab_xyz(x) {\n\t return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n\t }\n\t function d3_xyz_lab(x) {\n\t return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n\t }\n\t function d3_xyz_rgb(r) {\n\t return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n\t }\n\t d3.rgb = d3_rgb;\n\t function d3_rgb(r, g, b) {\n\t return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n\t }\n\t function d3_rgbNumber(value) {\n\t return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n\t }\n\t function d3_rgbString(value) {\n\t return d3_rgbNumber(value) + \"\";\n\t }\n\t var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n\t d3_rgbPrototype.brighter = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t var r = this.r, g = this.g, b = this.b, i = 30;\n\t if (!r && !g && !b) return new d3_rgb(i, i, i);\n\t if (r && r < i) r = i;\n\t if (g && g < i) g = i;\n\t if (b && b < i) b = i;\n\t return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n\t };\n\t d3_rgbPrototype.darker = function(k) {\n\t k = Math.pow(.7, arguments.length ? k : 1);\n\t return new d3_rgb(k * this.r, k * this.g, k * this.b);\n\t };\n\t d3_rgbPrototype.hsl = function() {\n\t return d3_rgb_hsl(this.r, this.g, this.b);\n\t };\n\t d3_rgbPrototype.toString = function() {\n\t return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n\t };\n\t function d3_rgb_hex(v) {\n\t return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n\t }\n\t function d3_rgb_parse(format, rgb, hsl) {\n\t var r = 0, g = 0, b = 0, m1, m2, color;\n\t m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n\t if (m1) {\n\t m2 = m1[2].split(\",\");\n\t switch (m1[1]) {\n\t case \"hsl\":\n\t {\n\t return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n\t }\n\t\n\t case \"rgb\":\n\t {\n\t return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n\t }\n\t }\n\t }\n\t if (color = d3_rgb_names.get(format)) {\n\t return rgb(color.r, color.g, color.b);\n\t }\n\t if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n\t if (format.length === 4) {\n\t r = (color & 3840) >> 4;\n\t r = r >> 4 | r;\n\t g = color & 240;\n\t g = g >> 4 | g;\n\t b = color & 15;\n\t b = b << 4 | b;\n\t } else if (format.length === 7) {\n\t r = (color & 16711680) >> 16;\n\t g = (color & 65280) >> 8;\n\t b = color & 255;\n\t }\n\t }\n\t return rgb(r, g, b);\n\t }\n\t function d3_rgb_hsl(r, g, b) {\n\t var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n\t if (d) {\n\t s = l < .5 ? d / (max + min) : d / (2 - max - min);\n\t if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n\t h *= 60;\n\t } else {\n\t h = NaN;\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new d3_hsl(h, s, l);\n\t }\n\t function d3_rgb_lab(r, g, b) {\n\t r = d3_rgb_xyz(r);\n\t g = d3_rgb_xyz(g);\n\t b = d3_rgb_xyz(b);\n\t var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n\t return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n\t }\n\t function d3_rgb_xyz(r) {\n\t return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n\t }\n\t function d3_rgb_parseNumber(c) {\n\t var f = parseFloat(c);\n\t return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n\t }\n\t var d3_rgb_names = d3.map({\n\t aliceblue: 15792383,\n\t antiquewhite: 16444375,\n\t aqua: 65535,\n\t aquamarine: 8388564,\n\t azure: 15794175,\n\t beige: 16119260,\n\t bisque: 16770244,\n\t black: 0,\n\t blanchedalmond: 16772045,\n\t blue: 255,\n\t blueviolet: 9055202,\n\t brown: 10824234,\n\t burlywood: 14596231,\n\t cadetblue: 6266528,\n\t chartreuse: 8388352,\n\t chocolate: 13789470,\n\t coral: 16744272,\n\t cornflowerblue: 6591981,\n\t cornsilk: 16775388,\n\t crimson: 14423100,\n\t cyan: 65535,\n\t darkblue: 139,\n\t darkcyan: 35723,\n\t darkgoldenrod: 12092939,\n\t darkgray: 11119017,\n\t darkgreen: 25600,\n\t darkgrey: 11119017,\n\t darkkhaki: 12433259,\n\t darkmagenta: 9109643,\n\t darkolivegreen: 5597999,\n\t darkorange: 16747520,\n\t darkorchid: 10040012,\n\t darkred: 9109504,\n\t darksalmon: 15308410,\n\t darkseagreen: 9419919,\n\t darkslateblue: 4734347,\n\t darkslategray: 3100495,\n\t darkslategrey: 3100495,\n\t darkturquoise: 52945,\n\t darkviolet: 9699539,\n\t deeppink: 16716947,\n\t deepskyblue: 49151,\n\t dimgray: 6908265,\n\t dimgrey: 6908265,\n\t dodgerblue: 2003199,\n\t firebrick: 11674146,\n\t floralwhite: 16775920,\n\t forestgreen: 2263842,\n\t fuchsia: 16711935,\n\t gainsboro: 14474460,\n\t ghostwhite: 16316671,\n\t gold: 16766720,\n\t goldenrod: 14329120,\n\t gray: 8421504,\n\t green: 32768,\n\t greenyellow: 11403055,\n\t grey: 8421504,\n\t honeydew: 15794160,\n\t hotpink: 16738740,\n\t indianred: 13458524,\n\t indigo: 4915330,\n\t ivory: 16777200,\n\t khaki: 15787660,\n\t lavender: 15132410,\n\t lavenderblush: 16773365,\n\t lawngreen: 8190976,\n\t lemonchiffon: 16775885,\n\t lightblue: 11393254,\n\t lightcoral: 15761536,\n\t lightcyan: 14745599,\n\t lightgoldenrodyellow: 16448210,\n\t lightgray: 13882323,\n\t lightgreen: 9498256,\n\t lightgrey: 13882323,\n\t lightpink: 16758465,\n\t lightsalmon: 16752762,\n\t lightseagreen: 2142890,\n\t lightskyblue: 8900346,\n\t lightslategray: 7833753,\n\t lightslategrey: 7833753,\n\t lightsteelblue: 11584734,\n\t lightyellow: 16777184,\n\t lime: 65280,\n\t limegreen: 3329330,\n\t linen: 16445670,\n\t magenta: 16711935,\n\t maroon: 8388608,\n\t mediumaquamarine: 6737322,\n\t mediumblue: 205,\n\t mediumorchid: 12211667,\n\t mediumpurple: 9662683,\n\t mediumseagreen: 3978097,\n\t mediumslateblue: 8087790,\n\t mediumspringgreen: 64154,\n\t mediumturquoise: 4772300,\n\t mediumvioletred: 13047173,\n\t midnightblue: 1644912,\n\t mintcream: 16121850,\n\t mistyrose: 16770273,\n\t moccasin: 16770229,\n\t navajowhite: 16768685,\n\t navy: 128,\n\t oldlace: 16643558,\n\t olive: 8421376,\n\t olivedrab: 7048739,\n\t orange: 16753920,\n\t orangered: 16729344,\n\t orchid: 14315734,\n\t palegoldenrod: 15657130,\n\t palegreen: 10025880,\n\t paleturquoise: 11529966,\n\t palevioletred: 14381203,\n\t papayawhip: 16773077,\n\t peachpuff: 16767673,\n\t peru: 13468991,\n\t pink: 16761035,\n\t plum: 14524637,\n\t powderblue: 11591910,\n\t purple: 8388736,\n\t rebeccapurple: 6697881,\n\t red: 16711680,\n\t rosybrown: 12357519,\n\t royalblue: 4286945,\n\t saddlebrown: 9127187,\n\t salmon: 16416882,\n\t sandybrown: 16032864,\n\t seagreen: 3050327,\n\t seashell: 16774638,\n\t sienna: 10506797,\n\t silver: 12632256,\n\t skyblue: 8900331,\n\t slateblue: 6970061,\n\t slategray: 7372944,\n\t slategrey: 7372944,\n\t snow: 16775930,\n\t springgreen: 65407,\n\t steelblue: 4620980,\n\t tan: 13808780,\n\t teal: 32896,\n\t thistle: 14204888,\n\t tomato: 16737095,\n\t turquoise: 4251856,\n\t violet: 15631086,\n\t wheat: 16113331,\n\t white: 16777215,\n\t whitesmoke: 16119285,\n\t yellow: 16776960,\n\t yellowgreen: 10145074\n\t });\n\t d3_rgb_names.forEach(function(key, value) {\n\t d3_rgb_names.set(key, d3_rgbNumber(value));\n\t });\n\t function d3_functor(v) {\n\t return typeof v === \"function\" ? v : function() {\n\t return v;\n\t };\n\t }\n\t d3.functor = d3_functor;\n\t d3.xhr = d3_xhrType(d3_identity);\n\t function d3_xhrType(response) {\n\t return function(url, mimeType, callback) {\n\t if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n\t mimeType = null;\n\t return d3_xhr(url, mimeType, response, callback);\n\t };\n\t }\n\t function d3_xhr(url, mimeType, response, callback) {\n\t var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n\t if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\t \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n\t request.readyState > 3 && respond();\n\t };\n\t function respond() {\n\t var status = request.status, result;\n\t if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n\t try {\n\t result = response.call(xhr, request);\n\t } catch (e) {\n\t dispatch.error.call(xhr, e);\n\t return;\n\t }\n\t dispatch.load.call(xhr, result);\n\t } else {\n\t dispatch.error.call(xhr, request);\n\t }\n\t }\n\t request.onprogress = function(event) {\n\t var o = d3.event;\n\t d3.event = event;\n\t try {\n\t dispatch.progress.call(xhr, request);\n\t } finally {\n\t d3.event = o;\n\t }\n\t };\n\t xhr.header = function(name, value) {\n\t name = (name + \"\").toLowerCase();\n\t if (arguments.length < 2) return headers[name];\n\t if (value == null) delete headers[name]; else headers[name] = value + \"\";\n\t return xhr;\n\t };\n\t xhr.mimeType = function(value) {\n\t if (!arguments.length) return mimeType;\n\t mimeType = value == null ? null : value + \"\";\n\t return xhr;\n\t };\n\t xhr.responseType = function(value) {\n\t if (!arguments.length) return responseType;\n\t responseType = value;\n\t return xhr;\n\t };\n\t xhr.response = function(value) {\n\t response = value;\n\t return xhr;\n\t };\n\t [ \"get\", \"post\" ].forEach(function(method) {\n\t xhr[method] = function() {\n\t return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n\t };\n\t });\n\t xhr.send = function(method, data, callback) {\n\t if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n\t request.open(method, url, true);\n\t if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n\t if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n\t if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n\t if (responseType != null) request.responseType = responseType;\n\t if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n\t callback(null, request);\n\t });\n\t dispatch.beforesend.call(xhr, request);\n\t request.send(data == null ? null : data);\n\t return xhr;\n\t };\n\t xhr.abort = function() {\n\t request.abort();\n\t return xhr;\n\t };\n\t d3.rebind(xhr, dispatch, \"on\");\n\t return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n\t }\n\t function d3_xhr_fixCallback(callback) {\n\t return callback.length === 1 ? function(error, request) {\n\t callback(error == null ? request : null);\n\t } : callback;\n\t }\n\t function d3_xhrHasResponse(request) {\n\t var type = request.responseType;\n\t return type && type !== \"text\" ? request.response : request.responseText;\n\t }\n\t d3.dsv = function(delimiter, mimeType) {\n\t var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n\t function dsv(url, row, callback) {\n\t if (arguments.length < 3) callback = row, row = null;\n\t var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n\t xhr.row = function(_) {\n\t return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n\t };\n\t return xhr;\n\t }\n\t function response(request) {\n\t return dsv.parse(request.responseText);\n\t }\n\t function typedResponse(f) {\n\t return function(request) {\n\t return dsv.parse(request.responseText, f);\n\t };\n\t }\n\t dsv.parse = function(text, f) {\n\t var o;\n\t return dsv.parseRows(text, function(row, i) {\n\t if (o) return o(row, i - 1);\n\t var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n\t return JSON.stringify(name) + \": d[\" + i + \"]\";\n\t }).join(\",\") + \"}\");\n\t o = f ? function(row, i) {\n\t return f(a(row), i);\n\t } : a;\n\t });\n\t };\n\t dsv.parseRows = function(text, f) {\n\t var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n\t function token() {\n\t if (I >= N) return EOF;\n\t if (eol) return eol = false, EOL;\n\t var j = I;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t var c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n\t }\n\t while (I < N) {\n\t var c = text.charCodeAt(I++), k = 1;\n\t if (c === 10) eol = true; else if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(I) === 10) ++I, ++k;\n\t } else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t return text.slice(j);\n\t }\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t return rows;\n\t };\n\t dsv.format = function(rows) {\n\t if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n\t var fieldSet = new d3_Set(), fields = [];\n\t rows.forEach(function(row) {\n\t for (var field in row) {\n\t if (!fieldSet.has(field)) {\n\t fields.push(fieldSet.add(field));\n\t }\n\t }\n\t });\n\t return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n\t return fields.map(function(field) {\n\t return formatValue(row[field]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t };\n\t dsv.formatRows = function(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t };\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t function formatValue(text) {\n\t return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n\t }\n\t return dsv;\n\t };\n\t d3.csv = d3.dsv(\",\", \"text/csv\");\n\t d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n\t var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n\t setTimeout(callback, 17);\n\t };\n\t d3.timer = function() {\n\t d3_timer.apply(this, arguments);\n\t };\n\t function d3_timer(callback, delay, then) {\n\t var n = arguments.length;\n\t if (n < 2) delay = 0;\n\t if (n < 3) then = Date.now();\n\t var time = then + delay, timer = {\n\t c: callback,\n\t t: time,\n\t n: null\n\t };\n\t if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n\t d3_timer_queueTail = timer;\n\t if (!d3_timer_interval) {\n\t d3_timer_timeout = clearTimeout(d3_timer_timeout);\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t return timer;\n\t }\n\t function d3_timer_step() {\n\t var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n\t if (delay > 24) {\n\t if (isFinite(delay)) {\n\t clearTimeout(d3_timer_timeout);\n\t d3_timer_timeout = setTimeout(d3_timer_step, delay);\n\t }\n\t d3_timer_interval = 0;\n\t } else {\n\t d3_timer_interval = 1;\n\t d3_timer_frame(d3_timer_step);\n\t }\n\t }\n\t d3.timer.flush = function() {\n\t d3_timer_mark();\n\t d3_timer_sweep();\n\t };\n\t function d3_timer_mark() {\n\t var now = Date.now(), timer = d3_timer_queueHead;\n\t while (timer) {\n\t if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n\t timer = timer.n;\n\t }\n\t return now;\n\t }\n\t function d3_timer_sweep() {\n\t var t0, t1 = d3_timer_queueHead, time = Infinity;\n\t while (t1) {\n\t if (t1.c) {\n\t if (t1.t < time) time = t1.t;\n\t t1 = (t0 = t1).n;\n\t } else {\n\t t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n\t }\n\t }\n\t d3_timer_queueTail = t0;\n\t return time;\n\t }\n\t function d3_format_precision(x, p) {\n\t return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n\t }\n\t d3.round = function(x, n) {\n\t return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n\t };\n\t var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n\t d3.formatPrefix = function(value, precision) {\n\t var i = 0;\n\t if (value = +value) {\n\t if (value < 0) value *= -1;\n\t if (precision) value = d3.round(value, d3_format_precision(value, precision));\n\t i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n\t i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n\t }\n\t return d3_formatPrefixes[8 + i / 3];\n\t };\n\t function d3_formatPrefix(d, i) {\n\t var k = Math.pow(10, abs(8 - i) * 3);\n\t return {\n\t scale: i > 8 ? function(d) {\n\t return d / k;\n\t } : function(d) {\n\t return d * k;\n\t },\n\t symbol: d\n\t };\n\t }\n\t function d3_locale_numberFormat(locale) {\n\t var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n\t var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = locale_grouping[j = (j + 1) % locale_grouping.length];\n\t }\n\t return t.reverse().join(locale_thousands);\n\t } : d3_identity;\n\t return function(specifier) {\n\t var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n\t if (precision) precision = +precision.substring(1);\n\t if (zfill || fill === \"0\" && align === \"=\") {\n\t zfill = fill = \"0\";\n\t align = \"=\";\n\t }\n\t switch (type) {\n\t case \"n\":\n\t comma = true;\n\t type = \"g\";\n\t break;\n\t\n\t case \"%\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"f\";\n\t break;\n\t\n\t case \"p\":\n\t scale = 100;\n\t suffix = \"%\";\n\t type = \"r\";\n\t break;\n\t\n\t case \"b\":\n\t case \"o\":\n\t case \"x\":\n\t case \"X\":\n\t if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\t\n\t case \"c\":\n\t exponent = false;\n\t\n\t case \"d\":\n\t integer = true;\n\t precision = 0;\n\t break;\n\t\n\t case \"s\":\n\t scale = -1;\n\t type = \"r\";\n\t break;\n\t }\n\t if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n\t if (type == \"r\" && !precision) type = \"g\";\n\t if (precision != null) {\n\t if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n\t }\n\t type = d3_format_types.get(type) || d3_format_typeDefault;\n\t var zcomma = zfill && comma;\n\t return function(value) {\n\t var fullSuffix = suffix;\n\t if (integer && value % 1) return \"\";\n\t var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n\t if (scale < 0) {\n\t var unit = d3.formatPrefix(value, precision);\n\t value = unit.scale(value);\n\t fullSuffix = unit.symbol + suffix;\n\t } else {\n\t value *= scale;\n\t }\n\t value = type(value, precision);\n\t var i = value.lastIndexOf(\".\"), before, after;\n\t if (i < 0) {\n\t var j = exponent ? value.lastIndexOf(\"e\") : -1;\n\t if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n\t } else {\n\t before = value.substring(0, i);\n\t after = locale_decimal + value.substring(i + 1);\n\t }\n\t if (!zfill && comma) before = formatGroup(before, Infinity);\n\t var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n\t if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n\t negative += prefix;\n\t value = before + after;\n\t return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n\t };\n\t };\n\t }\n\t var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n\t var d3_format_types = d3.map({\n\t b: function(x) {\n\t return x.toString(2);\n\t },\n\t c: function(x) {\n\t return String.fromCharCode(x);\n\t },\n\t o: function(x) {\n\t return x.toString(8);\n\t },\n\t x: function(x) {\n\t return x.toString(16);\n\t },\n\t X: function(x) {\n\t return x.toString(16).toUpperCase();\n\t },\n\t g: function(x, p) {\n\t return x.toPrecision(p);\n\t },\n\t e: function(x, p) {\n\t return x.toExponential(p);\n\t },\n\t f: function(x, p) {\n\t return x.toFixed(p);\n\t },\n\t r: function(x, p) {\n\t return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n\t }\n\t });\n\t function d3_format_typeDefault(x) {\n\t return x + \"\";\n\t }\n\t var d3_time = d3.time = {}, d3_date = Date;\n\t function d3_date_utc() {\n\t this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n\t }\n\t d3_date_utc.prototype = {\n\t getDate: function() {\n\t return this._.getUTCDate();\n\t },\n\t getDay: function() {\n\t return this._.getUTCDay();\n\t },\n\t getFullYear: function() {\n\t return this._.getUTCFullYear();\n\t },\n\t getHours: function() {\n\t return this._.getUTCHours();\n\t },\n\t getMilliseconds: function() {\n\t return this._.getUTCMilliseconds();\n\t },\n\t getMinutes: function() {\n\t return this._.getUTCMinutes();\n\t },\n\t getMonth: function() {\n\t return this._.getUTCMonth();\n\t },\n\t getSeconds: function() {\n\t return this._.getUTCSeconds();\n\t },\n\t getTime: function() {\n\t return this._.getTime();\n\t },\n\t getTimezoneOffset: function() {\n\t return 0;\n\t },\n\t valueOf: function() {\n\t return this._.valueOf();\n\t },\n\t setDate: function() {\n\t d3_time_prototype.setUTCDate.apply(this._, arguments);\n\t },\n\t setDay: function() {\n\t d3_time_prototype.setUTCDay.apply(this._, arguments);\n\t },\n\t setFullYear: function() {\n\t d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n\t },\n\t setHours: function() {\n\t d3_time_prototype.setUTCHours.apply(this._, arguments);\n\t },\n\t setMilliseconds: function() {\n\t d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n\t },\n\t setMinutes: function() {\n\t d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n\t },\n\t setMonth: function() {\n\t d3_time_prototype.setUTCMonth.apply(this._, arguments);\n\t },\n\t setSeconds: function() {\n\t d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n\t },\n\t setTime: function() {\n\t d3_time_prototype.setTime.apply(this._, arguments);\n\t }\n\t };\n\t var d3_time_prototype = Date.prototype;\n\t function d3_time_interval(local, step, number) {\n\t function round(date) {\n\t var d0 = local(date), d1 = offset(d0, 1);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t }\n\t function ceil(date) {\n\t step(date = local(new d3_date(date - 1)), 1);\n\t return date;\n\t }\n\t function offset(date, k) {\n\t step(date = new d3_date(+date), k);\n\t return date;\n\t }\n\t function range(t0, t1, dt) {\n\t var time = ceil(t0), times = [];\n\t if (dt > 1) {\n\t while (time < t1) {\n\t if (!(number(time) % dt)) times.push(new Date(+time));\n\t step(time, 1);\n\t }\n\t } else {\n\t while (time < t1) times.push(new Date(+time)), step(time, 1);\n\t }\n\t return times;\n\t }\n\t function range_utc(t0, t1, dt) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = t0;\n\t return range(utc, t1, dt);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t local.floor = local;\n\t local.round = round;\n\t local.ceil = ceil;\n\t local.offset = offset;\n\t local.range = range;\n\t var utc = local.utc = d3_time_interval_utc(local);\n\t utc.floor = utc;\n\t utc.round = d3_time_interval_utc(round);\n\t utc.ceil = d3_time_interval_utc(ceil);\n\t utc.offset = d3_time_interval_utc(offset);\n\t utc.range = range_utc;\n\t return local;\n\t }\n\t function d3_time_interval_utc(method) {\n\t return function(date, k) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date_utc();\n\t utc._ = date;\n\t return method(utc, k)._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t }\n\t d3_time.year = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setMonth(0, 1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setFullYear(date.getFullYear() + offset);\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t d3_time.years = d3_time.year.range;\n\t d3_time.years.utc = d3_time.year.utc.range;\n\t d3_time.day = d3_time_interval(function(date) {\n\t var day = new d3_date(2e3, 0);\n\t day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n\t return day;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + offset);\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t d3_time.days = d3_time.day.range;\n\t d3_time.days.utc = d3_time.day.utc.range;\n\t d3_time.dayOfYear = function(date) {\n\t var year = d3_time.year(date);\n\t return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n\t };\n\t [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n\t i = 7 - i;\n\t var interval = d3_time[day] = d3_time_interval(function(date) {\n\t (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n\t return date;\n\t }, function(date, offset) {\n\t date.setDate(date.getDate() + Math.floor(offset) * 7);\n\t }, function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n\t });\n\t d3_time[day + \"s\"] = interval.range;\n\t d3_time[day + \"s\"].utc = interval.utc.range;\n\t d3_time[day + \"OfYear\"] = function(date) {\n\t var day = d3_time.year(date).getDay();\n\t return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n\t };\n\t });\n\t d3_time.week = d3_time.sunday;\n\t d3_time.weeks = d3_time.sunday.range;\n\t d3_time.weeks.utc = d3_time.sunday.utc.range;\n\t d3_time.weekOfYear = d3_time.sundayOfYear;\n\t function d3_locale_timeFormat(locale) {\n\t var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n\t function d3_time_format(template) {\n\t var n = template.length;\n\t function format(date) {\n\t var string = [], i = -1, j = 0, c, p, f;\n\t while (++i < n) {\n\t if (template.charCodeAt(i) === 37) {\n\t string.push(template.slice(j, i));\n\t if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n\t if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t string.push(template.slice(j, i));\n\t return string.join(\"\");\n\t }\n\t format.parse = function(string) {\n\t var d = {\n\t y: 1900,\n\t m: 0,\n\t d: 1,\n\t H: 0,\n\t M: 0,\n\t S: 0,\n\t L: 0,\n\t Z: null\n\t }, i = d3_time_parse(d, template, string, 0);\n\t if (i != string.length) return null;\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n\t if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t date.setFullYear(d.y, 0, 1);\n\t date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n\t } else date.setFullYear(d.y, d.m, d.d);\n\t date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n\t return localZ ? date._ : date;\n\t };\n\t format.toString = function() {\n\t return template;\n\t };\n\t return format;\n\t }\n\t function d3_time_parse(date, template, string, j) {\n\t var c, p, t, i = 0, n = template.length, m = string.length;\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = template.charCodeAt(i++);\n\t if (c === 37) {\n\t t = template.charAt(i++);\n\t p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n\t if (!p || (j = p(date, string, j)) < 0) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t return j;\n\t }\n\t d3_time_format.utc = function(template) {\n\t var local = d3_time_format(template);\n\t function format(date) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var utc = new d3_date();\n\t utc._ = date;\n\t return local(utc);\n\t } finally {\n\t d3_date = Date;\n\t }\n\t }\n\t format.parse = function(string) {\n\t try {\n\t d3_date = d3_date_utc;\n\t var date = local.parse(string);\n\t return date && date._;\n\t } finally {\n\t d3_date = Date;\n\t }\n\t };\n\t format.toString = local.toString;\n\t return format;\n\t };\n\t d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n\t var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n\t locale_periods.forEach(function(p, i) {\n\t d3_time_periodLookup.set(p.toLowerCase(), i);\n\t });\n\t var d3_time_formats = {\n\t a: function(d) {\n\t return locale_shortDays[d.getDay()];\n\t },\n\t A: function(d) {\n\t return locale_days[d.getDay()];\n\t },\n\t b: function(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t },\n\t B: function(d) {\n\t return locale_months[d.getMonth()];\n\t },\n\t c: d3_time_format(locale_dateTime),\n\t d: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t e: function(d, p) {\n\t return d3_time_formatPad(d.getDate(), p, 2);\n\t },\n\t H: function(d, p) {\n\t return d3_time_formatPad(d.getHours(), p, 2);\n\t },\n\t I: function(d, p) {\n\t return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n\t },\n\t j: function(d, p) {\n\t return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n\t },\n\t L: function(d, p) {\n\t return d3_time_formatPad(d.getMilliseconds(), p, 3);\n\t },\n\t m: function(d, p) {\n\t return d3_time_formatPad(d.getMonth() + 1, p, 2);\n\t },\n\t M: function(d, p) {\n\t return d3_time_formatPad(d.getMinutes(), p, 2);\n\t },\n\t p: function(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t },\n\t S: function(d, p) {\n\t return d3_time_formatPad(d.getSeconds(), p, 2);\n\t },\n\t U: function(d, p) {\n\t return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n\t },\n\t w: function(d) {\n\t return d.getDay();\n\t },\n\t W: function(d, p) {\n\t return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n\t },\n\t x: d3_time_format(locale_date),\n\t X: d3_time_format(locale_time),\n\t y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n\t },\n\t Y: function(d, p) {\n\t return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n\t },\n\t Z: d3_time_zone,\n\t \"%\": function() {\n\t return \"%\";\n\t }\n\t };\n\t var d3_time_parsers = {\n\t a: d3_time_parseWeekdayAbbrev,\n\t A: d3_time_parseWeekday,\n\t b: d3_time_parseMonthAbbrev,\n\t B: d3_time_parseMonth,\n\t c: d3_time_parseLocaleFull,\n\t d: d3_time_parseDay,\n\t e: d3_time_parseDay,\n\t H: d3_time_parseHour24,\n\t I: d3_time_parseHour24,\n\t j: d3_time_parseDayOfYear,\n\t L: d3_time_parseMilliseconds,\n\t m: d3_time_parseMonthNumber,\n\t M: d3_time_parseMinutes,\n\t p: d3_time_parseAmPm,\n\t S: d3_time_parseSeconds,\n\t U: d3_time_parseWeekNumberSunday,\n\t w: d3_time_parseWeekdayNumber,\n\t W: d3_time_parseWeekNumberMonday,\n\t x: d3_time_parseLocaleDate,\n\t X: d3_time_parseLocaleTime,\n\t y: d3_time_parseYear,\n\t Y: d3_time_parseFullYear,\n\t Z: d3_time_parseZone,\n\t \"%\": d3_time_parseLiteralPercent\n\t };\n\t function d3_time_parseWeekdayAbbrev(date, string, i) {\n\t d3_time_dayAbbrevRe.lastIndex = 0;\n\t var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekday(date, string, i) {\n\t d3_time_dayRe.lastIndex = 0;\n\t var n = d3_time_dayRe.exec(string.slice(i));\n\t return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonthAbbrev(date, string, i) {\n\t d3_time_monthAbbrevRe.lastIndex = 0;\n\t var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMonth(date, string, i) {\n\t d3_time_monthRe.lastIndex = 0;\n\t var n = d3_time_monthRe.exec(string.slice(i));\n\t return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseLocaleFull(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleDate(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n\t }\n\t function d3_time_parseLocaleTime(date, string, i) {\n\t return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n\t }\n\t function d3_time_parseAmPm(date, string, i) {\n\t var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n\t return n == null ? -1 : (date.p = n, i);\n\t }\n\t return d3_time_format;\n\t }\n\t var d3_time_formatPads = {\n\t \"-\": \"\",\n\t _: \" \",\n\t \"0\": \"0\"\n\t }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n\t function d3_time_formatPad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t function d3_time_formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n\t }\n\t function d3_time_formatLookup(names) {\n\t var map = new d3_Map(), i = -1, n = names.length;\n\t while (++i < n) map.set(names[i].toLowerCase(), i);\n\t return map;\n\t }\n\t function d3_time_parseWeekdayNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n\t return n ? (date.w = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberSunday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.U = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseWeekNumberMonday(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i));\n\t return n ? (date.W = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseFullYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n\t return n ? (date.y = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n\t }\n\t function d3_time_parseZone(date, string, i) {\n\t return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n\t i + 5) : -1;\n\t }\n\t function d3_time_expandYear(d) {\n\t return d + (d > 68 ? 1900 : 2e3);\n\t }\n\t function d3_time_parseMonthNumber(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDay(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.d = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseDayOfYear(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.j = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseHour24(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.H = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMinutes(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.M = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseSeconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n\t return n ? (date.S = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_parseMilliseconds(date, string, i) {\n\t d3_time_numberRe.lastIndex = 0;\n\t var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n\t return n ? (date.L = +n[0], i + n[0].length) : -1;\n\t }\n\t function d3_time_zone(d) {\n\t var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n\t return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n\t }\n\t function d3_time_parseLiteralPercent(date, string, i) {\n\t d3_time_percentRe.lastIndex = 0;\n\t var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t function d3_time_formatMulti(formats) {\n\t var n = formats.length, i = -1;\n\t while (++i < n) formats[i][0] = this(formats[i][0]);\n\t return function(date) {\n\t var i = 0, f = formats[i];\n\t while (!f[1](date)) f = formats[++i];\n\t return f[0](date);\n\t };\n\t }\n\t d3.locale = function(locale) {\n\t return {\n\t numberFormat: d3_locale_numberFormat(locale),\n\t timeFormat: d3_locale_timeFormat(locale)\n\t };\n\t };\n\t var d3_locale_enUS = d3.locale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [ 3 ],\n\t currency: [ \"$\", \"\" ],\n\t dateTime: \"%a %b %e %X %Y\",\n\t date: \"%m/%d/%Y\",\n\t time: \"%H:%M:%S\",\n\t periods: [ \"AM\", \"PM\" ],\n\t days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n\t shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n\t });\n\t d3.format = d3_locale_enUS.numberFormat;\n\t d3.geo = {};\n\t function d3_adder() {}\n\t d3_adder.prototype = {\n\t s: 0,\n\t t: 0,\n\t add: function(y) {\n\t d3_adderSum(y, this.t, d3_adderTemp);\n\t d3_adderSum(d3_adderTemp.s, this.s, this);\n\t if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n\t },\n\t reset: function() {\n\t this.s = this.t = 0;\n\t },\n\t valueOf: function() {\n\t return this.s;\n\t }\n\t };\n\t var d3_adderTemp = new d3_adder();\n\t function d3_adderSum(a, b, o) {\n\t var x = o.s = a + b, bv = x - a, av = x - bv;\n\t o.t = a - av + (b - bv);\n\t }\n\t d3.geo.stream = function(object, listener) {\n\t if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n\t d3_geo_streamObjectType[object.type](object, listener);\n\t } else {\n\t d3_geo_streamGeometry(object, listener);\n\t }\n\t };\n\t function d3_geo_streamGeometry(geometry, listener) {\n\t if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n\t d3_geo_streamGeometryType[geometry.type](geometry, listener);\n\t }\n\t }\n\t var d3_geo_streamObjectType = {\n\t Feature: function(feature, listener) {\n\t d3_geo_streamGeometry(feature.geometry, listener);\n\t },\n\t FeatureCollection: function(object, listener) {\n\t var features = object.features, i = -1, n = features.length;\n\t while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n\t }\n\t };\n\t var d3_geo_streamGeometryType = {\n\t Sphere: function(object, listener) {\n\t listener.sphere();\n\t },\n\t Point: function(object, listener) {\n\t object = object.coordinates;\n\t listener.point(object[0], object[1], object[2]);\n\t },\n\t MultiPoint: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n\t },\n\t LineString: function(object, listener) {\n\t d3_geo_streamLine(object.coordinates, listener, 0);\n\t },\n\t MultiLineString: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n\t },\n\t Polygon: function(object, listener) {\n\t d3_geo_streamPolygon(object.coordinates, listener);\n\t },\n\t MultiPolygon: function(object, listener) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n\t },\n\t GeometryCollection: function(object, listener) {\n\t var geometries = object.geometries, i = -1, n = geometries.length;\n\t while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n\t }\n\t };\n\t function d3_geo_streamLine(coordinates, listener, closed) {\n\t var i = -1, n = coordinates.length - closed, coordinate;\n\t listener.lineStart();\n\t while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n\t listener.lineEnd();\n\t }\n\t function d3_geo_streamPolygon(coordinates, listener) {\n\t var i = -1, n = coordinates.length;\n\t listener.polygonStart();\n\t while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n\t listener.polygonEnd();\n\t }\n\t d3.geo.area = function(object) {\n\t d3_geo_areaSum = 0;\n\t d3.geo.stream(object, d3_geo_area);\n\t return d3_geo_areaSum;\n\t };\n\t var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n\t var d3_geo_area = {\n\t sphere: function() {\n\t d3_geo_areaSum += 4 * π;\n\t },\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_areaRingSum.reset();\n\t d3_geo_area.lineStart = d3_geo_areaRingStart;\n\t },\n\t polygonEnd: function() {\n\t var area = 2 * d3_geo_areaRingSum;\n\t d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n\t d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n\t }\n\t };\n\t function d3_geo_areaRingStart() {\n\t var λ00, φ00, λ0, cosφ0, sinφ0;\n\t d3_geo_area.point = function(λ, φ) {\n\t d3_geo_area.point = nextPoint;\n\t λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n\t sinφ0 = Math.sin(φ);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t φ = φ * d3_radians / 2 + π / 4;\n\t var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n\t d3_geo_areaRingSum.add(Math.atan2(v, u));\n\t λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n\t }\n\t d3_geo_area.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t };\n\t }\n\t function d3_geo_cartesian(spherical) {\n\t var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n\t return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n\t }\n\t function d3_geo_cartesianDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t }\n\t function d3_geo_cartesianCross(a, b) {\n\t return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n\t }\n\t function d3_geo_cartesianAdd(a, b) {\n\t a[0] += b[0];\n\t a[1] += b[1];\n\t a[2] += b[2];\n\t }\n\t function d3_geo_cartesianScale(vector, k) {\n\t return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n\t }\n\t function d3_geo_cartesianNormalize(d) {\n\t var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n\t d[0] /= l;\n\t d[1] /= l;\n\t d[2] /= l;\n\t }\n\t function d3_geo_spherical(cartesian) {\n\t return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n\t }\n\t function d3_geo_sphericalEqual(a, b) {\n\t return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n\t }\n\t d3.geo.bounds = function() {\n\t var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n\t var bound = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t bound.point = ringPoint;\n\t bound.lineStart = ringStart;\n\t bound.lineEnd = ringEnd;\n\t dλSum = 0;\n\t d3_geo_area.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t d3_geo_area.polygonEnd();\n\t bound.point = point;\n\t bound.lineStart = lineStart;\n\t bound.lineEnd = lineEnd;\n\t if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n\t range[0] = λ0, range[1] = λ1;\n\t }\n\t };\n\t function point(λ, φ) {\n\t ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t function linePoint(λ, φ) {\n\t var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n\t if (p0) {\n\t var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n\t d3_geo_cartesianNormalize(inflection);\n\t inflection = d3_geo_spherical(inflection);\n\t var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n\t if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = inflection[1] * d3_degrees;\n\t if (φi > φ1) φ1 = φi;\n\t } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n\t var φi = -inflection[1] * d3_degrees;\n\t if (φi < φ0) φ0 = φi;\n\t } else {\n\t if (φ < φ0) φ0 = φ;\n\t if (φ > φ1) φ1 = φ;\n\t }\n\t if (antimeridian) {\n\t if (λ < λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t } else {\n\t if (λ1 >= λ0) {\n\t if (λ < λ0) λ0 = λ;\n\t if (λ > λ1) λ1 = λ;\n\t } else {\n\t if (λ > λ_) {\n\t if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n\t } else {\n\t if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n\t }\n\t }\n\t }\n\t } else {\n\t point(λ, φ);\n\t }\n\t p0 = p, λ_ = λ;\n\t }\n\t function lineStart() {\n\t bound.point = linePoint;\n\t }\n\t function lineEnd() {\n\t range[0] = λ0, range[1] = λ1;\n\t bound.point = point;\n\t p0 = null;\n\t }\n\t function ringPoint(λ, φ) {\n\t if (p0) {\n\t var dλ = λ - λ_;\n\t dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n\t } else λ__ = λ, φ__ = φ;\n\t d3_geo_area.point(λ, φ);\n\t linePoint(λ, φ);\n\t }\n\t function ringStart() {\n\t d3_geo_area.lineStart();\n\t }\n\t function ringEnd() {\n\t ringPoint(λ__, φ__);\n\t d3_geo_area.lineEnd();\n\t if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n\t range[0] = λ0, range[1] = λ1;\n\t p0 = null;\n\t }\n\t function angle(λ0, λ1) {\n\t return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n\t }\n\t function compareRanges(a, b) {\n\t return a[0] - b[0];\n\t }\n\t function withinRange(x, range) {\n\t return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n\t }\n\t return function(feature) {\n\t φ1 = λ1 = -(λ0 = φ0 = Infinity);\n\t ranges = [];\n\t d3.geo.stream(feature, bound);\n\t var n = ranges.length;\n\t if (n) {\n\t ranges.sort(compareRanges);\n\t for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n\t b = ranges[i];\n\t if (withinRange(b[0], a) || withinRange(b[1], a)) {\n\t if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n\t if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n\t } else {\n\t merged.push(a = b);\n\t }\n\t }\n\t var best = -Infinity, dλ;\n\t for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n\t b = merged[i];\n\t if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n\t }\n\t }\n\t ranges = range = null;\n\t return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n\t };\n\t }();\n\t d3.geo.centroid = function(object) {\n\t d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, d3_geo_centroid);\n\t var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n\t if (m < ε2) {\n\t x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n\t if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n\t m = x * x + y * y + z * z;\n\t if (m < ε2) return [ NaN, NaN ];\n\t }\n\t return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n\t };\n\t var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n\t var d3_geo_centroid = {\n\t sphere: d3_noop,\n\t point: d3_geo_centroidPoint,\n\t lineStart: d3_geo_centroidLineStart,\n\t lineEnd: d3_geo_centroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n\t }\n\t };\n\t function d3_geo_centroidPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n\t }\n\t function d3_geo_centroidPointXYZ(x, y, z) {\n\t ++d3_geo_centroidW0;\n\t d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n\t d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n\t d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n\t }\n\t function d3_geo_centroidLineStart() {\n\t var x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroid.point = nextPoint;\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_centroidLineEnd() {\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t }\n\t function d3_geo_centroidRingStart() {\n\t var λ00, φ00, x0, y0, z0;\n\t d3_geo_centroid.point = function(λ, φ) {\n\t λ00 = λ, φ00 = φ;\n\t d3_geo_centroid.point = nextPoint;\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians);\n\t x0 = cosφ * Math.cos(λ);\n\t y0 = cosφ * Math.sin(λ);\n\t z0 = Math.sin(φ);\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t };\n\t d3_geo_centroid.lineEnd = function() {\n\t nextPoint(λ00, φ00);\n\t d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n\t d3_geo_centroid.point = d3_geo_centroidPoint;\n\t };\n\t function nextPoint(λ, φ) {\n\t λ *= d3_radians;\n\t var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n\t d3_geo_centroidX2 += v * cx;\n\t d3_geo_centroidY2 += v * cy;\n\t d3_geo_centroidZ2 += v * cz;\n\t d3_geo_centroidW1 += w;\n\t d3_geo_centroidX1 += w * (x0 + (x0 = x));\n\t d3_geo_centroidY1 += w * (y0 + (y0 = y));\n\t d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n\t d3_geo_centroidPointXYZ(x0, y0, z0);\n\t }\n\t }\n\t function d3_geo_compose(a, b) {\n\t function compose(x, y) {\n\t return x = a(x, y), b(x[0], x[1]);\n\t }\n\t if (a.invert && b.invert) compose.invert = function(x, y) {\n\t return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n\t };\n\t return compose;\n\t }\n\t function d3_true() {\n\t return true;\n\t }\n\t function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n\t var subject = [], clip = [];\n\t segments.forEach(function(segment) {\n\t if ((n = segment.length - 1) <= 0) return;\n\t var n, p0 = segment[0], p1 = segment[n];\n\t if (d3_geo_sphericalEqual(p0, p1)) {\n\t listener.lineStart();\n\t for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n\t listener.lineEnd();\n\t return;\n\t }\n\t var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n\t b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n\t a.o = b;\n\t subject.push(a);\n\t clip.push(b);\n\t });\n\t clip.sort(compare);\n\t d3_geo_clipPolygonLinkCircular(subject);\n\t d3_geo_clipPolygonLinkCircular(clip);\n\t if (!subject.length) return;\n\t for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n\t clip[i].e = entry = !entry;\n\t }\n\t var start = subject[0], points, point;\n\t while (1) {\n\t var current = start, isSubject = true;\n\t while (current.v) if ((current = current.n) === start) return;\n\t points = current.z;\n\t listener.lineStart();\n\t do {\n\t current.v = current.o.v = true;\n\t if (current.e) {\n\t if (isSubject) {\n\t for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.n.x, 1, listener);\n\t }\n\t current = current.n;\n\t } else {\n\t if (isSubject) {\n\t points = current.p.z;\n\t for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.p.x, -1, listener);\n\t }\n\t current = current.p;\n\t }\n\t current = current.o;\n\t points = current.z;\n\t isSubject = !isSubject;\n\t } while (!current.v);\n\t listener.lineEnd();\n\t }\n\t }\n\t function d3_geo_clipPolygonLinkCircular(array) {\n\t if (!(n = array.length)) return;\n\t var n, i = 0, a = array[0], b;\n\t while (++i < n) {\n\t a.n = b = array[i];\n\t b.p = a;\n\t a = b;\n\t }\n\t a.n = b = array[0];\n\t b.p = a;\n\t }\n\t function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n\t this.x = point;\n\t this.z = points;\n\t this.o = other;\n\t this.e = entry;\n\t this.v = false;\n\t this.n = this.p = null;\n\t }\n\t function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n\t return function(rotate, listener) {\n\t var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t clip.point = pointRing;\n\t clip.lineStart = ringStart;\n\t clip.lineEnd = ringEnd;\n\t segments = [];\n\t polygon = [];\n\t },\n\t polygonEnd: function() {\n\t clip.point = point;\n\t clip.lineStart = lineStart;\n\t clip.lineEnd = lineEnd;\n\t segments = d3.merge(segments);\n\t var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n\t if (segments.length) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n\t } else if (clipStartInside) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n\t segments = polygon = null;\n\t },\n\t sphere: function() {\n\t listener.polygonStart();\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t listener.polygonEnd();\n\t }\n\t };\n\t function point(λ, φ) {\n\t var point = rotate(λ, φ);\n\t if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n\t }\n\t function pointLine(λ, φ) {\n\t var point = rotate(λ, φ);\n\t line.point(point[0], point[1]);\n\t }\n\t function lineStart() {\n\t clip.point = pointLine;\n\t line.lineStart();\n\t }\n\t function lineEnd() {\n\t clip.point = point;\n\t line.lineEnd();\n\t }\n\t var segments;\n\t var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n\t function pointRing(λ, φ) {\n\t ring.push([ λ, φ ]);\n\t var point = rotate(λ, φ);\n\t ringListener.point(point[0], point[1]);\n\t }\n\t function ringStart() {\n\t ringListener.lineStart();\n\t ring = [];\n\t }\n\t function ringEnd() {\n\t pointRing(ring[0][0], ring[0][1]);\n\t ringListener.lineEnd();\n\t var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n\t ring.pop();\n\t polygon.push(ring);\n\t ring = null;\n\t if (!n) return;\n\t if (clean & 1) {\n\t segment = ringSegments[0];\n\t var n = segment.length - 1, i = -1, point;\n\t if (n > 0) {\n\t if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n\t listener.lineStart();\n\t while (++i < n) listener.point((point = segment[i])[0], point[1]);\n\t listener.lineEnd();\n\t }\n\t return;\n\t }\n\t if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\t segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n\t }\n\t return clip;\n\t };\n\t }\n\t function d3_geo_clipSegmentLength1(segment) {\n\t return segment.length > 1;\n\t }\n\t function d3_geo_clipBufferListener() {\n\t var lines = [], line;\n\t return {\n\t lineStart: function() {\n\t lines.push(line = []);\n\t },\n\t point: function(λ, φ) {\n\t line.push([ λ, φ ]);\n\t },\n\t lineEnd: d3_noop,\n\t buffer: function() {\n\t var buffer = lines;\n\t lines = [];\n\t line = null;\n\t return buffer;\n\t },\n\t rejoin: function() {\n\t if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n\t }\n\t };\n\t }\n\t function d3_geo_clipSort(a, b) {\n\t return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n\t }\n\t var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n\t function d3_geo_clipAntimeridianLine(listener) {\n\t var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n\t return {\n\t lineStart: function() {\n\t listener.lineStart();\n\t clean = 1;\n\t },\n\t point: function(λ1, φ1) {\n\t var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n\t if (abs(dλ - π) < ε) {\n\t listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t listener.point(λ1, φ0);\n\t clean = 0;\n\t } else if (sλ0 !== sλ1 && dλ >= π) {\n\t if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n\t if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n\t φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n\t listener.point(sλ0, φ0);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(sλ1, φ0);\n\t clean = 0;\n\t }\n\t listener.point(λ0 = λ1, φ0 = φ1);\n\t sλ0 = sλ1;\n\t },\n\t lineEnd: function() {\n\t listener.lineEnd();\n\t λ0 = φ0 = NaN;\n\t },\n\t clean: function() {\n\t return 2 - clean;\n\t }\n\t };\n\t }\n\t function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n\t var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n\t return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n\t }\n\t function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n\t var φ;\n\t if (from == null) {\n\t φ = direction * halfπ;\n\t listener.point(-π, φ);\n\t listener.point(0, φ);\n\t listener.point(π, φ);\n\t listener.point(π, 0);\n\t listener.point(π, -φ);\n\t listener.point(0, -φ);\n\t listener.point(-π, -φ);\n\t listener.point(-π, 0);\n\t listener.point(-π, φ);\n\t } else if (abs(from[0] - to[0]) > ε) {\n\t var s = from[0] < to[0] ? π : -π;\n\t φ = direction * s / 2;\n\t listener.point(-s, φ);\n\t listener.point(0, φ);\n\t listener.point(s, φ);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function d3_geo_pointInPolygon(point, polygon) {\n\t var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n\t d3_geo_areaRingSum.reset();\n\t for (var i = 0, n = polygon.length; i < n; ++i) {\n\t var ring = polygon[i], m = ring.length;\n\t if (!m) continue;\n\t var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n\t while (true) {\n\t if (j === m) j = 0;\n\t point = ring[j];\n\t var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n\t d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n\t polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n\t if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n\t var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n\t d3_geo_cartesianNormalize(arc);\n\t var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n\t d3_geo_cartesianNormalize(intersection);\n\t var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n\t if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n\t winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n\t }\n\t }\n\t if (!j++) break;\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n\t }\n\t }\n\t return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n\t }\n\t function d3_geo_clipCircle(radius) {\n\t var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n\t return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n\t function visible(λ, φ) {\n\t return Math.cos(λ) * Math.cos(φ) > cr;\n\t }\n\t function clipLine(listener) {\n\t var point0, c0, v0, v00, clean;\n\t return {\n\t lineStart: function() {\n\t v00 = v0 = false;\n\t clean = 1;\n\t },\n\t point: function(λ, φ) {\n\t var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n\t if (!point0 && (v00 = v0 = v)) listener.lineStart();\n\t if (v !== v0) {\n\t point2 = intersect(point0, point1);\n\t if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n\t point1[0] += ε;\n\t point1[1] += ε;\n\t v = visible(point1[0], point1[1]);\n\t }\n\t }\n\t if (v !== v0) {\n\t clean = 0;\n\t if (v) {\n\t listener.lineStart();\n\t point2 = intersect(point1, point0);\n\t listener.point(point2[0], point2[1]);\n\t } else {\n\t point2 = intersect(point0, point1);\n\t listener.point(point2[0], point2[1]);\n\t listener.lineEnd();\n\t }\n\t point0 = point2;\n\t } else if (notHemisphere && point0 && smallRadius ^ v) {\n\t var t;\n\t if (!(c & c0) && (t = intersect(point1, point0, true))) {\n\t clean = 0;\n\t if (smallRadius) {\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t } else {\n\t listener.point(t[1][0], t[1][1]);\n\t listener.lineEnd();\n\t listener.lineStart();\n\t listener.point(t[0][0], t[0][1]);\n\t }\n\t }\n\t }\n\t if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n\t listener.point(point1[0], point1[1]);\n\t }\n\t point0 = point1, v0 = v, c0 = c;\n\t },\n\t lineEnd: function() {\n\t if (v0) listener.lineEnd();\n\t point0 = null;\n\t },\n\t clean: function() {\n\t return clean | (v00 && v0) << 1;\n\t }\n\t };\n\t }\n\t function intersect(a, b, two) {\n\t var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n\t var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n\t if (!determinant) return !two && a;\n\t var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n\t d3_geo_cartesianAdd(A, B);\n\t var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n\t if (t2 < 0) return;\n\t var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n\t d3_geo_cartesianAdd(q, A);\n\t q = d3_geo_spherical(q);\n\t if (!two) return q;\n\t var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n\t if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n\t var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n\t if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n\t if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n\t var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n\t d3_geo_cartesianAdd(q1, A);\n\t return [ q, d3_geo_spherical(q1) ];\n\t }\n\t }\n\t function code(λ, φ) {\n\t var r = smallRadius ? radius : π - radius, code = 0;\n\t if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n\t if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n\t return code;\n\t }\n\t }\n\t function d3_geom_clipLine(x0, y0, x1, y1) {\n\t return function(line) {\n\t var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n\t r = x0 - ax;\n\t if (!dx && r > 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dx > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = x1 - ax;\n\t if (!dx && r < 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dx > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t r = y0 - ay;\n\t if (!dy && r > 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dy > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t r = y1 - ay;\n\t if (!dy && r < 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dy > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t if (t0 > 0) line.a = {\n\t x: ax + t0 * dx,\n\t y: ay + t0 * dy\n\t };\n\t if (t1 < 1) line.b = {\n\t x: ax + t1 * dx,\n\t y: ay + t1 * dy\n\t };\n\t return line;\n\t };\n\t }\n\t var d3_geo_clipExtentMAX = 1e9;\n\t d3.geo.clipExtent = function() {\n\t var x0, y0, x1, y1, stream, clip, clipExtent = {\n\t stream: function(output) {\n\t if (stream) stream.valid = false;\n\t stream = clip(output);\n\t stream.valid = true;\n\t return stream;\n\t },\n\t extent: function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n\t if (stream) stream.valid = false, stream = null;\n\t return clipExtent;\n\t }\n\t };\n\t return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n\t };\n\t function d3_geo_clipExtent(x0, y0, x1, y1) {\n\t return function(listener) {\n\t var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t listener = bufferListener;\n\t segments = [];\n\t polygon = [];\n\t clean = true;\n\t },\n\t polygonEnd: function() {\n\t listener = listener_;\n\t segments = d3.merge(segments);\n\t var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n\t if (inside || visible) {\n\t listener.polygonStart();\n\t if (inside) {\n\t listener.lineStart();\n\t interpolate(null, null, 1, listener);\n\t listener.lineEnd();\n\t }\n\t if (visible) {\n\t d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n\t }\n\t listener.polygonEnd();\n\t }\n\t segments = polygon = ring = null;\n\t }\n\t };\n\t function insidePolygon(p) {\n\t var wn = 0, n = polygon.length, y = p[1];\n\t for (var i = 0; i < n; ++i) {\n\t for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n\t b = v[j];\n\t if (a[1] <= y) {\n\t if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n\t } else {\n\t if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n\t }\n\t a = b;\n\t }\n\t }\n\t return wn !== 0;\n\t }\n\t function interpolate(from, to, direction, listener) {\n\t var a = 0, a1 = 0;\n\t if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n\t do {\n\t listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n\t } while ((a = (a + direction + 4) % 4) !== a1);\n\t } else {\n\t listener.point(to[0], to[1]);\n\t }\n\t }\n\t function pointVisible(x, y) {\n\t return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n\t }\n\t function point(x, y) {\n\t if (pointVisible(x, y)) listener.point(x, y);\n\t }\n\t var x__, y__, v__, x_, y_, v_, first, clean;\n\t function lineStart() {\n\t clip.point = linePoint;\n\t if (polygon) polygon.push(ring = []);\n\t first = true;\n\t v_ = false;\n\t x_ = y_ = NaN;\n\t }\n\t function lineEnd() {\n\t if (segments) {\n\t linePoint(x__, y__);\n\t if (v__ && v_) bufferListener.rejoin();\n\t segments.push(bufferListener.buffer());\n\t }\n\t clip.point = point;\n\t if (v_) listener.lineEnd();\n\t }\n\t function linePoint(x, y) {\n\t x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n\t y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n\t var v = pointVisible(x, y);\n\t if (polygon) ring.push([ x, y ]);\n\t if (first) {\n\t x__ = x, y__ = y, v__ = v;\n\t first = false;\n\t if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t }\n\t } else {\n\t if (v && v_) listener.point(x, y); else {\n\t var l = {\n\t a: {\n\t x: x_,\n\t y: y_\n\t },\n\t b: {\n\t x: x,\n\t y: y\n\t }\n\t };\n\t if (clipLine(l)) {\n\t if (!v_) {\n\t listener.lineStart();\n\t listener.point(l.a.x, l.a.y);\n\t }\n\t listener.point(l.b.x, l.b.y);\n\t if (!v) listener.lineEnd();\n\t clean = false;\n\t } else if (v) {\n\t listener.lineStart();\n\t listener.point(x, y);\n\t clean = false;\n\t }\n\t }\n\t }\n\t x_ = x, y_ = y, v_ = v;\n\t }\n\t return clip;\n\t };\n\t function corner(p, direction) {\n\t return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n\t }\n\t function compare(a, b) {\n\t return comparePoints(a.x, b.x);\n\t }\n\t function comparePoints(a, b) {\n\t var ca = corner(a, 1), cb = corner(b, 1);\n\t return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n\t }\n\t }\n\t function d3_geo_conic(projectAt) {\n\t var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n\t p.parallels = function(_) {\n\t if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n\t return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n\t };\n\t return p;\n\t }\n\t function d3_geo_conicEqualArea(φ0, φ1) {\n\t var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n\t function forward(λ, φ) {\n\t var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n\t return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = ρ0 - y;\n\t return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEqualArea = function() {\n\t return d3_geo_conic(d3_geo_conicEqualArea);\n\t }).raw = d3_geo_conicEqualArea;\n\t d3.geo.albers = function() {\n\t return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n\t };\n\t d3.geo.albersUsa = function() {\n\t var lower48 = d3.geo.albers();\n\t var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n\t var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n\t var point, pointStream = {\n\t point: function(x, y) {\n\t point = [ x, y ];\n\t }\n\t }, lower48Point, alaskaPoint, hawaiiPoint;\n\t function albersUsa(coordinates) {\n\t var x = coordinates[0], y = coordinates[1];\n\t point = null;\n\t (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n\t return point;\n\t }\n\t albersUsa.invert = function(coordinates) {\n\t var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n\t return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n\t };\n\t albersUsa.stream = function(stream) {\n\t var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n\t return {\n\t point: function(x, y) {\n\t lower48Stream.point(x, y);\n\t alaskaStream.point(x, y);\n\t hawaiiStream.point(x, y);\n\t },\n\t sphere: function() {\n\t lower48Stream.sphere();\n\t alaskaStream.sphere();\n\t hawaiiStream.sphere();\n\t },\n\t lineStart: function() {\n\t lower48Stream.lineStart();\n\t alaskaStream.lineStart();\n\t hawaiiStream.lineStart();\n\t },\n\t lineEnd: function() {\n\t lower48Stream.lineEnd();\n\t alaskaStream.lineEnd();\n\t hawaiiStream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t lower48Stream.polygonStart();\n\t alaskaStream.polygonStart();\n\t hawaiiStream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t lower48Stream.polygonEnd();\n\t alaskaStream.polygonEnd();\n\t hawaiiStream.polygonEnd();\n\t }\n\t };\n\t };\n\t albersUsa.precision = function(_) {\n\t if (!arguments.length) return lower48.precision();\n\t lower48.precision(_);\n\t alaska.precision(_);\n\t hawaii.precision(_);\n\t return albersUsa;\n\t };\n\t albersUsa.scale = function(_) {\n\t if (!arguments.length) return lower48.scale();\n\t lower48.scale(_);\n\t alaska.scale(_ * .35);\n\t hawaii.scale(_);\n\t return albersUsa.translate(lower48.translate());\n\t };\n\t albersUsa.translate = function(_) {\n\t if (!arguments.length) return lower48.translate();\n\t var k = lower48.scale(), x = +_[0], y = +_[1];\n\t lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n\t alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n\t return albersUsa;\n\t };\n\t return albersUsa.scale(1070);\n\t };\n\t var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n\t point: d3_noop,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: function() {\n\t d3_geo_pathAreaPolygon = 0;\n\t d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n\t d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n\t }\n\t };\n\t function d3_geo_pathAreaRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathArea.point = function(x, y) {\n\t d3_geo_pathArea.point = nextPoint;\n\t x00 = x0 = x, y00 = y0 = y;\n\t };\n\t function nextPoint(x, y) {\n\t d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n\t x0 = x, y0 = y;\n\t }\n\t d3_geo_pathArea.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n\t var d3_geo_pathBounds = {\n\t point: d3_geo_pathBoundsPoint,\n\t lineStart: d3_noop,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_pathBoundsPoint(x, y) {\n\t if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n\t if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n\t if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n\t if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n\t }\n\t function d3_geo_pathBuffer() {\n\t var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointCircle = d3_geo_pathBufferCircle(_);\n\t return stream;\n\t },\n\t result: function() {\n\t if (buffer.length) {\n\t var result = buffer.join(\"\");\n\t buffer = [];\n\t return result;\n\t }\n\t }\n\t };\n\t function point(x, y) {\n\t buffer.push(\"M\", x, \",\", y, pointCircle);\n\t }\n\t function pointLineStart(x, y) {\n\t buffer.push(\"M\", x, \",\", y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t buffer.push(\"L\", x, \",\", y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t buffer.push(\"Z\");\n\t }\n\t return stream;\n\t }\n\t function d3_geo_pathBufferCircle(radius) {\n\t return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n\t }\n\t var d3_geo_pathCentroid = {\n\t point: d3_geo_pathCentroidPoint,\n\t lineStart: d3_geo_pathCentroidLineStart,\n\t lineEnd: d3_geo_pathCentroidLineEnd,\n\t polygonStart: function() {\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n\t },\n\t polygonEnd: function() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n\t d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n\t }\n\t };\n\t function d3_geo_pathCentroidPoint(x, y) {\n\t d3_geo_centroidX0 += x;\n\t d3_geo_centroidY0 += y;\n\t ++d3_geo_centroidZ0;\n\t }\n\t function d3_geo_pathCentroidLineStart() {\n\t var x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t }\n\t function d3_geo_pathCentroidLineEnd() {\n\t d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n\t }\n\t function d3_geo_pathCentroidRingStart() {\n\t var x00, y00, x0, y0;\n\t d3_geo_pathCentroid.point = function(x, y) {\n\t d3_geo_pathCentroid.point = nextPoint;\n\t d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n\t };\n\t function nextPoint(x, y) {\n\t var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n\t d3_geo_centroidX1 += z * (x0 + x) / 2;\n\t d3_geo_centroidY1 += z * (y0 + y) / 2;\n\t d3_geo_centroidZ1 += z;\n\t z = y0 * x - x0 * y;\n\t d3_geo_centroidX2 += z * (x0 + x);\n\t d3_geo_centroidY2 += z * (y0 + y);\n\t d3_geo_centroidZ2 += z * 3;\n\t d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n\t }\n\t d3_geo_pathCentroid.lineEnd = function() {\n\t nextPoint(x00, y00);\n\t };\n\t }\n\t function d3_geo_pathContext(context) {\n\t var pointRadius = 4.5;\n\t var stream = {\n\t point: point,\n\t lineStart: function() {\n\t stream.point = pointLineStart;\n\t },\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointRadius = _;\n\t return stream;\n\t },\n\t result: d3_noop\n\t };\n\t function point(x, y) {\n\t context.moveTo(x + pointRadius, y);\n\t context.arc(x, y, pointRadius, 0, τ);\n\t }\n\t function pointLineStart(x, y) {\n\t context.moveTo(x, y);\n\t stream.point = pointLine;\n\t }\n\t function pointLine(x, y) {\n\t context.lineTo(x, y);\n\t }\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t function lineEndPolygon() {\n\t context.closePath();\n\t }\n\t return stream;\n\t }\n\t function d3_geo_resample(project) {\n\t var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n\t function resample(stream) {\n\t return (maxDepth ? resampleRecursive : resampleNone)(stream);\n\t }\n\t function resampleNone(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t });\n\t }\n\t function resampleRecursive(stream) {\n\t var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n\t var resample = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t resample.lineStart = ringStart;\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t resample.lineStart = lineStart;\n\t }\n\t };\n\t function point(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t }\n\t function lineStart() {\n\t x0 = NaN;\n\t resample.point = linePoint;\n\t stream.lineStart();\n\t }\n\t function linePoint(λ, φ) {\n\t var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n\t stream.point(x0, y0);\n\t }\n\t function lineEnd() {\n\t resample.point = point;\n\t stream.lineEnd();\n\t }\n\t function ringStart() {\n\t lineStart();\n\t resample.point = ringPoint;\n\t resample.lineEnd = ringEnd;\n\t }\n\t function ringPoint(λ, φ) {\n\t linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n\t resample.point = linePoint;\n\t }\n\t function ringEnd() {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n\t resample.lineEnd = lineEnd;\n\t lineEnd();\n\t }\n\t return resample;\n\t }\n\t function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n\t var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n\t if (d2 > 4 * δ2 && depth--) {\n\t var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n\t if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n\t resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n\t stream.point(x2, y2);\n\t resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n\t }\n\t }\n\t }\n\t resample.precision = function(_) {\n\t if (!arguments.length) return Math.sqrt(δ2);\n\t maxDepth = (δ2 = _ * _) > 0 && 16;\n\t return resample;\n\t };\n\t return resample;\n\t }\n\t d3.geo.path = function() {\n\t var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n\t function path(object) {\n\t if (object) {\n\t if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n\t if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n\t d3.geo.stream(object, cacheStream);\n\t }\n\t return contextStream.result();\n\t }\n\t path.area = function(object) {\n\t d3_geo_pathAreaSum = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathArea));\n\t return d3_geo_pathAreaSum;\n\t };\n\t path.centroid = function(object) {\n\t d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n\t d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n\t return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n\t };\n\t path.bounds = function(object) {\n\t d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n\t d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n\t return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n\t };\n\t path.projection = function(_) {\n\t if (!arguments.length) return projection;\n\t projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n\t return reset();\n\t };\n\t path.context = function(_) {\n\t if (!arguments.length) return context;\n\t contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n\t if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n\t return reset();\n\t };\n\t path.pointRadius = function(_) {\n\t if (!arguments.length) return pointRadius;\n\t pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n\t return path;\n\t };\n\t function reset() {\n\t cacheStream = null;\n\t return path;\n\t }\n\t return path.projection(d3.geo.albersUsa()).context(null);\n\t };\n\t function d3_geo_pathProjectStream(project) {\n\t var resample = d3_geo_resample(function(x, y) {\n\t return project([ x * d3_degrees, y * d3_degrees ]);\n\t });\n\t return function(stream) {\n\t return d3_geo_projectionRadians(resample(stream));\n\t };\n\t }\n\t d3.geo.transform = function(methods) {\n\t return {\n\t stream: function(stream) {\n\t var transform = new d3_geo_transform(stream);\n\t for (var k in methods) transform[k] = methods[k];\n\t return transform;\n\t }\n\t };\n\t };\n\t function d3_geo_transform(stream) {\n\t this.stream = stream;\n\t }\n\t d3_geo_transform.prototype = {\n\t point: function(x, y) {\n\t this.stream.point(x, y);\n\t },\n\t sphere: function() {\n\t this.stream.sphere();\n\t },\n\t lineStart: function() {\n\t this.stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t this.stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t this.stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t this.stream.polygonEnd();\n\t }\n\t };\n\t function d3_geo_transformPoint(stream, point) {\n\t return {\n\t point: point,\n\t sphere: function() {\n\t stream.sphere();\n\t },\n\t lineStart: function() {\n\t stream.lineStart();\n\t },\n\t lineEnd: function() {\n\t stream.lineEnd();\n\t },\n\t polygonStart: function() {\n\t stream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t stream.polygonEnd();\n\t }\n\t };\n\t }\n\t d3.geo.projection = d3_geo_projection;\n\t d3.geo.projectionMutator = d3_geo_projectionMutator;\n\t function d3_geo_projection(project) {\n\t return d3_geo_projectionMutator(function() {\n\t return project;\n\t })();\n\t }\n\t function d3_geo_projectionMutator(projectAt) {\n\t var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n\t x = project(x, y);\n\t return [ x[0] * k + δx, δy - x[1] * k ];\n\t }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n\t function projection(point) {\n\t point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n\t return [ point[0] * k + δx, δy - point[1] * k ];\n\t }\n\t function invert(point) {\n\t point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n\t return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n\t }\n\t projection.stream = function(output) {\n\t if (stream) stream.valid = false;\n\t stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n\t stream.valid = true;\n\t return stream;\n\t };\n\t projection.clipAngle = function(_) {\n\t if (!arguments.length) return clipAngle;\n\t preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n\t return invalidate();\n\t };\n\t projection.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent;\n\t clipExtent = _;\n\t postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n\t return invalidate();\n\t };\n\t projection.scale = function(_) {\n\t if (!arguments.length) return k;\n\t k = +_;\n\t return reset();\n\t };\n\t projection.translate = function(_) {\n\t if (!arguments.length) return [ x, y ];\n\t x = +_[0];\n\t y = +_[1];\n\t return reset();\n\t };\n\t projection.center = function(_) {\n\t if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n\t λ = _[0] % 360 * d3_radians;\n\t φ = _[1] % 360 * d3_radians;\n\t return reset();\n\t };\n\t projection.rotate = function(_) {\n\t if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n\t δλ = _[0] % 360 * d3_radians;\n\t δφ = _[1] % 360 * d3_radians;\n\t δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n\t return reset();\n\t };\n\t d3.rebind(projection, projectResample, \"precision\");\n\t function reset() {\n\t projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n\t var center = project(λ, φ);\n\t δx = x - center[0] * k;\n\t δy = y + center[1] * k;\n\t return invalidate();\n\t }\n\t function invalidate() {\n\t if (stream) stream.valid = false, stream = null;\n\t return projection;\n\t }\n\t return function() {\n\t project = projectAt.apply(this, arguments);\n\t projection.invert = project.invert && invert;\n\t return reset();\n\t };\n\t }\n\t function d3_geo_projectionRadians(stream) {\n\t return d3_geo_transformPoint(stream, function(x, y) {\n\t stream.point(x * d3_radians, y * d3_radians);\n\t });\n\t }\n\t function d3_geo_equirectangular(λ, φ) {\n\t return [ λ, φ ];\n\t }\n\t (d3.geo.equirectangular = function() {\n\t return d3_geo_projection(d3_geo_equirectangular);\n\t }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n\t d3.geo.rotation = function(rotate) {\n\t rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n\t function forward(coordinates) {\n\t coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t }\n\t forward.invert = function(coordinates) {\n\t coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n\t return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n\t };\n\t return forward;\n\t };\n\t function d3_geo_identityRotation(λ, φ) {\n\t return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t }\n\t d3_geo_identityRotation.invert = d3_geo_equirectangular;\n\t function d3_geo_rotation(δλ, δφ, δγ) {\n\t return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n\t }\n\t function d3_geo_forwardRotationλ(δλ) {\n\t return function(λ, φ) {\n\t return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n\t };\n\t }\n\t function d3_geo_rotationλ(δλ) {\n\t var rotation = d3_geo_forwardRotationλ(δλ);\n\t rotation.invert = d3_geo_forwardRotationλ(-δλ);\n\t return rotation;\n\t }\n\t function d3_geo_rotationφγ(δφ, δγ) {\n\t var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n\t function rotation(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n\t return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n\t }\n\t rotation.invert = function(λ, φ) {\n\t var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n\t return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n\t };\n\t return rotation;\n\t }\n\t d3.geo.circle = function() {\n\t var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n\t function circle() {\n\t var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n\t interpolate(null, null, 1, {\n\t point: function(x, y) {\n\t ring.push(x = rotate(x, y));\n\t x[0] *= d3_degrees, x[1] *= d3_degrees;\n\t }\n\t });\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ ring ]\n\t };\n\t }\n\t circle.origin = function(x) {\n\t if (!arguments.length) return origin;\n\t origin = x;\n\t return circle;\n\t };\n\t circle.angle = function(x) {\n\t if (!arguments.length) return angle;\n\t interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n\t return circle;\n\t };\n\t circle.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n\t return circle;\n\t };\n\t return circle.angle(90);\n\t };\n\t function d3_geo_circleInterpolate(radius, precision) {\n\t var cr = Math.cos(radius), sr = Math.sin(radius);\n\t return function(from, to, direction, listener) {\n\t var step = direction * precision;\n\t if (from != null) {\n\t from = d3_geo_circleAngle(cr, from);\n\t to = d3_geo_circleAngle(cr, to);\n\t if (direction > 0 ? from < to : from > to) from += direction * τ;\n\t } else {\n\t from = radius + direction * τ;\n\t to = radius - .5 * step;\n\t }\n\t for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n\t listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n\t }\n\t };\n\t }\n\t function d3_geo_circleAngle(cr, point) {\n\t var a = d3_geo_cartesian(point);\n\t a[0] -= cr;\n\t d3_geo_cartesianNormalize(a);\n\t var angle = d3_acos(-a[1]);\n\t return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n\t }\n\t d3.geo.distance = function(a, b) {\n\t var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n\t return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n\t };\n\t d3.geo.graticule = function() {\n\t var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n\t function graticule() {\n\t return {\n\t type: \"MultiLineString\",\n\t coordinates: lines()\n\t };\n\t }\n\t function lines() {\n\t return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n\t return abs(x % DX) > ε;\n\t }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n\t return abs(y % DY) > ε;\n\t }).map(y));\n\t }\n\t graticule.lines = function() {\n\t return lines().map(function(coordinates) {\n\t return {\n\t type: \"LineString\",\n\t coordinates: coordinates\n\t };\n\t });\n\t };\n\t graticule.outline = function() {\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n\t };\n\t };\n\t graticule.extent = function(_) {\n\t if (!arguments.length) return graticule.minorExtent();\n\t return graticule.majorExtent(_).minorExtent(_);\n\t };\n\t graticule.majorExtent = function(_) {\n\t if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n\t X0 = +_[0][0], X1 = +_[1][0];\n\t Y0 = +_[0][1], Y1 = +_[1][1];\n\t if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n\t if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.minorExtent = function(_) {\n\t if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n\t x0 = +_[0][0], x1 = +_[1][0];\n\t y0 = +_[0][1], y1 = +_[1][1];\n\t if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n\t if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t graticule.step = function(_) {\n\t if (!arguments.length) return graticule.minorStep();\n\t return graticule.majorStep(_).minorStep(_);\n\t };\n\t graticule.majorStep = function(_) {\n\t if (!arguments.length) return [ DX, DY ];\n\t DX = +_[0], DY = +_[1];\n\t return graticule;\n\t };\n\t graticule.minorStep = function(_) {\n\t if (!arguments.length) return [ dx, dy ];\n\t dx = +_[0], dy = +_[1];\n\t return graticule;\n\t };\n\t graticule.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t precision = +_;\n\t x = d3_geo_graticuleX(y0, y1, 90);\n\t y = d3_geo_graticuleY(x0, x1, precision);\n\t X = d3_geo_graticuleX(Y0, Y1, 90);\n\t Y = d3_geo_graticuleY(X0, X1, precision);\n\t return graticule;\n\t };\n\t return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n\t };\n\t function d3_geo_graticuleX(y0, y1, dy) {\n\t var y = d3.range(y0, y1 - ε, dy).concat(y1);\n\t return function(x) {\n\t return y.map(function(y) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_geo_graticuleY(x0, x1, dx) {\n\t var x = d3.range(x0, x1 - ε, dx).concat(x1);\n\t return function(y) {\n\t return x.map(function(x) {\n\t return [ x, y ];\n\t });\n\t };\n\t }\n\t function d3_source(d) {\n\t return d.source;\n\t }\n\t function d3_target(d) {\n\t return d.target;\n\t }\n\t d3.geo.greatArc = function() {\n\t var source = d3_source, source_, target = d3_target, target_;\n\t function greatArc() {\n\t return {\n\t type: \"LineString\",\n\t coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n\t };\n\t }\n\t greatArc.distance = function() {\n\t return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n\t };\n\t greatArc.source = function(_) {\n\t if (!arguments.length) return source;\n\t source = _, source_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.target = function(_) {\n\t if (!arguments.length) return target;\n\t target = _, target_ = typeof _ === \"function\" ? null : _;\n\t return greatArc;\n\t };\n\t greatArc.precision = function() {\n\t return arguments.length ? greatArc : 0;\n\t };\n\t return greatArc;\n\t };\n\t d3.geo.interpolate = function(source, target) {\n\t return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n\t };\n\t function d3_geo_interpolate(x0, y0, x1, y1) {\n\t var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n\t var interpolate = d ? function(t) {\n\t var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n\t return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n\t } : function() {\n\t return [ x0 * d3_degrees, y0 * d3_degrees ];\n\t };\n\t interpolate.distance = d;\n\t return interpolate;\n\t }\n\t d3.geo.length = function(object) {\n\t d3_geo_lengthSum = 0;\n\t d3.geo.stream(object, d3_geo_length);\n\t return d3_geo_lengthSum;\n\t };\n\t var d3_geo_lengthSum;\n\t var d3_geo_length = {\n\t sphere: d3_noop,\n\t point: d3_noop,\n\t lineStart: d3_geo_lengthLineStart,\n\t lineEnd: d3_noop,\n\t polygonStart: d3_noop,\n\t polygonEnd: d3_noop\n\t };\n\t function d3_geo_lengthLineStart() {\n\t var λ0, sinφ0, cosφ0;\n\t d3_geo_length.point = function(λ, φ) {\n\t λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n\t d3_geo_length.point = nextPoint;\n\t };\n\t d3_geo_length.lineEnd = function() {\n\t d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n\t };\n\t function nextPoint(λ, φ) {\n\t var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n\t d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n\t λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n\t }\n\t }\n\t function d3_geo_azimuthal(scale, angle) {\n\t function azimuthal(λ, φ) {\n\t var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n\t return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n\t }\n\t azimuthal.invert = function(x, y) {\n\t var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n\t return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n\t };\n\t return azimuthal;\n\t }\n\t var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n\t return Math.sqrt(2 / (1 + cosλcosφ));\n\t }, function(ρ) {\n\t return 2 * Math.asin(ρ / 2);\n\t });\n\t (d3.geo.azimuthalEqualArea = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEqualArea);\n\t }).raw = d3_geo_azimuthalEqualArea;\n\t var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n\t var c = Math.acos(cosλcosφ);\n\t return c && c / Math.sin(c);\n\t }, d3_identity);\n\t (d3.geo.azimuthalEquidistant = function() {\n\t return d3_geo_projection(d3_geo_azimuthalEquidistant);\n\t }).raw = d3_geo_azimuthalEquidistant;\n\t function d3_geo_conicConformal(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), t = function(φ) {\n\t return Math.tan(π / 4 + φ / 2);\n\t }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n\t if (!n) return d3_geo_mercator;\n\t function forward(λ, φ) {\n\t if (F > 0) {\n\t if (φ < -halfπ + ε) φ = -halfπ + ε;\n\t } else {\n\t if (φ > halfπ - ε) φ = halfπ - ε;\n\t }\n\t var ρ = F / Math.pow(t(φ), n);\n\t return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n\t return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicConformal = function() {\n\t return d3_geo_conic(d3_geo_conicConformal);\n\t }).raw = d3_geo_conicConformal;\n\t function d3_geo_conicEquidistant(φ0, φ1) {\n\t var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n\t if (abs(n) < ε) return d3_geo_equirectangular;\n\t function forward(λ, φ) {\n\t var ρ = G - φ;\n\t return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n\t }\n\t forward.invert = function(x, y) {\n\t var ρ0_y = G - y;\n\t return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n\t };\n\t return forward;\n\t }\n\t (d3.geo.conicEquidistant = function() {\n\t return d3_geo_conic(d3_geo_conicEquidistant);\n\t }).raw = d3_geo_conicEquidistant;\n\t var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / cosλcosφ;\n\t }, Math.atan);\n\t (d3.geo.gnomonic = function() {\n\t return d3_geo_projection(d3_geo_gnomonic);\n\t }).raw = d3_geo_gnomonic;\n\t function d3_geo_mercator(λ, φ) {\n\t return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n\t }\n\t d3_geo_mercator.invert = function(x, y) {\n\t return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n\t };\n\t function d3_geo_mercatorProjection(project) {\n\t var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n\t m.scale = function() {\n\t var v = scale.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.translate = function() {\n\t var v = translate.apply(m, arguments);\n\t return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n\t };\n\t m.clipExtent = function(_) {\n\t var v = clipExtent.apply(m, arguments);\n\t if (v === m) {\n\t if (clipAuto = _ == null) {\n\t var k = π * scale(), t = translate();\n\t clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n\t }\n\t } else if (clipAuto) {\n\t v = null;\n\t }\n\t return v;\n\t };\n\t return m.clipExtent(null);\n\t }\n\t (d3.geo.mercator = function() {\n\t return d3_geo_mercatorProjection(d3_geo_mercator);\n\t }).raw = d3_geo_mercator;\n\t var d3_geo_orthographic = d3_geo_azimuthal(function() {\n\t return 1;\n\t }, Math.asin);\n\t (d3.geo.orthographic = function() {\n\t return d3_geo_projection(d3_geo_orthographic);\n\t }).raw = d3_geo_orthographic;\n\t var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n\t return 1 / (1 + cosλcosφ);\n\t }, function(ρ) {\n\t return 2 * Math.atan(ρ);\n\t });\n\t (d3.geo.stereographic = function() {\n\t return d3_geo_projection(d3_geo_stereographic);\n\t }).raw = d3_geo_stereographic;\n\t function d3_geo_transverseMercator(λ, φ) {\n\t return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n\t }\n\t d3_geo_transverseMercator.invert = function(x, y) {\n\t return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n\t };\n\t (d3.geo.transverseMercator = function() {\n\t var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n\t projection.center = function(_) {\n\t return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n\t };\n\t projection.rotate = function(_) {\n\t return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n\t [ _[0], _[1], _[2] - 90 ]);\n\t };\n\t return rotate([ 0, 0, 90 ]);\n\t }).raw = d3_geo_transverseMercator;\n\t d3.geom = {};\n\t function d3_geom_pointX(d) {\n\t return d[0];\n\t }\n\t function d3_geom_pointY(d) {\n\t return d[1];\n\t }\n\t d3.geom.hull = function(vertices) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY;\n\t if (arguments.length) return hull(vertices);\n\t function hull(data) {\n\t if (data.length < 3) return [];\n\t var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n\t for (i = 0; i < n; i++) {\n\t points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n\t }\n\t points.sort(d3_geom_hullOrder);\n\t for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n\t var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n\t var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n\t for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n\t for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n\t return polygon;\n\t }\n\t hull.x = function(_) {\n\t return arguments.length ? (x = _, hull) : x;\n\t };\n\t hull.y = function(_) {\n\t return arguments.length ? (y = _, hull) : y;\n\t };\n\t return hull;\n\t };\n\t function d3_geom_hullUpper(points) {\n\t var n = points.length, hull = [ 0, 1 ], hs = 2;\n\t for (var i = 2; i < n; i++) {\n\t while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n\t hull[hs++] = i;\n\t }\n\t return hull.slice(0, hs);\n\t }\n\t function d3_geom_hullOrder(a, b) {\n\t return a[0] - b[0] || a[1] - b[1];\n\t }\n\t d3.geom.polygon = function(coordinates) {\n\t d3_subclass(coordinates, d3_geom_polygonPrototype);\n\t return coordinates;\n\t };\n\t var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n\t d3_geom_polygonPrototype.area = function() {\n\t var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t area += a[1] * b[0] - a[0] * b[1];\n\t }\n\t return area * .5;\n\t };\n\t d3_geom_polygonPrototype.centroid = function(k) {\n\t var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n\t if (!arguments.length) k = -1 / (6 * this.area());\n\t while (++i < n) {\n\t a = b;\n\t b = this[i];\n\t c = a[0] * b[1] - b[0] * a[1];\n\t x += (a[0] + b[0]) * c;\n\t y += (a[1] + b[1]) * c;\n\t }\n\t return [ x * k, y * k ];\n\t };\n\t d3_geom_polygonPrototype.clip = function(subject) {\n\t var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n\t while (++i < n) {\n\t input = subject.slice();\n\t subject.length = 0;\n\t b = this[i];\n\t c = input[(m = input.length - closed) - 1];\n\t j = -1;\n\t while (++j < m) {\n\t d = input[j];\n\t if (d3_geom_polygonInside(d, a, b)) {\n\t if (!d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t subject.push(d);\n\t } else if (d3_geom_polygonInside(c, a, b)) {\n\t subject.push(d3_geom_polygonIntersect(c, d, a, b));\n\t }\n\t c = d;\n\t }\n\t if (closed) subject.push(subject[0]);\n\t a = b;\n\t }\n\t return subject;\n\t };\n\t function d3_geom_polygonInside(p, a, b) {\n\t return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n\t }\n\t function d3_geom_polygonIntersect(c, d, a, b) {\n\t var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n\t return [ x1 + ua * x21, y1 + ua * y21 ];\n\t }\n\t function d3_geom_polygonClosed(coordinates) {\n\t var a = coordinates[0], b = coordinates[coordinates.length - 1];\n\t return !(a[0] - b[0] || a[1] - b[1]);\n\t }\n\t var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n\t function d3_geom_voronoiBeach() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.edge = this.site = this.circle = null;\n\t }\n\t function d3_geom_voronoiCreateBeach(site) {\n\t var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n\t beach.site = site;\n\t return beach;\n\t }\n\t function d3_geom_voronoiDetachBeach(beach) {\n\t d3_geom_voronoiDetachCircle(beach);\n\t d3_geom_voronoiBeaches.remove(beach);\n\t d3_geom_voronoiBeachPool.push(beach);\n\t d3_geom_voronoiRedBlackNode(beach);\n\t }\n\t function d3_geom_voronoiRemoveBeach(beach) {\n\t var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n\t x: x,\n\t y: y\n\t }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n\t d3_geom_voronoiDetachBeach(beach);\n\t var lArc = previous;\n\t while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n\t previous = lArc.P;\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachBeach(lArc);\n\t lArc = previous;\n\t }\n\t disappearing.unshift(lArc);\n\t d3_geom_voronoiDetachCircle(lArc);\n\t var rArc = next;\n\t while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n\t next = rArc.N;\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachBeach(rArc);\n\t rArc = next;\n\t }\n\t disappearing.push(rArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var nArcs = disappearing.length, iArc;\n\t for (iArc = 1; iArc < nArcs; ++iArc) {\n\t rArc = disappearing[iArc];\n\t lArc = disappearing[iArc - 1];\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n\t }\n\t lArc = disappearing[0];\n\t rArc = disappearing[nArcs - 1];\n\t rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiAddBeach(site) {\n\t var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n\t while (node) {\n\t dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n\t if (dxl > ε) node = node.L; else {\n\t dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n\t if (dxr > ε) {\n\t if (!node.R) {\n\t lArc = node;\n\t break;\n\t }\n\t node = node.R;\n\t } else {\n\t if (dxl > -ε) {\n\t lArc = node.P;\n\t rArc = node;\n\t } else if (dxr > -ε) {\n\t lArc = node;\n\t rArc = node.N;\n\t } else {\n\t lArc = rArc = node;\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t var newArc = d3_geom_voronoiCreateBeach(site);\n\t d3_geom_voronoiBeaches.insert(lArc, newArc);\n\t if (!lArc && !rArc) return;\n\t if (lArc === rArc) {\n\t d3_geom_voronoiDetachCircle(lArc);\n\t rArc = d3_geom_voronoiCreateBeach(lArc.site);\n\t d3_geom_voronoiBeaches.insert(newArc, rArc);\n\t newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t return;\n\t }\n\t if (!rArc) {\n\t newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n\t return;\n\t }\n\t d3_geom_voronoiDetachCircle(lArc);\n\t d3_geom_voronoiDetachCircle(rArc);\n\t var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n\t x: (cy * hb - by * hc) / d + ax,\n\t y: (bx * hc - cx * hb) / d + ay\n\t };\n\t d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n\t newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n\t rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n\t d3_geom_voronoiAttachCircle(lArc);\n\t d3_geom_voronoiAttachCircle(rArc);\n\t }\n\t function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n\t var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n\t if (!pby2) return rfocx;\n\t var lArc = arc.P;\n\t if (!lArc) return -Infinity;\n\t site = lArc.site;\n\t var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n\t if (!plby2) return lfocx;\n\t var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n\t if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\t return (rfocx + lfocx) / 2;\n\t }\n\t function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n\t var rArc = arc.N;\n\t if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n\t var site = arc.site;\n\t return site.y === directrix ? site.x : Infinity;\n\t }\n\t function d3_geom_voronoiCell(site) {\n\t this.site = site;\n\t this.edges = [];\n\t }\n\t d3_geom_voronoiCell.prototype.prepare = function() {\n\t var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n\t while (iHalfEdge--) {\n\t edge = halfEdges[iHalfEdge].edge;\n\t if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n\t }\n\t halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n\t return halfEdges.length;\n\t };\n\t function d3_geom_voronoiCloseCells(extent) {\n\t var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n\t while (iCell--) {\n\t cell = cells[iCell];\n\t if (!cell || !cell.prepare()) continue;\n\t halfEdges = cell.edges;\n\t nHalfEdges = halfEdges.length;\n\t iHalfEdge = 0;\n\t while (iHalfEdge < nHalfEdges) {\n\t end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n\t start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n\t if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n\t halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n\t x: x0,\n\t y: abs(x2 - x0) < ε ? y2 : y1\n\t } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n\t x: abs(y2 - y1) < ε ? x2 : x1,\n\t y: y1\n\t } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n\t x: x1,\n\t y: abs(x2 - x1) < ε ? y2 : y0\n\t } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n\t x: abs(y2 - y0) < ε ? x2 : x0,\n\t y: y0\n\t } : null), cell.site, null));\n\t ++nHalfEdges;\n\t }\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdgeOrder(a, b) {\n\t return b.angle - a.angle;\n\t }\n\t function d3_geom_voronoiCircle() {\n\t d3_geom_voronoiRedBlackNode(this);\n\t this.x = this.y = this.arc = this.site = this.cy = null;\n\t }\n\t function d3_geom_voronoiAttachCircle(arc) {\n\t var lArc = arc.P, rArc = arc.N;\n\t if (!lArc || !rArc) return;\n\t var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n\t if (lSite === rSite) return;\n\t var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n\t var d = 2 * (ax * cy - ay * cx);\n\t if (d >= -ε2) return;\n\t var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n\t var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n\t circle.arc = arc;\n\t circle.site = cSite;\n\t circle.x = x + bx;\n\t circle.y = cy + Math.sqrt(x * x + y * y);\n\t circle.cy = cy;\n\t arc.circle = circle;\n\t var before = null, node = d3_geom_voronoiCircles._;\n\t while (node) {\n\t if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n\t if (node.L) node = node.L; else {\n\t before = node.P;\n\t break;\n\t }\n\t } else {\n\t if (node.R) node = node.R; else {\n\t before = node;\n\t break;\n\t }\n\t }\n\t }\n\t d3_geom_voronoiCircles.insert(before, circle);\n\t if (!before) d3_geom_voronoiFirstCircle = circle;\n\t }\n\t function d3_geom_voronoiDetachCircle(arc) {\n\t var circle = arc.circle;\n\t if (circle) {\n\t if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n\t d3_geom_voronoiCircles.remove(circle);\n\t d3_geom_voronoiCirclePool.push(circle);\n\t d3_geom_voronoiRedBlackNode(circle);\n\t arc.circle = null;\n\t }\n\t }\n\t function d3_geom_voronoiClipEdges(extent) {\n\t var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n\t while (i--) {\n\t e = edges[i];\n\t if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n\t e.a = e.b = null;\n\t edges.splice(i, 1);\n\t }\n\t }\n\t }\n\t function d3_geom_voronoiConnectEdge(edge, extent) {\n\t var vb = edge.b;\n\t if (vb) return true;\n\t var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n\t if (ry === ly) {\n\t if (fx < x0 || fx >= x1) return;\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: fx,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: fx,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: fx,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: fx,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t fm = (lx - rx) / (ry - ly);\n\t fb = fy - fm * fx;\n\t if (fm < -1 || fm > 1) {\n\t if (lx > rx) {\n\t if (!va) va = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t }; else if (va.y >= y1) return;\n\t vb = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: (y1 - fb) / fm,\n\t y: y1\n\t }; else if (va.y < y0) return;\n\t vb = {\n\t x: (y0 - fb) / fm,\n\t y: y0\n\t };\n\t }\n\t } else {\n\t if (ly < ry) {\n\t if (!va) va = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t }; else if (va.x >= x1) return;\n\t vb = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t };\n\t } else {\n\t if (!va) va = {\n\t x: x1,\n\t y: fm * x1 + fb\n\t }; else if (va.x < x0) return;\n\t vb = {\n\t x: x0,\n\t y: fm * x0 + fb\n\t };\n\t }\n\t }\n\t }\n\t edge.a = va;\n\t edge.b = vb;\n\t return true;\n\t }\n\t function d3_geom_voronoiEdge(lSite, rSite) {\n\t this.l = lSite;\n\t this.r = rSite;\n\t this.a = this.b = null;\n\t }\n\t function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, rSite);\n\t d3_geom_voronoiEdges.push(edge);\n\t if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n\t if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n\t d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n\t d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n\t return edge;\n\t }\n\t function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n\t var edge = new d3_geom_voronoiEdge(lSite, null);\n\t edge.a = va;\n\t edge.b = vb;\n\t d3_geom_voronoiEdges.push(edge);\n\t return edge;\n\t }\n\t function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n\t if (!edge.a && !edge.b) {\n\t edge.a = vertex;\n\t edge.l = lSite;\n\t edge.r = rSite;\n\t } else if (edge.l === rSite) {\n\t edge.b = vertex;\n\t } else {\n\t edge.a = vertex;\n\t }\n\t }\n\t function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n\t var va = edge.a, vb = edge.b;\n\t this.edge = edge;\n\t this.site = lSite;\n\t this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n\t }\n\t d3_geom_voronoiHalfEdge.prototype = {\n\t start: function() {\n\t return this.edge.l === this.site ? this.edge.a : this.edge.b;\n\t },\n\t end: function() {\n\t return this.edge.l === this.site ? this.edge.b : this.edge.a;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackTree() {\n\t this._ = null;\n\t }\n\t function d3_geom_voronoiRedBlackNode(node) {\n\t node.U = node.C = node.L = node.R = node.P = node.N = null;\n\t }\n\t d3_geom_voronoiRedBlackTree.prototype = {\n\t insert: function(after, node) {\n\t var parent, grandpa, uncle;\n\t if (after) {\n\t node.P = after;\n\t node.N = after.N;\n\t if (after.N) after.N.P = node;\n\t after.N = node;\n\t if (after.R) {\n\t after = after.R;\n\t while (after.L) after = after.L;\n\t after.L = node;\n\t } else {\n\t after.R = node;\n\t }\n\t parent = after;\n\t } else if (this._) {\n\t after = d3_geom_voronoiRedBlackFirst(this._);\n\t node.P = null;\n\t node.N = after;\n\t after.P = after.L = node;\n\t parent = after;\n\t } else {\n\t node.P = node.N = null;\n\t this._ = node;\n\t parent = null;\n\t }\n\t node.L = node.R = null;\n\t node.U = parent;\n\t node.C = true;\n\t after = node;\n\t while (parent && parent.C) {\n\t grandpa = parent.U;\n\t if (parent === grandpa.L) {\n\t uncle = grandpa.R;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.R) {\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n\t }\n\t } else {\n\t uncle = grandpa.L;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.L) {\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n\t }\n\t }\n\t parent = after.U;\n\t }\n\t this._.C = false;\n\t },\n\t remove: function(node) {\n\t if (node.N) node.N.P = node.P;\n\t if (node.P) node.P.N = node.N;\n\t node.N = node.P = null;\n\t var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n\t if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n\t if (parent) {\n\t if (parent.L === node) parent.L = next; else parent.R = next;\n\t } else {\n\t this._ = next;\n\t }\n\t if (left && right) {\n\t red = next.C;\n\t next.C = node.C;\n\t next.L = left;\n\t left.U = next;\n\t if (next !== right) {\n\t parent = next.U;\n\t next.U = node.U;\n\t node = next.R;\n\t parent.L = node;\n\t next.R = right;\n\t right.U = next;\n\t } else {\n\t next.U = parent;\n\t parent = next;\n\t node = next.R;\n\t }\n\t } else {\n\t red = node.C;\n\t node = next;\n\t }\n\t if (node) node.U = parent;\n\t if (red) return;\n\t if (node && node.C) {\n\t node.C = false;\n\t return;\n\t }\n\t do {\n\t if (node === this._) break;\n\t if (node === parent.L) {\n\t sibling = parent.R;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t sibling = parent.R;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.R || !sibling.R.C) {\n\t sibling.L.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, sibling);\n\t sibling = parent.R;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.R.C = false;\n\t d3_geom_voronoiRedBlackRotateLeft(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t } else {\n\t sibling = parent.L;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t sibling = parent.L;\n\t }\n\t if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n\t if (!sibling.L || !sibling.L.C) {\n\t sibling.R.C = false;\n\t sibling.C = true;\n\t d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n\t sibling = parent.L;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.L.C = false;\n\t d3_geom_voronoiRedBlackRotateRight(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t }\n\t sibling.C = true;\n\t node = parent;\n\t parent = parent.U;\n\t } while (!node.C);\n\t if (node) node.C = false;\n\t }\n\t };\n\t function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n\t var p = node, q = node.R, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.R = q.L;\n\t if (p.R) p.R.U = p;\n\t q.L = p;\n\t }\n\t function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n\t var p = node, q = node.L, parent = p.U;\n\t if (parent) {\n\t if (parent.L === p) parent.L = q; else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t q.U = parent;\n\t p.U = q;\n\t p.L = q.R;\n\t if (p.L) p.L.U = p;\n\t q.R = p;\n\t }\n\t function d3_geom_voronoiRedBlackFirst(node) {\n\t while (node.L) node = node.L;\n\t return node;\n\t }\n\t function d3_geom_voronoi(sites, bbox) {\n\t var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n\t d3_geom_voronoiEdges = [];\n\t d3_geom_voronoiCells = new Array(sites.length);\n\t d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n\t d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n\t while (true) {\n\t circle = d3_geom_voronoiFirstCircle;\n\t if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n\t if (site.x !== x0 || site.y !== y0) {\n\t d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n\t d3_geom_voronoiAddBeach(site);\n\t x0 = site.x, y0 = site.y;\n\t }\n\t site = sites.pop();\n\t } else if (circle) {\n\t d3_geom_voronoiRemoveBeach(circle.arc);\n\t } else {\n\t break;\n\t }\n\t }\n\t if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n\t var diagram = {\n\t cells: d3_geom_voronoiCells,\n\t edges: d3_geom_voronoiEdges\n\t };\n\t d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n\t return diagram;\n\t }\n\t function d3_geom_voronoiVertexOrder(a, b) {\n\t return b.y - a.y || b.x - a.x;\n\t }\n\t d3.geom.voronoi = function(points) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n\t if (points) return voronoi(points);\n\t function voronoi(data) {\n\t var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n\t d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n\t var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n\t var s = e.start();\n\t return [ s.x, s.y ];\n\t }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n\t polygon.point = data[i];\n\t });\n\t return polygons;\n\t }\n\t function sites(data) {\n\t return data.map(function(d, i) {\n\t return {\n\t x: Math.round(fx(d, i) / ε) * ε,\n\t y: Math.round(fy(d, i) / ε) * ε,\n\t i: i\n\t };\n\t });\n\t }\n\t voronoi.links = function(data) {\n\t return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n\t return edge.l && edge.r;\n\t }).map(function(edge) {\n\t return {\n\t source: data[edge.l.i],\n\t target: data[edge.r.i]\n\t };\n\t });\n\t };\n\t voronoi.triangles = function(data) {\n\t var triangles = [];\n\t d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n\t var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n\t while (++j < m) {\n\t e0 = e1;\n\t s0 = s1;\n\t e1 = edges[j].edge;\n\t s1 = e1.l === site ? e1.r : e1.l;\n\t if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n\t triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n\t }\n\t }\n\t });\n\t return triangles;\n\t };\n\t voronoi.x = function(_) {\n\t return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n\t };\n\t voronoi.y = function(_) {\n\t return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n\t };\n\t voronoi.clipExtent = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n\t clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n\t return voronoi;\n\t };\n\t voronoi.size = function(_) {\n\t if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n\t return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n\t };\n\t return voronoi;\n\t };\n\t var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n\t function d3_geom_voronoiTriangleArea(a, b, c) {\n\t return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n\t }\n\t d3.geom.delaunay = function(vertices) {\n\t return d3.geom.voronoi().triangles(vertices);\n\t };\n\t d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n\t if (compat = arguments.length) {\n\t x = d3_geom_quadtreeCompatX;\n\t y = d3_geom_quadtreeCompatY;\n\t if (compat === 3) {\n\t y2 = y1;\n\t x2 = x1;\n\t y1 = x1 = 0;\n\t }\n\t return quadtree(points);\n\t }\n\t function quadtree(data) {\n\t var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n\t if (x1 != null) {\n\t x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n\t } else {\n\t x2_ = y2_ = -(x1_ = y1_ = Infinity);\n\t xs = [], ys = [];\n\t n = data.length;\n\t if (compat) for (i = 0; i < n; ++i) {\n\t d = data[i];\n\t if (d.x < x1_) x1_ = d.x;\n\t if (d.y < y1_) y1_ = d.y;\n\t if (d.x > x2_) x2_ = d.x;\n\t if (d.y > y2_) y2_ = d.y;\n\t xs.push(d.x);\n\t ys.push(d.y);\n\t } else for (i = 0; i < n; ++i) {\n\t var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n\t if (x_ < x1_) x1_ = x_;\n\t if (y_ < y1_) y1_ = y_;\n\t if (x_ > x2_) x2_ = x_;\n\t if (y_ > y2_) y2_ = y_;\n\t xs.push(x_);\n\t ys.push(y_);\n\t }\n\t }\n\t var dx = x2_ - x1_, dy = y2_ - y1_;\n\t if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n\t function insert(n, d, x, y, x1, y1, x2, y2) {\n\t if (isNaN(x) || isNaN(y)) return;\n\t if (n.leaf) {\n\t var nx = n.x, ny = n.y;\n\t if (nx != null) {\n\t if (abs(nx - x) + abs(ny - y) < .01) {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t } else {\n\t var nPoint = n.point;\n\t n.x = n.y = n.point = null;\n\t insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t } else {\n\t n.x = x, n.y = y, n.point = d;\n\t }\n\t } else {\n\t insertChild(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t }\n\t function insertChild(n, d, x, y, x1, y1, x2, y2) {\n\t var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n\t n.leaf = false;\n\t n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n\t if (right) x1 = xm; else x2 = xm;\n\t if (below) y1 = ym; else y2 = ym;\n\t insert(n, d, x, y, x1, y1, x2, y2);\n\t }\n\t var root = d3_geom_quadtreeNode();\n\t root.add = function(d) {\n\t insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n\t };\n\t root.visit = function(f) {\n\t d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n\t };\n\t root.find = function(point) {\n\t return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n\t };\n\t i = -1;\n\t if (x1 == null) {\n\t while (++i < n) {\n\t insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n\t }\n\t --i;\n\t } else data.forEach(root.add);\n\t xs = ys = data = d = null;\n\t return root;\n\t }\n\t quadtree.x = function(_) {\n\t return arguments.length ? (x = _, quadtree) : x;\n\t };\n\t quadtree.y = function(_) {\n\t return arguments.length ? (y = _, quadtree) : y;\n\t };\n\t quadtree.extent = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n\t y2 = +_[1][1];\n\t return quadtree;\n\t };\n\t quadtree.size = function(_) {\n\t if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n\t if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n\t return quadtree;\n\t };\n\t return quadtree;\n\t };\n\t function d3_geom_quadtreeCompatX(d) {\n\t return d.x;\n\t }\n\t function d3_geom_quadtreeCompatY(d) {\n\t return d.y;\n\t }\n\t function d3_geom_quadtreeNode() {\n\t return {\n\t leaf: true,\n\t nodes: [],\n\t point: null,\n\t x: null,\n\t y: null\n\t };\n\t }\n\t function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n\t if (!f(node, x1, y1, x2, y2)) {\n\t var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n\t if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n\t if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n\t if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n\t if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n\t }\n\t }\n\t function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n\t var minDistance2 = Infinity, closestPoint;\n\t (function find(node, x1, y1, x2, y2) {\n\t if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n\t if (point = node.point) {\n\t var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n\t if (distance2 < minDistance2) {\n\t var distance = Math.sqrt(minDistance2 = distance2);\n\t x0 = x - distance, y0 = y - distance;\n\t x3 = x + distance, y3 = y + distance;\n\t closestPoint = point;\n\t }\n\t }\n\t var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n\t for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n\t if (node = children[i & 3]) switch (i & 3) {\n\t case 0:\n\t find(node, x1, y1, xm, ym);\n\t break;\n\t\n\t case 1:\n\t find(node, xm, y1, x2, ym);\n\t break;\n\t\n\t case 2:\n\t find(node, x1, ym, xm, y2);\n\t break;\n\t\n\t case 3:\n\t find(node, xm, ym, x2, y2);\n\t break;\n\t }\n\t }\n\t })(root, x0, y0, x3, y3);\n\t return closestPoint;\n\t }\n\t d3.interpolateRgb = d3_interpolateRgb;\n\t function d3_interpolateRgb(a, b) {\n\t a = d3.rgb(a);\n\t b = d3.rgb(b);\n\t var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n\t return function(t) {\n\t return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n\t };\n\t }\n\t d3.interpolateObject = d3_interpolateObject;\n\t function d3_interpolateObject(a, b) {\n\t var i = {}, c = {}, k;\n\t for (k in a) {\n\t if (k in b) {\n\t i[k] = d3_interpolate(a[k], b[k]);\n\t } else {\n\t c[k] = a[k];\n\t }\n\t }\n\t for (k in b) {\n\t if (!(k in a)) {\n\t c[k] = b[k];\n\t }\n\t }\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t }\n\t d3.interpolateNumber = d3_interpolateNumber;\n\t function d3_interpolateNumber(a, b) {\n\t a = +a, b = +b;\n\t return function(t) {\n\t return a * (1 - t) + b * t;\n\t };\n\t }\n\t d3.interpolateString = d3_interpolateString;\n\t function d3_interpolateString(a, b) {\n\t var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n\t a = a + \"\", b = b + \"\";\n\t while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n\t if ((bs = bm.index) > bi) {\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) {\n\t if (s[i]) s[i] += bm; else s[++i] = bm;\n\t } else {\n\t s[++i] = null;\n\t q.push({\n\t i: i,\n\t x: d3_interpolateNumber(am, bm)\n\t });\n\t }\n\t bi = d3_interpolate_numberB.lastIndex;\n\t }\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; else s[++i] = bs;\n\t }\n\t return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n\t return b(t) + \"\";\n\t }) : function() {\n\t return b;\n\t } : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t }\n\t var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n\t d3.interpolate = d3_interpolate;\n\t function d3_interpolate(a, b) {\n\t var i = d3.interpolators.length, f;\n\t while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n\t return f;\n\t }\n\t d3.interpolators = [ function(a, b) {\n\t var t = typeof b;\n\t return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n\t } ];\n\t d3.interpolateArray = d3_interpolateArray;\n\t function d3_interpolateArray(a, b) {\n\t var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n\t for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n\t for (;i < na; ++i) c[i] = a[i];\n\t for (;i < nb; ++i) c[i] = b[i];\n\t return function(t) {\n\t for (i = 0; i < n0; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t }\n\t var d3_ease_default = function() {\n\t return d3_identity;\n\t };\n\t var d3_ease = d3.map({\n\t linear: d3_ease_default,\n\t poly: d3_ease_poly,\n\t quad: function() {\n\t return d3_ease_quad;\n\t },\n\t cubic: function() {\n\t return d3_ease_cubic;\n\t },\n\t sin: function() {\n\t return d3_ease_sin;\n\t },\n\t exp: function() {\n\t return d3_ease_exp;\n\t },\n\t circle: function() {\n\t return d3_ease_circle;\n\t },\n\t elastic: d3_ease_elastic,\n\t back: d3_ease_back,\n\t bounce: function() {\n\t return d3_ease_bounce;\n\t }\n\t });\n\t var d3_ease_mode = d3.map({\n\t \"in\": d3_identity,\n\t out: d3_ease_reverse,\n\t \"in-out\": d3_ease_reflect,\n\t \"out-in\": function(f) {\n\t return d3_ease_reflect(d3_ease_reverse(f));\n\t }\n\t });\n\t d3.ease = function(name) {\n\t var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n\t t = d3_ease.get(t) || d3_ease_default;\n\t m = d3_ease_mode.get(m) || d3_identity;\n\t return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n\t };\n\t function d3_ease_clamp(f) {\n\t return function(t) {\n\t return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n\t };\n\t }\n\t function d3_ease_reverse(f) {\n\t return function(t) {\n\t return 1 - f(1 - t);\n\t };\n\t }\n\t function d3_ease_reflect(f) {\n\t return function(t) {\n\t return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n\t };\n\t }\n\t function d3_ease_quad(t) {\n\t return t * t;\n\t }\n\t function d3_ease_cubic(t) {\n\t return t * t * t;\n\t }\n\t function d3_ease_cubicInOut(t) {\n\t if (t <= 0) return 0;\n\t if (t >= 1) return 1;\n\t var t2 = t * t, t3 = t2 * t;\n\t return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n\t }\n\t function d3_ease_poly(e) {\n\t return function(t) {\n\t return Math.pow(t, e);\n\t };\n\t }\n\t function d3_ease_sin(t) {\n\t return 1 - Math.cos(t * halfπ);\n\t }\n\t function d3_ease_exp(t) {\n\t return Math.pow(2, 10 * (t - 1));\n\t }\n\t function d3_ease_circle(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t }\n\t function d3_ease_elastic(a, p) {\n\t var s;\n\t if (arguments.length < 2) p = .45;\n\t if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n\t return function(t) {\n\t return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n\t };\n\t }\n\t function d3_ease_back(s) {\n\t if (!s) s = 1.70158;\n\t return function(t) {\n\t return t * t * ((s + 1) * t - s);\n\t };\n\t }\n\t function d3_ease_bounce(t) {\n\t return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n\t }\n\t d3.interpolateHcl = d3_interpolateHcl;\n\t function d3_interpolateHcl(a, b) {\n\t a = d3.hcl(a);\n\t b = d3.hcl(b);\n\t var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n\t if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateHsl = d3_interpolateHsl;\n\t function d3_interpolateHsl(a, b) {\n\t a = d3.hsl(a);\n\t b = d3.hsl(b);\n\t var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n\t if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n\t if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n\t return function(t) {\n\t return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n\t };\n\t }\n\t d3.interpolateLab = d3_interpolateLab;\n\t function d3_interpolateLab(a, b) {\n\t a = d3.lab(a);\n\t b = d3.lab(b);\n\t var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n\t return function(t) {\n\t return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n\t };\n\t }\n\t d3.interpolateRound = d3_interpolateRound;\n\t function d3_interpolateRound(a, b) {\n\t b -= a;\n\t return function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t }\n\t d3.transform = function(string) {\n\t var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n\t return (d3.transform = function(string) {\n\t if (string != null) {\n\t g.setAttribute(\"transform\", string);\n\t var t = g.transform.baseVal.consolidate();\n\t }\n\t return new d3_transform(t ? t.matrix : d3_transformIdentity);\n\t })(string);\n\t };\n\t function d3_transform(m) {\n\t var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n\t if (r0[0] * r1[1] < r1[0] * r0[1]) {\n\t r0[0] *= -1;\n\t r0[1] *= -1;\n\t kx *= -1;\n\t kz *= -1;\n\t }\n\t this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n\t this.translate = [ m.e, m.f ];\n\t this.scale = [ kx, ky ];\n\t this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n\t }\n\t d3_transform.prototype.toString = function() {\n\t return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n\t };\n\t function d3_transformDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1];\n\t }\n\t function d3_transformNormalize(a) {\n\t var k = Math.sqrt(d3_transformDot(a, a));\n\t if (k) {\n\t a[0] /= k;\n\t a[1] /= k;\n\t }\n\t return k;\n\t }\n\t function d3_transformCombine(a, b, k) {\n\t a[0] += k * b[0];\n\t a[1] += k * b[1];\n\t return a;\n\t }\n\t var d3_transformIdentity = {\n\t a: 1,\n\t b: 0,\n\t c: 0,\n\t d: 1,\n\t e: 0,\n\t f: 0\n\t };\n\t d3.interpolateTransform = d3_interpolateTransform;\n\t function d3_interpolateTransformPop(s) {\n\t return s.length ? s.pop() + \",\" : \"\";\n\t }\n\t function d3_interpolateTranslate(ta, tb, s, q) {\n\t if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n\t var i = s.push(\"translate(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ta[0], tb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ta[1], tb[1])\n\t });\n\t } else if (tb[0] || tb[1]) {\n\t s.push(\"translate(\" + tb + \")\");\n\t }\n\t }\n\t function d3_interpolateRotate(ra, rb, s, q) {\n\t if (ra !== rb) {\n\t if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(ra, rb)\n\t });\n\t } else if (rb) {\n\t s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n\t }\n\t }\n\t function d3_interpolateSkew(wa, wb, s, q) {\n\t if (wa !== wb) {\n\t q.push({\n\t i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n\t x: d3_interpolateNumber(wa, wb)\n\t });\n\t } else if (wb) {\n\t s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n\t }\n\t }\n\t function d3_interpolateScale(ka, kb, s, q) {\n\t if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n\t var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({\n\t i: i - 4,\n\t x: d3_interpolateNumber(ka[0], kb[0])\n\t }, {\n\t i: i - 2,\n\t x: d3_interpolateNumber(ka[1], kb[1])\n\t });\n\t } else if (kb[0] !== 1 || kb[1] !== 1) {\n\t s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n\t }\n\t }\n\t function d3_interpolateTransform(a, b) {\n\t var s = [], q = [];\n\t a = d3.transform(a), b = d3.transform(b);\n\t d3_interpolateTranslate(a.translate, b.translate, s, q);\n\t d3_interpolateRotate(a.rotate, b.rotate, s, q);\n\t d3_interpolateSkew(a.skew, b.skew, s, q);\n\t d3_interpolateScale(a.scale, b.scale, s, q);\n\t a = b = null;\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t }\n\t function d3_uninterpolateNumber(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return (x - a) / b;\n\t };\n\t }\n\t function d3_uninterpolateClamp(a, b) {\n\t b = (b -= a = +a) || 1 / b;\n\t return function(x) {\n\t return Math.max(0, Math.min(1, (x - a) / b));\n\t };\n\t }\n\t d3.layout = {};\n\t d3.layout.bundle = function() {\n\t return function(links) {\n\t var paths = [], i = -1, n = links.length;\n\t while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n\t return paths;\n\t };\n\t };\n\t function d3_layout_bundlePath(link) {\n\t var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n\t while (start !== lca) {\n\t start = start.parent;\n\t points.push(start);\n\t }\n\t var k = points.length;\n\t while (end !== lca) {\n\t points.splice(k, 0, end);\n\t end = end.parent;\n\t }\n\t return points;\n\t }\n\t function d3_layout_bundleAncestors(node) {\n\t var ancestors = [], parent = node.parent;\n\t while (parent != null) {\n\t ancestors.push(node);\n\t node = parent;\n\t parent = parent.parent;\n\t }\n\t ancestors.push(node);\n\t return ancestors;\n\t }\n\t function d3_layout_bundleLeastCommonAncestor(a, b) {\n\t if (a === b) return a;\n\t var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n\t while (aNode === bNode) {\n\t sharedNode = aNode;\n\t aNode = aNodes.pop();\n\t bNode = bNodes.pop();\n\t }\n\t return sharedNode;\n\t }\n\t d3.layout.chord = function() {\n\t var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n\t function relayout() {\n\t var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n\t chords = [];\n\t groups = [];\n\t k = 0, i = -1;\n\t while (++i < n) {\n\t x = 0, j = -1;\n\t while (++j < n) {\n\t x += matrix[i][j];\n\t }\n\t groupSums.push(x);\n\t subgroupIndex.push(d3.range(n));\n\t k += x;\n\t }\n\t if (sortGroups) {\n\t groupIndex.sort(function(a, b) {\n\t return sortGroups(groupSums[a], groupSums[b]);\n\t });\n\t }\n\t if (sortSubgroups) {\n\t subgroupIndex.forEach(function(d, i) {\n\t d.sort(function(a, b) {\n\t return sortSubgroups(matrix[i][a], matrix[i][b]);\n\t });\n\t });\n\t }\n\t k = (τ - padding * n) / k;\n\t x = 0, i = -1;\n\t while (++i < n) {\n\t x0 = x, j = -1;\n\t while (++j < n) {\n\t var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n\t subgroups[di + \"-\" + dj] = {\n\t index: di,\n\t subindex: dj,\n\t startAngle: a0,\n\t endAngle: a1,\n\t value: v\n\t };\n\t }\n\t groups[di] = {\n\t index: di,\n\t startAngle: x0,\n\t endAngle: x,\n\t value: groupSums[di]\n\t };\n\t x += padding;\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t j = i - 1;\n\t while (++j < n) {\n\t var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n\t if (source.value || target.value) {\n\t chords.push(source.value < target.value ? {\n\t source: target,\n\t target: source\n\t } : {\n\t source: source,\n\t target: target\n\t });\n\t }\n\t }\n\t }\n\t if (sortChords) resort();\n\t }\n\t function resort() {\n\t chords.sort(function(a, b) {\n\t return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n\t });\n\t }\n\t chord.matrix = function(x) {\n\t if (!arguments.length) return matrix;\n\t n = (matrix = x) && matrix.length;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t padding = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortGroups = function(x) {\n\t if (!arguments.length) return sortGroups;\n\t sortGroups = x;\n\t chords = groups = null;\n\t return chord;\n\t };\n\t chord.sortSubgroups = function(x) {\n\t if (!arguments.length) return sortSubgroups;\n\t sortSubgroups = x;\n\t chords = null;\n\t return chord;\n\t };\n\t chord.sortChords = function(x) {\n\t if (!arguments.length) return sortChords;\n\t sortChords = x;\n\t if (chords) resort();\n\t return chord;\n\t };\n\t chord.chords = function() {\n\t if (!chords) relayout();\n\t return chords;\n\t };\n\t chord.groups = function() {\n\t if (!groups) relayout();\n\t return groups;\n\t };\n\t return chord;\n\t };\n\t d3.layout.force = function() {\n\t var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n\t function repulse(node) {\n\t return function(quad, x1, _, x2) {\n\t if (quad.point !== node) {\n\t var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n\t if (dw * dw / theta2 < dn) {\n\t if (dn < chargeDistance2) {\n\t var k = quad.charge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t return true;\n\t }\n\t if (quad.point && dn && dn < chargeDistance2) {\n\t var k = quad.pointCharge / dn;\n\t node.px -= dx * k;\n\t node.py -= dy * k;\n\t }\n\t }\n\t return !quad.charge;\n\t };\n\t }\n\t force.tick = function() {\n\t if ((alpha *= .99) < .005) {\n\t timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t return true;\n\t }\n\t var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t s = o.source;\n\t t = o.target;\n\t x = t.x - s.x;\n\t y = t.y - s.y;\n\t if (l = x * x + y * y) {\n\t l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n\t x *= l;\n\t y *= l;\n\t t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n\t t.y -= y * k;\n\t s.x += x * (k = 1 - k);\n\t s.y += y * k;\n\t }\n\t }\n\t if (k = alpha * gravity) {\n\t x = size[0] / 2;\n\t y = size[1] / 2;\n\t i = -1;\n\t if (k) while (++i < n) {\n\t o = nodes[i];\n\t o.x += (x - o.x) * k;\n\t o.y += (y - o.y) * k;\n\t }\n\t }\n\t if (charge) {\n\t d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n\t i = -1;\n\t while (++i < n) {\n\t if (!(o = nodes[i]).fixed) {\n\t q.visit(repulse(o));\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i < n) {\n\t o = nodes[i];\n\t if (o.fixed) {\n\t o.x = o.px;\n\t o.y = o.py;\n\t } else {\n\t o.x -= (o.px - (o.px = o.x)) * friction;\n\t o.y -= (o.py - (o.py = o.y)) * friction;\n\t }\n\t }\n\t event.tick({\n\t type: \"tick\",\n\t alpha: alpha\n\t });\n\t };\n\t force.nodes = function(x) {\n\t if (!arguments.length) return nodes;\n\t nodes = x;\n\t return force;\n\t };\n\t force.links = function(x) {\n\t if (!arguments.length) return links;\n\t links = x;\n\t return force;\n\t };\n\t force.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return force;\n\t };\n\t force.linkDistance = function(x) {\n\t if (!arguments.length) return linkDistance;\n\t linkDistance = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.distance = force.linkDistance;\n\t force.linkStrength = function(x) {\n\t if (!arguments.length) return linkStrength;\n\t linkStrength = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.friction = function(x) {\n\t if (!arguments.length) return friction;\n\t friction = +x;\n\t return force;\n\t };\n\t force.charge = function(x) {\n\t if (!arguments.length) return charge;\n\t charge = typeof x === \"function\" ? x : +x;\n\t return force;\n\t };\n\t force.chargeDistance = function(x) {\n\t if (!arguments.length) return Math.sqrt(chargeDistance2);\n\t chargeDistance2 = x * x;\n\t return force;\n\t };\n\t force.gravity = function(x) {\n\t if (!arguments.length) return gravity;\n\t gravity = +x;\n\t return force;\n\t };\n\t force.theta = function(x) {\n\t if (!arguments.length) return Math.sqrt(theta2);\n\t theta2 = x * x;\n\t return force;\n\t };\n\t force.alpha = function(x) {\n\t if (!arguments.length) return alpha;\n\t x = +x;\n\t if (alpha) {\n\t if (x > 0) {\n\t alpha = x;\n\t } else {\n\t timer.c = null, timer.t = NaN, timer = null;\n\t event.end({\n\t type: \"end\",\n\t alpha: alpha = 0\n\t });\n\t }\n\t } else if (x > 0) {\n\t event.start({\n\t type: \"start\",\n\t alpha: alpha = x\n\t });\n\t timer = d3_timer(force.tick);\n\t }\n\t return force;\n\t };\n\t force.start = function() {\n\t var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n\t for (i = 0; i < n; ++i) {\n\t (o = nodes[i]).index = i;\n\t o.weight = 0;\n\t }\n\t for (i = 0; i < m; ++i) {\n\t o = links[i];\n\t if (typeof o.source == \"number\") o.source = nodes[o.source];\n\t if (typeof o.target == \"number\") o.target = nodes[o.target];\n\t ++o.source.weight;\n\t ++o.target.weight;\n\t }\n\t for (i = 0; i < n; ++i) {\n\t o = nodes[i];\n\t if (isNaN(o.x)) o.x = position(\"x\", w);\n\t if (isNaN(o.y)) o.y = position(\"y\", h);\n\t if (isNaN(o.px)) o.px = o.x;\n\t if (isNaN(o.py)) o.py = o.y;\n\t }\n\t distances = [];\n\t if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n\t strengths = [];\n\t if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n\t charges = [];\n\t if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n\t function position(dimension, size) {\n\t if (!neighbors) {\n\t neighbors = new Array(n);\n\t for (j = 0; j < n; ++j) {\n\t neighbors[j] = [];\n\t }\n\t for (j = 0; j < m; ++j) {\n\t var o = links[j];\n\t neighbors[o.source.index].push(o.target);\n\t neighbors[o.target.index].push(o.source);\n\t }\n\t }\n\t var candidates = neighbors[i], j = -1, l = candidates.length, x;\n\t while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n\t return Math.random() * size;\n\t }\n\t return force.resume();\n\t };\n\t force.resume = function() {\n\t return force.alpha(.1);\n\t };\n\t force.stop = function() {\n\t return force.alpha(0);\n\t };\n\t force.drag = function() {\n\t if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n\t if (!arguments.length) return drag;\n\t this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n\t };\n\t function dragmove(d) {\n\t d.px = d3.event.x, d.py = d3.event.y;\n\t force.resume();\n\t }\n\t return d3.rebind(force, event, \"on\");\n\t };\n\t function d3_layout_forceDragstart(d) {\n\t d.fixed |= 2;\n\t }\n\t function d3_layout_forceDragend(d) {\n\t d.fixed &= ~6;\n\t }\n\t function d3_layout_forceMouseover(d) {\n\t d.fixed |= 4;\n\t d.px = d.x, d.py = d.y;\n\t }\n\t function d3_layout_forceMouseout(d) {\n\t d.fixed &= ~4;\n\t }\n\t function d3_layout_forceAccumulate(quad, alpha, charges) {\n\t var cx = 0, cy = 0;\n\t quad.charge = 0;\n\t if (!quad.leaf) {\n\t var nodes = quad.nodes, n = nodes.length, i = -1, c;\n\t while (++i < n) {\n\t c = nodes[i];\n\t if (c == null) continue;\n\t d3_layout_forceAccumulate(c, alpha, charges);\n\t quad.charge += c.charge;\n\t cx += c.charge * c.cx;\n\t cy += c.charge * c.cy;\n\t }\n\t }\n\t if (quad.point) {\n\t if (!quad.leaf) {\n\t quad.point.x += Math.random() - .5;\n\t quad.point.y += Math.random() - .5;\n\t }\n\t var k = alpha * charges[quad.point.index];\n\t quad.charge += quad.pointCharge = k;\n\t cx += k * quad.point.x;\n\t cy += k * quad.point.y;\n\t }\n\t quad.cx = cx / quad.charge;\n\t quad.cy = cy / quad.charge;\n\t }\n\t var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n\t d3.layout.hierarchy = function() {\n\t var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n\t function hierarchy(root) {\n\t var stack = [ root ], nodes = [], node;\n\t root.depth = 0;\n\t while ((node = stack.pop()) != null) {\n\t nodes.push(node);\n\t if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n\t var n, childs, child;\n\t while (--n >= 0) {\n\t stack.push(child = childs[n]);\n\t child.parent = node;\n\t child.depth = node.depth + 1;\n\t }\n\t if (value) node.value = 0;\n\t node.children = childs;\n\t } else {\n\t if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t delete node.children;\n\t }\n\t }\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var childs, parent;\n\t if (sort && (childs = node.children)) childs.sort(sort);\n\t if (value && (parent = node.parent)) parent.value += node.value;\n\t });\n\t return nodes;\n\t }\n\t hierarchy.sort = function(x) {\n\t if (!arguments.length) return sort;\n\t sort = x;\n\t return hierarchy;\n\t };\n\t hierarchy.children = function(x) {\n\t if (!arguments.length) return children;\n\t children = x;\n\t return hierarchy;\n\t };\n\t hierarchy.value = function(x) {\n\t if (!arguments.length) return value;\n\t value = x;\n\t return hierarchy;\n\t };\n\t hierarchy.revalue = function(root) {\n\t if (value) {\n\t d3_layout_hierarchyVisitBefore(root, function(node) {\n\t if (node.children) node.value = 0;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var parent;\n\t if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n\t if (parent = node.parent) parent.value += node.value;\n\t });\n\t }\n\t return root;\n\t };\n\t return hierarchy;\n\t };\n\t function d3_layout_hierarchyRebind(object, hierarchy) {\n\t d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n\t object.nodes = object;\n\t object.links = d3_layout_hierarchyLinks;\n\t return object;\n\t }\n\t function d3_layout_hierarchyVisitBefore(node, callback) {\n\t var nodes = [ node ];\n\t while ((node = nodes.pop()) != null) {\n\t callback(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var n, children;\n\t while (--n >= 0) nodes.push(children[n]);\n\t }\n\t }\n\t }\n\t function d3_layout_hierarchyVisitAfter(node, callback) {\n\t var nodes = [ node ], nodes2 = [];\n\t while ((node = nodes.pop()) != null) {\n\t nodes2.push(node);\n\t if ((children = node.children) && (n = children.length)) {\n\t var i = -1, n, children;\n\t while (++i < n) nodes.push(children[i]);\n\t }\n\t }\n\t while ((node = nodes2.pop()) != null) {\n\t callback(node);\n\t }\n\t }\n\t function d3_layout_hierarchyChildren(d) {\n\t return d.children;\n\t }\n\t function d3_layout_hierarchyValue(d) {\n\t return d.value;\n\t }\n\t function d3_layout_hierarchySort(a, b) {\n\t return b.value - a.value;\n\t }\n\t function d3_layout_hierarchyLinks(nodes) {\n\t return d3.merge(nodes.map(function(parent) {\n\t return (parent.children || []).map(function(child) {\n\t return {\n\t source: parent,\n\t target: child\n\t };\n\t });\n\t }));\n\t }\n\t d3.layout.partition = function() {\n\t var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n\t function position(node, x, dx, dy) {\n\t var children = node.children;\n\t node.x = x;\n\t node.y = node.depth * dy;\n\t node.dx = dx;\n\t node.dy = dy;\n\t if (children && (n = children.length)) {\n\t var i = -1, n, c, d;\n\t dx = node.value ? dx / node.value : 0;\n\t while (++i < n) {\n\t position(c = children[i], x, d = c.value * dx, dy);\n\t x += d;\n\t }\n\t }\n\t }\n\t function depth(node) {\n\t var children = node.children, d = 0;\n\t if (children && (n = children.length)) {\n\t var i = -1, n;\n\t while (++i < n) d = Math.max(d, depth(children[i]));\n\t }\n\t return 1 + d;\n\t }\n\t function partition(d, i) {\n\t var nodes = hierarchy.call(this, d, i);\n\t position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n\t return nodes;\n\t }\n\t partition.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return partition;\n\t };\n\t return d3_layout_hierarchyRebind(partition, hierarchy);\n\t };\n\t d3.layout.pie = function() {\n\t var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n\t function pie(data) {\n\t var n = data.length, values = data.map(function(d, i) {\n\t return +value.call(pie, d, i);\n\t }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n\t if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n\t return values[j] - values[i];\n\t } : function(i, j) {\n\t return sort(data[i], data[j]);\n\t });\n\t index.forEach(function(i) {\n\t arcs[i] = {\n\t data: data[i],\n\t value: v = values[i],\n\t startAngle: a,\n\t endAngle: a += v * k + pa,\n\t padAngle: p\n\t };\n\t });\n\t return arcs;\n\t }\n\t pie.value = function(_) {\n\t if (!arguments.length) return value;\n\t value = _;\n\t return pie;\n\t };\n\t pie.sort = function(_) {\n\t if (!arguments.length) return sort;\n\t sort = _;\n\t return pie;\n\t };\n\t pie.startAngle = function(_) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = _;\n\t return pie;\n\t };\n\t pie.endAngle = function(_) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = _;\n\t return pie;\n\t };\n\t pie.padAngle = function(_) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = _;\n\t return pie;\n\t };\n\t return pie;\n\t };\n\t var d3_layout_pieSortByValue = {};\n\t d3.layout.stack = function() {\n\t var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n\t function stack(data, index) {\n\t if (!(n = data.length)) return data;\n\t var series = data.map(function(d, i) {\n\t return values.call(stack, d, i);\n\t });\n\t var points = series.map(function(d) {\n\t return d.map(function(v, i) {\n\t return [ x.call(stack, v, i), y.call(stack, v, i) ];\n\t });\n\t });\n\t var orders = order.call(stack, points, index);\n\t series = d3.permute(series, orders);\n\t points = d3.permute(points, orders);\n\t var offsets = offset.call(stack, points, index);\n\t var m = series[0].length, n, i, j, o;\n\t for (j = 0; j < m; ++j) {\n\t out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n\t for (i = 1; i < n; ++i) {\n\t out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n\t }\n\t }\n\t return data;\n\t }\n\t stack.values = function(x) {\n\t if (!arguments.length) return values;\n\t values = x;\n\t return stack;\n\t };\n\t stack.order = function(x) {\n\t if (!arguments.length) return order;\n\t order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n\t return stack;\n\t };\n\t stack.offset = function(x) {\n\t if (!arguments.length) return offset;\n\t offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n\t return stack;\n\t };\n\t stack.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t return stack;\n\t };\n\t stack.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t return stack;\n\t };\n\t stack.out = function(z) {\n\t if (!arguments.length) return out;\n\t out = z;\n\t return stack;\n\t };\n\t return stack;\n\t };\n\t function d3_layout_stackX(d) {\n\t return d.x;\n\t }\n\t function d3_layout_stackY(d) {\n\t return d.y;\n\t }\n\t function d3_layout_stackOut(d, y0, y) {\n\t d.y0 = y0;\n\t d.y = y;\n\t }\n\t var d3_layout_stackOrders = d3.map({\n\t \"inside-out\": function(data) {\n\t var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n\t return max[a] - max[b];\n\t }), top = 0, bottom = 0, tops = [], bottoms = [];\n\t for (i = 0; i < n; ++i) {\n\t j = index[i];\n\t if (top < bottom) {\n\t top += sums[j];\n\t tops.push(j);\n\t } else {\n\t bottom += sums[j];\n\t bottoms.push(j);\n\t }\n\t }\n\t return bottoms.reverse().concat(tops);\n\t },\n\t reverse: function(data) {\n\t return d3.range(data.length).reverse();\n\t },\n\t \"default\": d3_layout_stackOrderDefault\n\t });\n\t var d3_layout_stackOffsets = d3.map({\n\t silhouette: function(data) {\n\t var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o > max) max = o;\n\t sums.push(o);\n\t }\n\t for (j = 0; j < m; ++j) {\n\t y0[j] = (max - sums[j]) / 2;\n\t }\n\t return y0;\n\t },\n\t wiggle: function(data) {\n\t var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n\t y0[0] = o = o0 = 0;\n\t for (j = 1; j < m; ++j) {\n\t for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n\t for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n\t for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n\t s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n\t }\n\t s2 += s3 * data[i][j][1];\n\t }\n\t y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n\t if (o < o0) o0 = o;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] -= o0;\n\t return y0;\n\t },\n\t expand: function(data) {\n\t var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n\t for (j = 0; j < m; ++j) {\n\t for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n\t if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n\t }\n\t for (j = 0; j < m; ++j) y0[j] = 0;\n\t return y0;\n\t },\n\t zero: d3_layout_stackOffsetZero\n\t });\n\t function d3_layout_stackOrderDefault(data) {\n\t return d3.range(data.length);\n\t }\n\t function d3_layout_stackOffsetZero(data) {\n\t var j = -1, m = data[0].length, y0 = [];\n\t while (++j < m) y0[j] = 0;\n\t return y0;\n\t }\n\t function d3_layout_stackMaxIndex(array) {\n\t var i = 1, j = 0, v = array[0][1], k, n = array.length;\n\t for (;i < n; ++i) {\n\t if ((k = array[i][1]) > v) {\n\t j = i;\n\t v = k;\n\t }\n\t }\n\t return j;\n\t }\n\t function d3_layout_stackReduceSum(d) {\n\t return d.reduce(d3_layout_stackSum, 0);\n\t }\n\t function d3_layout_stackSum(p, d) {\n\t return p + d[1];\n\t }\n\t d3.layout.histogram = function() {\n\t var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n\t function histogram(data, i) {\n\t var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n\t while (++i < m) {\n\t bin = bins[i] = [];\n\t bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n\t bin.y = 0;\n\t }\n\t if (m > 0) {\n\t i = -1;\n\t while (++i < n) {\n\t x = values[i];\n\t if (x >= range[0] && x <= range[1]) {\n\t bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n\t bin.y += k;\n\t bin.push(data[i]);\n\t }\n\t }\n\t }\n\t return bins;\n\t }\n\t histogram.value = function(x) {\n\t if (!arguments.length) return valuer;\n\t valuer = x;\n\t return histogram;\n\t };\n\t histogram.range = function(x) {\n\t if (!arguments.length) return ranger;\n\t ranger = d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.bins = function(x) {\n\t if (!arguments.length) return binner;\n\t binner = typeof x === \"number\" ? function(range) {\n\t return d3_layout_histogramBinFixed(range, x);\n\t } : d3_functor(x);\n\t return histogram;\n\t };\n\t histogram.frequency = function(x) {\n\t if (!arguments.length) return frequency;\n\t frequency = !!x;\n\t return histogram;\n\t };\n\t return histogram;\n\t };\n\t function d3_layout_histogramBinSturges(range, values) {\n\t return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n\t }\n\t function d3_layout_histogramBinFixed(range, n) {\n\t var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n\t while (++x <= n) f[x] = m * x + b;\n\t return f;\n\t }\n\t function d3_layout_histogramRange(values) {\n\t return [ d3.min(values), d3.max(values) ];\n\t }\n\t d3.layout.pack = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n\t function pack(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n\t return radius;\n\t };\n\t root.x = root.y = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r = +r(d.value);\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t if (padding) {\n\t var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r += dr;\n\t });\n\t d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\t d3_layout_hierarchyVisitAfter(root, function(d) {\n\t d.r -= dr;\n\t });\n\t }\n\t d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n\t return nodes;\n\t }\n\t pack.size = function(_) {\n\t if (!arguments.length) return size;\n\t size = _;\n\t return pack;\n\t };\n\t pack.radius = function(_) {\n\t if (!arguments.length) return radius;\n\t radius = _ == null || typeof _ === \"function\" ? _ : +_;\n\t return pack;\n\t };\n\t pack.padding = function(_) {\n\t if (!arguments.length) return padding;\n\t padding = +_;\n\t return pack;\n\t };\n\t return d3_layout_hierarchyRebind(pack, hierarchy);\n\t };\n\t function d3_layout_packSort(a, b) {\n\t return a.value - b.value;\n\t }\n\t function d3_layout_packInsert(a, b) {\n\t var c = a._pack_next;\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t b._pack_next = c;\n\t c._pack_prev = b;\n\t }\n\t function d3_layout_packSplice(a, b) {\n\t a._pack_next = b;\n\t b._pack_prev = a;\n\t }\n\t function d3_layout_packIntersects(a, b) {\n\t var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n\t return .999 * dr * dr > dx * dx + dy * dy;\n\t }\n\t function d3_layout_packSiblings(node) {\n\t if (!(nodes = node.children) || !(n = nodes.length)) return;\n\t var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n\t function bound(node) {\n\t xMin = Math.min(node.x - node.r, xMin);\n\t xMax = Math.max(node.x + node.r, xMax);\n\t yMin = Math.min(node.y - node.r, yMin);\n\t yMax = Math.max(node.y + node.r, yMax);\n\t }\n\t nodes.forEach(d3_layout_packLink);\n\t a = nodes[0];\n\t a.x = -a.r;\n\t a.y = 0;\n\t bound(a);\n\t if (n > 1) {\n\t b = nodes[1];\n\t b.x = b.r;\n\t b.y = 0;\n\t bound(b);\n\t if (n > 2) {\n\t c = nodes[2];\n\t d3_layout_packPlace(a, b, c);\n\t bound(c);\n\t d3_layout_packInsert(a, c);\n\t a._pack_prev = c;\n\t d3_layout_packInsert(c, b);\n\t b = a._pack_next;\n\t for (i = 3; i < n; i++) {\n\t d3_layout_packPlace(a, b, c = nodes[i]);\n\t var isect = 0, s1 = 1, s2 = 1;\n\t for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n\t if (d3_layout_packIntersects(j, c)) {\n\t isect = 1;\n\t break;\n\t }\n\t }\n\t if (isect == 1) {\n\t for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n\t if (d3_layout_packIntersects(k, c)) {\n\t break;\n\t }\n\t }\n\t }\n\t if (isect) {\n\t if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n\t i--;\n\t } else {\n\t d3_layout_packInsert(a, c);\n\t b = c;\n\t bound(c);\n\t }\n\t }\n\t }\n\t }\n\t var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n\t for (i = 0; i < n; i++) {\n\t c = nodes[i];\n\t c.x -= cx;\n\t c.y -= cy;\n\t cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n\t }\n\t node.r = cr;\n\t nodes.forEach(d3_layout_packUnlink);\n\t }\n\t function d3_layout_packLink(node) {\n\t node._pack_next = node._pack_prev = node;\n\t }\n\t function d3_layout_packUnlink(node) {\n\t delete node._pack_next;\n\t delete node._pack_prev;\n\t }\n\t function d3_layout_packTransform(node, x, y, k) {\n\t var children = node.children;\n\t node.x = x += k * node.x;\n\t node.y = y += k * node.y;\n\t node.r *= k;\n\t if (children) {\n\t var i = -1, n = children.length;\n\t while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n\t }\n\t }\n\t function d3_layout_packPlace(a, b, c) {\n\t var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n\t if (db && (dx || dy)) {\n\t var da = b.r + c.r, dc = dx * dx + dy * dy;\n\t da *= da;\n\t db *= db;\n\t var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n\t c.x = a.x + x * dx + y * dy;\n\t c.y = a.y + x * dy - y * dx;\n\t } else {\n\t c.x = a.x + db;\n\t c.y = a.y;\n\t }\n\t }\n\t d3.layout.tree = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n\t function tree(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n\t d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n\t d3_layout_hierarchyVisitBefore(root1, secondWalk);\n\t if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n\t var left = root0, right = root0, bottom = root0;\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t if (node.x < left.x) left = node;\n\t if (node.x > right.x) right = node;\n\t if (node.depth > bottom.depth) bottom = node;\n\t });\n\t var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n\t d3_layout_hierarchyVisitBefore(root0, function(node) {\n\t node.x = (node.x + tx) * kx;\n\t node.y = node.depth * ky;\n\t });\n\t }\n\t return nodes;\n\t }\n\t function wrapTree(root0) {\n\t var root1 = {\n\t A: null,\n\t children: [ root0 ]\n\t }, queue = [ root1 ], node1;\n\t while ((node1 = queue.pop()) != null) {\n\t for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n\t queue.push((children[i] = child = {\n\t _: children[i],\n\t parent: node1,\n\t children: (child = children[i].children) && child.slice() || [],\n\t A: null,\n\t a: null,\n\t z: 0,\n\t m: 0,\n\t c: 0,\n\t s: 0,\n\t t: null,\n\t i: i\n\t }).a = child);\n\t }\n\t }\n\t return root1.children[0];\n\t }\n\t function firstWalk(v) {\n\t var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n\t if (children.length) {\n\t d3_layout_treeShift(v);\n\t var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n\t if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t v.m = v.z - midpoint;\n\t } else {\n\t v.z = midpoint;\n\t }\n\t } else if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t }\n\t v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n\t }\n\t function secondWalk(v) {\n\t v._.x = v.z + v.parent.m;\n\t v.m += v.parent.m;\n\t }\n\t function apportion(v, w, ancestor) {\n\t if (w) {\n\t var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n\t while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n\t vom = d3_layout_treeLeft(vom);\n\t vop = d3_layout_treeRight(vop);\n\t vop.a = v;\n\t shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n\t if (shift > 0) {\n\t d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n\t sip += shift;\n\t sop += shift;\n\t }\n\t sim += vim.m;\n\t sip += vip.m;\n\t som += vom.m;\n\t sop += vop.m;\n\t }\n\t if (vim && !d3_layout_treeRight(vop)) {\n\t vop.t = vim;\n\t vop.m += sim - sop;\n\t }\n\t if (vip && !d3_layout_treeLeft(vom)) {\n\t vom.t = vip;\n\t vom.m += sip - som;\n\t ancestor = v;\n\t }\n\t }\n\t return ancestor;\n\t }\n\t function sizeNode(node) {\n\t node.x *= size[0];\n\t node.y = node.depth * size[1];\n\t }\n\t tree.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return tree;\n\t };\n\t tree.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null ? sizeNode : null;\n\t return tree;\n\t };\n\t tree.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) == null ? null : sizeNode;\n\t return tree;\n\t };\n\t return d3_layout_hierarchyRebind(tree, hierarchy);\n\t };\n\t function d3_layout_treeSeparation(a, b) {\n\t return a.parent == b.parent ? 1 : 2;\n\t }\n\t function d3_layout_treeLeft(v) {\n\t var children = v.children;\n\t return children.length ? children[0] : v.t;\n\t }\n\t function d3_layout_treeRight(v) {\n\t var children = v.children, n;\n\t return (n = children.length) ? children[n - 1] : v.t;\n\t }\n\t function d3_layout_treeMove(wm, wp, shift) {\n\t var change = shift / (wp.i - wm.i);\n\t wp.c -= change;\n\t wp.s += shift;\n\t wm.c += change;\n\t wp.z += shift;\n\t wp.m += shift;\n\t }\n\t function d3_layout_treeShift(v) {\n\t var shift = 0, change = 0, children = v.children, i = children.length, w;\n\t while (--i >= 0) {\n\t w = children[i];\n\t w.z += shift;\n\t w.m += shift;\n\t shift += w.s + (change += w.c);\n\t }\n\t }\n\t function d3_layout_treeAncestor(vim, v, ancestor) {\n\t return vim.a.parent === v.parent ? vim.a : ancestor;\n\t }\n\t d3.layout.cluster = function() {\n\t var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n\t function cluster(d, i) {\n\t var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n\t d3_layout_hierarchyVisitAfter(root, function(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t node.x = d3_layout_clusterX(children);\n\t node.y = d3_layout_clusterY(children);\n\t } else {\n\t node.x = previousNode ? x += separation(node, previousNode) : 0;\n\t node.y = 0;\n\t previousNode = node;\n\t }\n\t });\n\t var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n\t d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n\t node.x = (node.x - root.x) * size[0];\n\t node.y = (root.y - node.y) * size[1];\n\t } : function(node) {\n\t node.x = (node.x - x0) / (x1 - x0) * size[0];\n\t node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n\t });\n\t return nodes;\n\t }\n\t cluster.separation = function(x) {\n\t if (!arguments.length) return separation;\n\t separation = x;\n\t return cluster;\n\t };\n\t cluster.size = function(x) {\n\t if (!arguments.length) return nodeSize ? null : size;\n\t nodeSize = (size = x) == null;\n\t return cluster;\n\t };\n\t cluster.nodeSize = function(x) {\n\t if (!arguments.length) return nodeSize ? size : null;\n\t nodeSize = (size = x) != null;\n\t return cluster;\n\t };\n\t return d3_layout_hierarchyRebind(cluster, hierarchy);\n\t };\n\t function d3_layout_clusterY(children) {\n\t return 1 + d3.max(children, function(child) {\n\t return child.y;\n\t });\n\t }\n\t function d3_layout_clusterX(children) {\n\t return children.reduce(function(x, child) {\n\t return x + child.x;\n\t }, 0) / children.length;\n\t }\n\t function d3_layout_clusterLeft(node) {\n\t var children = node.children;\n\t return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n\t }\n\t function d3_layout_clusterRight(node) {\n\t var children = node.children, n;\n\t return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n\t }\n\t d3.layout.treemap = function() {\n\t var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n\t function scale(children, k) {\n\t var i = -1, n = children.length, child, area;\n\t while (++i < n) {\n\t area = (child = children[i]).value * (k < 0 ? 0 : k);\n\t child.area = isNaN(area) || area <= 0 ? 0 : area;\n\t }\n\t }\n\t function squarify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while ((n = remaining.length) > 0) {\n\t row.push(child = remaining[n - 1]);\n\t row.area += child.area;\n\t if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n\t remaining.pop();\n\t best = score;\n\t } else {\n\t row.area -= row.pop().area;\n\t position(row, u, rect, false);\n\t u = Math.min(rect.dx, rect.dy);\n\t row.length = row.area = 0;\n\t best = Infinity;\n\t }\n\t }\n\t if (row.length) {\n\t position(row, u, rect, true);\n\t row.length = row.area = 0;\n\t }\n\t children.forEach(squarify);\n\t }\n\t }\n\t function stickify(node) {\n\t var children = node.children;\n\t if (children && children.length) {\n\t var rect = pad(node), remaining = children.slice(), child, row = [];\n\t scale(remaining, rect.dx * rect.dy / node.value);\n\t row.area = 0;\n\t while (child = remaining.pop()) {\n\t row.push(child);\n\t row.area += child.area;\n\t if (child.z != null) {\n\t position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n\t row.length = row.area = 0;\n\t }\n\t }\n\t children.forEach(stickify);\n\t }\n\t }\n\t function worst(row, u) {\n\t var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n\t while (++i < n) {\n\t if (!(r = row[i].area)) continue;\n\t if (r < rmin) rmin = r;\n\t if (r > rmax) rmax = r;\n\t }\n\t s *= s;\n\t u *= u;\n\t return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n\t }\n\t function position(row, u, rect, flush) {\n\t var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n\t if (u == rect.dx) {\n\t if (flush || v > rect.dy) v = rect.dy;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dy = v;\n\t x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n\t }\n\t o.z = true;\n\t o.dx += rect.x + rect.dx - x;\n\t rect.y += v;\n\t rect.dy -= v;\n\t } else {\n\t if (flush || v > rect.dx) v = rect.dx;\n\t while (++i < n) {\n\t o = row[i];\n\t o.x = x;\n\t o.y = y;\n\t o.dx = v;\n\t y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n\t }\n\t o.z = false;\n\t o.dy += rect.y + rect.dy - y;\n\t rect.x += v;\n\t rect.dx -= v;\n\t }\n\t }\n\t function treemap(d) {\n\t var nodes = stickies || hierarchy(d), root = nodes[0];\n\t root.x = root.y = 0;\n\t if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n\t if (stickies) hierarchy.revalue(root);\n\t scale([ root ], root.dx * root.dy / root.value);\n\t (stickies ? stickify : squarify)(root);\n\t if (sticky) stickies = nodes;\n\t return nodes;\n\t }\n\t treemap.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = x;\n\t return treemap;\n\t };\n\t treemap.padding = function(x) {\n\t if (!arguments.length) return padding;\n\t function padFunction(node) {\n\t var p = x.call(treemap, node, node.depth);\n\t return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n\t }\n\t function padConstant(node) {\n\t return d3_layout_treemapPad(node, x);\n\t }\n\t var type;\n\t pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n\t padConstant) : padConstant;\n\t return treemap;\n\t };\n\t treemap.round = function(x) {\n\t if (!arguments.length) return round != Number;\n\t round = x ? Math.round : Number;\n\t return treemap;\n\t };\n\t treemap.sticky = function(x) {\n\t if (!arguments.length) return sticky;\n\t sticky = x;\n\t stickies = null;\n\t return treemap;\n\t };\n\t treemap.ratio = function(x) {\n\t if (!arguments.length) return ratio;\n\t ratio = x;\n\t return treemap;\n\t };\n\t treemap.mode = function(x) {\n\t if (!arguments.length) return mode;\n\t mode = x + \"\";\n\t return treemap;\n\t };\n\t return d3_layout_hierarchyRebind(treemap, hierarchy);\n\t };\n\t function d3_layout_treemapPadNull(node) {\n\t return {\n\t x: node.x,\n\t y: node.y,\n\t dx: node.dx,\n\t dy: node.dy\n\t };\n\t }\n\t function d3_layout_treemapPad(node, padding) {\n\t var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n\t if (dx < 0) {\n\t x += dx / 2;\n\t dx = 0;\n\t }\n\t if (dy < 0) {\n\t y += dy / 2;\n\t dy = 0;\n\t }\n\t return {\n\t x: x,\n\t y: y,\n\t dx: dx,\n\t dy: dy\n\t };\n\t }\n\t d3.random = {\n\t normal: function(µ, σ) {\n\t var n = arguments.length;\n\t if (n < 2) σ = 1;\n\t if (n < 1) µ = 0;\n\t return function() {\n\t var x, y, r;\n\t do {\n\t x = Math.random() * 2 - 1;\n\t y = Math.random() * 2 - 1;\n\t r = x * x + y * y;\n\t } while (!r || r > 1);\n\t return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n\t };\n\t },\n\t logNormal: function() {\n\t var random = d3.random.normal.apply(d3, arguments);\n\t return function() {\n\t return Math.exp(random());\n\t };\n\t },\n\t bates: function(m) {\n\t var random = d3.random.irwinHall(m);\n\t return function() {\n\t return random() / m;\n\t };\n\t },\n\t irwinHall: function(m) {\n\t return function() {\n\t for (var s = 0, j = 0; j < m; j++) s += Math.random();\n\t return s;\n\t };\n\t }\n\t };\n\t d3.scale = {};\n\t function d3_scaleExtent(domain) {\n\t var start = domain[0], stop = domain[domain.length - 1];\n\t return start < stop ? [ start, stop ] : [ stop, start ];\n\t }\n\t function d3_scaleRange(scale) {\n\t return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n\t }\n\t function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n\t var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n\t return function(x) {\n\t return i(u(x));\n\t };\n\t }\n\t function d3_scale_nice(domain, nice) {\n\t var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n\t if (x1 < x0) {\n\t dx = i0, i0 = i1, i1 = dx;\n\t dx = x0, x0 = x1, x1 = dx;\n\t }\n\t domain[i0] = nice.floor(x0);\n\t domain[i1] = nice.ceil(x1);\n\t return domain;\n\t }\n\t function d3_scale_niceStep(step) {\n\t return step ? {\n\t floor: function(x) {\n\t return Math.floor(x / step) * step;\n\t },\n\t ceil: function(x) {\n\t return Math.ceil(x / step) * step;\n\t }\n\t } : d3_scale_niceIdentity;\n\t }\n\t var d3_scale_niceIdentity = {\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n\t var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n\t if (domain[k] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range = range.slice().reverse();\n\t }\n\t while (++j <= k) {\n\t u.push(uninterpolate(domain[j - 1], domain[j]));\n\t i.push(interpolate(range[j - 1], range[j]));\n\t }\n\t return function(x) {\n\t var j = d3.bisect(domain, x, 1, k) - 1;\n\t return i[j](u[j](x));\n\t };\n\t }\n\t d3.scale.linear = function() {\n\t return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n\t };\n\t function d3_scale_linear(domain, range, interpolate, clamp) {\n\t var output, input;\n\t function rescale() {\n\t var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n\t output = linear(domain, range, uninterpolate, interpolate);\n\t input = linear(range, domain, uninterpolate, d3_interpolate);\n\t return scale;\n\t }\n\t function scale(x) {\n\t return output(x);\n\t }\n\t scale.invert = function(y) {\n\t return input(y);\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(Number);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.rangeRound = function(x) {\n\t return scale.range(x).interpolate(d3_interpolateRound);\n\t };\n\t scale.clamp = function(x) {\n\t if (!arguments.length) return clamp;\n\t clamp = x;\n\t return rescale();\n\t };\n\t scale.interpolate = function(x) {\n\t if (!arguments.length) return interpolate;\n\t interpolate = x;\n\t return rescale();\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t d3_scale_linearNice(domain, m);\n\t return rescale();\n\t };\n\t scale.copy = function() {\n\t return d3_scale_linear(domain, range, interpolate, clamp);\n\t };\n\t return rescale();\n\t }\n\t function d3_scale_linearRebind(scale, linear) {\n\t return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n\t }\n\t function d3_scale_linearNice(domain, m) {\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n\t return domain;\n\t }\n\t function d3_scale_linearTickRange(domain, m) {\n\t if (m == null) m = 10;\n\t var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n\t if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n\t extent[0] = Math.ceil(extent[0] / step) * step;\n\t extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n\t extent[2] = step;\n\t return extent;\n\t }\n\t function d3_scale_linearTicks(domain, m) {\n\t return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n\t }\n\t function d3_scale_linearTickFormat(domain, m, format) {\n\t var range = d3_scale_linearTickRange(domain, m);\n\t if (format) {\n\t var match = d3_format_re.exec(format);\n\t match.shift();\n\t if (match[8] === \"s\") {\n\t var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n\t match[8] = \"f\";\n\t format = d3.format(match.join(\"\"));\n\t return function(d) {\n\t return format(prefix.scale(d)) + prefix.symbol;\n\t };\n\t }\n\t if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n\t format = match.join(\"\");\n\t } else {\n\t format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n\t }\n\t return d3.format(format);\n\t }\n\t var d3_scale_linearFormatSignificant = {\n\t s: 1,\n\t g: 1,\n\t p: 1,\n\t r: 1,\n\t e: 1\n\t };\n\t function d3_scale_linearPrecision(value) {\n\t return -Math.floor(Math.log(value) / Math.LN10 + .01);\n\t }\n\t function d3_scale_linearFormatPrecision(type, range) {\n\t var p = d3_scale_linearPrecision(range[2]);\n\t return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n\t }\n\t d3.scale.log = function() {\n\t return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n\t };\n\t function d3_scale_log(linear, base, positive, domain) {\n\t function log(x) {\n\t return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n\t }\n\t function pow(x) {\n\t return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n\t }\n\t function scale(x) {\n\t return linear(log(x));\n\t }\n\t scale.invert = function(x) {\n\t return pow(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t positive = x[0] >= 0;\n\t linear.domain((domain = x.map(Number)).map(log));\n\t return scale;\n\t };\n\t scale.base = function(_) {\n\t if (!arguments.length) return base;\n\t base = +_;\n\t linear.domain(domain.map(log));\n\t return scale;\n\t };\n\t scale.nice = function() {\n\t var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n\t linear.domain(niced);\n\t domain = niced.map(pow);\n\t return scale;\n\t };\n\t scale.ticks = function() {\n\t var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n\t if (isFinite(j - i)) {\n\t if (positive) {\n\t for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n\t ticks.push(pow(i));\n\t } else {\n\t ticks.push(pow(i));\n\t for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n\t }\n\t for (i = 0; ticks[i] < u; i++) {}\n\t for (j = ticks.length; ticks[j - 1] > v; j--) {}\n\t ticks = ticks.slice(i, j);\n\t }\n\t return ticks;\n\t };\n\t scale.tickFormat = function(n, format) {\n\t if (!arguments.length) return d3_scale_logFormat;\n\t if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n\t var k = Math.max(1, base * n / scale.ticks().length);\n\t return function(d) {\n\t var i = d / pow(Math.round(log(d)));\n\t if (i * base < base - .5) i *= base;\n\t return i <= k ? format(d) : \"\";\n\t };\n\t };\n\t scale.copy = function() {\n\t return d3_scale_log(linear.copy(), base, positive, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n\t floor: function(x) {\n\t return -Math.ceil(-x);\n\t },\n\t ceil: function(x) {\n\t return -Math.floor(-x);\n\t }\n\t };\n\t d3.scale.pow = function() {\n\t return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_pow(linear, exponent, domain) {\n\t var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n\t function scale(x) {\n\t return linear(powp(x));\n\t }\n\t scale.invert = function(x) {\n\t return powb(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t linear.domain((domain = x.map(Number)).map(powp));\n\t return scale;\n\t };\n\t scale.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t scale.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t scale.nice = function(m) {\n\t return scale.domain(d3_scale_linearNice(domain, m));\n\t };\n\t scale.exponent = function(x) {\n\t if (!arguments.length) return exponent;\n\t powp = d3_scale_powPow(exponent = x);\n\t powb = d3_scale_powPow(1 / exponent);\n\t linear.domain(domain.map(powp));\n\t return scale;\n\t };\n\t scale.copy = function() {\n\t return d3_scale_pow(linear.copy(), exponent, domain);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_scale_powPow(e) {\n\t return function(x) {\n\t return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n\t };\n\t }\n\t d3.scale.sqrt = function() {\n\t return d3.scale.pow().exponent(.5);\n\t };\n\t d3.scale.ordinal = function() {\n\t return d3_scale_ordinal([], {\n\t t: \"range\",\n\t a: [ [] ]\n\t });\n\t };\n\t function d3_scale_ordinal(domain, ranger) {\n\t var index, range, rangeBand;\n\t function scale(x) {\n\t return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n\t }\n\t function steps(start, step) {\n\t return d3.range(domain.length).map(function(i) {\n\t return start + step * i;\n\t });\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = [];\n\t index = new d3_Map();\n\t var i = -1, n = x.length, xi;\n\t while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n\t return scale[ranger.t].apply(scale, ranger.a);\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"range\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangePoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n\t 0) : (stop - start) / (domain.length - 1 + padding);\n\t range = steps(start + step * padding / 2, step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangePoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundPoints = function(x, padding) {\n\t if (arguments.length < 2) padding = 0;\n\t var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n\t 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n\t range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n\t rangeBand = 0;\n\t ranger = {\n\t t: \"rangeRoundPoints\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n\t range = steps(start + step * outerPadding, step);\n\t if (reverse) range.reverse();\n\t rangeBand = step * (1 - padding);\n\t ranger = {\n\t t: \"rangeBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeRoundBands = function(x, padding, outerPadding) {\n\t if (arguments.length < 2) padding = 0;\n\t if (arguments.length < 3) outerPadding = padding;\n\t var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n\t range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n\t if (reverse) range.reverse();\n\t rangeBand = Math.round(step * (1 - padding));\n\t ranger = {\n\t t: \"rangeRoundBands\",\n\t a: arguments\n\t };\n\t return scale;\n\t };\n\t scale.rangeBand = function() {\n\t return rangeBand;\n\t };\n\t scale.rangeExtent = function() {\n\t return d3_scaleExtent(ranger.a[0]);\n\t };\n\t scale.copy = function() {\n\t return d3_scale_ordinal(domain, ranger);\n\t };\n\t return scale.domain(domain);\n\t }\n\t d3.scale.category10 = function() {\n\t return d3.scale.ordinal().range(d3_category10);\n\t };\n\t d3.scale.category20 = function() {\n\t return d3.scale.ordinal().range(d3_category20);\n\t };\n\t d3.scale.category20b = function() {\n\t return d3.scale.ordinal().range(d3_category20b);\n\t };\n\t d3.scale.category20c = function() {\n\t return d3.scale.ordinal().range(d3_category20c);\n\t };\n\t var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n\t var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n\t var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n\t var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n\t d3.scale.quantile = function() {\n\t return d3_scale_quantile([], []);\n\t };\n\t function d3_scale_quantile(domain, range) {\n\t var thresholds;\n\t function rescale() {\n\t var k = 0, q = range.length;\n\t thresholds = [];\n\t while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n\t return scale;\n\t }\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.quantiles = function() {\n\t return thresholds;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantile(domain, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.quantize = function() {\n\t return d3_scale_quantize(0, 1, [ 0, 1 ]);\n\t };\n\t function d3_scale_quantize(x0, x1, range) {\n\t var kx, i;\n\t function scale(x) {\n\t return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n\t }\n\t function rescale() {\n\t kx = range.length / (x1 - x0);\n\t i = range.length - 1;\n\t return scale;\n\t }\n\t scale.domain = function(x) {\n\t if (!arguments.length) return [ x0, x1 ];\n\t x0 = +x[0];\n\t x1 = +x[x.length - 1];\n\t return rescale();\n\t };\n\t scale.range = function(x) {\n\t if (!arguments.length) return range;\n\t range = x;\n\t return rescale();\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t y = y < 0 ? NaN : y / kx + x0;\n\t return [ y, y + 1 / kx ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_quantize(x0, x1, range);\n\t };\n\t return rescale();\n\t }\n\t d3.scale.threshold = function() {\n\t return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n\t };\n\t function d3_scale_threshold(domain, range) {\n\t function scale(x) {\n\t if (x <= x) return range[d3.bisect(domain, x)];\n\t }\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain;\n\t domain = _;\n\t return scale;\n\t };\n\t scale.range = function(_) {\n\t if (!arguments.length) return range;\n\t range = _;\n\t return scale;\n\t };\n\t scale.invertExtent = function(y) {\n\t y = range.indexOf(y);\n\t return [ domain[y - 1], domain[y] ];\n\t };\n\t scale.copy = function() {\n\t return d3_scale_threshold(domain, range);\n\t };\n\t return scale;\n\t }\n\t d3.scale.identity = function() {\n\t return d3_scale_identity([ 0, 1 ]);\n\t };\n\t function d3_scale_identity(domain) {\n\t function identity(x) {\n\t return +x;\n\t }\n\t identity.invert = identity;\n\t identity.domain = identity.range = function(x) {\n\t if (!arguments.length) return domain;\n\t domain = x.map(identity);\n\t return identity;\n\t };\n\t identity.ticks = function(m) {\n\t return d3_scale_linearTicks(domain, m);\n\t };\n\t identity.tickFormat = function(m, format) {\n\t return d3_scale_linearTickFormat(domain, m, format);\n\t };\n\t identity.copy = function() {\n\t return d3_scale_identity(domain);\n\t };\n\t return identity;\n\t }\n\t d3.svg = {};\n\t function d3_zero() {\n\t return 0;\n\t }\n\t d3.svg.arc = function() {\n\t var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n\t function arc() {\n\t var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n\t if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n\t if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n\t var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n\t if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n\t rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n\t if (!cw) p1 *= -1;\n\t if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n\t if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n\t }\n\t if (r1) {\n\t x0 = r1 * Math.cos(a0 + p1);\n\t y0 = r1 * Math.sin(a0 + p1);\n\t x1 = r1 * Math.cos(a1 - p1);\n\t y1 = r1 * Math.sin(a1 - p1);\n\t var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n\t if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n\t var h1 = (a0 + a1) / 2;\n\t x0 = r1 * Math.cos(h1);\n\t y0 = r1 * Math.sin(h1);\n\t x1 = y1 = null;\n\t }\n\t } else {\n\t x0 = y0 = 0;\n\t }\n\t if (r0) {\n\t x2 = r0 * Math.cos(a1 - p0);\n\t y2 = r0 * Math.sin(a1 - p0);\n\t x3 = r0 * Math.cos(a0 + p0);\n\t y3 = r0 * Math.sin(a0 + p0);\n\t var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n\t if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n\t var h0 = (a0 + a1) / 2;\n\t x2 = r0 * Math.cos(h0);\n\t y2 = r0 * Math.sin(h0);\n\t x3 = y3 = null;\n\t }\n\t } else {\n\t x2 = y2 = 0;\n\t }\n\t if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n\t cr = r0 < r1 ^ cw ? 0 : 1;\n\t var rc1 = rc, rc0 = rc;\n\t if (da < π) {\n\t var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\t rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n\t rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n\t }\n\t if (x1 != null) {\n\t var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n\t if (rc === rc1) {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n\t } else {\n\t path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t }\n\t if (x3 != null) {\n\t var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n\t if (rc === rc0) {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t } else {\n\t path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n\t }\n\t } else {\n\t path.push(\"L\", x2, \",\", y2);\n\t }\n\t } else {\n\t path.push(\"M\", x0, \",\", y0);\n\t if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n\t path.push(\"L\", x2, \",\", y2);\n\t if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n\t }\n\t path.push(\"Z\");\n\t return path.join(\"\");\n\t }\n\t function circleSegment(r1, cw) {\n\t return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n\t }\n\t arc.innerRadius = function(v) {\n\t if (!arguments.length) return innerRadius;\n\t innerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.outerRadius = function(v) {\n\t if (!arguments.length) return outerRadius;\n\t outerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.cornerRadius = function(v) {\n\t if (!arguments.length) return cornerRadius;\n\t cornerRadius = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padRadius = function(v) {\n\t if (!arguments.length) return padRadius;\n\t padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n\t return arc;\n\t };\n\t arc.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.padAngle = function(v) {\n\t if (!arguments.length) return padAngle;\n\t padAngle = d3_functor(v);\n\t return arc;\n\t };\n\t arc.centroid = function() {\n\t var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n\t return [ Math.cos(a) * r, Math.sin(a) * r ];\n\t };\n\t return arc;\n\t };\n\t var d3_svg_arcAuto = \"auto\";\n\t function d3_svg_arcInnerRadius(d) {\n\t return d.innerRadius;\n\t }\n\t function d3_svg_arcOuterRadius(d) {\n\t return d.outerRadius;\n\t }\n\t function d3_svg_arcStartAngle(d) {\n\t return d.startAngle;\n\t }\n\t function d3_svg_arcEndAngle(d) {\n\t return d.endAngle;\n\t }\n\t function d3_svg_arcPadAngle(d) {\n\t return d && d.padAngle;\n\t }\n\t function d3_svg_arcSweep(x0, y0, x1, y1) {\n\t return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n\t }\n\t function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n\t var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n\t if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\t return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n\t }\n\t function d3_svg_line(projection) {\n\t var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n\t function line(data) {\n\t var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points), tension));\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n\t } else if (points.length) {\n\t segment();\n\t points = [];\n\t }\n\t }\n\t if (points.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t line.x = function(_) {\n\t if (!arguments.length) return x;\n\t x = _;\n\t return line;\n\t };\n\t line.y = function(_) {\n\t if (!arguments.length) return y;\n\t y = _;\n\t return line;\n\t };\n\t line.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return line;\n\t };\n\t line.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t return line;\n\t };\n\t line.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return line;\n\t };\n\t return line;\n\t }\n\t d3.svg.line = function() {\n\t return d3_svg_line(d3_identity);\n\t };\n\t var d3_svg_lineInterpolators = d3.map({\n\t linear: d3_svg_lineLinear,\n\t \"linear-closed\": d3_svg_lineLinearClosed,\n\t step: d3_svg_lineStep,\n\t \"step-before\": d3_svg_lineStepBefore,\n\t \"step-after\": d3_svg_lineStepAfter,\n\t basis: d3_svg_lineBasis,\n\t \"basis-open\": d3_svg_lineBasisOpen,\n\t \"basis-closed\": d3_svg_lineBasisClosed,\n\t bundle: d3_svg_lineBundle,\n\t cardinal: d3_svg_lineCardinal,\n\t \"cardinal-open\": d3_svg_lineCardinalOpen,\n\t \"cardinal-closed\": d3_svg_lineCardinalClosed,\n\t monotone: d3_svg_lineMonotone\n\t });\n\t d3_svg_lineInterpolators.forEach(function(key, value) {\n\t value.key = key;\n\t value.closed = /-closed$/.test(key);\n\t });\n\t function d3_svg_lineLinear(points) {\n\t return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n\t }\n\t function d3_svg_lineLinearClosed(points) {\n\t return points.join(\"L\") + \"Z\";\n\t }\n\t function d3_svg_lineStep(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n\t if (n > 1) path.push(\"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepBefore(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineStepAfter(points) {\n\t var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n\t while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineCardinalOpen(points, tension) {\n\t return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineCardinalClosed(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n\t points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n\t }\n\t function d3_svg_lineCardinal(points, tension) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n\t }\n\t function d3_svg_lineHermite(points, tangents) {\n\t if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n\t return d3_svg_lineLinear(points);\n\t }\n\t var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n\t if (quad) {\n\t path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n\t p0 = points[1];\n\t pi = 2;\n\t }\n\t if (tangents.length > 1) {\n\t t = tangents[1];\n\t p = points[pi];\n\t pi++;\n\t path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t for (var i = 2; i < tangents.length; i++, pi++) {\n\t p = points[pi];\n\t t = tangents[i];\n\t path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\t }\n\t }\n\t if (quad) {\n\t var lp = points[pi];\n\t path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n\t }\n\t return path;\n\t }\n\t function d3_svg_lineCardinalTangents(points, tension) {\n\t var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n\t while (++i < n) {\n\t p0 = p1;\n\t p1 = p2;\n\t p2 = points[i];\n\t tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineBasis(points) {\n\t if (points.length < 3) return d3_svg_lineLinear(points);\n\t var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t points.push(points[n - 1]);\n\t while (++i <= n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t points.pop();\n\t path.push(\"L\", pi);\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisOpen(points) {\n\t if (points.length < 4) return d3_svg_lineLinear(points);\n\t var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n\t while (++i < 3) {\n\t pi = points[i];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n\t --i;\n\t while (++i < n) {\n\t pi = points[i];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBasisClosed(points) {\n\t var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n\t while (++i < 4) {\n\t pi = points[i % n];\n\t px.push(pi[0]);\n\t py.push(pi[1]);\n\t }\n\t path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n\t --i;\n\t while (++i < m) {\n\t pi = points[i % n];\n\t px.shift();\n\t px.push(pi[0]);\n\t py.shift();\n\t py.push(pi[1]);\n\t d3_svg_lineBasisBezier(path, px, py);\n\t }\n\t return path.join(\"\");\n\t }\n\t function d3_svg_lineBundle(points, tension) {\n\t var n = points.length - 1;\n\t if (n) {\n\t var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n\t while (++i <= n) {\n\t p = points[i];\n\t t = i / n;\n\t p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n\t p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n\t }\n\t }\n\t return d3_svg_lineBasis(points);\n\t }\n\t function d3_svg_lineDot4(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t }\n\t var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n\t function d3_svg_lineBasisBezier(path, x, y) {\n\t path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n\t }\n\t function d3_svg_lineSlope(p0, p1) {\n\t return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n\t }\n\t function d3_svg_lineFiniteDifferences(points) {\n\t var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n\t while (++i < j) {\n\t m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n\t }\n\t m[i] = d;\n\t return m;\n\t }\n\t function d3_svg_lineMonotoneTangents(points) {\n\t var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n\t while (++i < j) {\n\t d = d3_svg_lineSlope(points[i], points[i + 1]);\n\t if (abs(d) < ε) {\n\t m[i] = m[i + 1] = 0;\n\t } else {\n\t a = m[i] / d;\n\t b = m[i + 1] / d;\n\t s = a * a + b * b;\n\t if (s > 9) {\n\t s = d * 3 / Math.sqrt(s);\n\t m[i] = s * a;\n\t m[i + 1] = s * b;\n\t }\n\t }\n\t }\n\t i = -1;\n\t while (++i <= j) {\n\t s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n\t tangents.push([ s || 0, m[i] * s || 0 ]);\n\t }\n\t return tangents;\n\t }\n\t function d3_svg_lineMonotone(points) {\n\t return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n\t }\n\t d3.svg.line.radial = function() {\n\t var line = d3_svg_line(d3_svg_lineRadial);\n\t line.radius = line.x, delete line.x;\n\t line.angle = line.y, delete line.y;\n\t return line;\n\t };\n\t function d3_svg_lineRadial(points) {\n\t var point, i = -1, n = points.length, r, a;\n\t while (++i < n) {\n\t point = points[i];\n\t r = point[0];\n\t a = point[1] - halfπ;\n\t point[0] = r * Math.cos(a);\n\t point[1] = r * Math.sin(a);\n\t }\n\t return points;\n\t }\n\t function d3_svg_area(projection) {\n\t var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n\t function area(data) {\n\t var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n\t return x;\n\t } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n\t return y;\n\t } : d3_functor(y1), x, y;\n\t function segment() {\n\t segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n\t }\n\t while (++i < n) {\n\t if (defined.call(this, d = data[i], i)) {\n\t points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n\t points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n\t } else if (points0.length) {\n\t segment();\n\t points0 = [];\n\t points1 = [];\n\t }\n\t }\n\t if (points0.length) segment();\n\t return segments.length ? segments.join(\"\") : null;\n\t }\n\t area.x = function(_) {\n\t if (!arguments.length) return x1;\n\t x0 = x1 = _;\n\t return area;\n\t };\n\t area.x0 = function(_) {\n\t if (!arguments.length) return x0;\n\t x0 = _;\n\t return area;\n\t };\n\t area.x1 = function(_) {\n\t if (!arguments.length) return x1;\n\t x1 = _;\n\t return area;\n\t };\n\t area.y = function(_) {\n\t if (!arguments.length) return y1;\n\t y0 = y1 = _;\n\t return area;\n\t };\n\t area.y0 = function(_) {\n\t if (!arguments.length) return y0;\n\t y0 = _;\n\t return area;\n\t };\n\t area.y1 = function(_) {\n\t if (!arguments.length) return y1;\n\t y1 = _;\n\t return area;\n\t };\n\t area.defined = function(_) {\n\t if (!arguments.length) return defined;\n\t defined = _;\n\t return area;\n\t };\n\t area.interpolate = function(_) {\n\t if (!arguments.length) return interpolateKey;\n\t if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n\t interpolateReverse = interpolate.reverse || interpolate;\n\t L = interpolate.closed ? \"M\" : \"L\";\n\t return area;\n\t };\n\t area.tension = function(_) {\n\t if (!arguments.length) return tension;\n\t tension = _;\n\t return area;\n\t };\n\t return area;\n\t }\n\t d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n\t d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n\t d3.svg.area = function() {\n\t return d3_svg_area(d3_identity);\n\t };\n\t d3.svg.area.radial = function() {\n\t var area = d3_svg_area(d3_svg_lineRadial);\n\t area.radius = area.x, delete area.x;\n\t area.innerRadius = area.x0, delete area.x0;\n\t area.outerRadius = area.x1, delete area.x1;\n\t area.angle = area.y, delete area.y;\n\t area.startAngle = area.y0, delete area.y0;\n\t area.endAngle = area.y1, delete area.y1;\n\t return area;\n\t };\n\t d3.svg.chord = function() {\n\t var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n\t function chord(d, i) {\n\t var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n\t return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n\t }\n\t function subgroup(self, f, d, i) {\n\t var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n\t return {\n\t r: r,\n\t a0: a0,\n\t a1: a1,\n\t p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n\t p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n\t };\n\t }\n\t function equals(a, b) {\n\t return a.a0 == b.a0 && a.a1 == b.a1;\n\t }\n\t function arc(r, p, a) {\n\t return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n\t }\n\t function curve(r0, p0, r1, p1) {\n\t return \"Q 0,0 \" + p1;\n\t }\n\t chord.radius = function(v) {\n\t if (!arguments.length) return radius;\n\t radius = d3_functor(v);\n\t return chord;\n\t };\n\t chord.source = function(v) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(v);\n\t return chord;\n\t };\n\t chord.target = function(v) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(v);\n\t return chord;\n\t };\n\t chord.startAngle = function(v) {\n\t if (!arguments.length) return startAngle;\n\t startAngle = d3_functor(v);\n\t return chord;\n\t };\n\t chord.endAngle = function(v) {\n\t if (!arguments.length) return endAngle;\n\t endAngle = d3_functor(v);\n\t return chord;\n\t };\n\t return chord;\n\t };\n\t function d3_svg_chordRadius(d) {\n\t return d.radius;\n\t }\n\t d3.svg.diagonal = function() {\n\t var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n\t function diagonal(d, i) {\n\t var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n\t x: p0.x,\n\t y: m\n\t }, {\n\t x: p3.x,\n\t y: m\n\t }, p3 ];\n\t p = p.map(projection);\n\t return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n\t }\n\t diagonal.source = function(x) {\n\t if (!arguments.length) return source;\n\t source = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.target = function(x) {\n\t if (!arguments.length) return target;\n\t target = d3_functor(x);\n\t return diagonal;\n\t };\n\t diagonal.projection = function(x) {\n\t if (!arguments.length) return projection;\n\t projection = x;\n\t return diagonal;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalProjection(d) {\n\t return [ d.x, d.y ];\n\t }\n\t d3.svg.diagonal.radial = function() {\n\t var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n\t diagonal.projection = function(x) {\n\t return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n\t };\n\t return diagonal;\n\t };\n\t function d3_svg_diagonalRadialProjection(projection) {\n\t return function() {\n\t var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n\t return [ r * Math.cos(a), r * Math.sin(a) ];\n\t };\n\t }\n\t d3.svg.symbol = function() {\n\t var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n\t function symbol(d, i) {\n\t return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n\t }\n\t symbol.type = function(x) {\n\t if (!arguments.length) return type;\n\t type = d3_functor(x);\n\t return symbol;\n\t };\n\t symbol.size = function(x) {\n\t if (!arguments.length) return size;\n\t size = d3_functor(x);\n\t return symbol;\n\t };\n\t return symbol;\n\t };\n\t function d3_svg_symbolSize() {\n\t return 64;\n\t }\n\t function d3_svg_symbolType() {\n\t return \"circle\";\n\t }\n\t function d3_svg_symbolCircle(size) {\n\t var r = Math.sqrt(size / π);\n\t return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n\t }\n\t var d3_svg_symbols = d3.map({\n\t circle: d3_svg_symbolCircle,\n\t cross: function(size) {\n\t var r = Math.sqrt(size / 5) / 2;\n\t return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n\t },\n\t diamond: function(size) {\n\t var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n\t return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n\t },\n\t square: function(size) {\n\t var r = Math.sqrt(size) / 2;\n\t return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n\t },\n\t \"triangle-down\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n\t },\n\t \"triangle-up\": function(size) {\n\t var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n\t return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n\t }\n\t });\n\t d3.svg.symbolTypes = d3_svg_symbols.keys();\n\t var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n\t d3_selectionPrototype.transition = function(name) {\n\t var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n\t time: Date.now(),\n\t ease: d3_ease_cubicInOut,\n\t delay: 0,\n\t duration: 250\n\t };\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_selectionPrototype.interrupt = function(name) {\n\t return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n\t };\n\t var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n\t function d3_selection_interruptNS(ns) {\n\t return function() {\n\t var lock, activeId, active;\n\t if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t if (--lock.count) delete lock[activeId]; else delete this[ns];\n\t lock.active += .5;\n\t active.event && active.event.interrupt.call(this, this.__data__, active.index);\n\t }\n\t };\n\t }\n\t function d3_transition(groups, ns, id) {\n\t d3_subclass(groups, d3_transitionPrototype);\n\t groups.namespace = ns;\n\t groups.id = id;\n\t return groups;\n\t }\n\t var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n\t d3_transitionPrototype.call = d3_selectionPrototype.call;\n\t d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n\t d3_transitionPrototype.node = d3_selectionPrototype.node;\n\t d3_transitionPrototype.size = d3_selectionPrototype.size;\n\t d3.transition = function(selection, name) {\n\t return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n\t };\n\t d3.transition.prototype = d3_transitionPrototype;\n\t d3_transitionPrototype.select = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n\t selector = d3_selection_selector(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n\t subgroup.push(subnode);\n\t } else {\n\t subgroup.push(null);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.selectAll = function(selector) {\n\t var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n\t selector = d3_selection_selectorAll(selector);\n\t for (var j = -1, m = this.length; ++j < m; ) {\n\t for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n\t if (node = group[i]) {\n\t transition = node[ns][id];\n\t subnodes = selector.call(node, node.__data__, i, j);\n\t subgroups.push(subgroup = []);\n\t for (var k = -1, o = subnodes.length; ++k < o; ) {\n\t if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n\t subgroup.push(subnode);\n\t }\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id);\n\t };\n\t d3_transitionPrototype.filter = function(filter) {\n\t var subgroups = [], subgroup, group, node;\n\t if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t return d3_transition(subgroups, this.namespace, this.id);\n\t };\n\t d3_transitionPrototype.tween = function(name, tween) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n\t return d3_selection_each(this, tween == null ? function(node) {\n\t node[ns][id].tween.remove(name);\n\t } : function(node) {\n\t node[ns][id].tween.set(name, tween);\n\t });\n\t };\n\t function d3_transition_tween(groups, name, value, tween) {\n\t var id = groups.id, ns = groups.namespace;\n\t return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n\t } : (value = tween(value), function(node) {\n\t node[ns][id].tween.set(name, value);\n\t }));\n\t }\n\t d3_transitionPrototype.attr = function(nameNS, value) {\n\t if (arguments.length < 2) {\n\t for (value in nameNS) this.attr(value, nameNS[value]);\n\t return this;\n\t }\n\t var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n\t function attrNull() {\n\t this.removeAttribute(name);\n\t }\n\t function attrNullNS() {\n\t this.removeAttributeNS(name.space, name.local);\n\t }\n\t function attrTween(b) {\n\t return b == null ? attrNull : (b += \"\", function() {\n\t var a = this.getAttribute(name), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttribute(name, i(t));\n\t });\n\t });\n\t }\n\t function attrTweenNS(b) {\n\t return b == null ? attrNullNS : (b += \"\", function() {\n\t var a = this.getAttributeNS(name.space, name.local), i;\n\t return a !== b && (i = interpolate(a, b), function(t) {\n\t this.setAttributeNS(name.space, name.local, i(t));\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.attrTween = function(nameNS, tween) {\n\t var name = d3.ns.qualify(nameNS);\n\t function attrTween(d, i) {\n\t var f = tween.call(this, d, i, this.getAttribute(name));\n\t return f && function(t) {\n\t this.setAttribute(name, f(t));\n\t };\n\t }\n\t function attrTweenNS(d, i) {\n\t var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n\t return f && function(t) {\n\t this.setAttributeNS(name.space, name.local, f(t));\n\t };\n\t }\n\t return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n\t };\n\t d3_transitionPrototype.style = function(name, value, priority) {\n\t var n = arguments.length;\n\t if (n < 3) {\n\t if (typeof name !== \"string\") {\n\t if (n < 2) value = \"\";\n\t for (priority in name) this.style(priority, name[priority], value);\n\t return this;\n\t }\n\t priority = \"\";\n\t }\n\t function styleNull() {\n\t this.style.removeProperty(name);\n\t }\n\t function styleString(b) {\n\t return b == null ? styleNull : (b += \"\", function() {\n\t var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n\t return a !== b && (i = d3_interpolate(a, b), function(t) {\n\t this.style.setProperty(name, i(t), priority);\n\t });\n\t });\n\t }\n\t return d3_transition_tween(this, \"style.\" + name, value, styleString);\n\t };\n\t d3_transitionPrototype.styleTween = function(name, tween, priority) {\n\t if (arguments.length < 3) priority = \"\";\n\t function styleTween(d, i) {\n\t var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n\t return f && function(t) {\n\t this.style.setProperty(name, f(t), priority);\n\t };\n\t }\n\t return this.tween(\"style.\" + name, styleTween);\n\t };\n\t d3_transitionPrototype.text = function(value) {\n\t return d3_transition_tween(this, \"text\", value, d3_transition_text);\n\t };\n\t function d3_transition_text(b) {\n\t if (b == null) b = \"\";\n\t return function() {\n\t this.textContent = b;\n\t };\n\t }\n\t d3_transitionPrototype.remove = function() {\n\t var ns = this.namespace;\n\t return this.each(\"end.transition\", function() {\n\t var p;\n\t if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n\t });\n\t };\n\t d3_transitionPrototype.ease = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].ease;\n\t if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n\t return d3_selection_each(this, function(node) {\n\t node[ns][id].ease = value;\n\t });\n\t };\n\t d3_transitionPrototype.delay = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].delay;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].delay = +value.call(node, node.__data__, i, j);\n\t } : (value = +value, function(node) {\n\t node[ns][id].delay = value;\n\t }));\n\t };\n\t d3_transitionPrototype.duration = function(value) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 1) return this.node()[ns][id].duration;\n\t return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n\t node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n\t } : (value = Math.max(1, value), function(node) {\n\t node[ns][id].duration = value;\n\t }));\n\t };\n\t d3_transitionPrototype.each = function(type, listener) {\n\t var id = this.id, ns = this.namespace;\n\t if (arguments.length < 2) {\n\t var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n\t try {\n\t d3_transitionInheritId = id;\n\t d3_selection_each(this, function(node, i, j) {\n\t d3_transitionInherit = node[ns][id];\n\t type.call(node, node.__data__, i, j);\n\t });\n\t } finally {\n\t d3_transitionInherit = inherit;\n\t d3_transitionInheritId = inheritId;\n\t }\n\t } else {\n\t d3_selection_each(this, function(node) {\n\t var transition = node[ns][id];\n\t (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n\t });\n\t }\n\t return this;\n\t };\n\t d3_transitionPrototype.transition = function() {\n\t var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n\t for (var j = 0, m = this.length; j < m; j++) {\n\t subgroups.push(subgroup = []);\n\t for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n\t if (node = group[i]) {\n\t transition = node[ns][id0];\n\t d3_transitionNode(node, i, ns, id1, {\n\t time: transition.time,\n\t ease: transition.ease,\n\t delay: transition.delay + transition.duration,\n\t duration: transition.duration\n\t });\n\t }\n\t subgroup.push(node);\n\t }\n\t }\n\t return d3_transition(subgroups, ns, id1);\n\t };\n\t function d3_transitionNamespace(name) {\n\t return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n\t }\n\t function d3_transitionNode(node, i, ns, id, inherit) {\n\t var lock = node[ns] || (node[ns] = {\n\t active: 0,\n\t count: 0\n\t }), transition = lock[id], time, timer, duration, ease, tweens;\n\t function schedule(elapsed) {\n\t var delay = transition.delay;\n\t timer.t = delay + time;\n\t if (delay <= elapsed) return start(elapsed - delay);\n\t timer.c = start;\n\t }\n\t function start(elapsed) {\n\t var activeId = lock.active, active = lock[activeId];\n\t if (active) {\n\t active.timer.c = null;\n\t active.timer.t = NaN;\n\t --lock.count;\n\t delete lock[activeId];\n\t active.event && active.event.interrupt.call(node, node.__data__, active.index);\n\t }\n\t for (var cancelId in lock) {\n\t if (+cancelId < id) {\n\t var cancel = lock[cancelId];\n\t cancel.timer.c = null;\n\t cancel.timer.t = NaN;\n\t --lock.count;\n\t delete lock[cancelId];\n\t }\n\t }\n\t timer.c = tick;\n\t d3_timer(function() {\n\t if (timer.c && tick(elapsed || 1)) {\n\t timer.c = null;\n\t timer.t = NaN;\n\t }\n\t return 1;\n\t }, 0, time);\n\t lock.active = id;\n\t transition.event && transition.event.start.call(node, node.__data__, i);\n\t tweens = [];\n\t transition.tween.forEach(function(key, value) {\n\t if (value = value.call(node, node.__data__, i)) {\n\t tweens.push(value);\n\t }\n\t });\n\t ease = transition.ease;\n\t duration = transition.duration;\n\t }\n\t function tick(elapsed) {\n\t var t = elapsed / duration, e = ease(t), n = tweens.length;\n\t while (n > 0) {\n\t tweens[--n].call(node, e);\n\t }\n\t if (t >= 1) {\n\t transition.event && transition.event.end.call(node, node.__data__, i);\n\t if (--lock.count) delete lock[id]; else delete node[ns];\n\t return 1;\n\t }\n\t }\n\t if (!transition) {\n\t time = inherit.time;\n\t timer = d3_timer(schedule, 0, time);\n\t transition = lock[id] = {\n\t tween: new d3_Map(),\n\t time: time,\n\t timer: timer,\n\t delay: inherit.delay,\n\t duration: inherit.duration,\n\t ease: inherit.ease,\n\t index: i\n\t };\n\t inherit = null;\n\t ++lock.count;\n\t }\n\t }\n\t d3.svg.axis = function() {\n\t var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n\t function axis(g) {\n\t g.each(function() {\n\t var g = d3.select(this);\n\t var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n\t var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n\t var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n\t d3.transition(path));\n\t tickEnter.append(\"line\");\n\t tickEnter.append(\"text\");\n\t var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n\t if (orient === \"bottom\" || orient === \"top\") {\n\t tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n\t text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n\t pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n\t } else {\n\t tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n\t text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n\t pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n\t }\n\t lineEnter.attr(y2, sign * innerTickSize);\n\t textEnter.attr(y1, sign * tickSpacing);\n\t lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n\t textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n\t if (scale1.rangeBand) {\n\t var x = scale1, dx = x.rangeBand() / 2;\n\t scale0 = scale1 = function(d) {\n\t return x(d) + dx;\n\t };\n\t } else if (scale0.rangeBand) {\n\t scale0 = scale1;\n\t } else {\n\t tickExit.call(tickTransform, scale1, scale0);\n\t }\n\t tickEnter.call(tickTransform, scale0, scale1);\n\t tickUpdate.call(tickTransform, scale1, scale1);\n\t });\n\t }\n\t axis.scale = function(x) {\n\t if (!arguments.length) return scale;\n\t scale = x;\n\t return axis;\n\t };\n\t axis.orient = function(x) {\n\t if (!arguments.length) return orient;\n\t orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n\t return axis;\n\t };\n\t axis.ticks = function() {\n\t if (!arguments.length) return tickArguments_;\n\t tickArguments_ = d3_array(arguments);\n\t return axis;\n\t };\n\t axis.tickValues = function(x) {\n\t if (!arguments.length) return tickValues;\n\t tickValues = x;\n\t return axis;\n\t };\n\t axis.tickFormat = function(x) {\n\t if (!arguments.length) return tickFormat_;\n\t tickFormat_ = x;\n\t return axis;\n\t };\n\t axis.tickSize = function(x) {\n\t var n = arguments.length;\n\t if (!n) return innerTickSize;\n\t innerTickSize = +x;\n\t outerTickSize = +arguments[n - 1];\n\t return axis;\n\t };\n\t axis.innerTickSize = function(x) {\n\t if (!arguments.length) return innerTickSize;\n\t innerTickSize = +x;\n\t return axis;\n\t };\n\t axis.outerTickSize = function(x) {\n\t if (!arguments.length) return outerTickSize;\n\t outerTickSize = +x;\n\t return axis;\n\t };\n\t axis.tickPadding = function(x) {\n\t if (!arguments.length) return tickPadding;\n\t tickPadding = +x;\n\t return axis;\n\t };\n\t axis.tickSubdivide = function() {\n\t return arguments.length && axis;\n\t };\n\t return axis;\n\t };\n\t var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n\t top: 1,\n\t right: 1,\n\t bottom: 1,\n\t left: 1\n\t };\n\t function d3_svg_axisX(selection, x0, x1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = x0(d);\n\t return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n\t });\n\t }\n\t function d3_svg_axisY(selection, y0, y1) {\n\t selection.attr(\"transform\", function(d) {\n\t var v0 = y0(d);\n\t return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n\t });\n\t }\n\t d3.svg.brush = function() {\n\t var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n\t function brush(g) {\n\t g.each(function() {\n\t var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n\t var background = g.selectAll(\".background\").data([ 0 ]);\n\t background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n\t g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n\t var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n\t resize.exit().remove();\n\t resize.enter().append(\"g\").attr(\"class\", function(d) {\n\t return \"resize \" + d;\n\t }).style(\"cursor\", function(d) {\n\t return d3_svg_brushCursor[d];\n\t }).append(\"rect\").attr(\"x\", function(d) {\n\t return /[ew]$/.test(d) ? -3 : null;\n\t }).attr(\"y\", function(d) {\n\t return /^[ns]/.test(d) ? -3 : null;\n\t }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n\t resize.style(\"display\", brush.empty() ? \"none\" : null);\n\t var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n\t if (x) {\n\t range = d3_scaleRange(x);\n\t backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n\t redrawX(gUpdate);\n\t }\n\t if (y) {\n\t range = d3_scaleRange(y);\n\t backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n\t redrawY(gUpdate);\n\t }\n\t redraw(gUpdate);\n\t });\n\t }\n\t brush.event = function(g) {\n\t g.each(function() {\n\t var event_ = event.of(this, arguments), extent1 = {\n\t x: xExtent,\n\t y: yExtent,\n\t i: xExtentDomain,\n\t j: yExtentDomain\n\t }, extent0 = this.__chart__ || extent1;\n\t this.__chart__ = extent1;\n\t if (d3_transitionInheritId) {\n\t d3.select(this).transition().each(\"start.brush\", function() {\n\t xExtentDomain = extent0.i;\n\t yExtentDomain = extent0.j;\n\t xExtent = extent0.x;\n\t yExtent = extent0.y;\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t }).tween(\"brush:brush\", function() {\n\t var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n\t xExtentDomain = yExtentDomain = null;\n\t return function(t) {\n\t xExtent = extent1.x = xi(t);\n\t yExtent = extent1.y = yi(t);\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t };\n\t }).each(\"end.brush\", function() {\n\t xExtentDomain = extent1.i;\n\t yExtentDomain = extent1.j;\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t });\n\t } else {\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t event_({\n\t type: \"brush\",\n\t mode: \"resize\"\n\t });\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t });\n\t };\n\t function redraw(g) {\n\t g.selectAll(\".resize\").attr(\"transform\", function(d) {\n\t return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n\t });\n\t }\n\t function redrawX(g) {\n\t g.select(\".extent\").attr(\"x\", xExtent[0]);\n\t g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n\t }\n\t function redrawY(g) {\n\t g.select(\".extent\").attr(\"y\", yExtent[0]);\n\t g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n\t }\n\t function brushstart() {\n\t var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n\t var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n\t if (d3.event.changedTouches) {\n\t w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n\t } else {\n\t w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n\t }\n\t g.interrupt().selectAll(\"*\").interrupt();\n\t if (dragging) {\n\t origin[0] = xExtent[0] - origin[0];\n\t origin[1] = yExtent[0] - origin[1];\n\t } else if (resizing) {\n\t var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n\t offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n\t origin[0] = xExtent[ex];\n\t origin[1] = yExtent[ey];\n\t } else if (d3.event.altKey) center = origin.slice();\n\t g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n\t d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n\t event_({\n\t type: \"brushstart\"\n\t });\n\t brushmove();\n\t function keydown() {\n\t if (d3.event.keyCode == 32) {\n\t if (!dragging) {\n\t center = null;\n\t origin[0] -= xExtent[1];\n\t origin[1] -= yExtent[1];\n\t dragging = 2;\n\t }\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function keyup() {\n\t if (d3.event.keyCode == 32 && dragging == 2) {\n\t origin[0] += xExtent[1];\n\t origin[1] += yExtent[1];\n\t dragging = 0;\n\t d3_eventPreventDefault();\n\t }\n\t }\n\t function brushmove() {\n\t var point = d3.mouse(target), moved = false;\n\t if (offset) {\n\t point[0] += offset[0];\n\t point[1] += offset[1];\n\t }\n\t if (!dragging) {\n\t if (d3.event.altKey) {\n\t if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n\t origin[0] = xExtent[+(point[0] < center[0])];\n\t origin[1] = yExtent[+(point[1] < center[1])];\n\t } else center = null;\n\t }\n\t if (resizingX && move1(point, x, 0)) {\n\t redrawX(g);\n\t moved = true;\n\t }\n\t if (resizingY && move1(point, y, 1)) {\n\t redrawY(g);\n\t moved = true;\n\t }\n\t if (moved) {\n\t redraw(g);\n\t event_({\n\t type: \"brush\",\n\t mode: dragging ? \"move\" : \"resize\"\n\t });\n\t }\n\t }\n\t function move1(point, scale, i) {\n\t var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n\t if (dragging) {\n\t r0 -= position;\n\t r1 -= size + position;\n\t }\n\t min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n\t if (dragging) {\n\t max = (min += position) + size;\n\t } else {\n\t if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n\t if (position < min) {\n\t max = min;\n\t min = position;\n\t } else {\n\t max = position;\n\t }\n\t }\n\t if (extent[0] != min || extent[1] != max) {\n\t if (i) yExtentDomain = null; else xExtentDomain = null;\n\t extent[0] = min;\n\t extent[1] = max;\n\t return true;\n\t }\n\t }\n\t function brushend() {\n\t brushmove();\n\t g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n\t d3.select(\"body\").style(\"cursor\", null);\n\t w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n\t dragRestore();\n\t event_({\n\t type: \"brushend\"\n\t });\n\t }\n\t }\n\t brush.x = function(z) {\n\t if (!arguments.length) return x;\n\t x = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.y = function(z) {\n\t if (!arguments.length) return y;\n\t y = z;\n\t resizes = d3_svg_brushResizes[!x << 1 | !y];\n\t return brush;\n\t };\n\t brush.clamp = function(z) {\n\t if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n\t if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n\t return brush;\n\t };\n\t brush.extent = function(z) {\n\t var x0, x1, y0, y1, t;\n\t if (!arguments.length) {\n\t if (x) {\n\t if (xExtentDomain) {\n\t x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n\t } else {\n\t x0 = xExtent[0], x1 = xExtent[1];\n\t if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t }\n\t }\n\t if (y) {\n\t if (yExtentDomain) {\n\t y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n\t } else {\n\t y0 = yExtent[0], y1 = yExtent[1];\n\t if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t }\n\t }\n\t return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n\t }\n\t if (x) {\n\t x0 = z[0], x1 = z[1];\n\t if (y) x0 = x0[0], x1 = x1[0];\n\t xExtentDomain = [ x0, x1 ];\n\t if (x.invert) x0 = x(x0), x1 = x(x1);\n\t if (x1 < x0) t = x0, x0 = x1, x1 = t;\n\t if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n\t }\n\t if (y) {\n\t y0 = z[0], y1 = z[1];\n\t if (x) y0 = y0[1], y1 = y1[1];\n\t yExtentDomain = [ y0, y1 ];\n\t if (y.invert) y0 = y(y0), y1 = y(y1);\n\t if (y1 < y0) t = y0, y0 = y1, y1 = t;\n\t if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n\t }\n\t return brush;\n\t };\n\t brush.clear = function() {\n\t if (!brush.empty()) {\n\t xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n\t xExtentDomain = yExtentDomain = null;\n\t }\n\t return brush;\n\t };\n\t brush.empty = function() {\n\t return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n\t };\n\t return d3.rebind(brush, event, \"on\");\n\t };\n\t var d3_svg_brushCursor = {\n\t n: \"ns-resize\",\n\t e: \"ew-resize\",\n\t s: \"ns-resize\",\n\t w: \"ew-resize\",\n\t nw: \"nwse-resize\",\n\t ne: \"nesw-resize\",\n\t se: \"nwse-resize\",\n\t sw: \"nesw-resize\"\n\t };\n\t var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n\t var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n\t var d3_time_formatUtc = d3_time_format.utc;\n\t var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n\t d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n\t function d3_time_formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t d3_time_formatIsoNative.parse = function(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t };\n\t d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n\t d3_time.second = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 1e3) * 1e3);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t d3_time.seconds = d3_time.second.range;\n\t d3_time.seconds.utc = d3_time.second.utc.range;\n\t d3_time.minute = d3_time_interval(function(date) {\n\t return new d3_date(Math.floor(date / 6e4) * 6e4);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t d3_time.minutes = d3_time.minute.range;\n\t d3_time.minutes.utc = d3_time.minute.utc.range;\n\t d3_time.hour = d3_time_interval(function(date) {\n\t var timezone = date.getTimezoneOffset() / 60;\n\t return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n\t }, function(date, offset) {\n\t date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t d3_time.hours = d3_time.hour.range;\n\t d3_time.hours.utc = d3_time.hour.utc.range;\n\t d3_time.month = d3_time_interval(function(date) {\n\t date = d3_time.day(date);\n\t date.setDate(1);\n\t return date;\n\t }, function(date, offset) {\n\t date.setMonth(date.getMonth() + offset);\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t d3_time.months = d3_time.month.range;\n\t d3_time.months.utc = d3_time.month.utc.range;\n\t function d3_time_scale(linear, methods, format) {\n\t function scale(x) {\n\t return linear(x);\n\t }\n\t scale.invert = function(x) {\n\t return d3_time_scaleDate(linear.invert(x));\n\t };\n\t scale.domain = function(x) {\n\t if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n\t linear.domain(x);\n\t return scale;\n\t };\n\t function tickMethod(extent, count) {\n\t var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n\t return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n\t return d / 31536e6;\n\t }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n\t }\n\t scale.nice = function(interval, skip) {\n\t var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n\t if (method) interval = method[0], skip = method[1];\n\t function skipped(date) {\n\t return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n\t }\n\t return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n\t floor: function(date) {\n\t while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n\t return date;\n\t },\n\t ceil: function(date) {\n\t while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n\t return date;\n\t }\n\t } : interval));\n\t };\n\t scale.ticks = function(interval, skip) {\n\t var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n\t range: interval\n\t }, skip ];\n\t if (method) interval = method[0], skip = method[1];\n\t return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n\t };\n\t scale.tickFormat = function() {\n\t return format;\n\t };\n\t scale.copy = function() {\n\t return d3_time_scale(linear.copy(), methods, format);\n\t };\n\t return d3_scale_linearRebind(scale, linear);\n\t }\n\t function d3_time_scaleDate(t) {\n\t return new Date(t);\n\t }\n\t var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n\t var d3_time_scaleLocalMethods = [ [ 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 ] ];\n\t var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n\t return d.getMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getDay() && d.getDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t var d3_time_scaleMilliseconds = {\n\t range: function(start, stop, step) {\n\t return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n\t },\n\t floor: d3_identity,\n\t ceil: d3_identity\n\t };\n\t d3_time_scaleLocalMethods.year = d3_time.year;\n\t d3_time.scale = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n\t };\n\t var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n\t return [ m[0].utc, m[1] ];\n\t });\n\t var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n\t return d.getUTCMilliseconds();\n\t } ], [ \":%S\", function(d) {\n\t return d.getUTCSeconds();\n\t } ], [ \"%I:%M\", function(d) {\n\t return d.getUTCMinutes();\n\t } ], [ \"%I %p\", function(d) {\n\t return d.getUTCHours();\n\t } ], [ \"%a %d\", function(d) {\n\t return d.getUTCDay() && d.getUTCDate() != 1;\n\t } ], [ \"%b %d\", function(d) {\n\t return d.getUTCDate() != 1;\n\t } ], [ \"%B\", function(d) {\n\t return d.getUTCMonth();\n\t } ], [ \"%Y\", d3_true ] ]);\n\t d3_time_scaleUtcMethods.year = d3_time.year.utc;\n\t d3_time.scale.utc = function() {\n\t return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n\t };\n\t d3.text = d3_xhrType(function(request) {\n\t return request.responseText;\n\t });\n\t d3.json = function(url, callback) {\n\t return d3_xhr(url, \"application/json\", d3_json, callback);\n\t };\n\t function d3_json(request) {\n\t return JSON.parse(request.responseText);\n\t }\n\t d3.html = function(url, callback) {\n\t return d3_xhr(url, \"text/html\", d3_html, callback);\n\t };\n\t function d3_html(request) {\n\t var range = d3_document.createRange();\n\t range.selectNode(d3_document.body);\n\t return range.createContextualFragment(request.responseText);\n\t }\n\t d3.xml = d3_xhrType(function(request) {\n\t return request.responseXML;\n\t });\n\t if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n\t}();\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t u = {};\n\t\n\tdl.extend(u, __webpack_require__(59));\n\tmodule.exports = dl.extend(u, dl);\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12);\n\t\n\tvar TIME = 'time',\n\t UTC = 'utc',\n\t STRING = 'string',\n\t ORDINAL = 'ordinal',\n\t NUMBER = 'number';\n\t\n\tfunction getTickFormat(scale, tickCount, tickFormatType, tickFormatString) {\n\t var formatType = tickFormatType || inferFormatType(scale);\n\t return getFormatter(scale, tickCount, formatType, tickFormatString);\n\t}\n\t\n\tfunction inferFormatType(scale) {\n\t switch (scale.type) {\n\t case TIME: return TIME;\n\t case UTC: return UTC;\n\t case ORDINAL: return STRING;\n\t default: return NUMBER;\n\t }\n\t}\n\t\n\t// Adapted from d3 log scale\n\t// TODO customize? replace with range-size-aware filtering?\n\tfunction logFilter(scale, domain, count, f) {\n\t if (count == null) return f;\n\t var base = scale.base(),\n\t k = Math.min(base, scale.ticks().length / count),\n\t v = domain[0] > 0 ? (e = 1e-12, Math.ceil) : (e = -1e-12, Math.floor),\n\t e;\n\t function log(x) {\n\t return (domain[0] < 0 ?\n\t -Math.log(x > 0 ? 0 : -x) :\n\t Math.log(x < 0 ? 0 : x)) / Math.log(base);\n\t }\n\t function pow(x) {\n\t return domain[0] < 0 ? -Math.pow(base, -x) : Math.pow(base, x);\n\t }\n\t return function(d) {\n\t return pow(v(log(d) + e)) / d >= k ? f(d) : '';\n\t };\n\t}\n\t\n\tfunction getFormatter(scale, tickCount, formatType, str) {\n\t var fmt = dl.format,\n\t log = scale.type === 'log',\n\t domain;\n\t\n\t switch (formatType) {\n\t case NUMBER:\n\t domain = scale.domain();\n\t return log ?\n\t logFilter(scale, domain, tickCount, fmt.auto.number(str || null)) :\n\t fmt.auto.linear(domain, tickCount, str || null);\n\t case TIME: return (str ? fmt : fmt.auto).time(str);\n\t case UTC: return (str ? fmt : fmt.auto).utc(str);\n\t default: return String;\n\t }\n\t}\n\t\n\tmodule.exports = {\n\t getTickFormat: getTickFormat\n\t};\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t path: __webpack_require__(61),\n\t render: __webpack_require__(65),\n\t Item: __webpack_require__(97),\n\t bound: __webpack_require__(84),\n\t Bounds: __webpack_require__(83),\n\t canvas: __webpack_require__(86),\n\t Gradient: __webpack_require__(98),\n\t toJSON: __webpack_require__(99).toJSON,\n\t fromJSON: __webpack_require__(99).fromJSON\n\t};\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t parse: __webpack_require__(62),\n\t render: __webpack_require__(63)\n\t};\n\n\n/***/ },\n/* 62 */\n/***/ function(module, exports) {\n\n\t// Path parsing and rendering code adapted from fabric.js -- Thanks!\n\tvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n\t regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\t\n\tmodule.exports = function(pathstr) {\n\t var result = [],\n\t path,\n\t curr,\n\t chunks,\n\t parsed, param,\n\t cmd, len, i, j, n, m;\n\t\n\t // First, break path into command sequence\n\t path = pathstr\n\t .slice()\n\t .replace(regexp[0], '###$1')\n\t .split(regexp[1])\n\t .slice(1);\n\t\n\t // Next, parse each command in turn\n\t for (i=0, n=path.length; i len) {\n\t for (j=1, m=parsed.length; j 1) {\n\t pl = Math.sqrt(pl);\n\t rx *= pl;\n\t ry *= pl;\n\t }\n\t\n\t var a00 = cos_th / rx;\n\t var a01 = sin_th / rx;\n\t var a10 = (-sin_th) / ry;\n\t var a11 = (cos_th) / ry;\n\t var x0 = a00 * ox + a01 * oy;\n\t var y0 = a10 * ox + a11 * oy;\n\t var x1 = a00 * x + a01 * y;\n\t var y1 = a10 * x + a11 * y;\n\t\n\t var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n\t var sfactor_sq = 1 / d - 0.25;\n\t if (sfactor_sq < 0) sfactor_sq = 0;\n\t var sfactor = Math.sqrt(sfactor_sq);\n\t if (sweep == large) sfactor = -sfactor;\n\t var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n\t var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\t\n\t var th0 = Math.atan2(y0-yc, x0-xc);\n\t var th1 = Math.atan2(y1-yc, x1-xc);\n\t\n\t var th_arc = th1-th0;\n\t if (th_arc < 0 && sweep === 1){\n\t th_arc += 2 * Math.PI;\n\t } else if (th_arc > 0 && sweep === 0) {\n\t th_arc -= 2 * Math.PI;\n\t }\n\t\n\t var segs = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n\t var result = [];\n\t for (var i=0; i=0;) {\n\t if (h[i].type !== type) continue;\n\t if (!handler || h[i].handler === handler) h.splice(i, 1);\n\t }\n\t return this;\n\t};\n\t\n\tprototype.pickEvent = function(evt) {\n\t var rect = this._canvas.getBoundingClientRect(),\n\t pad = this._padding, x, y;\n\t return this.pick(this._scene,\n\t x = (evt.clientX - rect.left),\n\t y = (evt.clientY - rect.top),\n\t x - pad.left, y - pad.top);\n\t};\n\t\n\t// find the scenegraph item at the current mouse position\n\t// x, y -- the absolute x, y mouse coordinates on the canvas element\n\t// gx, gy -- the relative coordinates within the current group\n\tprototype.pick = function(scene, x, y, gx, gy) {\n\t var g = this.context(),\n\t mark = marks[scene.marktype];\n\t return mark.pick.call(this, g, scene, x, y, gx, gy);\n\t};\n\t\n\tmodule.exports = CanvasHandler;\n\n\n/***/ },\n/* 68 */\n/***/ function(module, exports) {\n\n\t// create a new DOM element\n\tfunction create(doc, tag, ns) {\n\t return ns ? doc.createElementNS(ns, tag) : doc.createElement(tag);\n\t}\n\t\n\t// remove element from DOM\n\t// recursively remove parent elements if empty\n\tfunction remove(el) {\n\t if (!el) return;\n\t var p = el.parentNode;\n\t if (p) {\n\t p.removeChild(el);\n\t if (!p.childNodes || !p.childNodes.length) remove(p);\n\t }\n\t}\n\t\n\tmodule.exports = {\n\t // find first child element with matching tag\n\t find: function(el, tag) {\n\t tag = tag.toLowerCase();\n\t for (var i=0, n=el.childNodes.length; i index) {\n\t el.removeChild(el.childNodes[--curr]);\n\t }\n\t return el;\n\t },\n\t remove: remove,\n\t // generate css class name for mark\n\t cssClass: function(mark) {\n\t return 'mark-' + mark.marktype + (mark.name ? ' '+mark.name : '');\n\t },\n\t // generate string for an opening xml tag\n\t // tag: the name of the xml tag\n\t // attr: hash of attribute name-value pairs to include\n\t // raw: additional raw string to include in tag markup\n\t openTag: function(tag, attr, raw) {\n\t var s = '<' + tag, key, val;\n\t if (attr) {\n\t for (key in attr) {\n\t val = attr[key];\n\t if (val != null) {\n\t s += ' ' + key + '=\"' + val + '\"';\n\t }\n\t }\n\t }\n\t if (raw) s += ' ' + raw;\n\t return s + '>';\n\t },\n\t // generate string for closing xml tag\n\t // tag: the name of the xml tag\n\t closeTag: function(tag) {\n\t return '';\n\t }\n\t};\n\n\n/***/ },\n/* 69 */\n/***/ function(module, exports) {\n\n\tfunction Handler() {\n\t this._active = null;\n\t this._handlers = {};\n\t}\n\t\n\tvar prototype = Handler.prototype;\n\t\n\tprototype.initialize = function(el, pad, obj) {\n\t this._el = el;\n\t this._obj = obj || null;\n\t return this.padding(pad);\n\t};\n\t\n\tprototype.element = function() {\n\t return this._el;\n\t};\n\t\n\tprototype.padding = function(pad) {\n\t this._padding = pad || {top:0, left:0, bottom:0, right:0};\n\t return this;\n\t};\n\t\n\tprototype.scene = function(scene) {\n\t if (!arguments.length) return this._scene;\n\t this._scene = scene;\n\t return this;\n\t};\n\t\n\t// add an event handler\n\t// subclasses should override\n\tprototype.on = function(/*type, handler*/) {};\n\t\n\t// remove an event handler\n\t// subclasses should override\n\tprototype.off = function(/*type, handler*/) {};\n\t\n\t// return an array with all registered event handlers\n\tprototype.handlers = function() {\n\t var h = this._handlers, a = [], k;\n\t for (k in h) { a.push.apply(a, h[k]); }\n\t return a;\n\t};\n\t\n\tprototype.eventName = function(name) {\n\t var i = name.indexOf('.');\n\t return i < 0 ? name : name.slice(0,i);\n\t};\n\t\n\tmodule.exports = Handler;\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t arc: __webpack_require__(71),\n\t area: __webpack_require__(73),\n\t group: __webpack_require__(75),\n\t image: __webpack_require__(76),\n\t line: __webpack_require__(77),\n\t path: __webpack_require__(78),\n\t rect: __webpack_require__(79),\n\t rule: __webpack_require__(80),\n\t symbol: __webpack_require__(81),\n\t text: __webpack_require__(82)\n\t};\n\n\n/***/ },\n/* 71 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(72);\n\tvar halfpi = Math.PI / 2;\n\t\n\tfunction path(g, o) {\n\t var x = o.x || 0,\n\t y = o.y || 0,\n\t ir = o.innerRadius || 0,\n\t or = o.outerRadius || 0,\n\t sa = (o.startAngle || 0) - halfpi,\n\t ea = (o.endAngle || 0) - halfpi;\n\t g.beginPath();\n\t if (ir === 0) g.moveTo(x, y);\n\t else g.arc(x, y, ir, sa, ea, 0);\n\t g.arc(x, y, or, ea, sa, 1);\n\t g.closePath();\n\t}\n\t\n\tmodule.exports = {\n\t draw: util.drawAll(path),\n\t pick: util.pickPath(path)\n\t};\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\tfunction drawPathOne(path, g, o, items) {\n\t if (path(g, items)) return;\n\t\n\t var opac = o.opacity == null ? 1 : o.opacity;\n\t if (opac===0) return;\n\t\n\t if (o.fill && fill(g, o, opac)) { g.fill(); }\n\t if (o.stroke && stroke(g, o, opac)) { g.stroke(); }\n\t}\n\t\n\tfunction drawPathAll(path, g, scene, bounds) {\n\t var i, len, item;\n\t for (i=0, len=scene.items.length; i= 0;) {\n\t o = scene.items[i]; b = o.bounds;\n\t // first hit test against bounding box\n\t if ((b && !b.contains(gx, gy)) || !b) continue;\n\t // if in bounding box, perform more careful test\n\t if (test(g, o, x, y, gx, gy)) return o;\n\t }\n\t return null;\n\t };\n\t}\n\t\n\tfunction testPath(path, filled) {\n\t return function(g, o, x, y) {\n\t var item = Array.isArray(o) ? o[0] : o,\n\t fill = (filled == null) ? item.fill : filled,\n\t stroke = item.stroke && g.isPointInStroke, lw, lc;\n\t\n\t if (stroke) {\n\t lw = item.strokeWidth;\n\t lc = item.strokeCap;\n\t g.lineWidth = lw != null ? lw : 1;\n\t g.lineCap = lc != null ? lc : 'butt';\n\t }\n\t\n\t return path(g, o) ? false :\n\t (fill && g.isPointInPath(x, y)) ||\n\t (stroke && g.isPointInStroke(x, y));\n\t };\n\t}\n\t\n\tfunction pickPath(path) {\n\t return pick(testPath(path));\n\t}\n\t\n\tfunction fill(g, o, opacity) {\n\t opacity *= (o.fillOpacity==null ? 1 : o.fillOpacity);\n\t if (opacity > 0) {\n\t g.globalAlpha = opacity;\n\t g.fillStyle = color(g, o, o.fill);\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t}\n\t\n\tfunction stroke(g, o, opacity) {\n\t var lw = (lw = o.strokeWidth) != null ? lw : 1, lc;\n\t if (lw <= 0) return false;\n\t\n\t opacity *= (o.strokeOpacity==null ? 1 : o.strokeOpacity);\n\t if (opacity > 0) {\n\t g.globalAlpha = opacity;\n\t g.strokeStyle = color(g, o, o.stroke);\n\t g.lineWidth = lw;\n\t g.lineCap = (lc = o.strokeCap) != null ? lc : 'butt';\n\t g.vgLineDash(o.strokeDash || null);\n\t g.vgLineDashOffset(o.strokeDashOffset || 0);\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t}\n\t\n\tfunction color(g, o, value) {\n\t return (value.id) ?\n\t gradient(g, value, o.bounds) :\n\t value;\n\t}\n\t\n\tfunction gradient(g, p, b) {\n\t var w = b.width(),\n\t h = b.height(),\n\t x1 = b.x1 + p.x1 * w,\n\t y1 = b.y1 + p.y1 * h,\n\t x2 = b.x1 + p.x2 * w,\n\t y2 = b.y1 + p.y2 * h,\n\t grad = g.createLinearGradient(x1, y1, x2, y2),\n\t stop = p.stops,\n\t i, n;\n\t\n\t for (i=0, n=stop.length; i 0) {\n\t if (group.fill && util.fill(g, group, opac)) {\n\t g.fillRect(gx, gy, w, h);\n\t }\n\t if (group.stroke && util.stroke(g, group, opac)) {\n\t g.strokeRect(gx, gy, w, h);\n\t }\n\t }\n\t }\n\t\n\t // setup graphics context\n\t g.save();\n\t g.translate(gx, gy);\n\t if (group.clip) {\n\t g.beginPath();\n\t g.rect(0, 0, w, h);\n\t g.clip();\n\t }\n\t if (bounds) bounds.translate(-gx, -gy);\n\t\n\t // draw group contents\n\t for (j=0, m=axes.length; j=0;) {\n\t group = groups[i];\n\t\n\t // first hit test against bounding box\n\t // if a group is clipped, that should be handled by the bounds check.\n\t b = group.bounds;\n\t if (b && !b.contains(gx, gy)) continue;\n\t\n\t // passed bounds check, so test sub-groups\n\t axes = group.axisItems || EMPTY;\n\t items = group.items || EMPTY;\n\t legends = group.legendItems || EMPTY;\n\t dx = (group.x || 0);\n\t dy = (group.y || 0);\n\t\n\t g.save();\n\t g.translate(dx, dy);\n\t dx = gx - dx;\n\t dy = gy - dy;\n\t for (j=legends.length; --j>=0;) {\n\t subscene = legends[j];\n\t if (subscene.interactive !== false) {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t for (j=axes.length; --j>=0;) {\n\t subscene = axes[j];\n\t if (subscene.interactive !== false && subscene.layer !== 'back') {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t for (j=items.length; --j>=0;) {\n\t subscene = items[j];\n\t if (subscene.interactive !== false) {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t for (j=axes.length; --j>=0;) {\n\t subscene = axes[j];\n\t if (subscene.interative !== false && subscene.layer === 'back') {\n\t hits = this.pick(subscene, x, y, dx, dy);\n\t if (hits) { g.restore(); return hits; }\n\t }\n\t }\n\t g.restore();\n\t\n\t if (scene.interactive !== false && (group.fill || group.stroke) &&\n\t dx >= 0 && dx <= group.width && dy >= 0 && dy <= group.height) {\n\t return group;\n\t }\n\t }\n\t\n\t return null;\n\t}\n\t\n\tmodule.exports = {\n\t draw: draw,\n\t pick: pick\n\t};\n\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(72);\n\t\n\tfunction draw(g, scene, bounds) {\n\t if (!scene.items || !scene.items.length) return;\n\t\n\t var renderer = this,\n\t items = scene.items, o;\n\t\n\t for (var i=0, len=items.length; i this.x2) this.x2 = x;\n\t if (y > this.y2) this.y2 = y;\n\t return this;\n\t};\n\t\n\tprototype.expand = function(d) {\n\t this.x1 -= d;\n\t this.y1 -= d;\n\t this.x2 += d;\n\t this.y2 += d;\n\t return this;\n\t};\n\t\n\tprototype.round = function() {\n\t this.x1 = Math.floor(this.x1);\n\t this.y1 = Math.floor(this.y1);\n\t this.x2 = Math.ceil(this.x2);\n\t this.y2 = Math.ceil(this.y2);\n\t return this;\n\t};\n\t\n\tprototype.translate = function(dx, dy) {\n\t this.x1 += dx;\n\t this.x2 += dx;\n\t this.y1 += dy;\n\t this.y2 += dy;\n\t return this;\n\t};\n\t\n\tprototype.rotate = function(angle, x, y) {\n\t var cos = Math.cos(angle),\n\t sin = Math.sin(angle),\n\t cx = x - x*cos + y*sin,\n\t cy = y - x*sin - y*cos,\n\t x1 = this.x1, x2 = this.x2,\n\t y1 = this.y1, y2 = this.y2;\n\t\n\t return this.clear()\n\t .add(cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy)\n\t .add(cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy)\n\t .add(cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy)\n\t .add(cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy);\n\t};\n\t\n\tprototype.union = function(b) {\n\t if (b.x1 < this.x1) this.x1 = b.x1;\n\t if (b.y1 < this.y1) this.y1 = b.y1;\n\t if (b.x2 > this.x2) this.x2 = b.x2;\n\t if (b.y2 > this.y2) this.y2 = b.y2;\n\t return this;\n\t};\n\t\n\tprototype.encloses = function(b) {\n\t return b && (\n\t this.x1 <= b.x1 &&\n\t this.x2 >= b.x2 &&\n\t this.y1 <= b.y1 &&\n\t this.y2 >= b.y2\n\t );\n\t};\n\t\n\tprototype.alignsWith = function(b) {\n\t return b && (\n\t this.x1 == b.x1 ||\n\t this.x2 == b.x2 ||\n\t this.y1 == b.y1 ||\n\t this.y2 == b.y2\n\t );\n\t};\n\t\n\tprototype.intersects = function(b) {\n\t return b && !(\n\t this.x2 < b.x1 ||\n\t this.x1 > b.x2 ||\n\t this.y2 < b.y1 ||\n\t this.y1 > b.y2\n\t );\n\t};\n\t\n\tprototype.contains = function(x, y) {\n\t return !(\n\t x < this.x1 ||\n\t x > this.x2 ||\n\t y < this.y1 ||\n\t y > this.y2\n\t );\n\t};\n\t\n\tprototype.width = function() {\n\t return this.x2 - this.x1;\n\t};\n\t\n\tprototype.height = function() {\n\t return this.y2 - this.y1;\n\t};\n\t\n\tmodule.exports = Bounds;\n\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar BoundsContext = __webpack_require__(85),\n\t Bounds = __webpack_require__(83),\n\t canvas = __webpack_require__(86),\n\t svg = __webpack_require__(74),\n\t text = __webpack_require__(88),\n\t paths = __webpack_require__(61),\n\t parse = paths.parse,\n\t drawPath = paths.render,\n\t areaPath = svg.path.area,\n\t linePath = svg.path.line,\n\t halfpi = Math.PI / 2,\n\t sqrt3 = Math.sqrt(3),\n\t tan30 = Math.tan(30 * Math.PI / 180),\n\t g2D = null,\n\t bc = BoundsContext();\n\t\n\tfunction context() {\n\t return g2D || (g2D = canvas.instance(1,1).getContext('2d'));\n\t}\n\t\n\tfunction strokeBounds(o, bounds) {\n\t if (o.stroke && o.opacity !== 0 && o.stokeOpacity !== 0) {\n\t bounds.expand(o.strokeWidth != null ? o.strokeWidth : 1);\n\t }\n\t return bounds;\n\t}\n\t\n\tfunction pathBounds(o, path, bounds, x, y) {\n\t if (path == null) {\n\t bounds.set(0, 0, 0, 0);\n\t } else {\n\t drawPath(bc.bounds(bounds), path, x, y);\n\t strokeBounds(o, bounds);\n\t }\n\t return bounds;\n\t}\n\t\n\tfunction path(o, bounds) {\n\t var p = o.path ? o.pathCache || (o.pathCache = parse(o.path)) : null;\n\t return pathBounds(o, p, bounds, o.x, o.y);\n\t}\n\t\n\tfunction area(mark, bounds) {\n\t if (mark.items.length === 0) return bounds;\n\t var items = mark.items,\n\t item = items[0],\n\t p = item.pathCache || (item.pathCache = parse(areaPath(items)));\n\t return pathBounds(item, p, bounds);\n\t}\n\t\n\tfunction line(mark, bounds) {\n\t if (mark.items.length === 0) return bounds;\n\t var items = mark.items,\n\t item = items[0],\n\t p = item.pathCache || (item.pathCache = parse(linePath(items)));\n\t return pathBounds(item, p, bounds);\n\t}\n\t\n\tfunction rect(o, bounds) {\n\t var x, y;\n\t return strokeBounds(o, bounds.set(\n\t x = o.x || 0,\n\t y = o.y || 0,\n\t (x + o.width) || 0,\n\t (y + o.height) || 0\n\t ));\n\t}\n\t\n\tfunction image(o, bounds) {\n\t var x = o.x || 0,\n\t y = o.y || 0,\n\t w = o.width || 0,\n\t h = o.height || 0;\n\t x = x - (o.align === 'center' ? w/2 : (o.align === 'right' ? w : 0));\n\t y = y - (o.baseline === 'middle' ? h/2 : (o.baseline === 'bottom' ? h : 0));\n\t return bounds.set(x, y, x+w, y+h);\n\t}\n\t\n\tfunction rule(o, bounds) {\n\t var x1, y1;\n\t return strokeBounds(o, bounds.set(\n\t x1 = o.x || 0,\n\t y1 = o.y || 0,\n\t o.x2 != null ? o.x2 : x1,\n\t o.y2 != null ? o.y2 : y1\n\t ));\n\t}\n\t\n\tfunction arc(o, bounds) {\n\t var cx = o.x || 0,\n\t cy = o.y || 0,\n\t ir = o.innerRadius || 0,\n\t or = o.outerRadius || 0,\n\t sa = (o.startAngle || 0) - halfpi,\n\t ea = (o.endAngle || 0) - halfpi,\n\t xmin = Infinity, xmax = -Infinity,\n\t ymin = Infinity, ymax = -Infinity,\n\t a, i, n, x, y, ix, iy, ox, oy;\n\t\n\t var angles = [sa, ea],\n\t s = sa - (sa % halfpi);\n\t for (i=0; i<4 && s=0;) {\n\t if (h[i].type === type && !handler || h[i].handler === handler) {\n\t svg.removeEventListener(name, h[i].listener);\n\t h.splice(i, 1);\n\t }\n\t }\n\t return this;\n\t};\n\t\n\tmodule.exports = SVGHandler;\n\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ImageLoader = __webpack_require__(90),\n\t Renderer = __webpack_require__(91),\n\t text = __webpack_require__(88),\n\t DOM = __webpack_require__(68),\n\t SVG = __webpack_require__(74),\n\t ns = SVG.metadata.xmlns,\n\t marks = __webpack_require__(95);\n\t\n\tfunction SVGRenderer(loadConfig) {\n\t Renderer.call(this);\n\t this._loader = new ImageLoader(loadConfig);\n\t this._dirtyID = 0;\n\t}\n\t\n\tvar base = Renderer.prototype;\n\tvar prototype = (SVGRenderer.prototype = Object.create(base));\n\tprototype.constructor = SVGRenderer;\n\t\n\tprototype.initialize = function(el, width, height, padding) {\n\t if (el) {\n\t this._svg = DOM.child(el, 0, 'svg', ns, 'marks');\n\t DOM.clear(el, 1);\n\t // set the svg root group\n\t this._root = DOM.child(this._svg, 0, 'g', ns);\n\t DOM.clear(this._svg, 1);\n\t }\n\t\n\t // create the svg definitions cache\n\t this._defs = {\n\t clip_id: 1,\n\t gradient: {},\n\t clipping: {}\n\t };\n\t\n\t // set background color if defined\n\t this.background(this._bgcolor);\n\t\n\t return base.initialize.call(this, el, width, height, padding);\n\t};\n\t\n\tprototype.background = function(bgcolor) {\n\t if (arguments.length && this._svg) {\n\t this._svg.style.setProperty('background-color', bgcolor);\n\t }\n\t return base.background.apply(this, arguments);\n\t};\n\t\n\tprototype.resize = function(width, height, padding) {\n\t base.resize.call(this, width, height, padding);\n\t \n\t if (this._svg) {\n\t var w = this._width,\n\t h = this._height,\n\t p = this._padding;\n\t \n\t this._svg.setAttribute('width', w + p.left + p.right);\n\t this._svg.setAttribute('height', h + p.top + p.bottom);\n\t \n\t this._root.setAttribute('transform', 'translate('+p.left+','+p.top+')');\n\t }\n\t\n\t return this;\n\t};\n\t\n\tprototype.svg = function() {\n\t if (!this._svg) return null;\n\t\n\t var attr = {\n\t 'class': 'marks',\n\t 'width': this._width + this._padding.left + this._padding.right,\n\t 'height': this._height + this._padding.top + this._padding.bottom,\n\t };\n\t for (var key in SVG.metadata) {\n\t attr[key] = SVG.metadata[key];\n\t }\n\t\n\t return DOM.openTag('svg', attr) + this._svg.innerHTML + DOM.closeTag('svg');\n\t};\n\t\n\tprototype.imageURL = function(url) {\n\t return this._loader.imageURL(url);\n\t};\n\t\n\t\n\t// -- Render entry point --\n\t\n\tprototype.render = function(scene, items) {\n\t if (this._dirtyCheck(items)) {\n\t if (this._dirtyAll) this._resetDefs();\n\t this.draw(this._root, scene, -1);\n\t DOM.clear(this._root, 1);\n\t }\n\t this.updateDefs();\n\t return this;\n\t};\n\t\n\tprototype.draw = function(el, scene, index) {\n\t this.drawMark(el, scene, index, marks[scene.marktype]);\n\t};\n\t\n\t\n\t// -- Manage SVG definitions ('defs') block --\n\t\n\tprototype.updateDefs = function() {\n\t var svg = this._svg,\n\t defs = this._defs,\n\t el = defs.el,\n\t index = 0, id;\n\t\n\t for (id in defs.gradient) {\n\t if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n\t updateGradient(el, defs.gradient[id], index++);\n\t }\n\t\n\t for (id in defs.clipping) {\n\t if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n\t updateClipping(el, defs.clipping[id], index++);\n\t }\n\t\n\t // clean-up\n\t if (el) {\n\t if (index === 0) {\n\t svg.removeChild(el);\n\t defs.el = null;\n\t } else {\n\t DOM.clear(el, index); \n\t }\n\t }\n\t};\n\t\n\tfunction updateGradient(el, grad, index) {\n\t var i, n, stop;\n\t\n\t el = DOM.child(el, index, 'linearGradient', ns);\n\t el.setAttribute('id', grad.id);\n\t el.setAttribute('x1', grad.x1);\n\t el.setAttribute('x2', grad.x2);\n\t el.setAttribute('y1', grad.y1);\n\t el.setAttribute('y2', grad.y2);\n\t \n\t for (i=0, n=grad.stops.length; i 0) ? openTag('defs') + defs + closeTag('defs') : '';\n\t};\n\t\n\tprototype.imageURL = function(url) {\n\t return this._loader.imageURL(url);\n\t};\n\t\n\tvar object;\n\t\n\tfunction emit(name, value, ns, prefixed) {\n\t object[prefixed || name] = value;\n\t}\n\t\n\tprototype.attributes = function(attr, item) {\n\t object = {};\n\t attr(emit, item, this);\n\t return object;\n\t};\n\t\n\tprototype.mark = function(scene) {\n\t var mdef = MARKS[scene.marktype],\n\t tag = mdef.tag,\n\t attr = mdef.attr,\n\t nest = mdef.nest || false,\n\t data = nest ?\n\t (scene.items && scene.items.length ? [scene.items[0]] : []) :\n\t (scene.items || []),\n\t defs = this._defs,\n\t str = '',\n\t style, i, item;\n\t\n\t if (tag !== 'g' && scene.interactive === false) {\n\t style = 'style=\"pointer-events: none;\"';\n\t }\n\t\n\t // render opening group tag\n\t str += openTag('g', {\n\t 'class': DOM.cssClass(scene)\n\t }, style);\n\t\n\t // render contained elements\n\t for (i=0; i/g, '>');\n\t}\n\t\n\tmodule.exports = SVGStringRenderer;\n\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tfunction Item(mark) {\n\t this.mark = mark;\n\t}\n\t\n\tvar prototype = Item.prototype;\n\t\n\tprototype.hasPropertySet = function(name) {\n\t var props = this.mark.def.properties;\n\t return props && props[name] != null;\n\t};\n\t\n\tprototype.cousin = function(offset, index) {\n\t if (offset === 0) return this;\n\t offset = offset || -1;\n\t var mark = this.mark,\n\t group = mark.group,\n\t iidx = index==null ? mark.items.indexOf(this) : index,\n\t midx = group.items.indexOf(mark) + offset;\n\t return group.items[midx].items[iidx];\n\t};\n\t\n\tprototype.sibling = function(offset) {\n\t if (offset === 0) return this;\n\t offset = offset || -1;\n\t var mark = this.mark,\n\t iidx = mark.items.indexOf(this) + offset;\n\t return mark.items[iidx];\n\t};\n\t\n\tprototype.remove = function() {\n\t var item = this,\n\t list = item.mark.items,\n\t i = list.indexOf(item);\n\t if (i >= 0) {\n\t if (i===list.length-1) {\n\t list.pop();\n\t } else {\n\t list.splice(i, 1);\n\t }\n\t }\n\t return item;\n\t};\n\t\n\tprototype.touch = function() {\n\t if (this.pathCache) this.pathCache = null;\n\t};\n\t\n\tmodule.exports = Item;\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tvar gradient_id = 0;\n\t\n\tfunction Gradient(type) {\n\t this.id = 'gradient_' + (gradient_id++);\n\t this.type = type || 'linear';\n\t this.stops = [];\n\t this.x1 = 0;\n\t this.x2 = 1;\n\t this.y1 = 0;\n\t this.y2 = 0;\n\t}\n\t\n\tvar prototype = Gradient.prototype;\n\t\n\tprototype.stop = function(offset, color) {\n\t this.stops.push({\n\t offset: offset,\n\t color: color\n\t });\n\t return this;\n\t};\n\t\n\tmodule.exports = Gradient;\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar bound = __webpack_require__(84);\n\t\n\tvar sets = [\n\t 'items',\n\t 'axisItems',\n\t 'legendItems'\n\t];\n\t\n\tvar keys = [\n\t 'marktype', 'name', 'interactive', 'clip',\n\t 'items', 'axisItems', 'legendItems', 'layer',\n\t 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n\t 'fill', 'fillOpacity', 'opacity', // fill\n\t 'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n\t 'strokeDash', 'strokeDashOffset', // stroke dash\n\t 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n\t 'interpolate', 'tension', 'orient', // area, line\n\t 'url', // image\n\t 'path', // path\n\t 'x2', 'y2', // rule\n\t 'size', 'shape', // symbol\n\t 'text', 'angle', 'theta', 'radius', 'dx', 'dy', // text\n\t 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant' // font\n\t];\n\t\n\tfunction toJSON(scene, indent) {\n\t return JSON.stringify(scene, keys, indent);\n\t}\n\t\n\tfunction fromJSON(json) {\n\t var scene = (typeof json === 'string' ? JSON.parse(json) : json);\n\t return initialize(scene);\n\t}\n\t\n\tfunction initialize(scene) {\n\t var type = scene.marktype,\n\t i, n, s, m, items;\n\t\n\t for (s=0, m=sets.length; s 0) {\n\t try {\n\t model.data(d.name).values(dl.read(data, d.format));\n\t if (--count === 0) callback();\n\t } catch (err) {\n\t onError(err, d);\n\t }\n\t }\n\t };\n\t }\n\t\n\t // process each data set definition\n\t (spec || []).forEach(function(d) {\n\t if (d.url) {\n\t count += 1;\n\t dl.load(dl.extend({url: d.url}, config.load), onLoad(d));\n\t }\n\t try {\n\t parseData.datasource(model, d);\n\t } catch (err) {\n\t onError(err, d);\n\t }\n\t });\n\t\n\t if (count === 0) setTimeout(callback, 1);\n\t return spec;\n\t}\n\t\n\tparseData.datasource = function(model, d) {\n\t var transform = (d.transform || []).map(function(t) {\n\t return parseTransforms(model, t);\n\t }),\n\t mod = (d.modify || []).map(function(m) {\n\t return parseModify(model, m, d);\n\t }),\n\t ds = model.data(d.name, mod.concat(transform));\n\t\n\t if (d.values) {\n\t ds.values(dl.read(d.values, d.format));\n\t } else if (d.source) {\n\t // Derived ds will be pulsed by its src rather than the model.\n\t ds.source(d.source).addListener(ds);\n\t model.removeListener(ds.pipeline()[0]);\n\t }\n\t\n\t return ds;\n\t};\n\t\n\tmodule.exports = parseData;\n\t\n\tvar parseDef = {\n\t \"oneOf\": [\n\t {\"enum\": [\"auto\"]},\n\t {\n\t \"type\": \"object\",\n\t \"additionalProperties\": {\n\t \"enum\": [\"number\", \"boolean\", \"date\", \"string\"]\n\t }\n\t }\n\t ]\n\t};\n\t\n\tparseData.schema = {\n\t \"defs\": {\n\t \"data\": {\n\t \"title\": \"Input data set definition\",\n\t \"type\": \"object\",\n\t\n\t \"allOf\": [{\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"transform\": {\"$ref\": \"#/defs/transform\"},\n\t \"modify\": {\"$ref\": \"#/defs/modify\"},\n\t \"format\": {\n\t \"type\": \"object\",\n\t \"oneOf\": [{\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"json\"]},\n\t \"parse\": parseDef,\n\t \"property\": {\"type\": \"string\"}\n\t },\n\t \"additionalProperties\": false\n\t }, {\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"csv\", \"tsv\"]},\n\t \"parse\": parseDef\n\t },\n\t \"additionalProperties\": false\n\t }, {\n\t \"oneOf\": [{\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"topojson\"]},\n\t \"feature\": {\"type\": \"string\"}\n\t },\n\t \"additionalProperties\": false\n\t }, {\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"topojson\"]},\n\t \"mesh\": {\"type\": \"string\"}\n\t },\n\t \"additionalProperties\": false\n\t }]\n\t }, {\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"treejson\"]},\n\t \"children\": {\"type\": \"string\"},\n\t \"parse\": parseDef\n\t },\n\t \"additionalProperties\": false\n\t }]\n\t }\n\t },\n\t \"required\": [\"name\"]\n\t }, {\n\t \"anyOf\": [{\n\t \"required\": [\"name\", \"modify\"]\n\t }, {\n\t \"oneOf\": [{\n\t \"properties\": {\"source\": {\"type\": \"string\"}},\n\t \"required\": [\"source\"]\n\t }, {\n\t \"properties\": {\"values\": {\"type\": \"array\"}},\n\t \"required\": [\"values\"]\n\t }, {\n\t \"properties\": {\"url\": {\"type\": \"string\"}},\n\t \"required\": [\"url\"]\n\t }]\n\t }]\n\t }]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t transforms = __webpack_require__(103);\n\t\n\tfunction parseTransforms(model, def) {\n\t var transform = transforms[def.type],\n\t tx;\n\t\n\t if (!transform) throw new Error('\"' + def.type + '\" is not a valid transformation');\n\t\n\t tx = new transform(model);\n\t // We want to rename output fields before setting any other properties,\n\t // as subsequent properties may require output to be set (e.g. group by).\n\t if(def.output) tx.output(def.output);\n\t\n\t dl.keys(def).forEach(function(k) {\n\t if(k === 'type' || k === 'output') return;\n\t tx.param(k, def[k]);\n\t });\n\t\n\t return tx;\n\t}\n\t\n\tmodule.exports = parseTransforms;\n\t\n\tvar keys = dl.keys(transforms)\n\t .filter(function(k) { return transforms[k].schema; });\n\t\n\tvar defs = keys.reduce(function(acc, k) {\n\t return (acc[k+'Transform'] = transforms[k].schema, acc);\n\t}, {});\n\t\n\tparseTransforms.schema = {\n\t \"defs\": dl.extend(defs, {\n\t \"transform\": {\n\t \"type\": \"array\",\n\t \"items\": {\n\t \"oneOf\": keys.map(function(k) {\n\t return {\"$ref\": \"#/defs/\"+k+\"Transform\"};\n\t })\n\t }\n\t }\n\t })\n\t};\n\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t aggregate: __webpack_require__(104),\n\t bin: __webpack_require__(108),\n\t cross: __webpack_require__(110),\n\t countpattern: __webpack_require__(111),\n\t linkpath: __webpack_require__(112),\n\t facet: __webpack_require__(113),\n\t filter: __webpack_require__(114),\n\t fold: __webpack_require__(115),\n\t force: __webpack_require__(116),\n\t formula: __webpack_require__(118),\n\t geo: __webpack_require__(119),\n\t geopath: __webpack_require__(120),\n\t hierarchy: __webpack_require__(121),\n\t impute: __webpack_require__(122),\n\t lookup: __webpack_require__(123),\n\t pie: __webpack_require__(124),\n\t rank: __webpack_require__(125),\n\t sort: __webpack_require__(126),\n\t stack: __webpack_require__(127),\n\t treeify: __webpack_require__(128),\n\t treemap: __webpack_require__(129),\n\t voronoi: __webpack_require__(130),\n\t wordcloud: __webpack_require__(131)\n\t};\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t log = __webpack_require__(8),\n\t ChangeSet = df.ChangeSet,\n\t Tuple = df.Tuple,\n\t Deps = df.Dependencies,\n\t Transform = __webpack_require__(105),\n\t Facetor = __webpack_require__(107);\n\t\n\tfunction Aggregate(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'},\n\t summarize: {\n\t type: 'custom',\n\t set: function(summarize) {\n\t var signalDeps = {},\n\t tx = this._transform,\n\t i, len, f, fields, name, ops;\n\t\n\t if (!dl.isArray(fields = summarize)) { // Object syntax from dl\n\t fields = [];\n\t for (name in summarize) {\n\t ops = dl.array(summarize[name]);\n\t fields.push({field: name, ops: ops});\n\t }\n\t }\n\t\n\t function sg(x) { if (x.signal) signalDeps[x.signal] = 1; }\n\t\n\t for (i=0, len=fields.length; i', default: [5, 2]}\n\t });\n\t\n\t this._output = {\n\t start: 'bin_start',\n\t end: 'bin_end',\n\t mid: 'bin_mid'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Bin.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Bin;\n\t\n\tprototype.extent = function(data) {\n\t // TODO only recompute extent upon data or field change?\n\t var e = [this.param('min'), this.param('max')], d;\n\t if (e[0] == null || e[1] == null) {\n\t d = dl.extent(data, this.param('field').accessor);\n\t if (e[0] == null) e[0] = d[0];\n\t if (e[1] == null) e[1] = d[1];\n\t }\n\t return e;\n\t};\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['binning']);\n\t\n\t var extent = this.extent(data),\n\t output = this._output,\n\t step = this.param('step'),\n\t steps = this.param('steps'),\n\t minstep = this.param('minstep'),\n\t get = this.param('field').accessor,\n\t opt = {\n\t min: extent[0],\n\t max: extent[1],\n\t base: this.param('base'),\n\t maxbins: this.param('maxbins'),\n\t div: this.param('div')\n\t };\n\t\n\t if (step) opt.step = step;\n\t if (steps) opt.steps = steps;\n\t if (minstep) opt.minstep = minstep;\n\t var b = dl.bins(opt),\n\t s = b.step;\n\t\n\t function update(d) {\n\t var v = get(d);\n\t v = v == null ? null\n\t : b.start + s * ~~((v - b.start) / s);\n\t Tuple.set(d, output.start, v);\n\t Tuple.set(d, output.end, v + s);\n\t Tuple.set(d, output.mid, v + s/2);\n\t }\n\t input.add.forEach(update);\n\t input.mod.forEach(update);\n\t input.rem.forEach(update);\n\t\n\t input.fields[output.start] = 1;\n\t input.fields[output.end] = 1;\n\t input.fields[output.mid] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = Bin;\n\t\n\tBin.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Bin transform\",\n\t \"description\": \"Bins values into quantitative bins (e.g., for a histogram).\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"bin\"]},\n\t \"field\": {\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The name of the field to bin values from.\"\n\t },\n\t \"min\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The minimum bin value to consider.\"\n\t },\n\t \"max\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The maximum bin value to consider.\"\n\t },\n\t \"base\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The number base to use for automatic bin determination.\",\n\t \"default\": 10\n\t },\n\t \"maxbins\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"The maximum number of allowable bins.\",\n\t \"default\": 20\n\t },\n\t \"step\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"An exact step size to use between bins. If provided, options such as maxbins will be ignored.\"\n\t },\n\t \"steps\": {\n\t \"description\": \"An array of allowable step sizes to choose from.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": \"number\"}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"minstep\": {\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"A minimum allowable step size (particularly useful for integer values).\"\n\t },\n\t \"div\": {\n\t \"description\": \"An array of scale factors indicating allowable subdivisions.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": \"number\"},\n\t \"default\": [5, 2]\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"start\": {\"type\": \"string\", \"default\": \"bin_start\"},\n\t \"end\": {\"type\": \"string\", \"default\": \"bin_end\"},\n\t \"mid\": {\"type\": \"string\", \"default\": \"bin_mid\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"field\"]\n\t};\n\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Base = __webpack_require__(105).prototype;\n\t\n\tfunction BatchTransform() {\n\t // Nearest appropriate collector.\n\t // Set by the dataflow Graph during connection.\n\t this._collector = null;\n\t}\n\t\n\tvar prototype = (BatchTransform.prototype = Object.create(Base));\n\tprototype.constructor = BatchTransform;\n\t\n\tprototype.init = function(graph) {\n\t Base.init.call(this, graph);\n\t return this.batch(true);\n\t};\n\t\n\tprototype.transform = function(input, reset) {\n\t return this.batchTransform(input, this._collector.data(), reset);\n\t};\n\t\n\tprototype.batchTransform = function(/* input, data, reset */) {\n\t};\n\t\n\tmodule.exports = BatchTransform;\n\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t ChangeSet = df.ChangeSet,\n\t Tuple = df.Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Cross(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t with: {type: 'data'},\n\t diagonal: {type: 'value', default: 'true'},\n\t filter: {type: 'expr'}\n\t });\n\t\n\t this._output = {'left': 'a', 'right': 'b'};\n\t this._lastWith = null; // Last time we crossed w/with-ds.\n\t this._cids = {};\n\t this._cache = {};\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Cross.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Cross;\n\t\n\t// Each cached incoming tuple also has a flag to determine whether\n\t// any tuples were filtered.\n\tfunction _cache(x, t) {\n\t var c = this._cache,\n\t cross = c[x._id] || (c[x._id] = {c: [], f: false});\n\t cross.c.push(t);\n\t}\n\t\n\tfunction _cid(left, x, y) {\n\t return left ? x._id+'_'+y._id : y._id+'_'+x._id;\n\t}\n\t\n\tfunction add(output, left, data, diag, test, mids, x) {\n\t var as = this._output,\n\t cache = this._cache,\n\t cids = this._cids,\n\t oadd = output.add,\n\t fltrd = false,\n\t i = 0, len = data.length,\n\t t = {}, y, cid;\n\t\n\t for (; i=0; --i) {\n\t t = tpls[i];\n\t l = x === t[as.left]; // Cache has tpls w/x both on left & right.\n\t y = l ? t[as.right] : t[as.left];\n\t cid = _cid(l, x, y);\n\t\n\t // Lazy removal: y was previously rem'd, so clean up the cache.\n\t if (!cache[y._id]) {\n\t cids[cid] = false;\n\t tpls.splice(i, 1);\n\t continue;\n\t }\n\t\n\t if (!test || test(t)) {\n\t if (mids[t._id]) continue;\n\t omod.push(t);\n\t mids[t._id] = 1;\n\t } else {\n\t if (!rids[t._id]) orem.push.apply(orem, tpls.splice(i, 1));\n\t rids[t._id] = 1;\n\t cids[cid] = false;\n\t cross.f = true;\n\t }\n\t }\n\t }\n\t\n\t // If we have a filter param, call add to catch any tuples that may\n\t // have previously been filtered.\n\t if (test && fltrd) add.call(this, output, left, data, diag, test, mids, x);\n\t}\n\t\n\tfunction rem(output, left, rids, x) {\n\t var as = this._output,\n\t cross = this._cache[x._id],\n\t cids = this._cids,\n\t orem = output.rem,\n\t i, len, t, y, l;\n\t if (!cross) return;\n\t\n\t for (i=0, len=cross.c.length; i this._lastWith) {\n\t woutput.rem.forEach(rem.bind(this, output, false, rids));\n\t woutput.add.forEach(add.bind(this, output, false, data, diag, test, mids));\n\t woutput.mod.forEach(mod.bind(this, output, false, data, diag, test, mids, rids));\n\t this._lastWith = woutput.stamp;\n\t }\n\t\n\t // Mods need to come after all removals have been run.\n\t input.mod.forEach(mod.bind(this, output, true, wdata, diag, test, mids, rids));\n\t }\n\t\n\t output.fields[as.left] = 1;\n\t output.fields[as.right] = 1;\n\t return output;\n\t};\n\t\n\tmodule.exports = Cross;\n\t\n\tCross.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Cross transform\",\n\t \"description\": \"Compute the cross-product of two data sets.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"cross\"]},\n\t \"with\": {\n\t \"type\": \"string\",\n\t \"description\": \"The name of the secondary data set to cross with the primary data. \" +\n\t \"If unspecified, the primary data is crossed with itself.\"\n\t },\n\t \"diagonal\": {\n\t \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"description\": \"If false, items along the \\\"diagonal\\\" of the cross-product \" +\n\t \"(those elements with the same index in their respective array) \" +\n\t \"will not be included in the output.\",\n\t \"default\": true\n\t },\n\t \"filter\": {\n\t \"type\": \"string\",\n\t \"description\": \"A string containing an expression (in JavaScript syntax) \" +\n\t \"to filter the resulting data elements.\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"left\": {\"type\": \"string\", \"default\": \"a\"},\n\t \"right\": {\"type\": \"string\", \"default\": \"b\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 111 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar df = __webpack_require__(4),\n\t Tuple = df.Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction CountPattern(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t field: {type: 'field', default: 'data'},\n\t pattern: {type: 'value', default: '[\\\\w\\']+'},\n\t case: {type: 'value', default: 'lower'},\n\t stopwords: {type: 'value', default: ''}\n\t });\n\t\n\t this._output = {text: 'text', count: 'count'};\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (CountPattern.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = CountPattern;\n\t\n\tprototype.transform = function(input, reset) {\n\t log.debug(input, ['countpattern']);\n\t\n\t var get = this.param('field').accessor,\n\t pattern = this.param('pattern'),\n\t stop = this.param('stopwords'),\n\t rem = false;\n\t\n\t // update parameters\n\t if (this._stop !== stop) {\n\t this._stop = stop;\n\t this._stop_re = new RegExp('^' + stop + '$', 'i');\n\t reset = true;\n\t }\n\t\n\t if (this._pattern !== pattern) {\n\t this._pattern = pattern;\n\t this._match = new RegExp(this._pattern, 'g');\n\t reset = true;\n\t }\n\t\n\t if (reset) this._counts = {};\n\t\n\t function curr(t) { return (Tuple.prev_init(t), get(t)); }\n\t function prev(t) { return get(Tuple.prev(t)); }\n\t\n\t this._add(input.add, curr);\n\t if (!reset) this._rem(input.rem, prev);\n\t if (reset || (rem = input.fields[get.field])) {\n\t if (rem) this._rem(input.mod, prev);\n\t this._add(input.mod, curr);\n\t }\n\t\n\t // generate output tuples\n\t return this._changeset(input);\n\t};\n\t\n\tprototype._changeset = function(input) {\n\t var counts = this._counts,\n\t tuples = this._tuples || (this._tuples = {}),\n\t change = df.ChangeSet.create(input),\n\t out = this._output, w, t, c;\n\t\n\t for (w in counts) {\n\t t = tuples[w];\n\t c = counts[w] || 0;\n\t if (!t && c) {\n\t tuples[w] = (t = Tuple.ingest({}));\n\t t[out.text] = w;\n\t t[out.count] = c;\n\t change.add.push(t);\n\t } else if (c === 0) {\n\t if (t) change.rem.push(t);\n\t delete counts[w];\n\t delete tuples[w];\n\t } else if (t[out.count] !== c) {\n\t Tuple.set(t, out.count, c);\n\t change.mod.push(t);\n\t }\n\t }\n\t return change;\n\t};\n\t\n\tprototype._tokenize = function(text) {\n\t switch (this.param('case')) {\n\t case 'upper': text = text.toUpperCase(); break;\n\t case 'lower': text = text.toLowerCase(); break;\n\t }\n\t return text.match(this._match);\n\t};\n\t\n\tprototype._add = function(tuples, get) {\n\t var counts = this._counts,\n\t stop = this._stop_re,\n\t tok, i, j, t;\n\t\n\t for (j=0; j Math.PI ? ta <= sa : ta > sa;\n\t return 'M' + (sr*sc) + ',' + (sr*ss) +\n\t 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n\t ' ' + (sr*tc) + ',' + (sr*ts) +\n\t 'L' + (tr*tc) + ',' + (tr*ts);\n\t}\n\t\n\tfunction diagonalX(sx, sy, tx, ty) {\n\t var m = (sx + tx) / 2;\n\t return 'M' + sx + ',' + sy +\n\t 'C' + m + ',' + sy +\n\t ' ' + m + ',' + ty +\n\t ' ' + tx + ',' + ty;\n\t}\n\t\n\tfunction diagonalY(sx, sy, tx, ty) {\n\t var m = (sy + ty) / 2;\n\t return 'M' + sx + ',' + sy +\n\t 'C' + sx + ',' + m +\n\t ' ' + tx + ',' + m +\n\t ' ' + tx + ',' + ty;\n\t}\n\t\n\tfunction diagonalR(sa, sr, ta, tr) {\n\t var sc = Math.cos(sa),\n\t ss = Math.sin(sa),\n\t tc = Math.cos(ta),\n\t ts = Math.sin(ta),\n\t mr = (sr + tr) / 2;\n\t return 'M' + (sr*sc) + ',' + (sr*ss) +\n\t 'C' + (mr*sc) + ',' + (mr*ss) +\n\t ' ' + (mr*tc) + ',' + (mr*ts) +\n\t ' ' + (tr*tc) + ',' + (tr*ts);\n\t}\n\t\n\tvar shapes = {\n\t line: line,\n\t curve: curve,\n\t cornerX: cornerX,\n\t cornerY: cornerY,\n\t cornerR: cornerR,\n\t diagonalX: diagonalX,\n\t diagonalY: diagonalY,\n\t diagonalR: diagonalR\n\t};\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['linkpath']);\n\t\n\t var output = this._output,\n\t shape = shapes[this.param('shape')] || shapes.line,\n\t sourceX = this.param('sourceX').accessor,\n\t sourceY = this.param('sourceY').accessor,\n\t targetX = this.param('targetX').accessor,\n\t targetY = this.param('targetY').accessor,\n\t tension = this.param('tension');\n\t\n\t function set(t) {\n\t var path = shape(sourceX(t), sourceY(t), targetX(t), targetY(t), tension);\n\t Tuple.set(t, output.path, path);\n\t }\n\t\n\t input.add.forEach(set);\n\t if (this.reevaluate(input)) {\n\t input.mod.forEach(set);\n\t input.rem.forEach(set);\n\t }\n\t\n\t input.fields[output.path] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = LinkPath;\n\t\n\tLinkPath.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"LinkPath transform\",\n\t \"description\": \"Computes a path definition for connecting nodes within a node-link network or tree diagram.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"linkpath\"]},\n\t \"sourceX\": {\n\t \"description\": \"The data field that references the source x-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_source\"\n\t },\n\t \"sourceY\": {\n\t \"description\": \"The data field that references the source y-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_source\"\n\t },\n\t \"targetX\": {\n\t \"description\": \"The data field that references the target x-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_target\"\n\t },\n\t \"targetY\": {\n\t \"description\": \"The data field that references the target y-coordinate for this link.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"_target\"\n\t },\n\t \"tension\": {\n\t \"description\": \"A tension parameter for the \\\"tightness\\\" of \\\"curve\\\"-shaped links.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"number\",\n\t \"minimum\": 0,\n\t \"maximum\": 1\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": 0.2\n\t },\n\t \"shape\": {\n\t \"description\": \"The path shape to use\",\n\t \"oneOf\": [\n\t {\"enum\": [\"line\", \"curve\", \"cornerX\", \"cornerY\", \"cornerR\", \"diagonalX\", \"diagonalY\", \"diagonalR\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"line\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 113 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Transform = __webpack_require__(105),\n\t Aggregate = __webpack_require__(104);\n\t\n\tfunction Facet(graph) {\n\t Transform.addParameters(this, {\n\t transform: {\n\t type: \"custom\",\n\t set: function(pipeline) {\n\t return (this._transform._pipeline = pipeline, this._transform);\n\t },\n\t get: function() {\n\t var parse = __webpack_require__(102),\n\t facet = this._transform;\n\t return facet._pipeline.map(function(t) {\n\t return parse(facet._graph, t);\n\t });\n\t }\n\t }\n\t });\n\t\n\t this._pipeline = [];\n\t return Aggregate.call(this, graph);\n\t}\n\t\n\tvar prototype = (Facet.prototype = Object.create(Aggregate.prototype));\n\tprototype.constructor = Facet;\n\t\n\tprototype.aggr = function() {\n\t return Aggregate.prototype.aggr.call(this).facet(this);\n\t};\n\t\n\tprototype.transform = function(input, reset) {\n\t var output = Aggregate.prototype.transform.call(this, input, reset);\n\t\n\t // New facet cells should trigger a re-ranking of the dataflow graph.\n\t // This ensures facet datasources are computed before scenegraph nodes.\n\t // We rerank the Facet's first listener, which is the next node in the\n\t // datasource's pipeline.\n\t if (input.add.length) {\n\t this.listeners()[0].rerank();\n\t }\n\t\n\t return output;\n\t};\n\t\n\tmodule.exports = Facet;\n\t\n\tvar dl = __webpack_require__(12);\n\t\n\tFacet.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Facet transform\",\n\t \"description\": \"A special aggregate transform that organizes a data set into groups or \\\"facets\\\".\",\n\t \"type\": \"object\",\n\t \"properties\": dl.extend({}, Aggregate.schema.properties, {\n\t \"type\": {\"enum\": [\"facet\"]},\n\t \"transform\": {\"$ref\": \"#/defs/transform\"}\n\t }),\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 114 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar df = __webpack_require__(4),\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction Filter(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {test: {type: 'expr'}});\n\t\n\t this._skip = {};\n\t return this.router(true);\n\t}\n\t\n\tvar prototype = (Filter.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Filter;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['filtering']);\n\t\n\t var output = df.ChangeSet.create(input),\n\t skip = this._skip,\n\t test = this.param('test');\n\t\n\t input.rem.forEach(function(x) {\n\t if (skip[x._id] !== 1) output.rem.push(x);\n\t else skip[x._id] = 0;\n\t });\n\t\n\t input.add.forEach(function(x) {\n\t if (test(x)) output.add.push(x);\n\t else skip[x._id] = 1;\n\t });\n\t\n\t input.mod.forEach(function(x) {\n\t var b = test(x),\n\t s = (skip[x._id] === 1);\n\t if (b && s) {\n\t skip[x._id] = 0;\n\t output.add.push(x);\n\t } else if (b && !s) {\n\t output.mod.push(x);\n\t } else if (!b && s) {\n\t // do nothing, keep skip true\n\t } else { // !b && !s\n\t output.rem.push(x);\n\t skip[x._id] = 1;\n\t }\n\t });\n\t\n\t return output;\n\t};\n\t\n\tmodule.exports = Filter;\n\t\n\tFilter.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Filter transform\",\n\t \"description\": \"Filters elements from a data set to remove unwanted items.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"filter\"]},\n\t \"test\": {\n\t \"type\": \"string\",\n\t \"description\": \"A string containing an expression (in JavaScript syntax) for the filter predicate.\"\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"test\"]\n\t};\n\n\n/***/ },\n/* 115 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar df = __webpack_require__(4),\n\t Tuple = df.Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction Fold(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t fields: {type: 'array'}\n\t });\n\t\n\t this._output = {key: 'key', value: 'value'};\n\t this._cache = {};\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Fold.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Fold;\n\t\n\tprototype._reset = function(input, output) {\n\t for (var id in this._cache) {\n\t output.rem.push.apply(output.rem, this._cache[id]);\n\t }\n\t this._cache = {};\n\t};\n\t\n\tprototype._tuple = function(x, i, len) {\n\t var list = this._cache[x._id] || (this._cache[x._id] = Array(len));\n\t return list[i] ? Tuple.rederive(x, list[i]) : (list[i] = Tuple.derive(x));\n\t};\n\t\n\tprototype._fn = function(data, on, out) {\n\t var i, j, n, m, d, t;\n\t for (i=0, n=data.length; i', default: __webpack_require__(117).size},\n\t bound: {type: 'value', default: true},\n\t links: {type: 'data'},\n\t\n\t // TODO: for now force these to be value params only (pun-intended)\n\t // Can update to include fields after Parameter refactoring.\n\t linkStrength: {type: 'value', default: 1},\n\t linkDistance: {type: 'value', default: 20},\n\t charge: {type: 'value', default: -30},\n\t\n\t chargeDistance: {type: 'value', default: Infinity},\n\t friction: {type: 'value', default: 0.9},\n\t theta: {type: 'value', default: 0.8},\n\t gravity: {type: 'value', default: 0.1},\n\t alpha: {type: 'value', default: 0.1},\n\t iterations: {type: 'value', default: 500},\n\t\n\t interactive: {type: 'value', default: this._interactive},\n\t active: {type: 'value', default: this._prev},\n\t fixed: {type: 'data'}\n\t });\n\t\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y'\n\t };\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Force.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Force;\n\t\n\tprototype.transform = function(nodeInput, reset) {\n\t log.debug(nodeInput, ['force']);\n\t reset = reset - (nodeInput.signals.active ? 1 : 0);\n\t\n\t // get variables\n\t var interactive = this.param('interactive'),\n\t linkSource = this.param('links').source,\n\t linkInput = linkSource.last(),\n\t active = this.param('active'),\n\t output = this._output,\n\t layout = this._layout,\n\t nodes = this._nodes,\n\t links = this._links;\n\t\n\t // configure nodes, links and layout\n\t if (linkInput.stamp < nodeInput.stamp) linkInput = null;\n\t this.configure(nodeInput, linkInput, interactive, reset);\n\t\n\t // run batch layout\n\t if (!interactive) {\n\t var iterations = this.param('iterations');\n\t for (var i=0; i'},\n\t translate: {type: 'array', default: __webpack_require__(117).center},\n\t rotate: {type: 'array'},\n\t scale: {type: 'value'},\n\t precision: {type: 'value'},\n\t clipAngle: {type: 'value'},\n\t clipExtent: {type: 'value'}\n\t};\n\t\n\tGeo.d3Projection = function() {\n\t var p = this.param('projection'),\n\t param = Geo.Parameters,\n\t proj, name, value;\n\t\n\t if (p !== this._mode) {\n\t this._mode = p;\n\t this._projection = d3.geo[p]();\n\t }\n\t proj = this._projection;\n\t\n\t for (name in param) {\n\t if (name === 'projection' || !proj[name]) continue;\n\t value = this.param(name);\n\t if (value === undefined || (dl.isArray(value) && value.length === 0)) {\n\t continue;\n\t }\n\t if (value !== proj[name]()) {\n\t proj[name](value);\n\t }\n\t }\n\t\n\t return proj;\n\t};\n\t\n\tvar prototype = (Geo.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Geo;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['geo']);\n\t\n\t var output = this._output,\n\t lon = this.param('lon').accessor,\n\t lat = this.param('lat').accessor,\n\t proj = Geo.d3Projection.call(this);\n\t\n\t function set(t) {\n\t var ll = [lon(t), lat(t)];\n\t var xy = proj(ll) || [null, null];\n\t Tuple.set(t, output.x, xy[0]);\n\t Tuple.set(t, output.y, xy[1]);\n\t }\n\t\n\t input.add.forEach(set);\n\t if (this.reevaluate(input)) {\n\t input.mod.forEach(set);\n\t input.rem.forEach(set);\n\t }\n\t\n\t input.fields[output.x] = 1;\n\t input.fields[output.y] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = Geo;\n\t\n\tGeo.baseSchema = {\n\t \"projection\": {\n\t \"description\": \"The type of cartographic projection to use.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"mercator\"\n\t },\n\t \"center\": {\n\t \"description\": \"The center of the projection.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"translate\": {\n\t \"description\": \"The translation of the projection.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"rotate\": {\n\t \"description\": \"The rotation of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"scale\": {\n\t \"description\": \"The scale of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"precision\": {\n\t \"description\": \"The desired precision of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"clipAngle\": {\n\t \"description\": \"The clip angle of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"clipExtent\": {\n\t \"description\": \"The clip extent of the projection.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n\t }\n\t};\n\t\n\tGeo.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Geo transform\",\n\t \"description\": \"Performs a cartographic projection. Given longitude and latitude values, sets corresponding x and y properties for a mark.\",\n\t \"type\": \"object\",\n\t \"properties\": dl.extend({\n\t \"type\": {\"enum\": [\"geo\"]},\n\t \"lon\": {\n\t \"description\": \"The input longitude values.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"lat\": {\n\t \"description\": \"The input latitude values.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n\t \"y\": {\"type\": \"string\", \"default\": \"layout_y\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t }, Geo.baseSchema),\n\t \"required\": [\"type\", \"lon\", \"lat\"],\n\t \"additionalProperties\": false\n\t};\n\t\n\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Geo = __webpack_require__(119),\n\t Transform = __webpack_require__(105);\n\t\n\tfunction GeoPath(graph) {\n\t Transform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, Geo.Parameters);\n\t Transform.addParameters(this, {\n\t field: {type: 'field', default: null},\n\t });\n\t\n\t this._output = {\n\t 'path': 'layout_path'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (GeoPath.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = GeoPath;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['geopath']);\n\t\n\t var output = this._output,\n\t geojson = this.param('field').accessor || dl.identity,\n\t proj = Geo.d3Projection.call(this),\n\t path = d3.geo.path().projection(proj);\n\t\n\t function set(t) {\n\t Tuple.set(t, output.path, path(geojson(t)));\n\t }\n\t\n\t input.add.forEach(set);\n\t if (this.reevaluate(input)) {\n\t input.mod.forEach(set);\n\t input.rem.forEach(set);\n\t }\n\t\n\t input.fields[output.path] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = GeoPath;\n\t\n\tGeoPath.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"GeoPath transform\",\n\t \"description\": \"Creates paths for geographic regions, such as countries, states and counties.\",\n\t \"type\": \"object\",\n\t \"properties\": dl.extend({\n\t \"type\": {\"enum\": [\"geopath\"]},\n\t \"field\": {\n\t \"description\": \"The data field containing GeoJSON Feature data.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t }, Geo.baseSchema),\n\t \"required\": [\"type\"],\n\t \"additionalProperties\": false\n\t};\n\n/***/ },\n/* 121 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Hierarchy(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t // hierarchy parameters\n\t sort: {type: 'array', default: null},\n\t children: {type: 'field', default: 'children'},\n\t parent: {type: 'field', default: 'parent'},\n\t field: {type: 'value', default: null},\n\t // layout parameters\n\t mode: {type: 'value', default: 'tidy'}, // tidy, cluster, partition\n\t size: {type: 'array', default: __webpack_require__(117).size},\n\t nodesize: {type: 'array', default: null},\n\t orient: {type: 'value', default: 'cartesian'}\n\t });\n\t\n\t this._mode = null;\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y',\n\t 'width': 'layout_width',\n\t 'height': 'layout_height',\n\t 'depth': 'layout_depth'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar PARTITION = 'partition';\n\t\n\tvar SEPARATION = {\n\t cartesian: function(a, b) { return (a.parent === b.parent ? 1 : 2); },\n\t radial: function(a, b) { return (a.parent === b.parent ? 1 : 2) / a.depth; }\n\t};\n\t\n\tvar prototype = (Hierarchy.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Hierarchy;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['hierarchy layout']);\n\t\n\t // get variables\n\t var layout = this._layout,\n\t output = this._output,\n\t mode = this.param('mode'),\n\t sort = this.param('sort'),\n\t nodesz = this.param('nodesize'),\n\t parent = this.param('parent').accessor,\n\t root = data.filter(function(d) { return parent(d) === null; })[0];\n\t\n\t if (mode !== this._mode) {\n\t this._mode = mode;\n\t if (mode === 'tidy') mode = 'tree';\n\t layout = (this._layout = d3.layout[mode]());\n\t }\n\t\n\t input.fields[output.x] = 1;\n\t input.fields[output.y] = 1;\n\t input.fields[output.depth] = 1;\n\t if (mode === PARTITION) {\n\t input.fields[output.width] = 1;\n\t input.fields[output.height] = 1;\n\t layout.value(this.param('field').accessor);\n\t } else {\n\t layout.separation(SEPARATION[this.param('orient')]);\n\t }\n\t\n\t if (nodesz.length && mode !== PARTITION) {\n\t layout.nodeSize(nodesz);\n\t } else {\n\t layout.size(this.param('size'));\n\t }\n\t\n\t layout\n\t .sort(sort.field.length ? dl.comparator(sort.field) : null)\n\t .children(this.param('children').accessor)\n\t .nodes(root);\n\t\n\t // copy layout values to nodes\n\t data.forEach(function(n) {\n\t Tuple.set(n, output.x, n.x);\n\t Tuple.set(n, output.y, n.y);\n\t Tuple.set(n, output.depth, n.depth);\n\t if (mode === PARTITION) {\n\t Tuple.set(n, output.width, n.dx);\n\t Tuple.set(n, output.height, n.dy);\n\t }\n\t });\n\t\n\t // return changeset\n\t return input;\n\t};\n\t\n\tmodule.exports = Hierarchy;\n\t\n\tHierarchy.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Hierarchy transform\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"hierarchy\"]},\n\t \"sort\": {\n\t \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ]\n\t },\n\t \"children\": {\n\t \"description\": \"The data field for the children node array\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"children\"\n\t },\n\t \"parent\": {\n\t \"description\": \"The data field for the parent node\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"parent\"\n\t },\n\t \"field\": {\n\t \"description\": \"The value for the area of each leaf-level node for partition layouts.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"mode\": {\n\t \"description\": \"The layout algorithm mode to use.\",\n\t \"oneOf\": [\n\t {\"enum\": [\"tidy\", \"cluster\", \"partition\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"tidy\"\n\t },\n\t \"orient\": {\n\t \"description\": \"The layout orientation to use.\",\n\t \"oneOf\": [\n\t {\"enum\": [\"cartesian\", \"radial\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"cartesian\"\n\t },\n\t \"size\": {\n\t \"description\": \"The dimensions of the tree layout\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": [500, 500]\n\t },\n\t \"nodesize\": {\n\t \"description\": \"Sets a fixed x,y size for each node (overrides the size parameter)\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": null\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n\t \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n\t \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n\t \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n\t \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t Tuple = __webpack_require__(4).Tuple,\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Impute(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'},\n\t orderby: {type: 'array'},\n\t field: {type: 'field'},\n\t method: {type: 'value', default: 'value'},\n\t value: {type: 'value', default: 0}\n\t });\n\t\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Impute.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Impute;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['imputing']);\n\t\n\t var groupby = this.param('groupby'),\n\t orderby = this.param('orderby'),\n\t method = this.param('method'),\n\t value = this.param('value'),\n\t field = this.param('field'),\n\t get = field.accessor,\n\t name = field.field,\n\t prev = this._imputed || [], curr = [],\n\t groups = partition(data, groupby.accessor, orderby.accessor),\n\t domain = groups.domain,\n\t group, i, j, n, m, t;\n\t\n\t function getval(x) {\n\t return x == null ? null : get(x);\n\t }\n\t\n\t for (j=0, m=groups.length; j'},\n\t keys: {type: 'array', default: ['data']},\n\t default: {type: 'value'}\n\t });\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Lookup.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Lookup;\n\t\n\tprototype.transform = function(input, reset) {\n\t log.debug(input, ['lookup']);\n\t\n\t var on = this.param('on'),\n\t onLast = on.source.last(),\n\t onData = on.source.values(),\n\t onKey = this.param('onKey'),\n\t onF = onKey.field,\n\t keys = this.param('keys'),\n\t get = keys.accessor,\n\t as = this.param('as'),\n\t defaultValue = this.param('default'),\n\t lut = this._lut,\n\t i, v;\n\t\n\t // build lookup table on init, withKey modified, or tuple add/rem\n\t if (lut == null || this._on !== onF || onF && onLast.fields[onF] ||\n\t onLast.add.length || onLast.rem.length)\n\t {\n\t if (onF) { // build hash from withKey field\n\t onKey = onKey.accessor;\n\t for (lut={}, i=0; i'} });\n\t this.router(true);\n\t}\n\t\n\tvar prototype = (Sort.prototype = Object.create(Transform.prototype));\n\tprototype.constructor = Sort;\n\t\n\tprototype.transform = function(input) {\n\t log.debug(input, ['sorting']);\n\t\n\t if (input.add.length || input.mod.length || input.rem.length) {\n\t input.sort = dl.comparator(this.param('by').field);\n\t }\n\t return input;\n\t};\n\t\n\tmodule.exports = Sort;\n\t\n\tSort.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Sort transform\",\n\t \"description\": \"Sorts the values of a data set.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"sort\"]},\n\t \"by\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n\t ],\n\t \"description\": \"A list of fields to use as sort criteria.\"\n\t }\n\t },\n\t \"required\": [\"type\", \"by\"]\n\t};\n\n\n/***/ },\n/* 127 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Stack(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'},\n\t sortby: {type: 'array'},\n\t field: {type: 'field'},\n\t offset: {type: 'value', default: 'zero'}\n\t });\n\t\n\t this._output = {\n\t 'start': 'layout_start',\n\t 'end': 'layout_end',\n\t 'mid': 'layout_mid'\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Stack.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Stack;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['stacking']);\n\t\n\t var groupby = this.param('groupby').accessor,\n\t sortby = dl.comparator(this.param('sortby').field),\n\t field = this.param('field').accessor,\n\t offset = this.param('offset'),\n\t output = this._output;\n\t\n\t // partition, sum, and sort the stack groups\n\t var groups = partition(data, groupby, sortby, field);\n\t\n\t // compute stack layouts per group\n\t for (var i=0, max=groups.max; i max) max = s;\n\t if (sortby != null) g.sort(sortby);\n\t }\n\t groups.max = max;\n\t\n\t return groups;\n\t}\n\t\n\tmodule.exports = Stack;\n\t\n\tStack.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Stack transform\",\n\t \"description\": \"Computes layout values for stacked graphs, as in stacked bar charts or stream graphs.\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"stack\"]},\n\t \"groupby\": {\n\t \"description\": \"A list of fields to split the data into groups (stacks).\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t },\n\t \"sortby\": {\n\t \"description\": \"A list of fields to determine the sort order of stacks.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t },\n\t \"field\": {\n\t \"description\": \"The data field that determines the thickness/height of stacks.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"offset\": {\n\t \"description\": \"The baseline offset\",\n\t \"oneOf\": [{\"enum\": [\"zero\", \"center\", \"normalize\"]}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"zero\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"start\": {\"type\": \"string\", \"default\": \"layout_start\"},\n\t \"end\": {\"type\": \"string\", \"default\": \"layout_end\"},\n\t \"mid\": {\"type\": \"string\", \"default\": \"layout_mid\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\", \"groupby\", \"field\"]\n\t};\n\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t Tuple = __webpack_require__(4).Tuple,\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Treeify(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t groupby: {type: 'array'}\n\t });\n\t\n\t this._output = {\n\t 'children': 'children',\n\t 'parent': 'parent'\n\t };\n\t return this.router(true).produces(true);\n\t}\n\t\n\tvar prototype = (Treeify.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Treeify;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['treeifying']);\n\t\n\t var fields = this.param('groupby').field,\n\t childField = this._output.children,\n\t parentField = this._output.parent,\n\t summary = [{name:'*', ops: ['values'], as: [childField]}],\n\t aggrs = fields.map(function(f) {\n\t return dl.groupby(f).summarize(summary);\n\t }),\n\t prev = this._internal || [], curr = [], i, n;\n\t\n\t function level(index, node, values) {\n\t var vals = aggrs[index].execute(values);\n\t\n\t node[childField] = vals;\n\t vals.forEach(function(n) {\n\t n[parentField] = node;\n\t curr.push(Tuple.ingest(n));\n\t if (index+1 < fields.length) level(index+1, n, n[childField]);\n\t else n[childField].forEach(function(c) { c[parentField] = n; });\n\t });\n\t }\n\t\n\t var root = Tuple.ingest({});\n\t root[parentField] = null;\n\t curr.push(root);\n\t level(0, root, data);\n\t\n\t // update changeset with internal nodes\n\t for (i=0, n=curr.length; i', default: ['-value']},\n\t children: {type: 'field', default: 'children'},\n\t parent: {type: 'field', default: 'parent'},\n\t field: {type: 'field', default: 'value'},\n\t // treemap parameters\n\t size: {type: 'array', default: __webpack_require__(117).size},\n\t round: {type: 'value', default: true},\n\t sticky: {type: 'value', default: false},\n\t ratio: {type: 'value', default: defaultRatio},\n\t padding: {type: 'value', default: null},\n\t mode: {type: 'value', default: 'squarify'}\n\t });\n\t\n\t this._layout = d3.layout.treemap();\n\t\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y',\n\t 'width': 'layout_width',\n\t 'height': 'layout_height',\n\t 'depth': 'layout_depth',\n\t };\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Treemap.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Treemap;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['treemap']);\n\t\n\t // get variables\n\t var layout = this._layout,\n\t output = this._output,\n\t sticky = this.param('sticky'),\n\t parent = this.param('parent').accessor,\n\t root = data.filter(function(d) { return parent(d) === null; })[0];\n\t\n\t // layout.sticky resets state _regardless_ of input value\n\t // so, we perform out own check first\n\t if (layout.sticky() !== sticky) { layout.sticky(sticky); }\n\t\n\t // configure layout\n\t layout\n\t .sort(dl.comparator(this.param('sort').field))\n\t .children(this.param('children').accessor)\n\t .value(this.param('field').accessor)\n\t .size(this.param('size'))\n\t .round(this.param('round'))\n\t .ratio(this.param('ratio'))\n\t .padding(this.param('padding'))\n\t .mode(this.param('mode'))\n\t .nodes(root);\n\t\n\t // copy layout values to nodes\n\t data.forEach(function(n) {\n\t Tuple.set(n, output.x, n.x);\n\t Tuple.set(n, output.y, n.y);\n\t Tuple.set(n, output.width, n.dx);\n\t Tuple.set(n, output.height, n.dy);\n\t Tuple.set(n, output.depth, n.depth);\n\t });\n\t\n\t // return changeset\n\t input.fields[output.x] = 1;\n\t input.fields[output.y] = 1;\n\t input.fields[output.width] = 1;\n\t input.fields[output.height] = 1;\n\t input.fields[output.depth] = 1;\n\t return input;\n\t};\n\t\n\tmodule.exports = Treemap;\n\t\n\tTreemap.schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Treemap transform\",\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"type\": {\"enum\": [\"treemap\"]},\n\t \"sort\": {\n\t \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": [\"-value\"]\n\t },\n\t \"children\": {\n\t \"description\": \"The data field for the children node array\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"children\"\n\t },\n\t \"parent\": {\n\t \"description\": \"The data field for the parent node\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": \"parent\"\n\t },\n\t \"field\": {\n\t \"description\": \"The values to use to determine the area of each leaf-level treemap cell.\",\n\t \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n\t },\n\t \"mode\": {\n\t \"description\": \"The treemap layout algorithm to use.\",\n\t \"oneOf\": [\n\t {\"enum\": [\"squarify\", \"slice\", \"dice\", \"slice-dice\"]},\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": \"squarify\"\n\t },\n\t \"size\": {\n\t \"description\": \"The dimensions of the treemap layout\",\n\t \"oneOf\": [\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"default\": [500, 500]\n\t },\n\t \"round\": {\n\t \"description\": \"If true, treemap cell dimensions will be rounded to integer pixels.\",\n\t \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": true\n\t },\n\t \"sticky\": {\n\t \"description\": \"If true, repeated runs of the treemap will use cached partition boundaries.\",\n\t \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": false\n\t },\n\t \"ratio\": {\n\t \"description\": \"The target aspect ratio for the layout to optimize.\",\n\t \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n\t \"default\": defaultRatio\n\t },\n\t \"padding\": {\n\t \"oneOf\": [\n\t {\"type\": \"number\"},\n\t {\n\t \"type\": \"array\",\n\t \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n\t \"minItems\": 4,\n\t \"maxItems\": 4\n\t },\n\t {\"$ref\": \"#/refs/signal\"}\n\t ],\n\t \"description\": \"he padding (in pixels) to provide around internal nodes in the treemap.\"\n\t },\n\t \"output\": {\n\t \"type\": \"object\",\n\t \"description\": \"Rename the output data fields\",\n\t \"properties\": {\n\t \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n\t \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n\t \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n\t \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n\t \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"required\": [\"type\"]\n\t};\n\n\n/***/ },\n/* 130 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t Tuple = __webpack_require__(9),\n\t log = __webpack_require__(8),\n\t Transform = __webpack_require__(105),\n\t BatchTransform = __webpack_require__(109);\n\t\n\tfunction Voronoi(graph) {\n\t BatchTransform.prototype.init.call(this, graph);\n\t Transform.addParameters(this, {\n\t clipExtent: {type: 'array', default: __webpack_require__(117).extent},\n\t x: {type: 'field', default: 'layout_x'},\n\t y: {type: 'field', default: 'layout_y'}\n\t });\n\t\n\t this._layout = d3.geom.voronoi();\n\t this._output = {'path': 'layout_path'};\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Voronoi.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Voronoi;\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['voronoi']);\n\t\n\t // get variables\n\t var pathname = this._output.path;\n\t\n\t // configure layout\n\t var polygons = this._layout\n\t .clipExtent(this.param('clipExtent'))\n\t .x(this.param('x').accessor)\n\t .y(this.param('y').accessor)\n\t (data);\n\t\n\t // build and assign path strings\n\t for (var i=0; i', default: __webpack_require__(117).size},\n\t text: {type: 'field', default: 'data'},\n\t rotate: {type: 'field|value', default: 0},\n\t font: {type: 'field|value', default: {value: 'sans-serif'}},\n\t fontSize: {type: 'field|value', default: 14},\n\t fontStyle: {type: 'field|value', default: {value: 'normal'}},\n\t fontWeight: {type: 'field|value', default: {value: 'normal'}},\n\t fontScale: {type: 'array', default: [10, 50]},\n\t padding: {type: 'value', default: 1},\n\t spiral: {type: 'value', default: 'archimedean'}\n\t });\n\t\n\t this._layout = d3_cloud().canvas(canvas.instance);\n\t\n\t this._output = {\n\t 'x': 'layout_x',\n\t 'y': 'layout_y',\n\t 'font': 'layout_font',\n\t 'fontSize': 'layout_fontSize',\n\t 'fontStyle': 'layout_fontStyle',\n\t 'fontWeight': 'layout_fontWeight',\n\t 'rotate': 'layout_rotate',\n\t };\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar prototype = (Wordcloud.prototype = Object.create(BatchTransform.prototype));\n\tprototype.constructor = Wordcloud;\n\t\n\tfunction get(p) {\n\t return (p && p.accessor) || p;\n\t}\n\t\n\tfunction wrap(tuple) {\n\t var x = Object.create(tuple);\n\t x._tuple = tuple;\n\t return x;\n\t}\n\t\n\tprototype.batchTransform = function(input, data) {\n\t log.debug(input, ['wordcloud']);\n\t\n\t // get variables\n\t var layout = this._layout,\n\t output = this._output,\n\t fontSize = this.param('fontSize'),\n\t range = fontSize.accessor && this.param('fontScale'),\n\t size, scale;\n\t fontSize = fontSize.accessor || d3.functor(fontSize);\n\t\n\t // create font size scaling function as needed\n\t if (range.length) {\n\t scale = d3.scale.sqrt()\n\t .domain(dl.extent(data, size=fontSize))\n\t .range(range);\n\t fontSize = function(x) { return scale(size(x)); };\n\t }\n\t\n\t // configure layout\n\t layout\n\t .size(this.param('size'))\n\t .text(get(this.param('text')))\n\t .padding(this.param('padding'))\n\t .spiral(this.param('spiral'))\n\t .rotate(get(this.param('rotate')))\n\t .font(get(this.param('font')))\n\t .fontStyle(get(this.param('fontStyle')))\n\t .fontWeight(get(this.param('fontWeight')))\n\t .fontSize(fontSize)\n\t .words(data.map(wrap)) // wrap to avoid tuple writes\n\t .on('end', function(words) {\n\t var size = layout.size(),\n\t dx = size[0] >> 1,\n\t dy = size[1] >> 1,\n\t w, t, i, len;\n\t\n\t for (i=0, len=words.length; i> 5,\n\t ch = 1 << 11;\n\t\n\tmodule.exports = function() {\n\t var size = [256, 256],\n\t text = cloudText,\n\t font = cloudFont,\n\t fontSize = cloudFontSize,\n\t fontStyle = cloudFontNormal,\n\t fontWeight = cloudFontNormal,\n\t rotate = cloudRotate,\n\t padding = cloudPadding,\n\t spiral = archimedeanSpiral,\n\t words = [],\n\t timeInterval = Infinity,\n\t event = dispatch(\"word\", \"end\"),\n\t timer = null,\n\t random = Math.random,\n\t cloud = {},\n\t canvas = cloudCanvas;\n\t\n\t cloud.canvas = function(_) {\n\t return arguments.length ? (canvas = functor(_), cloud) : canvas;\n\t };\n\t\n\t cloud.start = function() {\n\t var contextAndRatio = getContext(canvas()),\n\t board = zeroArray((size[0] >> 5) * size[1]),\n\t bounds = null,\n\t n = words.length,\n\t i = -1,\n\t tags = [],\n\t data = words.map(function(d, i) {\n\t d.text = text.call(this, d, i);\n\t d.font = font.call(this, d, i);\n\t d.style = fontStyle.call(this, d, i);\n\t d.weight = fontWeight.call(this, d, i);\n\t d.rotate = rotate.call(this, d, i);\n\t d.size = ~~fontSize.call(this, d, i);\n\t d.padding = padding.call(this, d, i);\n\t return d;\n\t }).sort(function(a, b) { return b.size - a.size; });\n\t\n\t if (timer) clearInterval(timer);\n\t timer = setInterval(step, 0);\n\t step();\n\t\n\t return cloud;\n\t\n\t function step() {\n\t var start = Date.now();\n\t while (Date.now() - start < timeInterval && ++i < n && timer) {\n\t var d = data[i];\n\t d.x = (size[0] * (random() + .5)) >> 1;\n\t d.y = (size[1] * (random() + .5)) >> 1;\n\t cloudSprite(contextAndRatio, d, data, i);\n\t if (d.hasText && place(board, d, bounds)) {\n\t tags.push(d);\n\t event.word(d);\n\t if (bounds) cloudBounds(bounds, d);\n\t else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n\t // Temporary hack\n\t d.x -= size[0] >> 1;\n\t d.y -= size[1] >> 1;\n\t }\n\t }\n\t if (i >= n) {\n\t cloud.stop();\n\t event.end(tags, bounds);\n\t }\n\t }\n\t }\n\t\n\t cloud.stop = function() {\n\t if (timer) {\n\t clearInterval(timer);\n\t timer = null;\n\t }\n\t return cloud;\n\t };\n\t\n\t function getContext(canvas) {\n\t canvas.width = canvas.height = 1;\n\t var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n\t canvas.width = (cw << 5) / ratio;\n\t canvas.height = ch / ratio;\n\t\n\t var context = canvas.getContext(\"2d\");\n\t context.fillStyle = context.strokeStyle = \"red\";\n\t context.textAlign = \"center\";\n\t\n\t return {context: context, ratio: ratio};\n\t }\n\t\n\t function place(board, tag, bounds) {\n\t var perimeter = [{x: 0, y: 0}, {x: size[0], y: size[1]}],\n\t startX = tag.x,\n\t startY = tag.y,\n\t maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n\t s = spiral(size),\n\t dt = random() < .5 ? 1 : -1,\n\t t = -dt,\n\t dxdy,\n\t dx,\n\t dy;\n\t\n\t while (dxdy = s(t += dt)) {\n\t dx = ~~dxdy[0];\n\t dy = ~~dxdy[1];\n\t\n\t if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\t\n\t tag.x = startX + dx;\n\t tag.y = startY + dy;\n\t\n\t if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n\t tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n\t // TODO only check for collisions within current bounds.\n\t if (!bounds || !cloudCollide(tag, board, size[0])) {\n\t if (!bounds || collideRects(tag, bounds)) {\n\t var sprite = tag.sprite,\n\t w = tag.width >> 5,\n\t sw = size[0] >> 5,\n\t lx = tag.x - (w << 4),\n\t sx = lx & 0x7f,\n\t msx = 32 - sx,\n\t h = tag.y1 - tag.y0,\n\t x = (tag.y + tag.y0) * sw + (lx >> 5),\n\t last;\n\t for (var j = 0; j < h; j++) {\n\t last = 0;\n\t for (var i = 0; i <= w; i++) {\n\t board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n\t }\n\t x += sw;\n\t }\n\t delete tag.sprite;\n\t return true;\n\t }\n\t }\n\t }\n\t return false;\n\t }\n\t\n\t cloud.timeInterval = function(_) {\n\t return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n\t };\n\t\n\t cloud.words = function(_) {\n\t return arguments.length ? (words = _, cloud) : words;\n\t };\n\t\n\t cloud.size = function(_) {\n\t return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n\t };\n\t\n\t cloud.font = function(_) {\n\t return arguments.length ? (font = functor(_), cloud) : font;\n\t };\n\t\n\t cloud.fontStyle = function(_) {\n\t return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n\t };\n\t\n\t cloud.fontWeight = function(_) {\n\t return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n\t };\n\t\n\t cloud.rotate = function(_) {\n\t return arguments.length ? (rotate = functor(_), cloud) : rotate;\n\t };\n\t\n\t cloud.text = function(_) {\n\t return arguments.length ? (text = functor(_), cloud) : text;\n\t };\n\t\n\t cloud.spiral = function(_) {\n\t return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n\t };\n\t\n\t cloud.fontSize = function(_) {\n\t return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n\t };\n\t\n\t cloud.padding = function(_) {\n\t return arguments.length ? (padding = functor(_), cloud) : padding;\n\t };\n\t\n\t cloud.random = function(_) {\n\t return arguments.length ? (random = _, cloud) : random;\n\t };\n\t\n\t cloud.on = function() {\n\t var value = event.on.apply(event, arguments);\n\t return value === event ? cloud : value;\n\t };\n\t\n\t return cloud;\n\t};\n\t\n\tfunction cloudText(d) {\n\t return d.text;\n\t}\n\t\n\tfunction cloudFont() {\n\t return \"serif\";\n\t}\n\t\n\tfunction cloudFontNormal() {\n\t return \"normal\";\n\t}\n\t\n\tfunction cloudFontSize(d) {\n\t return Math.sqrt(d.value);\n\t}\n\t\n\tfunction cloudRotate() {\n\t return (~~(Math.random() * 6) - 3) * 30;\n\t}\n\t\n\tfunction cloudPadding() {\n\t return 1;\n\t}\n\t\n\t// Fetches a monochrome sprite bitmap for the specified text.\n\t// Load in batches for speed.\n\tfunction cloudSprite(contextAndRatio, d, data, di) {\n\t if (d.sprite) return;\n\t var c = contextAndRatio.context,\n\t ratio = contextAndRatio.ratio;\n\t\n\t c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n\t var x = 0,\n\t y = 0,\n\t maxh = 0,\n\t n = data.length;\n\t --di;\n\t while (++di < n) {\n\t d = data[di];\n\t c.save();\n\t c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n\t var w = c.measureText(d.text + \"m\").width * ratio,\n\t h = d.size << 1;\n\t if (d.rotate) {\n\t var sr = Math.sin(d.rotate * cloudRadians),\n\t cr = Math.cos(d.rotate * cloudRadians),\n\t wcr = w * cr,\n\t wsr = w * sr,\n\t hcr = h * cr,\n\t hsr = h * sr;\n\t w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n\t h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n\t } else {\n\t w = (w + 0x1f) >> 5 << 5;\n\t }\n\t if (h > maxh) maxh = h;\n\t if (x + w >= (cw << 5)) {\n\t x = 0;\n\t y += maxh;\n\t maxh = 0;\n\t }\n\t if (y + h >= ch) break;\n\t c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n\t if (d.rotate) c.rotate(d.rotate * cloudRadians);\n\t c.fillText(d.text, 0, 0);\n\t if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n\t c.restore();\n\t d.width = w;\n\t d.height = h;\n\t d.xoff = x;\n\t d.yoff = y;\n\t d.x1 = w >> 1;\n\t d.y1 = h >> 1;\n\t d.x0 = -d.x1;\n\t d.y0 = -d.y1;\n\t d.hasText = true;\n\t x += w;\n\t }\n\t var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n\t sprite = [];\n\t while (--di >= 0) {\n\t d = data[di];\n\t if (!d.hasText) continue;\n\t var w = d.width,\n\t w32 = w >> 5,\n\t h = d.y1 - d.y0;\n\t // Zero the buffer\n\t for (var i = 0; i < h * w32; i++) sprite[i] = 0;\n\t x = d.xoff;\n\t if (x == null) return;\n\t y = d.yoff;\n\t var seen = 0,\n\t seenRow = -1;\n\t for (var j = 0; j < h; j++) {\n\t for (var i = 0; i < w; i++) {\n\t var k = w32 * j + (i >> 5),\n\t m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n\t sprite[k] |= m;\n\t seen |= m;\n\t }\n\t if (seen) seenRow = j;\n\t else {\n\t d.y0++;\n\t h--;\n\t j--;\n\t y++;\n\t }\n\t }\n\t d.y1 = d.y0 + seenRow;\n\t d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n\t }\n\t}\n\t\n\t// Use mask-based collision detection.\n\tfunction cloudCollide(tag, board, sw) {\n\t sw >>= 5;\n\t var sprite = tag.sprite,\n\t w = tag.width >> 5,\n\t lx = tag.x - (w << 4),\n\t sx = lx & 0x7f,\n\t msx = 32 - sx,\n\t h = tag.y1 - tag.y0,\n\t x = (tag.y + tag.y0) * sw + (lx >> 5),\n\t last;\n\t for (var j = 0; j < h; j++) {\n\t last = 0;\n\t for (var i = 0; i <= w; i++) {\n\t if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n\t & board[x + i]) return true;\n\t }\n\t x += sw;\n\t }\n\t return false;\n\t}\n\t\n\tfunction cloudBounds(bounds, d) {\n\t var b0 = bounds[0],\n\t b1 = bounds[1];\n\t if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n\t if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n\t if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n\t if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n\t}\n\t\n\tfunction collideRects(a, b) {\n\t return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n\t}\n\t\n\tfunction archimedeanSpiral(size) {\n\t var e = size[0] / size[1];\n\t return function(t) {\n\t return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n\t };\n\t}\n\t\n\tfunction rectangularSpiral(size) {\n\t var dy = 4,\n\t dx = dy * size[0] / size[1],\n\t x = 0,\n\t y = 0;\n\t return function(t) {\n\t var sign = t < 0 ? -1 : 1;\n\t // See triangular numbers: T_n = n * (n + 1) / 2.\n\t switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n\t case 0: x += dx; break;\n\t case 1: y += dy; break;\n\t case 2: x -= dx; break;\n\t default: y -= dy; break;\n\t }\n\t return [x, y];\n\t };\n\t}\n\t\n\t// TODO reuse arrays?\n\tfunction zeroArray(n) {\n\t var a = [],\n\t i = -1;\n\t while (++i < n) a[i] = 0;\n\t return a;\n\t}\n\t\n\tfunction cloudCanvas() {\n\t return document.createElement(\"canvas\");\n\t}\n\t\n\tfunction functor(d) {\n\t return typeof d === \"function\" ? d : function() { return d; };\n\t}\n\t\n\tvar spirals = {\n\t archimedean: archimedeanSpiral,\n\t rectangular: rectangularSpiral\n\t};\n\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3_dispatch = {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t function dispatch() {\n\t return new Dispatch(arguments);\n\t }\n\t\n\t function Dispatch(types) {\n\t var i = -1,\n\t n = types.length,\n\t callbacksByType = {},\n\t callbackByName = {},\n\t type,\n\t that = this;\n\t\n\t that.on = function(type, callback) {\n\t type = parseType(type);\n\t\n\t // Return the current callback, if any.\n\t if (arguments.length < 2) {\n\t return (callback = callbackByName[type.name]) && callback.value;\n\t }\n\t\n\t // If a type was specified…\n\t if (type.type) {\n\t var callbacks = callbacksByType[type.type],\n\t callback0 = callbackByName[type.name],\n\t i;\n\t\n\t // Remove the current callback, if any, using copy-on-remove.\n\t if (callback0) {\n\t callback0.value = null;\n\t i = callbacks.indexOf(callback0);\n\t callbacksByType[type.type] = callbacks = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n\t delete callbackByName[type.name];\n\t }\n\t\n\t // Add the new callback, if any.\n\t if (callback) {\n\t callback = {value: callback};\n\t callbackByName[type.name] = callback;\n\t callbacks.push(callback);\n\t }\n\t }\n\t\n\t // Otherwise, if a null callback was specified, remove all callbacks with the given name.\n\t else if (callback == null) {\n\t for (var otherType in callbacksByType) {\n\t if (callback = callbackByName[otherType + type.name]) {\n\t callback.value = null;\n\t callbacks = callbacksByType[otherType];\n\t i = callbacks.indexOf(callback);\n\t callbacksByType[otherType] = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n\t delete callbackByName[callback.name];\n\t }\n\t }\n\t }\n\t\n\t return that;\n\t };\n\t\n\t while (++i < n) {\n\t type = types[i] + \"\";\n\t if (!type || (type in that)) throw new Error(\"illegal or duplicate type: \" + type);\n\t callbacksByType[type] = [];\n\t that[type] = applier(type);\n\t }\n\t\n\t function parseType(type) {\n\t var i = (type += \"\").indexOf(\".\"), name = type;\n\t if (i >= 0) type = type.slice(0, i); else name += \".\";\n\t if (type && !callbacksByType.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t return {type: type, name: name};\n\t }\n\t\n\t function applier(type) {\n\t return function() {\n\t var callbacks = callbacksByType[type], // Defensive reference; copy-on-remove.\n\t callbackValue,\n\t i = -1,\n\t n = callbacks.length;\n\t\n\t while (++i < n) {\n\t if (callbackValue = callbacks[i].value) {\n\t callbackValue.apply(this, arguments);\n\t }\n\t }\n\t\n\t return that;\n\t };\n\t }\n\t }\n\t\n\t dispatch.prototype = Dispatch.prototype;\n\t\n\t var version = \"0.2.6\";\n\t\n\t exports.version = version;\n\t exports.dispatch = dispatch;\n\t\n\t}));\n\n/***/ },\n/* 134 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t df = __webpack_require__(4),\n\t Node = df.Node, // jshint ignore:line\n\t Tuple = df.Tuple,\n\t Deps = df.Dependencies;\n\t\n\tvar Types = {\n\t INSERT: \"insert\",\n\t REMOVE: \"remove\",\n\t UPSERT: \"upsert\",\n\t TOGGLE: \"toggle\",\n\t CLEAR: \"clear\"\n\t};\n\t\n\tvar EMPTY = [];\n\t\n\tfunction filter(fields, value, src, dest) {\n\t var splice = true, len = fields.length, i, j, f, v;\n\t for (i = src.length - 1; i >= 0; --i) {\n\t for (j=0; j 1 ? arguments[1] : {},\n\t parser = this,\n\t\n\t peg$FAILED = {},\n\t\n\t peg$startRuleFunctions = { start: peg$parsestart },\n\t peg$startRuleFunction = peg$parsestart,\n\t\n\t peg$c0 = \",\",\n\t peg$c1 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n\t peg$c2 = function(o, m) { return [o].concat(m); },\n\t peg$c3 = function(o) { return [o]; },\n\t peg$c4 = \"[\",\n\t peg$c5 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n\t peg$c6 = \"]\",\n\t peg$c7 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n\t peg$c8 = \">\",\n\t peg$c9 = { type: \"literal\", value: \">\", description: \"\\\">\\\"\" },\n\t peg$c10 = function(f1, f2, o) {\n\t return {\n\t start: f1, middle: o, end: f2,\n\t str: '['+f1.str+', '+f2.str+'] > '+o.str};\n\t },\n\t peg$c11 = function(s, f) {\n\t s.filters = f;\n\t s.str += f.map(function(x) { return '['+x+']'; }).join('');\n\t return s;\n\t },\n\t peg$c12 = function(s) { return s; },\n\t peg$c13 = \"(\",\n\t peg$c14 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n\t peg$c15 = \")\",\n\t peg$c16 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n\t peg$c17 = function(m) {\n\t return {\n\t stream: m,\n\t str: '('+m.map(function(m) { return m.str; }).join(', ')+')'\n\t };\n\t },\n\t peg$c18 = \"@\",\n\t peg$c19 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n\t peg$c20 = \":\",\n\t peg$c21 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n\t peg$c22 = function(n, e) { return {event: e, name: n, str: '@'+n+':'+e}; },\n\t peg$c23 = function(m, e) { return {event: e, mark: m, str: m+':'+e}; },\n\t peg$c24 = function(t, e) { return {event: e, target: t, str: t+':'+e}; },\n\t peg$c25 = function(e) { return {event: e, str: e}; },\n\t peg$c26 = function(s) { return {signal: s, str: s}; },\n\t peg$c27 = \"rect\",\n\t peg$c28 = { type: \"literal\", value: \"rect\", description: \"\\\"rect\\\"\" },\n\t peg$c29 = \"symbol\",\n\t peg$c30 = { type: \"literal\", value: \"symbol\", description: \"\\\"symbol\\\"\" },\n\t peg$c31 = \"path\",\n\t peg$c32 = { type: \"literal\", value: \"path\", description: \"\\\"path\\\"\" },\n\t peg$c33 = \"arc\",\n\t peg$c34 = { type: \"literal\", value: \"arc\", description: \"\\\"arc\\\"\" },\n\t peg$c35 = \"area\",\n\t peg$c36 = { type: \"literal\", value: \"area\", description: \"\\\"area\\\"\" },\n\t peg$c37 = \"line\",\n\t peg$c38 = { type: \"literal\", value: \"line\", description: \"\\\"line\\\"\" },\n\t peg$c39 = \"rule\",\n\t peg$c40 = { type: \"literal\", value: \"rule\", description: \"\\\"rule\\\"\" },\n\t peg$c41 = \"image\",\n\t peg$c42 = { type: \"literal\", value: \"image\", description: \"\\\"image\\\"\" },\n\t peg$c43 = \"text\",\n\t peg$c44 = { type: \"literal\", value: \"text\", description: \"\\\"text\\\"\" },\n\t peg$c45 = \"group\",\n\t peg$c46 = { type: \"literal\", value: \"group\", description: \"\\\"group\\\"\" },\n\t peg$c47 = \"mousedown\",\n\t peg$c48 = { type: \"literal\", value: \"mousedown\", description: \"\\\"mousedown\\\"\" },\n\t peg$c49 = \"mouseup\",\n\t peg$c50 = { type: \"literal\", value: \"mouseup\", description: \"\\\"mouseup\\\"\" },\n\t peg$c51 = \"click\",\n\t peg$c52 = { type: \"literal\", value: \"click\", description: \"\\\"click\\\"\" },\n\t peg$c53 = \"dblclick\",\n\t peg$c54 = { type: \"literal\", value: \"dblclick\", description: \"\\\"dblclick\\\"\" },\n\t peg$c55 = \"wheel\",\n\t peg$c56 = { type: \"literal\", value: \"wheel\", description: \"\\\"wheel\\\"\" },\n\t peg$c57 = \"keydown\",\n\t peg$c58 = { type: \"literal\", value: \"keydown\", description: \"\\\"keydown\\\"\" },\n\t peg$c59 = \"keypress\",\n\t peg$c60 = { type: \"literal\", value: \"keypress\", description: \"\\\"keypress\\\"\" },\n\t peg$c61 = \"keyup\",\n\t peg$c62 = { type: \"literal\", value: \"keyup\", description: \"\\\"keyup\\\"\" },\n\t peg$c63 = \"mousewheel\",\n\t peg$c64 = { type: \"literal\", value: \"mousewheel\", description: \"\\\"mousewheel\\\"\" },\n\t peg$c65 = \"mousemove\",\n\t peg$c66 = { type: \"literal\", value: \"mousemove\", description: \"\\\"mousemove\\\"\" },\n\t peg$c67 = \"mouseout\",\n\t peg$c68 = { type: \"literal\", value: \"mouseout\", description: \"\\\"mouseout\\\"\" },\n\t peg$c69 = \"mouseover\",\n\t peg$c70 = { type: \"literal\", value: \"mouseover\", description: \"\\\"mouseover\\\"\" },\n\t peg$c71 = \"mouseenter\",\n\t peg$c72 = { type: \"literal\", value: \"mouseenter\", description: \"\\\"mouseenter\\\"\" },\n\t peg$c73 = \"touchstart\",\n\t peg$c74 = { type: \"literal\", value: \"touchstart\", description: \"\\\"touchstart\\\"\" },\n\t peg$c75 = \"touchmove\",\n\t peg$c76 = { type: \"literal\", value: \"touchmove\", description: \"\\\"touchmove\\\"\" },\n\t peg$c77 = \"touchend\",\n\t peg$c78 = { type: \"literal\", value: \"touchend\", description: \"\\\"touchend\\\"\" },\n\t peg$c79 = \"dragenter\",\n\t peg$c80 = { type: \"literal\", value: \"dragenter\", description: \"\\\"dragenter\\\"\" },\n\t peg$c81 = \"dragover\",\n\t peg$c82 = { type: \"literal\", value: \"dragover\", description: \"\\\"dragover\\\"\" },\n\t peg$c83 = \"dragleave\",\n\t peg$c84 = { type: \"literal\", value: \"dragleave\", description: \"\\\"dragleave\\\"\" },\n\t peg$c85 = function(e) { return e; },\n\t peg$c86 = /^[a-zA-Z0-9_\\-]/,\n\t peg$c87 = { type: \"class\", value: \"[a-zA-Z0-9_-]\", description: \"[a-zA-Z0-9_-]\" },\n\t peg$c88 = function(n) { return n.join(''); },\n\t peg$c89 = /^[a-zA-Z0-9\\-_ #.>+~[\\]=|\\^$*]/,\n\t peg$c90 = { type: \"class\", value: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\", description: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\" },\n\t peg$c91 = function(c) { return c.join(''); },\n\t peg$c92 = /^['\"a-zA-Z0-9_().><=! \\t-&|~]/,\n\t peg$c93 = { type: \"class\", value: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\", description: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\" },\n\t peg$c94 = function(v) { return v.join(''); },\n\t peg$c95 = /^[ \\t\\r\\n]/,\n\t peg$c96 = { type: \"class\", value: \"[ \\\\t\\\\r\\\\n]\", description: \"[ \\\\t\\\\r\\\\n]\" },\n\t\n\t peg$currPos = 0,\n\t peg$savedPos = 0,\n\t peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n\t peg$maxFailPos = 0,\n\t peg$maxFailExpected = [],\n\t peg$silentFails = 0,\n\t\n\t peg$result;\n\t\n\t if (\"startRule\" in options) {\n\t if (!(options.startRule in peg$startRuleFunctions)) {\n\t throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n\t }\n\t\n\t peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n\t }\n\t\n\t function text() {\n\t return input.substring(peg$savedPos, peg$currPos);\n\t }\n\t\n\t function location() {\n\t return peg$computeLocation(peg$savedPos, peg$currPos);\n\t }\n\t\n\t function expected(description) {\n\t throw peg$buildException(\n\t null,\n\t [{ type: \"other\", description: description }],\n\t input.substring(peg$savedPos, peg$currPos),\n\t peg$computeLocation(peg$savedPos, peg$currPos)\n\t );\n\t }\n\t\n\t function error(message) {\n\t throw peg$buildException(\n\t message,\n\t null,\n\t input.substring(peg$savedPos, peg$currPos),\n\t peg$computeLocation(peg$savedPos, peg$currPos)\n\t );\n\t }\n\t\n\t function peg$computePosDetails(pos) {\n\t var details = peg$posDetailsCache[pos],\n\t p, ch;\n\t\n\t if (details) {\n\t return details;\n\t } else {\n\t p = pos - 1;\n\t while (!peg$posDetailsCache[p]) {\n\t p--;\n\t }\n\t\n\t details = peg$posDetailsCache[p];\n\t details = {\n\t line: details.line,\n\t column: details.column,\n\t seenCR: details.seenCR\n\t };\n\t\n\t while (p < pos) {\n\t ch = input.charAt(p);\n\t if (ch === \"\\n\") {\n\t if (!details.seenCR) { details.line++; }\n\t details.column = 1;\n\t details.seenCR = false;\n\t } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n\t details.line++;\n\t details.column = 1;\n\t details.seenCR = true;\n\t } else {\n\t details.column++;\n\t details.seenCR = false;\n\t }\n\t\n\t p++;\n\t }\n\t\n\t peg$posDetailsCache[pos] = details;\n\t return details;\n\t }\n\t }\n\t\n\t function peg$computeLocation(startPos, endPos) {\n\t var startPosDetails = peg$computePosDetails(startPos),\n\t endPosDetails = peg$computePosDetails(endPos);\n\t\n\t return {\n\t start: {\n\t offset: startPos,\n\t line: startPosDetails.line,\n\t column: startPosDetails.column\n\t },\n\t end: {\n\t offset: endPos,\n\t line: endPosDetails.line,\n\t column: endPosDetails.column\n\t }\n\t };\n\t }\n\t\n\t function peg$fail(expected) {\n\t if (peg$currPos < peg$maxFailPos) { return; }\n\t\n\t if (peg$currPos > peg$maxFailPos) {\n\t peg$maxFailPos = peg$currPos;\n\t peg$maxFailExpected = [];\n\t }\n\t\n\t peg$maxFailExpected.push(expected);\n\t }\n\t\n\t function peg$buildException(message, expected, found, location) {\n\t function cleanupExpected(expected) {\n\t var i = 1;\n\t\n\t expected.sort(function(a, b) {\n\t if (a.description < b.description) {\n\t return -1;\n\t } else if (a.description > b.description) {\n\t return 1;\n\t } else {\n\t return 0;\n\t }\n\t });\n\t\n\t while (i < expected.length) {\n\t if (expected[i - 1] === expected[i]) {\n\t expected.splice(i, 1);\n\t } else {\n\t i++;\n\t }\n\t }\n\t }\n\t\n\t function buildMessage(expected, found) {\n\t function stringEscape(s) {\n\t function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\t\n\t return s\n\t .replace(/\\\\/g, '\\\\\\\\')\n\t .replace(/\"/g, '\\\\\"')\n\t .replace(/\\x08/g, '\\\\b')\n\t .replace(/\\t/g, '\\\\t')\n\t .replace(/\\n/g, '\\\\n')\n\t .replace(/\\f/g, '\\\\f')\n\t .replace(/\\r/g, '\\\\r')\n\t .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n\t .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n\t .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n\t .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n\t }\n\t\n\t var expectedDescs = new Array(expected.length),\n\t expectedDesc, foundDesc, i;\n\t\n\t for (i = 0; i < expected.length; i++) {\n\t expectedDescs[i] = expected[i].description;\n\t }\n\t\n\t expectedDesc = expected.length > 1\n\t ? expectedDescs.slice(0, -1).join(\", \")\n\t + \" or \"\n\t + expectedDescs[expected.length - 1]\n\t : expectedDescs[0];\n\t\n\t foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\t\n\t return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n\t }\n\t\n\t if (expected !== null) {\n\t cleanupExpected(expected);\n\t }\n\t\n\t return new peg$SyntaxError(\n\t message !== null ? message : buildMessage(expected, found),\n\t expected,\n\t found,\n\t location\n\t );\n\t }\n\t\n\t function peg$parsestart() {\n\t var s0;\n\t\n\t s0 = peg$parsemerged();\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsemerged() {\n\t var s0, s1, s2, s3, s4, s5;\n\t\n\t s0 = peg$currPos;\n\t s1 = peg$parseordered();\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsesep();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 44) {\n\t s3 = peg$c0;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c1); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t s4 = peg$parsesep();\n\t if (s4 !== peg$FAILED) {\n\t s5 = peg$parsemerged();\n\t if (s5 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c2(s1, s5);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parseordered();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c3(s1);\n\t }\n\t s0 = s1;\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parseordered() {\n\t var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\t\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 91) {\n\t s1 = peg$c4;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c5); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsesep();\n\t if (s2 !== peg$FAILED) {\n\t s3 = peg$parsefiltered();\n\t if (s3 !== peg$FAILED) {\n\t s4 = peg$parsesep();\n\t if (s4 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 44) {\n\t s5 = peg$c0;\n\t peg$currPos++;\n\t } else {\n\t s5 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c1); }\n\t }\n\t if (s5 !== peg$FAILED) {\n\t s6 = peg$parsesep();\n\t if (s6 !== peg$FAILED) {\n\t s7 = peg$parsefiltered();\n\t if (s7 !== peg$FAILED) {\n\t s8 = peg$parsesep();\n\t if (s8 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 93) {\n\t s9 = peg$c6;\n\t peg$currPos++;\n\t } else {\n\t s9 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c7); }\n\t }\n\t if (s9 !== peg$FAILED) {\n\t s10 = peg$parsesep();\n\t if (s10 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 62) {\n\t s11 = peg$c8;\n\t peg$currPos++;\n\t } else {\n\t s11 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c9); }\n\t }\n\t if (s11 !== peg$FAILED) {\n\t s12 = peg$parsesep();\n\t if (s12 !== peg$FAILED) {\n\t s13 = peg$parseordered();\n\t if (s13 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c10(s3, s7, s13);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$parsefiltered();\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsefiltered() {\n\t var s0, s1, s2, s3;\n\t\n\t s0 = peg$currPos;\n\t s1 = peg$parsestream();\n\t if (s1 !== peg$FAILED) {\n\t s2 = [];\n\t s3 = peg$parsefilter();\n\t if (s3 !== peg$FAILED) {\n\t while (s3 !== peg$FAILED) {\n\t s2.push(s3);\n\t s3 = peg$parsefilter();\n\t }\n\t } else {\n\t s2 = peg$FAILED;\n\t }\n\t if (s2 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c11(s1, s2);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsestream();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c12(s1);\n\t }\n\t s0 = s1;\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsestream() {\n\t var s0, s1, s2, s3, s4;\n\t\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 40) {\n\t s1 = peg$c13;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c14); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsemerged();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 41) {\n\t s3 = peg$c15;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c16); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c17(s2);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 64) {\n\t s1 = peg$c18;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c19); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parsename();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 58) {\n\t s3 = peg$c20;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c21); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t s4 = peg$parseeventType();\n\t if (s4 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c22(s2, s4);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsemarkType();\n\t if (s1 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 58) {\n\t s2 = peg$c20;\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c21); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t s3 = peg$parseeventType();\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c23(s1, s3);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsecss();\n\t if (s1 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 58) {\n\t s2 = peg$c20;\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c21); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t s3 = peg$parseeventType();\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c24(s1, s3);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parseeventType();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c25(s1);\n\t }\n\t s0 = s1;\n\t if (s0 === peg$FAILED) {\n\t s0 = peg$currPos;\n\t s1 = peg$parsename();\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c26(s1);\n\t }\n\t s0 = s1;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsemarkType() {\n\t var s0;\n\t\n\t if (input.substr(peg$currPos, 4) === peg$c27) {\n\t s0 = peg$c27;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c28); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 6) === peg$c29) {\n\t s0 = peg$c29;\n\t peg$currPos += 6;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c30); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c31) {\n\t s0 = peg$c31;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c32); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 3) === peg$c33) {\n\t s0 = peg$c33;\n\t peg$currPos += 3;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c34); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c35) {\n\t s0 = peg$c35;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c36); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c37) {\n\t s0 = peg$c37;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c38); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c39) {\n\t s0 = peg$c39;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c40); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c41) {\n\t s0 = peg$c41;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c42); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 4) === peg$c43) {\n\t s0 = peg$c43;\n\t peg$currPos += 4;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c44); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c45) {\n\t s0 = peg$c45;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c46); }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parseeventType() {\n\t var s0;\n\t\n\t if (input.substr(peg$currPos, 9) === peg$c47) {\n\t s0 = peg$c47;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c48); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 7) === peg$c49) {\n\t s0 = peg$c49;\n\t peg$currPos += 7;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c50); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c51) {\n\t s0 = peg$c51;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c52); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c53) {\n\t s0 = peg$c53;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c54); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c55) {\n\t s0 = peg$c55;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c56); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 7) === peg$c57) {\n\t s0 = peg$c57;\n\t peg$currPos += 7;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c58); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c59) {\n\t s0 = peg$c59;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c60); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 5) === peg$c61) {\n\t s0 = peg$c61;\n\t peg$currPos += 5;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c62); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 10) === peg$c63) {\n\t s0 = peg$c63;\n\t peg$currPos += 10;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c64); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c65) {\n\t s0 = peg$c65;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c66); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c67) {\n\t s0 = peg$c67;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c68); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c69) {\n\t s0 = peg$c69;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c70); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 10) === peg$c71) {\n\t s0 = peg$c71;\n\t peg$currPos += 10;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c72); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 10) === peg$c73) {\n\t s0 = peg$c73;\n\t peg$currPos += 10;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c74); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c75) {\n\t s0 = peg$c75;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c76); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c77) {\n\t s0 = peg$c77;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c78); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c79) {\n\t s0 = peg$c79;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c80); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 8) === peg$c81) {\n\t s0 = peg$c81;\n\t peg$currPos += 8;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c82); }\n\t }\n\t if (s0 === peg$FAILED) {\n\t if (input.substr(peg$currPos, 9) === peg$c83) {\n\t s0 = peg$c83;\n\t peg$currPos += 9;\n\t } else {\n\t s0 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c84); }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsefilter() {\n\t var s0, s1, s2, s3;\n\t\n\t s0 = peg$currPos;\n\t if (input.charCodeAt(peg$currPos) === 91) {\n\t s1 = peg$c4;\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c5); }\n\t }\n\t if (s1 !== peg$FAILED) {\n\t s2 = peg$parseexpr();\n\t if (s2 !== peg$FAILED) {\n\t if (input.charCodeAt(peg$currPos) === 93) {\n\t s3 = peg$c6;\n\t peg$currPos++;\n\t } else {\n\t s3 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c7); }\n\t }\n\t if (s3 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c85(s2);\n\t s0 = s1;\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t } else {\n\t peg$currPos = s0;\n\t s0 = peg$FAILED;\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsename() {\n\t var s0, s1, s2;\n\t\n\t s0 = peg$currPos;\n\t s1 = [];\n\t if (peg$c86.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c87); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t while (s2 !== peg$FAILED) {\n\t s1.push(s2);\n\t if (peg$c86.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c87); }\n\t }\n\t }\n\t } else {\n\t s1 = peg$FAILED;\n\t }\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c88(s1);\n\t }\n\t s0 = s1;\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsecss() {\n\t var s0, s1, s2;\n\t\n\t s0 = peg$currPos;\n\t s1 = [];\n\t if (peg$c89.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c90); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t while (s2 !== peg$FAILED) {\n\t s1.push(s2);\n\t if (peg$c89.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c90); }\n\t }\n\t }\n\t } else {\n\t s1 = peg$FAILED;\n\t }\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c91(s1);\n\t }\n\t s0 = s1;\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parseexpr() {\n\t var s0, s1, s2;\n\t\n\t s0 = peg$currPos;\n\t s1 = [];\n\t if (peg$c92.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c93); }\n\t }\n\t if (s2 !== peg$FAILED) {\n\t while (s2 !== peg$FAILED) {\n\t s1.push(s2);\n\t if (peg$c92.test(input.charAt(peg$currPos))) {\n\t s2 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s2 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c93); }\n\t }\n\t }\n\t } else {\n\t s1 = peg$FAILED;\n\t }\n\t if (s1 !== peg$FAILED) {\n\t peg$savedPos = s0;\n\t s1 = peg$c94(s1);\n\t }\n\t s0 = s1;\n\t\n\t return s0;\n\t }\n\t\n\t function peg$parsesep() {\n\t var s0, s1;\n\t\n\t s0 = [];\n\t if (peg$c95.test(input.charAt(peg$currPos))) {\n\t s1 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c96); }\n\t }\n\t while (s1 !== peg$FAILED) {\n\t s0.push(s1);\n\t if (peg$c95.test(input.charAt(peg$currPos))) {\n\t s1 = input.charAt(peg$currPos);\n\t peg$currPos++;\n\t } else {\n\t s1 = peg$FAILED;\n\t if (peg$silentFails === 0) { peg$fail(peg$c96); }\n\t }\n\t }\n\t\n\t return s0;\n\t }\n\t\n\t peg$result = peg$startRuleFunction();\n\t\n\t if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n\t return peg$result;\n\t } else {\n\t if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n\t peg$fail({ type: \"end\", description: \"end of input\" });\n\t }\n\t\n\t throw peg$buildException(\n\t null,\n\t peg$maxFailExpected,\n\t peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n\t peg$maxFailPos < input.length\n\t ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n\t : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n\t );\n\t }\n\t }\n\t\n\t return {\n\t SyntaxError: peg$SyntaxError,\n\t parse: peg$parse\n\t };\n\t})();\n\n\n/***/ },\n/* 136 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t template = dl.template,\n\t expr = __webpack_require__(137),\n\t args = ['datum', 'event', 'signals'];\n\t\n\tvar compile = expr.compiler(args, {\n\t idWhiteList: args,\n\t fieldVar: args[0],\n\t globalVar: function(id) {\n\t return 'this.sig[' + dl.str(id) + ']._value';\n\t },\n\t functions: function(codegen) {\n\t var fn = expr.functions(codegen);\n\t fn.eventItem = 'event.vg.getItem';\n\t fn.eventGroup = 'event.vg.getGroup';\n\t fn.eventX = 'event.vg.getX';\n\t fn.eventY = 'event.vg.getY';\n\t fn.open = 'window.open';\n\t fn.scale = scaleGen(codegen, false);\n\t fn.iscale = scaleGen(codegen, true);\n\t fn.inrange = 'this.defs.inrange';\n\t fn.indata = indataGen(codegen);\n\t fn.format = 'this.defs.format';\n\t fn.timeFormat = 'this.defs.timeFormat';\n\t fn.utcFormat = 'this.defs.utcFormat';\n\t return fn;\n\t },\n\t functionDefs: function(/*codegen*/) {\n\t return {\n\t 'scale': scale,\n\t 'inrange': inrange,\n\t 'indata': indata,\n\t 'format': numberFormat,\n\t 'timeFormat': timeFormat,\n\t 'utcFormat': utcFormat\n\t };\n\t }\n\t});\n\t\n\tfunction scaleGen(codegen, invert) {\n\t return function(args) {\n\t args = args.map(codegen);\n\t var n = args.length;\n\t if (n < 2 || n > 3) {\n\t throw Error(\"scale takes exactly 2 or 3 arguments.\");\n\t }\n\t return 'this.defs.scale(this.model, ' + invert + ', ' +\n\t args[0] + ',' + args[1] + (n > 2 ? ',' + args[2] : '') + ')';\n\t };\n\t}\n\t\n\tfunction scale(model, invert, name, value, scope) {\n\t if (!scope || !scope.scale) {\n\t scope = (scope && scope.mark) ? scope.mark.group : model.scene().items[0];\n\t }\n\t // Verify scope is valid\n\t if (model.group(scope._id) !== scope) {\n\t throw Error('Scope for scale \"'+name+'\" is not a valid group item.');\n\t }\n\t var s = scope.scale(name);\n\t return !s ? value : (invert ? s.invert(value) : s(value));\n\t}\n\t\n\tfunction inrange(val, a, b, exclusive) {\n\t var min = a, max = b;\n\t if (a > b) { min = b; max = a; }\n\t return exclusive ?\n\t (min < val && max > val) :\n\t (min <= val && max >= val);\n\t}\n\t\n\tfunction indataGen(codegen) {\n\t return function(args, globals, fields, dataSources) {\n\t var data;\n\t if (args.length !== 3) {\n\t throw Error(\"indata takes 3 arguments.\");\n\t }\n\t if (args[0].type !== 'Literal') {\n\t throw Error(\"Data source name must be a literal for indata.\");\n\t }\n\t\n\t data = args[0].value;\n\t dataSources[data] = 1;\n\t if (args[2].type === 'Literal') {\n\t indataGen.model.requestIndex(data, args[2].value);\n\t }\n\t\n\t args = args.map(codegen);\n\t return 'this.defs.indata(this.model,' + \n\t args[0] + ',' + args[1] + ',' + args[2] + ')';\n\t };\n\t}\n\t\n\tfunction indata(model, dataname, val, field) {\n\t var data = model.data(dataname),\n\t index = data.getIndex(field);\n\t return index[val] > 0;\n\t}\n\t\n\tfunction numberFormat(specifier, v) {\n\t return template.format(specifier, 'number')(v);\n\t}\n\t\n\tfunction timeFormat(specifier, d) {\n\t return template.format(specifier, 'time')(d);\n\t}\n\t\n\tfunction utcFormat(specifier, d) {\n\t return template.format(specifier, 'utc')(d);\n\t}\n\t\n\tfunction wrap(model) {\n\t return function(str) {\n\t indataGen.model = model;\n\t var x = compile(str);\n\t x.model = model;\n\t x.sig = model ? model._signals : {};\n\t return x;\n\t };\n\t}\n\t\n\twrap.scale = scale;\n\twrap.codegen = compile.codegen;\n\tmodule.exports = wrap;\n\n\n/***/ },\n/* 137 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar parser = __webpack_require__(138),\n\t codegen = __webpack_require__(139);\n\t\n\tvar expr = module.exports = {\n\t parse: function(input, opt) {\n\t return parser.parse('('+input+')', opt);\n\t },\n\t code: function(opt) {\n\t return codegen(opt);\n\t },\n\t compiler: function(args, opt) {\n\t args = args.slice();\n\t var generator = codegen(opt),\n\t len = args.length,\n\t compile = function(str) {\n\t var value = generator(expr.parse(str));\n\t args[len] = '\"use strict\"; return (' + value.code + ');';\n\t var fn = Function.apply(null, args);\n\t value.fn = (args.length > 8) ?\n\t function() { return fn.apply(value, arguments); } :\n\t function(a, b, c, d, e, f, g) {\n\t return fn.call(value, a, b, c, d, e, f, g);\n\t }; // call often faster than apply, use if args low enough\n\t return value;\n\t };\n\t compile.codegen = generator;\n\t return compile;\n\t },\n\t functions: __webpack_require__(141),\n\t constants: __webpack_require__(140)\n\t};\n\n/***/ },\n/* 138 */\n/***/ function(module, exports) {\n\n\t/*\n\t The following expression parser is based on Esprima (http://esprima.org/).\n\t Original header comment and license for Esprima is included here:\n\t\n\t Copyright (C) 2013 Ariya Hidayat \n\t Copyright (C) 2013 Thaddee Tyl \n\t Copyright (C) 2013 Mathias Bynens \n\t Copyright (C) 2012 Ariya Hidayat \n\t Copyright (C) 2012 Mathias Bynens \n\t Copyright (C) 2012 Joost-Wim Boekesteijn \n\t Copyright (C) 2012 Kris Kowal \n\t Copyright (C) 2012 Yusuke Suzuki \n\t Copyright (C) 2012 Arpad Borsos \n\t Copyright (C) 2011 Ariya Hidayat \n\t\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\t\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\t\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\t/* istanbul ignore next */\n\tmodule.exports = (function() {\n\t 'use strict';\n\t\n\t var Token,\n\t TokenName,\n\t Syntax,\n\t PropertyKind,\n\t Messages,\n\t Regex,\n\t source,\n\t strict,\n\t index,\n\t lineNumber,\n\t lineStart,\n\t length,\n\t lookahead,\n\t state,\n\t extra;\n\t\n\t Token = {\n\t BooleanLiteral: 1,\n\t EOF: 2,\n\t Identifier: 3,\n\t Keyword: 4,\n\t NullLiteral: 5,\n\t NumericLiteral: 6,\n\t Punctuator: 7,\n\t StringLiteral: 8,\n\t RegularExpression: 9\n\t };\n\t\n\t TokenName = {};\n\t TokenName[Token.BooleanLiteral] = 'Boolean';\n\t TokenName[Token.EOF] = '';\n\t TokenName[Token.Identifier] = 'Identifier';\n\t TokenName[Token.Keyword] = 'Keyword';\n\t TokenName[Token.NullLiteral] = 'Null';\n\t TokenName[Token.NumericLiteral] = 'Numeric';\n\t TokenName[Token.Punctuator] = 'Punctuator';\n\t TokenName[Token.StringLiteral] = 'String';\n\t TokenName[Token.RegularExpression] = 'RegularExpression';\n\t\n\t Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t ArrayExpression: 'ArrayExpression',\n\t BinaryExpression: 'BinaryExpression',\n\t CallExpression: 'CallExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ExpressionStatement: 'ExpressionStatement',\n\t Identifier: 'Identifier',\n\t Literal: 'Literal',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t Program: 'Program',\n\t Property: 'Property',\n\t UnaryExpression: 'UnaryExpression'\n\t };\n\t\n\t PropertyKind = {\n\t Data: 1,\n\t Get: 2,\n\t Set: 4\n\t };\n\t\n\t // Error messages should be identical to V8.\n\t Messages = {\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t InvalidRegExp: 'Invalid regular expression',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalReturn: 'Illegal return statement',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode',\n\t AccessorDataProperty: 'Object literal may not have data and accessor property with the same name',\n\t AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode'\n\t };\n\t\n\t // See also tools/generate-unicode-regex.py.\n\t Regex = {\n\t NonAsciiIdentifierStart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]'),\n\t NonAsciiIdentifierPart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]')\n\t };\n\t\n\t // Ensure the condition is true, otherwise throw an error.\n\t // This is only to have a better contract semantic, i.e. another safety net\n\t // to catch a logic error. The condition shall be fulfilled in normal case.\n\t // Do NOT use this to enforce a certain condition on any user input.\n\t\n\t function assert(condition, message) {\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t }\n\t\n\t function isDecimalDigit(ch) {\n\t return (ch >= 0x30 && ch <= 0x39); // 0..9\n\t }\n\t\n\t function isHexDigit(ch) {\n\t return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n\t }\n\t\n\t function isOctalDigit(ch) {\n\t return '01234567'.indexOf(ch) >= 0;\n\t }\n\t\n\t // 7.2 White Space\n\t\n\t function isWhiteSpace(ch) {\n\t return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n\t (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n\t }\n\t\n\t // 7.3 Line Terminators\n\t\n\t function isLineTerminator(ch) {\n\t return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n\t }\n\t\n\t // 7.6 Identifier Names and Identifiers\n\t\n\t function isIdentifierStart(ch) {\n\t return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n\t (ch >= 0x41 && ch <= 0x5A) || // A..Z\n\t (ch >= 0x61 && ch <= 0x7A) || // a..z\n\t (ch === 0x5C) || // \\ (backslash)\n\t ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n\t }\n\t\n\t function isIdentifierPart(ch) {\n\t return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n\t (ch >= 0x41 && ch <= 0x5A) || // A..Z\n\t (ch >= 0x61 && ch <= 0x7A) || // a..z\n\t (ch >= 0x30 && ch <= 0x39) || // 0..9\n\t (ch === 0x5C) || // \\ (backslash)\n\t ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n\t }\n\t\n\t // 7.6.1.2 Future Reserved Words\n\t\n\t function isFutureReservedWord(id) {\n\t switch (id) {\n\t case 'class':\n\t case 'enum':\n\t case 'export':\n\t case 'extends':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function isStrictModeReservedWord(id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t // 7.6.1.1 Keywords\n\t\n\t function isKeyword(id) {\n\t if (strict && isStrictModeReservedWord(id)) {\n\t return true;\n\t }\n\t\n\t // 'const' is specialized as Keyword in V8.\n\t // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next.\n\t // Some others are from future reserved words.\n\t\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function skipComment() {\n\t var ch, start;\n\t\n\t start = (index === 0);\n\t while (index < length) {\n\t ch = source.charCodeAt(index);\n\t\n\t if (isWhiteSpace(ch)) {\n\t ++index;\n\t } else if (isLineTerminator(ch)) {\n\t ++index;\n\t if (ch === 0x0D && source.charCodeAt(index) === 0x0A) {\n\t ++index;\n\t }\n\t ++lineNumber;\n\t lineStart = index;\n\t start = true;\n\t } else {\n\t break;\n\t }\n\t }\n\t }\n\t\n\t function scanHexEscape(prefix) {\n\t var i, len, ch, code = 0;\n\t\n\t len = (prefix === 'u') ? 4 : 2;\n\t for (i = 0; i < len; ++i) {\n\t if (index < length && isHexDigit(source[index])) {\n\t ch = source[index++];\n\t code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t } else {\n\t return '';\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t }\n\t\n\t function scanUnicodeCodePointEscape() {\n\t var ch, code, cu1, cu2;\n\t\n\t ch = source[index];\n\t code = 0;\n\t\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t while (index < length) {\n\t ch = source[index++];\n\t if (!isHexDigit(ch)) {\n\t break;\n\t }\n\t code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t }\n\t\n\t if (code > 0x10FFFF || ch !== '}') {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t // UTF-16 Encoding\n\t if (code <= 0xFFFF) {\n\t return String.fromCharCode(code);\n\t }\n\t cu1 = ((code - 0x10000) >> 10) + 0xD800;\n\t cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n\t return String.fromCharCode(cu1, cu2);\n\t }\n\t\n\t function getEscapedIdentifier() {\n\t var ch, id;\n\t\n\t ch = source.charCodeAt(index++);\n\t id = String.fromCharCode(ch);\n\t\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (ch === 0x5C) {\n\t if (source.charCodeAt(index) !== 0x75) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t ++index;\n\t ch = scanHexEscape('u');\n\t if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t id = ch;\n\t }\n\t\n\t while (index < length) {\n\t ch = source.charCodeAt(index);\n\t if (!isIdentifierPart(ch)) {\n\t break;\n\t }\n\t ++index;\n\t id += String.fromCharCode(ch);\n\t\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (ch === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (source.charCodeAt(index) !== 0x75) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t ++index;\n\t ch = scanHexEscape('u');\n\t if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t id += ch;\n\t }\n\t }\n\t\n\t return id;\n\t }\n\t\n\t function getIdentifier() {\n\t var start, ch;\n\t\n\t start = index++;\n\t while (index < length) {\n\t ch = source.charCodeAt(index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t index = start;\n\t return getEscapedIdentifier();\n\t }\n\t if (isIdentifierPart(ch)) {\n\t ++index;\n\t } else {\n\t break;\n\t }\n\t }\n\t\n\t return source.slice(start, index);\n\t }\n\t\n\t function scanIdentifier() {\n\t var start, id, type;\n\t\n\t start = index;\n\t\n\t // Backslash (U+005C) starts an escaped character.\n\t id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\t\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = Token.Identifier;\n\t } else if (isKeyword(id)) {\n\t type = Token.Keyword;\n\t } else if (id === 'null') {\n\t type = Token.NullLiteral;\n\t } else if (id === 'true' || id === 'false') {\n\t type = Token.BooleanLiteral;\n\t } else {\n\t type = Token.Identifier;\n\t }\n\t\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 7.7 Punctuators\n\t\n\t function scanPunctuator() {\n\t var start = index,\n\t code = source.charCodeAt(index),\n\t code2,\n\t ch1 = source[index],\n\t ch2,\n\t ch3,\n\t ch4;\n\t\n\t switch (code) {\n\t\n\t // Check for most common single-character punctuators.\n\t case 0x2E: // . dot\n\t case 0x28: // ( open bracket\n\t case 0x29: // ) close bracket\n\t case 0x3B: // ; semicolon\n\t case 0x2C: // , comma\n\t case 0x7B: // { open curly brace\n\t case 0x7D: // } close curly brace\n\t case 0x5B: // [\n\t case 0x5D: // ]\n\t case 0x3A: // :\n\t case 0x3F: // ?\n\t case 0x7E: // ~\n\t ++index;\n\t if (extra.tokenize) {\n\t if (code === 0x28) {\n\t extra.openParenToken = extra.tokens.length;\n\t } else if (code === 0x7B) {\n\t extra.openCurlyToken = extra.tokens.length;\n\t }\n\t }\n\t return {\n\t type: Token.Punctuator,\n\t value: String.fromCharCode(code),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t\n\t default:\n\t code2 = source.charCodeAt(index + 1);\n\t\n\t // '=' (U+003D) marks an assignment or comparison operator.\n\t if (code2 === 0x3D) {\n\t switch (code) {\n\t case 0x2B: // +\n\t case 0x2D: // -\n\t case 0x2F: // /\n\t case 0x3C: // <\n\t case 0x3E: // >\n\t case 0x5E: // ^\n\t case 0x7C: // |\n\t case 0x25: // %\n\t case 0x26: // &\n\t case 0x2A: // *\n\t index += 2;\n\t return {\n\t type: Token.Punctuator,\n\t value: String.fromCharCode(code) + String.fromCharCode(code2),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t\n\t case 0x21: // !\n\t case 0x3D: // =\n\t index += 2;\n\t\n\t // !== and ===\n\t if (source.charCodeAt(index) === 0x3D) {\n\t ++index;\n\t }\n\t return {\n\t type: Token.Punctuator,\n\t value: source.slice(start, index),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t }\n\t }\n\t\n\t // 4-character punctuator: >>>=\n\t\n\t ch4 = source.substr(index, 4);\n\t\n\t if (ch4 === '>>>=') {\n\t index += 4;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch4,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 3-character punctuators: === !== >>> <<= >>=\n\t\n\t ch3 = ch4.substr(0, 3);\n\t\n\t if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n\t index += 3;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch3,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // Other 2-character punctuators: ++ -- << >> && ||\n\t ch2 = ch3.substr(0, 2);\n\t\n\t if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n\t index += 2;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch2,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 1-character punctuators: < > = ! + - * % & | ^ /\n\t\n\t if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n\t ++index;\n\t return {\n\t type: Token.Punctuator,\n\t value: ch1,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t // 7.8.3 Numeric Literals\n\t\n\t function scanHexLiteral(start) {\n\t var number = '';\n\t\n\t while (index < length) {\n\t if (!isHexDigit(source[index])) {\n\t break;\n\t }\n\t number += source[index++];\n\t }\n\t\n\t if (number.length === 0) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t if (isIdentifierStart(source.charCodeAt(index))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.NumericLiteral,\n\t value: parseInt('0x' + number, 16),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function scanOctalLiteral(start) {\n\t var number = '0' + source[index++];\n\t while (index < length) {\n\t if (!isOctalDigit(source[index])) {\n\t break;\n\t }\n\t number += source[index++];\n\t }\n\t\n\t if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.NumericLiteral,\n\t value: parseInt(number, 8),\n\t octal: true,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function scanNumericLiteral() {\n\t var number, start, ch;\n\t\n\t ch = source[index];\n\t assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n\t 'Numeric literal must start with a decimal digit or a decimal point');\n\t\n\t start = index;\n\t number = '';\n\t if (ch !== '.') {\n\t number = source[index++];\n\t ch = source[index];\n\t\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t if (number === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++index;\n\t return scanHexLiteral(start);\n\t }\n\t if (isOctalDigit(ch)) {\n\t return scanOctalLiteral(start);\n\t }\n\t\n\t // decimal number starts with '0' such as '09' is illegal.\n\t if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t }\n\t\n\t while (isDecimalDigit(source.charCodeAt(index))) {\n\t number += source[index++];\n\t }\n\t ch = source[index];\n\t }\n\t\n\t if (ch === '.') {\n\t number += source[index++];\n\t while (isDecimalDigit(source.charCodeAt(index))) {\n\t number += source[index++];\n\t }\n\t ch = source[index];\n\t }\n\t\n\t if (ch === 'e' || ch === 'E') {\n\t number += source[index++];\n\t\n\t ch = source[index];\n\t if (ch === '+' || ch === '-') {\n\t number += source[index++];\n\t }\n\t if (isDecimalDigit(source.charCodeAt(index))) {\n\t while (isDecimalDigit(source.charCodeAt(index))) {\n\t number += source[index++];\n\t }\n\t } else {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t }\n\t\n\t if (isIdentifierStart(source.charCodeAt(index))) {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.NumericLiteral,\n\t value: parseFloat(number),\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t // 7.8.4 String Literals\n\t\n\t function scanStringLiteral() {\n\t var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart;\n\t startLineNumber = lineNumber;\n\t startLineStart = lineStart;\n\t\n\t quote = source[index];\n\t assert((quote === '\\'' || quote === '\"'),\n\t 'String literal must starts with a quote');\n\t\n\t start = index;\n\t ++index;\n\t\n\t while (index < length) {\n\t ch = source[index++];\n\t\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t } else if (ch === '\\\\') {\n\t ch = source[index++];\n\t if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t case 'x':\n\t if (source[index] === '{') {\n\t ++index;\n\t str += scanUnicodeCodePointEscape();\n\t } else {\n\t restore = index;\n\t unescaped = scanHexEscape(ch);\n\t if (unescaped) {\n\t str += unescaped;\n\t } else {\n\t index = restore;\n\t str += ch;\n\t }\n\t }\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t\n\t default:\n\t if (isOctalDigit(ch)) {\n\t code = '01234567'.indexOf(ch);\n\t\n\t // \\0 is not octal escape sequence\n\t if (code !== 0) {\n\t octal = true;\n\t }\n\t\n\t if (index < length && isOctalDigit(source[index])) {\n\t octal = true;\n\t code = code * 8 + '01234567'.indexOf(source[index++]);\n\t\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 &&\n\t index < length &&\n\t isOctalDigit(source[index])) {\n\t code = code * 8 + '01234567'.indexOf(source[index++]);\n\t }\n\t }\n\t str += String.fromCharCode(code);\n\t } else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t } else {\n\t ++lineNumber;\n\t if (ch === '\\r' && source[index] === '\\n') {\n\t ++index;\n\t }\n\t lineStart = index;\n\t }\n\t } else if (isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t } else {\n\t str += ch;\n\t }\n\t }\n\t\n\t if (quote !== '') {\n\t throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t\n\t return {\n\t type: Token.StringLiteral,\n\t value: str,\n\t octal: octal,\n\t startLineNumber: startLineNumber,\n\t startLineStart: startLineStart,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function testRegExp(pattern, flags) {\n\t var tmp = pattern,\n\t value;\n\t\n\t if (flags.indexOf('u') >= 0) {\n\t // Replace each astral symbol and every Unicode code point\n\t // escape sequence with a single ASCII symbol to avoid throwing on\n\t // regular expressions that are only valid in combination with the\n\t // `/u` flag.\n\t // Note: replacing with the ASCII symbol `x` might cause false\n\t // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n\t // perfectly valid pattern that is equivalent to `[a-b]`, but it\n\t // would be replaced by `[x-b]` which throws an error.\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function ($0, $1) {\n\t if (parseInt($1, 16) <= 0x10FFFF) {\n\t return 'x';\n\t }\n\t throwError({}, Messages.InvalidRegExp);\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n\t }\n\t\n\t // First, detect invalid regular expressions.\n\t try {\n\t value = new RegExp(tmp);\n\t } catch (e) {\n\t throwError({}, Messages.InvalidRegExp);\n\t }\n\t\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t } catch (exception) {\n\t return null;\n\t }\n\t }\n\t\n\t function scanRegExpBody() {\n\t var ch, str, classMarker, terminated, body;\n\t\n\t ch = source[index];\n\t assert(ch === '/', 'Regular expression literal must start with a slash');\n\t str = source[index++];\n\t\n\t classMarker = false;\n\t terminated = false;\n\t while (index < length) {\n\t ch = source[index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = source[index++];\n\t // ECMA-262 7.8.5\n\t if (isLineTerminator(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t } else if (isLineTerminator(ch.charCodeAt(0))) {\n\t throwError({}, Messages.UnterminatedRegExp);\n\t } else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t } else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t } else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t\n\t if (!terminated) {\n\t throwError({}, Messages.UnterminatedRegExp);\n\t }\n\t\n\t // Exclude leading and trailing slash.\n\t body = str.substr(1, str.length - 2);\n\t return {\n\t value: body,\n\t literal: str\n\t };\n\t }\n\t\n\t function scanRegExpFlags() {\n\t var ch, str, flags, restore;\n\t\n\t str = '';\n\t flags = '';\n\t while (index < length) {\n\t ch = source[index];\n\t if (!isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t\n\t ++index;\n\t if (ch === '\\\\' && index < length) {\n\t ch = source[index];\n\t if (ch === 'u') {\n\t ++index;\n\t restore = index;\n\t ch = scanHexEscape('u');\n\t if (ch) {\n\t flags += ch;\n\t for (str += '\\\\u'; restore < index; ++restore) {\n\t str += source[restore];\n\t }\n\t } else {\n\t index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t } else {\n\t str += '\\\\';\n\t throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n\t }\n\t } else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t\n\t return {\n\t value: flags,\n\t literal: str\n\t };\n\t }\n\t\n\t function scanRegExp() {\n\t var start, body, flags, value;\n\t\n\t lookahead = null;\n\t skipComment();\n\t start = index;\n\t\n\t body = scanRegExpBody();\n\t flags = scanRegExpFlags();\n\t value = testRegExp(body.value, flags.value);\n\t\n\t if (extra.tokenize) {\n\t return {\n\t type: Token.RegularExpression,\n\t value: value,\n\t regex: {\n\t pattern: body.value,\n\t flags: flags.value\n\t },\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t return {\n\t literal: body.literal + flags.literal,\n\t value: value,\n\t regex: {\n\t pattern: body.value,\n\t flags: flags.value\n\t },\n\t start: start,\n\t end: index\n\t };\n\t }\n\t\n\t function collectRegex() {\n\t var pos, loc, regex, token;\n\t\n\t skipComment();\n\t\n\t pos = index;\n\t loc = {\n\t start: {\n\t line: lineNumber,\n\t column: index - lineStart\n\t }\n\t };\n\t\n\t regex = scanRegExp();\n\t\n\t loc.end = {\n\t line: lineNumber,\n\t column: index - lineStart\n\t };\n\t\n\t if (!extra.tokenize) {\n\t // Pop the previous token, which is likely '/' or '/='\n\t if (extra.tokens.length > 0) {\n\t token = extra.tokens[extra.tokens.length - 1];\n\t if (token.range[0] === pos && token.type === 'Punctuator') {\n\t if (token.value === '/' || token.value === '/=') {\n\t extra.tokens.pop();\n\t }\n\t }\n\t }\n\t\n\t extra.tokens.push({\n\t type: 'RegularExpression',\n\t value: regex.literal,\n\t regex: regex.regex,\n\t range: [pos, index],\n\t loc: loc\n\t });\n\t }\n\t\n\t return regex;\n\t }\n\t\n\t function isIdentifierName(token) {\n\t return token.type === Token.Identifier ||\n\t token.type === Token.Keyword ||\n\t token.type === Token.BooleanLiteral ||\n\t token.type === Token.NullLiteral;\n\t }\n\t\n\t function advanceSlash() {\n\t var prevToken,\n\t checkToken;\n\t // Using the following algorithm:\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t prevToken = extra.tokens[extra.tokens.length - 1];\n\t if (!prevToken) {\n\t // Nothing before that: it cannot be a division.\n\t return collectRegex();\n\t }\n\t if (prevToken.type === 'Punctuator') {\n\t if (prevToken.value === ']') {\n\t return scanPunctuator();\n\t }\n\t if (prevToken.value === ')') {\n\t checkToken = extra.tokens[extra.openParenToken - 1];\n\t if (checkToken &&\n\t checkToken.type === 'Keyword' &&\n\t (checkToken.value === 'if' ||\n\t checkToken.value === 'while' ||\n\t checkToken.value === 'for' ||\n\t checkToken.value === 'with')) {\n\t return collectRegex();\n\t }\n\t return scanPunctuator();\n\t }\n\t if (prevToken.value === '}') {\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t if (extra.tokens[extra.openCurlyToken - 3] &&\n\t extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') {\n\t // Anonymous function.\n\t checkToken = extra.tokens[extra.openCurlyToken - 4];\n\t if (!checkToken) {\n\t return scanPunctuator();\n\t }\n\t } else if (extra.tokens[extra.openCurlyToken - 4] &&\n\t extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') {\n\t // Named function.\n\t checkToken = extra.tokens[extra.openCurlyToken - 5];\n\t if (!checkToken) {\n\t return collectRegex();\n\t }\n\t } else {\n\t return scanPunctuator();\n\t }\n\t return scanPunctuator();\n\t }\n\t return collectRegex();\n\t }\n\t if (prevToken.type === 'Keyword' && prevToken.value !== 'this') {\n\t return collectRegex();\n\t }\n\t return scanPunctuator();\n\t }\n\t\n\t function advance() {\n\t var ch;\n\t\n\t skipComment();\n\t\n\t if (index >= length) {\n\t return {\n\t type: Token.EOF,\n\t lineNumber: lineNumber,\n\t lineStart: lineStart,\n\t start: index,\n\t end: index\n\t };\n\t }\n\t\n\t ch = source.charCodeAt(index);\n\t\n\t if (isIdentifierStart(ch)) {\n\t return scanIdentifier();\n\t }\n\t\n\t // Very common: ( and ) and ;\n\t if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n\t return scanPunctuator();\n\t }\n\t\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (ch === 0x27 || ch === 0x22) {\n\t return scanStringLiteral();\n\t }\n\t\n\t\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (ch === 0x2E) {\n\t if (isDecimalDigit(source.charCodeAt(index + 1))) {\n\t return scanNumericLiteral();\n\t }\n\t return scanPunctuator();\n\t }\n\t\n\t if (isDecimalDigit(ch)) {\n\t return scanNumericLiteral();\n\t }\n\t\n\t // Slash (/) U+002F can also start a regex.\n\t if (extra.tokenize && ch === 0x2F) {\n\t return advanceSlash();\n\t }\n\t\n\t return scanPunctuator();\n\t }\n\t\n\t function collectToken() {\n\t var loc, token, value, entry;\n\t\n\t skipComment();\n\t loc = {\n\t start: {\n\t line: lineNumber,\n\t column: index - lineStart\n\t }\n\t };\n\t\n\t token = advance();\n\t loc.end = {\n\t line: lineNumber,\n\t column: index - lineStart\n\t };\n\t\n\t if (token.type !== Token.EOF) {\n\t value = source.slice(token.start, token.end);\n\t entry = {\n\t type: TokenName[token.type],\n\t value: value,\n\t range: [token.start, token.end],\n\t loc: loc\n\t };\n\t if (token.regex) {\n\t entry.regex = {\n\t pattern: token.regex.pattern,\n\t flags: token.regex.flags\n\t };\n\t }\n\t extra.tokens.push(entry);\n\t }\n\t\n\t return token;\n\t }\n\t\n\t function lex() {\n\t var token;\n\t\n\t token = lookahead;\n\t index = token.end;\n\t lineNumber = token.lineNumber;\n\t lineStart = token.lineStart;\n\t\n\t lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n\t\n\t index = token.end;\n\t lineNumber = token.lineNumber;\n\t lineStart = token.lineStart;\n\t\n\t return token;\n\t }\n\t\n\t function peek() {\n\t var pos, line, start;\n\t\n\t pos = index;\n\t line = lineNumber;\n\t start = lineStart;\n\t lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n\t index = pos;\n\t lineNumber = line;\n\t lineStart = start;\n\t }\n\t\n\t function Position() {\n\t this.line = lineNumber;\n\t this.column = index - lineStart;\n\t }\n\t\n\t function SourceLocation() {\n\t this.start = new Position();\n\t this.end = null;\n\t }\n\t\n\t function WrappingSourceLocation(startToken) {\n\t if (startToken.type === Token.StringLiteral) {\n\t this.start = {\n\t line: startToken.startLineNumber,\n\t column: startToken.start - startToken.startLineStart\n\t };\n\t } else {\n\t this.start = {\n\t line: startToken.lineNumber,\n\t column: startToken.start - startToken.lineStart\n\t };\n\t }\n\t this.end = null;\n\t }\n\t\n\t function Node() {\n\t // Skip comment.\n\t index = lookahead.start;\n\t if (lookahead.type === Token.StringLiteral) {\n\t lineNumber = lookahead.startLineNumber;\n\t lineStart = lookahead.startLineStart;\n\t } else {\n\t lineNumber = lookahead.lineNumber;\n\t lineStart = lookahead.lineStart;\n\t }\n\t if (extra.range) {\n\t this.range = [index, 0];\n\t }\n\t if (extra.loc) {\n\t this.loc = new SourceLocation();\n\t }\n\t }\n\t\n\t function WrappingNode(startToken) {\n\t if (extra.range) {\n\t this.range = [startToken.start, 0];\n\t }\n\t if (extra.loc) {\n\t this.loc = new WrappingSourceLocation(startToken);\n\t }\n\t }\n\t\n\t WrappingNode.prototype = Node.prototype = {\n\t\n\t finish: function () {\n\t if (extra.range) {\n\t this.range[1] = index;\n\t }\n\t if (extra.loc) {\n\t this.loc.end = new Position();\n\t if (extra.source) {\n\t this.loc.source = extra.source;\n\t }\n\t }\n\t },\n\t\n\t finishArrayExpression: function (elements) {\n\t this.type = Syntax.ArrayExpression;\n\t this.elements = elements;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishAssignmentExpression: function (operator, left, right) {\n\t this.type = Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishBinaryExpression: function (operator, left, right) {\n\t this.type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishCallExpression: function (callee, args) {\n\t this.type = Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishConditionalExpression: function (test, consequent, alternate) {\n\t this.type = Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishExpressionStatement: function (expression) {\n\t this.type = Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishIdentifier: function (name) {\n\t this.type = Syntax.Identifier;\n\t this.name = name;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishLiteral: function (token) {\n\t this.type = Syntax.Literal;\n\t this.value = token.value;\n\t this.raw = source.slice(token.start, token.end);\n\t if (token.regex) {\n\t if (this.raw == '//') {\n\t this.raw = '/(?:)/';\n\t }\n\t this.regex = token.regex;\n\t }\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishMemberExpression: function (accessor, object, property) {\n\t this.type = Syntax.MemberExpression;\n\t this.computed = accessor === '[';\n\t this.object = object;\n\t this.property = property;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishObjectExpression: function (properties) {\n\t this.type = Syntax.ObjectExpression;\n\t this.properties = properties;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishProgram: function (body) {\n\t this.type = Syntax.Program;\n\t this.body = body;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishProperty: function (kind, key, value) {\n\t this.type = Syntax.Property;\n\t this.key = key;\n\t this.value = value;\n\t this.kind = kind;\n\t this.finish();\n\t return this;\n\t },\n\t\n\t finishUnaryExpression: function (operator, argument) {\n\t this.type = Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t this.finish();\n\t return this;\n\t }\n\t };\n\t\n\t // Return true if there is a line terminator before the next token.\n\t\n\t function peekLineTerminator() {\n\t var pos, line, start, found;\n\t\n\t pos = index;\n\t line = lineNumber;\n\t start = lineStart;\n\t skipComment();\n\t found = lineNumber !== line;\n\t index = pos;\n\t lineNumber = line;\n\t lineStart = start;\n\t\n\t return found;\n\t }\n\t\n\t // Throw an exception\n\t\n\t function throwError(token, messageFormat) {\n\t var error,\n\t args = Array.prototype.slice.call(arguments, 2),\n\t msg = messageFormat.replace(\n\t /%(\\d)/g,\n\t function (whole, index) {\n\t assert(index < args.length, 'Message reference must be in range');\n\t return args[index];\n\t }\n\t );\n\t\n\t if (typeof token.lineNumber === 'number') {\n\t error = new Error('Line ' + token.lineNumber + ': ' + msg);\n\t error.index = token.start;\n\t error.lineNumber = token.lineNumber;\n\t error.column = token.start - lineStart + 1;\n\t } else {\n\t error = new Error('Line ' + lineNumber + ': ' + msg);\n\t error.index = index;\n\t error.lineNumber = lineNumber;\n\t error.column = index - lineStart + 1;\n\t }\n\t\n\t error.description = msg;\n\t throw error;\n\t }\n\t\n\t function throwErrorTolerant() {\n\t try {\n\t throwError.apply(null, arguments);\n\t } catch (e) {\n\t if (extra.errors) {\n\t extra.errors.push(e);\n\t } else {\n\t throw e;\n\t }\n\t }\n\t }\n\t\n\t\n\t // Throw an exception because of the token.\n\t\n\t function throwUnexpected(token) {\n\t if (token.type === Token.EOF) {\n\t throwError(token, Messages.UnexpectedEOS);\n\t }\n\t\n\t if (token.type === Token.NumericLiteral) {\n\t throwError(token, Messages.UnexpectedNumber);\n\t }\n\t\n\t if (token.type === Token.StringLiteral) {\n\t throwError(token, Messages.UnexpectedString);\n\t }\n\t\n\t if (token.type === Token.Identifier) {\n\t throwError(token, Messages.UnexpectedIdentifier);\n\t }\n\t\n\t if (token.type === Token.Keyword) {\n\t if (isFutureReservedWord(token.value)) {\n\t throwError(token, Messages.UnexpectedReserved);\n\t } else if (strict && isStrictModeReservedWord(token.value)) {\n\t throwErrorTolerant(token, Messages.StrictReservedWord);\n\t return;\n\t }\n\t throwError(token, Messages.UnexpectedToken, token.value);\n\t }\n\t\n\t // BooleanLiteral, NullLiteral, or Punctuator.\n\t throwError(token, Messages.UnexpectedToken, token.value);\n\t }\n\t\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t\n\t function expect(value) {\n\t var token = lex();\n\t if (token.type !== Token.Punctuator || token.value !== value) {\n\t throwUnexpected(token);\n\t }\n\t }\n\t\n\t /**\n\t * @name expectTolerant\n\t * @description Quietly expect the given token value when in tolerant mode, otherwise delegates\n\t * to expect(value)\n\t * @param {String} value The value we are expecting the lookahead token to have\n\t * @since 2.0\n\t */\n\t function expectTolerant(value) {\n\t if (extra.errors) {\n\t var token = lookahead;\n\t if (token.type !== Token.Punctuator && token.value !== value) {\n\t throwErrorTolerant(token, Messages.UnexpectedToken, token.value);\n\t } else {\n\t lex();\n\t }\n\t } else {\n\t expect(value);\n\t }\n\t }\n\t\n\t // Return true if the next token matches the specified punctuator.\n\t\n\t function match(value) {\n\t return lookahead.type === Token.Punctuator && lookahead.value === value;\n\t }\n\t\n\t // Return true if the next token matches the specified keyword\n\t\n\t function matchKeyword(keyword) {\n\t return lookahead.type === Token.Keyword && lookahead.value === keyword;\n\t }\n\t\n\t function consumeSemicolon() {\n\t var line;\n\t\n\t // Catch the very common case first: immediately a semicolon (U+003B).\n\t if (source.charCodeAt(index) === 0x3B || match(';')) {\n\t lex();\n\t return;\n\t }\n\t\n\t line = lineNumber;\n\t skipComment();\n\t if (lineNumber !== line) {\n\t return;\n\t }\n\t\n\t if (lookahead.type !== Token.EOF && !match('}')) {\n\t throwUnexpected(lookahead);\n\t }\n\t }\n\t\n\t // 11.1.4 Array Initialiser\n\t\n\t function parseArrayInitialiser() {\n\t var elements = [], node = new Node();\n\t\n\t expect('[');\n\t\n\t while (!match(']')) {\n\t if (match(',')) {\n\t lex();\n\t elements.push(null);\n\t } else {\n\t elements.push(parseAssignmentExpression());\n\t\n\t if (!match(']')) {\n\t expect(',');\n\t }\n\t }\n\t }\n\t\n\t lex();\n\t\n\t return node.finishArrayExpression(elements);\n\t }\n\t\n\t // 11.1.5 Object Initialiser\n\t\n\t function parseObjectPropertyKey() {\n\t var token, node = new Node();\n\t\n\t token = lex();\n\t\n\t // Note: This function is called only from parseObjectProperty(), where\n\t // EOF and Punctuator tokens are already filtered out.\n\t\n\t if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {\n\t if (strict && token.octal) {\n\t throwErrorTolerant(token, Messages.StrictOctalLiteral);\n\t }\n\t return node.finishLiteral(token);\n\t }\n\t\n\t return node.finishIdentifier(token.value);\n\t }\n\t\n\t function parseObjectProperty() {\n\t var token, key, id, value, node = new Node();\n\t\n\t token = lookahead;\n\t\n\t if (token.type === Token.Identifier) {\n\t id = parseObjectPropertyKey();\n\t expect(':');\n\t value = parseAssignmentExpression();\n\t return node.finishProperty('init', id, value);\n\t }\n\t if (token.type === Token.EOF || token.type === Token.Punctuator) {\n\t throwUnexpected(token);\n\t } else {\n\t key = parseObjectPropertyKey();\n\t expect(':');\n\t value = parseAssignmentExpression();\n\t return node.finishProperty('init', key, value);\n\t }\n\t }\n\t\n\t function parseObjectInitialiser() {\n\t var properties = [], property, name, key, kind, map = {}, toString = String, node = new Node();\n\t\n\t expect('{');\n\t\n\t while (!match('}')) {\n\t property = parseObjectProperty();\n\t\n\t if (property.key.type === Syntax.Identifier) {\n\t name = property.key.name;\n\t } else {\n\t name = toString(property.key.value);\n\t }\n\t kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;\n\t\n\t key = '$' + name;\n\t if (Object.prototype.hasOwnProperty.call(map, key)) {\n\t if (map[key] === PropertyKind.Data) {\n\t if (strict && kind === PropertyKind.Data) {\n\t throwErrorTolerant({}, Messages.StrictDuplicateProperty);\n\t } else if (kind !== PropertyKind.Data) {\n\t throwErrorTolerant({}, Messages.AccessorDataProperty);\n\t }\n\t } else {\n\t if (kind === PropertyKind.Data) {\n\t throwErrorTolerant({}, Messages.AccessorDataProperty);\n\t } else if (map[key] & kind) {\n\t throwErrorTolerant({}, Messages.AccessorGetSet);\n\t }\n\t }\n\t map[key] |= kind;\n\t } else {\n\t map[key] = kind;\n\t }\n\t\n\t properties.push(property);\n\t\n\t if (!match('}')) {\n\t expectTolerant(',');\n\t }\n\t }\n\t\n\t expect('}');\n\t\n\t return node.finishObjectExpression(properties);\n\t }\n\t\n\t // 11.1.6 The Grouping Operator\n\t\n\t function parseGroupExpression() {\n\t var expr;\n\t\n\t expect('(');\n\t\n\t ++state.parenthesisCount;\n\t\n\t expr = parseExpression();\n\t\n\t expect(')');\n\t\n\t return expr;\n\t }\n\t\n\t\n\t // 11.1 Primary Expressions\n\t\n\t var legalKeywords = {\"if\":1, \"this\":1};\n\t\n\t function parsePrimaryExpression() {\n\t var type, token, expr, node;\n\t\n\t if (match('(')) {\n\t return parseGroupExpression();\n\t }\n\t\n\t if (match('[')) {\n\t return parseArrayInitialiser();\n\t }\n\t\n\t if (match('{')) {\n\t return parseObjectInitialiser();\n\t }\n\t\n\t type = lookahead.type;\n\t node = new Node();\n\t\n\t if (type === Token.Identifier || legalKeywords[lookahead.value]) {\n\t expr = node.finishIdentifier(lex().value);\n\t } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {\n\t if (strict && lookahead.octal) {\n\t throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);\n\t }\n\t expr = node.finishLiteral(lex());\n\t } else if (type === Token.Keyword) {\n\t throw new Error(\"Disabled.\");\n\t } else if (type === Token.BooleanLiteral) {\n\t token = lex();\n\t token.value = (token.value === 'true');\n\t expr = node.finishLiteral(token);\n\t } else if (type === Token.NullLiteral) {\n\t token = lex();\n\t token.value = null;\n\t expr = node.finishLiteral(token);\n\t } else if (match('/') || match('/=')) {\n\t if (typeof extra.tokens !== 'undefined') {\n\t expr = node.finishLiteral(collectRegex());\n\t } else {\n\t expr = node.finishLiteral(scanRegExp());\n\t }\n\t peek();\n\t } else {\n\t throwUnexpected(lex());\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.2 Left-Hand-Side Expressions\n\t\n\t function parseArguments() {\n\t var args = [];\n\t\n\t expect('(');\n\t\n\t if (!match(')')) {\n\t while (index < length) {\n\t args.push(parseAssignmentExpression());\n\t if (match(')')) {\n\t break;\n\t }\n\t expectTolerant(',');\n\t }\n\t }\n\t\n\t expect(')');\n\t\n\t return args;\n\t }\n\t\n\t function parseNonComputedProperty() {\n\t var token, node = new Node();\n\t\n\t token = lex();\n\t\n\t if (!isIdentifierName(token)) {\n\t throwUnexpected(token);\n\t }\n\t\n\t return node.finishIdentifier(token.value);\n\t }\n\t\n\t function parseNonComputedMember() {\n\t expect('.');\n\t\n\t return parseNonComputedProperty();\n\t }\n\t\n\t function parseComputedMember() {\n\t var expr;\n\t\n\t expect('[');\n\t\n\t expr = parseExpression();\n\t\n\t expect(']');\n\t\n\t return expr;\n\t }\n\t\n\t function parseLeftHandSideExpressionAllowCall() {\n\t var expr, args, property, startToken, previousAllowIn = state.allowIn;\n\t\n\t startToken = lookahead;\n\t state.allowIn = true;\n\t expr = parsePrimaryExpression();\n\t\n\t for (;;) {\n\t if (match('.')) {\n\t property = parseNonComputedMember();\n\t expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property);\n\t } else if (match('(')) {\n\t args = parseArguments();\n\t expr = new WrappingNode(startToken).finishCallExpression(expr, args);\n\t } else if (match('[')) {\n\t property = parseComputedMember();\n\t expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property);\n\t } else {\n\t break;\n\t }\n\t }\n\t state.allowIn = previousAllowIn;\n\t\n\t return expr;\n\t }\n\t\n\t // 11.3 Postfix Expressions\n\t\n\t function parsePostfixExpression() {\n\t var expr = parseLeftHandSideExpressionAllowCall();\n\t\n\t if (lookahead.type === Token.Punctuator) {\n\t if ((match('++') || match('--')) && !peekLineTerminator()) {\n\t throw new Error(\"Disabled.\");\n\t }\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.4 Unary Operators\n\t\n\t function parseUnaryExpression() {\n\t var token, expr, startToken;\n\t\n\t if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {\n\t expr = parsePostfixExpression();\n\t } else if (match('++') || match('--')) {\n\t throw new Error(\"Disabled.\");\n\t } else if (match('+') || match('-') || match('~') || match('!')) {\n\t startToken = lookahead;\n\t token = lex();\n\t expr = parseUnaryExpression();\n\t expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);\n\t } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n\t throw new Error(\"Disabled.\");\n\t } else {\n\t expr = parsePostfixExpression();\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t function binaryPrecedence(token, allowIn) {\n\t var prec = 0;\n\t\n\t if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n\t return 0;\n\t }\n\t\n\t switch (token.value) {\n\t case '||':\n\t prec = 1;\n\t break;\n\t\n\t case '&&':\n\t prec = 2;\n\t break;\n\t\n\t case '|':\n\t prec = 3;\n\t break;\n\t\n\t case '^':\n\t prec = 4;\n\t break;\n\t\n\t case '&':\n\t prec = 5;\n\t break;\n\t\n\t case '==':\n\t case '!=':\n\t case '===':\n\t case '!==':\n\t prec = 6;\n\t break;\n\t\n\t case '<':\n\t case '>':\n\t case '<=':\n\t case '>=':\n\t case 'instanceof':\n\t prec = 7;\n\t break;\n\t\n\t case 'in':\n\t prec = allowIn ? 7 : 0;\n\t break;\n\t\n\t case '<<':\n\t case '>>':\n\t case '>>>':\n\t prec = 8;\n\t break;\n\t\n\t case '+':\n\t case '-':\n\t prec = 9;\n\t break;\n\t\n\t case '*':\n\t case '/':\n\t case '%':\n\t prec = 11;\n\t break;\n\t\n\t default:\n\t break;\n\t }\n\t\n\t return prec;\n\t }\n\t\n\t // 11.5 Multiplicative Operators\n\t // 11.6 Additive Operators\n\t // 11.7 Bitwise Shift Operators\n\t // 11.8 Relational Operators\n\t // 11.9 Equality Operators\n\t // 11.10 Binary Bitwise Operators\n\t // 11.11 Binary Logical Operators\n\t\n\t function parseBinaryExpression() {\n\t var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\t\n\t marker = lookahead;\n\t left = parseUnaryExpression();\n\t\n\t token = lookahead;\n\t prec = binaryPrecedence(token, state.allowIn);\n\t if (prec === 0) {\n\t return left;\n\t }\n\t token.prec = prec;\n\t lex();\n\t\n\t markers = [marker, lookahead];\n\t right = parseUnaryExpression();\n\t\n\t stack = [left, token, right];\n\t\n\t while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {\n\t\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n\t right = stack.pop();\n\t operator = stack.pop().value;\n\t left = stack.pop();\n\t markers.pop();\n\t expr = new WrappingNode(markers[markers.length - 1]).finishBinaryExpression(operator, left, right);\n\t stack.push(expr);\n\t }\n\t\n\t // Shift.\n\t token = lex();\n\t token.prec = prec;\n\t stack.push(token);\n\t markers.push(lookahead);\n\t expr = parseUnaryExpression();\n\t stack.push(expr);\n\t }\n\t\n\t // Final reduce to clean-up the stack.\n\t i = stack.length - 1;\n\t expr = stack[i];\n\t markers.pop();\n\t while (i > 1) {\n\t expr = new WrappingNode(markers.pop()).finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n\t i -= 2;\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.12 Conditional Operator\n\t\n\t function parseConditionalExpression() {\n\t var expr, previousAllowIn, consequent, alternate, startToken;\n\t\n\t startToken = lookahead;\n\t\n\t expr = parseBinaryExpression();\n\t\n\t if (match('?')) {\n\t lex();\n\t previousAllowIn = state.allowIn;\n\t state.allowIn = true;\n\t consequent = parseAssignmentExpression();\n\t state.allowIn = previousAllowIn;\n\t expect(':');\n\t alternate = parseAssignmentExpression();\n\t\n\t expr = new WrappingNode(startToken).finishConditionalExpression(expr, consequent, alternate);\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 11.13 Assignment Operators\n\t\n\t function parseAssignmentExpression() {\n\t var oldParenthesisCount, token, expr, startToken;\n\t\n\t oldParenthesisCount = state.parenthesisCount;\n\t\n\t startToken = lookahead;\n\t token = lookahead;\n\t\n\t expr = parseConditionalExpression();\n\t\n\t return expr;\n\t }\n\t\n\t // 11.14 Comma Operator\n\t\n\t function parseExpression() {\n\t var expr = parseAssignmentExpression();\n\t\n\t if (match(',')) {\n\t throw new Error(\"Disabled.\"); // no sequence expressions\n\t }\n\t\n\t return expr;\n\t }\n\t\n\t // 12.4 Expression Statement\n\t\n\t function parseExpressionStatement(node) {\n\t var expr = parseExpression();\n\t consumeSemicolon();\n\t return node.finishExpressionStatement(expr);\n\t }\n\t\n\t // 12 Statements\n\t\n\t function parseStatement() {\n\t var type = lookahead.type,\n\t expr,\n\t node;\n\t\n\t if (type === Token.EOF) {\n\t throwUnexpected(lookahead);\n\t }\n\t\n\t if (type === Token.Punctuator && lookahead.value === '{') {\n\t throw new Error(\"Disabled.\"); // block statement\n\t }\n\t\n\t node = new Node();\n\t\n\t if (type === Token.Punctuator) {\n\t switch (lookahead.value) {\n\t case ';':\n\t throw new Error(\"Disabled.\"); // empty statement\n\t case '(':\n\t return parseExpressionStatement(node);\n\t default:\n\t break;\n\t }\n\t } else if (type === Token.Keyword) {\n\t throw new Error(\"Disabled.\"); // keyword\n\t }\n\t\n\t expr = parseExpression();\n\t consumeSemicolon();\n\t return node.finishExpressionStatement(expr);\n\t }\n\t\n\t // 14 Program\n\t\n\t function parseSourceElement() {\n\t if (lookahead.type === Token.Keyword) {\n\t switch (lookahead.value) {\n\t case 'const':\n\t case 'let':\n\t throw new Error(\"Disabled.\");\n\t case 'function':\n\t throw new Error(\"Disabled.\");\n\t default:\n\t return parseStatement();\n\t }\n\t }\n\t\n\t if (lookahead.type !== Token.EOF) {\n\t return parseStatement();\n\t }\n\t }\n\t\n\t function parseSourceElements() {\n\t var sourceElement, sourceElements = [], token, directive, firstRestricted;\n\t\n\t while (index < length) {\n\t token = lookahead;\n\t if (token.type !== Token.StringLiteral) {\n\t break;\n\t }\n\t\n\t sourceElement = parseSourceElement();\n\t sourceElements.push(sourceElement);\n\t if (sourceElement.expression.type !== Syntax.Literal) {\n\t // this is not directive\n\t break;\n\t }\n\t directive = source.slice(token.start + 1, token.end - 1);\n\t if (directive === 'use strict') {\n\t strict = true;\n\t if (firstRestricted) {\n\t throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);\n\t }\n\t } else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t\n\t while (index < length) {\n\t sourceElement = parseSourceElement();\n\t if (typeof sourceElement === 'undefined') {\n\t break;\n\t }\n\t sourceElements.push(sourceElement);\n\t }\n\t return sourceElements;\n\t }\n\t\n\t function parseProgram() {\n\t var body, node;\n\t\n\t skipComment();\n\t peek();\n\t node = new Node();\n\t strict = true; // assume strict\n\t\n\t body = parseSourceElements();\n\t return node.finishProgram(body);\n\t }\n\t\n\t function filterTokenLocation() {\n\t var i, entry, token, tokens = [];\n\t\n\t for (i = 0; i < extra.tokens.length; ++i) {\n\t entry = extra.tokens[i];\n\t token = {\n\t type: entry.type,\n\t value: entry.value\n\t };\n\t if (entry.regex) {\n\t token.regex = {\n\t pattern: entry.regex.pattern,\n\t flags: entry.regex.flags\n\t };\n\t }\n\t if (extra.range) {\n\t token.range = entry.range;\n\t }\n\t if (extra.loc) {\n\t token.loc = entry.loc;\n\t }\n\t tokens.push(token);\n\t }\n\t\n\t extra.tokens = tokens;\n\t }\n\t\n\t function tokenize(code, options) {\n\t var toString,\n\t tokens;\n\t\n\t toString = String;\n\t if (typeof code !== 'string' && !(code instanceof String)) {\n\t code = toString(code);\n\t }\n\t\n\t source = code;\n\t index = 0;\n\t lineNumber = (source.length > 0) ? 1 : 0;\n\t lineStart = 0;\n\t length = source.length;\n\t lookahead = null;\n\t state = {\n\t allowIn: true,\n\t labelSet: {},\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t lastCommentStart: -1\n\t };\n\t\n\t extra = {};\n\t\n\t // Options matching.\n\t options = options || {};\n\t\n\t // Of course we collect tokens here.\n\t options.tokens = true;\n\t extra.tokens = [];\n\t extra.tokenize = true;\n\t // The following two fields are necessary to compute the Regex tokens.\n\t extra.openParenToken = -1;\n\t extra.openCurlyToken = -1;\n\t\n\t extra.range = (typeof options.range === 'boolean') && options.range;\n\t extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\t\n\t if (typeof options.tolerant === 'boolean' && options.tolerant) {\n\t extra.errors = [];\n\t }\n\t\n\t try {\n\t peek();\n\t if (lookahead.type === Token.EOF) {\n\t return extra.tokens;\n\t }\n\t\n\t lex();\n\t while (lookahead.type !== Token.EOF) {\n\t try {\n\t lex();\n\t } catch (lexError) {\n\t if (extra.errors) {\n\t extra.errors.push(lexError);\n\t // We have to break on the first error\n\t // to avoid infinite loops.\n\t break;\n\t } else {\n\t throw lexError;\n\t }\n\t }\n\t }\n\t\n\t filterTokenLocation();\n\t tokens = extra.tokens;\n\t if (typeof extra.errors !== 'undefined') {\n\t tokens.errors = extra.errors;\n\t }\n\t } catch (e) {\n\t throw e;\n\t } finally {\n\t extra = {};\n\t }\n\t return tokens;\n\t }\n\t\n\t function parse(code, options) {\n\t var program, toString;\n\t\n\t toString = String;\n\t if (typeof code !== 'string' && !(code instanceof String)) {\n\t code = toString(code);\n\t }\n\t\n\t source = code;\n\t index = 0;\n\t lineNumber = (source.length > 0) ? 1 : 0;\n\t lineStart = 0;\n\t length = source.length;\n\t lookahead = null;\n\t state = {\n\t allowIn: true,\n\t labelSet: {},\n\t parenthesisCount: 0,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t lastCommentStart: -1\n\t };\n\t\n\t extra = {};\n\t if (typeof options !== 'undefined') {\n\t extra.range = (typeof options.range === 'boolean') && options.range;\n\t extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\t\n\t if (extra.loc && options.source !== null && options.source !== undefined) {\n\t extra.source = toString(options.source);\n\t }\n\t\n\t if (typeof options.tokens === 'boolean' && options.tokens) {\n\t extra.tokens = [];\n\t }\n\t if (typeof options.tolerant === 'boolean' && options.tolerant) {\n\t extra.errors = [];\n\t }\n\t }\n\t\n\t try {\n\t program = parseProgram();\n\t if (typeof extra.tokens !== 'undefined') {\n\t filterTokenLocation();\n\t program.tokens = extra.tokens;\n\t }\n\t if (typeof extra.errors !== 'undefined') {\n\t program.errors = extra.errors;\n\t }\n\t } catch (e) {\n\t throw e;\n\t } finally {\n\t extra = {};\n\t }\n\t\n\t return program;\n\t }\n\t\n\t return {\n\t tokenize: tokenize,\n\t parse: parse\n\t };\n\t\n\t})();\n\n/***/ },\n/* 139 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tfunction toMap(list) {\n\t var map = {}, i, n;\n\t for (i=0, n=list.length; i 0) {\n\t return id;\n\t }\n\t if (constants.hasOwnProperty(id)) {\n\t return constants[id];\n\t }\n\t if (idWhiteList) {\n\t if (idWhiteList.hasOwnProperty(id)) {\n\t return id;\n\t } else {\n\t globals[id] = 1;\n\t return lookupGlobal(id);\n\t }\n\t }\n\t if (idBlackList && idBlackList.hasOwnProperty(id)) {\n\t throw new Error('Illegal identifier: ' + id);\n\t }\n\t return id;\n\t },\n\t 'Program': function(n) {\n\t return n.body.map(codegen).join('\\n');\n\t },\n\t 'MemberExpression': function(n) {\n\t var d = !n.computed;\n\t var o = codegen(n.object);\n\t if (d) memberDepth += 1;\n\t var p = codegen(n.property);\n\t if (o === FIELD_VAR) { fields[p] = 1; } // HACKish...\n\t if (d) memberDepth -= 1;\n\t return o + (d ? '.'+p : '['+p+']');\n\t },\n\t 'CallExpression': function(n) {\n\t if (n.callee.type !== 'Identifier') {\n\t throw new Error('Illegal callee type: ' + n.callee.type);\n\t }\n\t var callee = n.callee.name;\n\t var args = n.arguments;\n\t var fn = functions.hasOwnProperty(callee) && functions[callee];\n\t if (!fn) throw new Error('Unrecognized function: ' + callee);\n\t return fn instanceof Function ?\n\t fn(args, globals, fields, dataSources) :\n\t fn + '(' + args.map(codegen).join(',') + ')';\n\t },\n\t 'ArrayExpression': function(n) {\n\t return '[' + n.elements.map(codegen).join(',') + ']';\n\t },\n\t 'BinaryExpression': function(n) {\n\t return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n\t },\n\t 'UnaryExpression': function(n) {\n\t return '(' + n.operator + codegen(n.argument) + ')';\n\t },\n\t 'ConditionalExpression': function(n) {\n\t return '(' + codegen(n.test) +\n\t '?' + codegen(n.consequent) +\n\t ':' + codegen(n.alternate) +\n\t ')';\n\t },\n\t 'LogicalExpression': function(n) {\n\t return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n\t },\n\t 'ObjectExpression': function(n) {\n\t return '{' + n.properties.map(codegen).join(',') + '}';\n\t },\n\t 'Property': function(n) {\n\t memberDepth += 1;\n\t var k = codegen(n.key);\n\t memberDepth -= 1;\n\t return k + ':' + codegen(n.value);\n\t },\n\t 'ExpressionStatement': function(n) {\n\t return codegen(n.expression);\n\t }\n\t };\n\t\n\t codegen_wrap.functions = functions;\n\t codegen_wrap.functionDefs = functionDefs;\n\t codegen_wrap.constants = constants;\n\t return codegen_wrap;\n\t};\n\n\n/***/ },\n/* 140 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t 'NaN': 'NaN',\n\t 'E': 'Math.E',\n\t 'LN2': 'Math.LN2',\n\t 'LN10': 'Math.LN10',\n\t 'LOG2E': 'Math.LOG2E',\n\t 'LOG10E': 'Math.LOG10E',\n\t 'PI': 'Math.PI',\n\t 'SQRT1_2': 'Math.SQRT1_2',\n\t 'SQRT2': 'Math.SQRT2'\n\t};\n\n/***/ },\n/* 141 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(codegen) {\n\t\n\t function fncall(name, args, cast, type) {\n\t var obj = codegen(args[0]);\n\t if (cast) {\n\t obj = cast + '(' + obj + ')';\n\t if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n\t }\n\t return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n\t '()' :\n\t '(' + args.slice(1).map(codegen).join(',') + ')');\n\t }\n\t\n\t function fn(name, cast, type) {\n\t return function(args) {\n\t return fncall(name, args, cast, type);\n\t };\n\t }\n\t\n\t var DATE = 'new Date',\n\t STRING = 'String',\n\t REGEXP = 'RegExp';\n\t\n\t return {\n\t // MATH functions\n\t 'isNaN': 'isNaN',\n\t 'isFinite': 'isFinite',\n\t 'abs': 'Math.abs',\n\t 'acos': 'Math.acos',\n\t 'asin': 'Math.asin',\n\t 'atan': 'Math.atan',\n\t 'atan2': 'Math.atan2',\n\t 'ceil': 'Math.ceil',\n\t 'cos': 'Math.cos',\n\t 'exp': 'Math.exp',\n\t 'floor': 'Math.floor',\n\t 'log': 'Math.log',\n\t 'max': 'Math.max',\n\t 'min': 'Math.min',\n\t 'pow': 'Math.pow',\n\t 'random': 'Math.random',\n\t 'round': 'Math.round',\n\t 'sin': 'Math.sin',\n\t 'sqrt': 'Math.sqrt',\n\t 'tan': 'Math.tan',\n\t\n\t 'clamp': function(args) {\n\t if (args.length < 3)\n\t throw new Error('Missing arguments to clamp function.');\n\t if (args.length > 3)\n\t throw new Error('Too many arguments to clamp function.');\n\t var a = args.map(codegen);\n\t return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n\t },\n\t\n\t // DATE functions\n\t 'now': 'Date.now',\n\t 'utc': 'Date.UTC',\n\t 'datetime': DATE,\n\t 'date': fn('getDate', DATE, 0),\n\t 'day': fn('getDay', DATE, 0),\n\t 'year': fn('getFullYear', DATE, 0),\n\t 'month': fn('getMonth', DATE, 0),\n\t 'hours': fn('getHours', DATE, 0),\n\t 'minutes': fn('getMinutes', DATE, 0),\n\t 'seconds': fn('getSeconds', DATE, 0),\n\t 'milliseconds': fn('getMilliseconds', DATE, 0),\n\t 'time': fn('getTime', DATE, 0),\n\t 'timezoneoffset': fn('getTimezoneOffset', DATE, 0),\n\t 'utcdate': fn('getUTCDate', DATE, 0),\n\t 'utcday': fn('getUTCDay', DATE, 0),\n\t 'utcyear': fn('getUTCFullYear', DATE, 0),\n\t 'utcmonth': fn('getUTCMonth', DATE, 0),\n\t 'utchours': fn('getUTCHours', DATE, 0),\n\t 'utcminutes': fn('getUTCMinutes', DATE, 0),\n\t 'utcseconds': fn('getUTCSeconds', DATE, 0),\n\t 'utcmilliseconds': fn('getUTCMilliseconds', DATE, 0),\n\t\n\t // shared sequence functions\n\t 'length': fn('length', null, -1),\n\t 'indexof': fn('indexOf', null),\n\t 'lastindexof': fn('lastIndexOf', null),\n\t\n\t // STRING functions\n\t 'parseFloat': 'parseFloat',\n\t 'parseInt': 'parseInt',\n\t 'upper': fn('toUpperCase', STRING, 0),\n\t 'lower': fn('toLowerCase', STRING, 0),\n\t 'slice': fn('slice', STRING),\n\t 'substring': fn('substring', STRING),\n\t 'replace': fn('replace', STRING),\n\t\n\t // REGEXP functions\n\t 'regexp': REGEXP,\n\t 'test': fn('test', REGEXP),\n\t\n\t // Control Flow functions\n\t 'if': function(args) {\n\t if (args.length < 3)\n\t throw new Error('Missing arguments to if function.');\n\t if (args.length > 3)\n\t throw new Error('Too many arguments to if function.');\n\t var a = args.map(codegen);\n\t return a[0]+'?'+a[1]+':'+a[2];\n\t }\n\t };\n\t};\n\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar lgnd = __webpack_require__(143);\n\t\n\tfunction parseLegends(model, spec, legends, group) {\n\t (spec || []).forEach(function(def, index) {\n\t legends[index] = legends[index] || lgnd(model);\n\t parseLegend(def, index, legends[index], group);\n\t });\n\t}\n\t\n\tfunction parseLegend(def, index, legend, group) {\n\t // legend scales\n\t legend.size (def.size ? group.scale(def.size) : null);\n\t legend.shape (def.shape ? group.scale(def.shape) : null);\n\t legend.fill (def.fill ? group.scale(def.fill) : null);\n\t legend.stroke(def.stroke ? group.scale(def.stroke) : null);\n\t\n\t // legend orientation\n\t if (def.orient) legend.orient(def.orient);\n\t\n\t // legend offset\n\t if (def.offset != null) legend.offset(def.offset);\n\t\n\t // legend title\n\t legend.title(def.title || null);\n\t\n\t // legend values\n\t legend.values(def.values || null);\n\t\n\t // legend label formatting\n\t legend.format(def.format !== undefined ? def.format : null);\n\t legend.formatType(def.formatType || null);\n\t\n\t // style properties\n\t var p = def.properties;\n\t legend.titleProperties(p && p.title || {});\n\t legend.labelProperties(p && p.labels || {});\n\t legend.legendProperties(p && p.legend || {});\n\t legend.symbolProperties(p && p.symbols || {});\n\t legend.gradientProperties(p && p.gradient || {});\n\t}\n\t\n\tmodule.exports = parseLegends;\n\t\n\tparseLegends.schema = {\n\t \"defs\": {\n\t \"legend\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"size\": {\"type\": \"string\"},\n\t \"shape\": {\"type\": \"string\"},\n\t \"fill\": {\"type\": \"string\"},\n\t \"stroke\": {\"type\": \"string\"},\n\t \"orient\": {\"enum\": [\"left\", \"right\"], \"default\": \"right\"},\n\t \"offset\": {\"type\": \"number\"},\n\t \"title\": {\"type\": \"string\"},\n\t \"values\": {\"type\": \"array\"},\n\t \"format\": {\"type\": \"string\"},\n\t \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n\t \"properties\": {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"title\": {\"$ref\": \"#/defs/propset\"},\n\t \"labels\": {\"$ref\": \"#/defs/propset\"},\n\t \"legend\": {\"$ref\": \"#/defs/propset\"},\n\t \"symbols\": {\"$ref\": \"#/defs/propset\"},\n\t \"gradient\": {\"$ref\": \"#/defs/propset\"}\n\t },\n\t \"additionalProperties\": false\n\t }\n\t },\n\t \"additionalProperties\": false,\n\t \"anyOf\": [\n\t {\"required\": [\"size\"]},\n\t {\"required\": [\"shape\"]},\n\t {\"required\": [\"fill\"]},\n\t {\"required\": [\"stroke\"]}\n\t ]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t Gradient = __webpack_require__(60).Gradient,\n\t parseProperties = __webpack_require__(56),\n\t parseMark = __webpack_require__(55),\n\t util = __webpack_require__(58);\n\t\n\tfunction lgnd(model) {\n\t var size = null,\n\t shape = null,\n\t fill = null,\n\t stroke = null,\n\t spacing = null,\n\t values = null,\n\t formatString = null,\n\t formatType = null,\n\t title = null,\n\t config = model.config().legend,\n\t orient = config.orient,\n\t offset = config.offset,\n\t padding = config.padding,\n\t tickArguments = [5],\n\t legendStyle = {},\n\t symbolStyle = {},\n\t gradientStyle = {},\n\t titleStyle = {},\n\t labelStyle = {},\n\t m = { // Legend marks as references for updates\n\t titles: {},\n\t symbols: {},\n\t labels: {},\n\t gradient: {}\n\t };\n\t\n\t var legend = {},\n\t legendDef = {};\n\t\n\t function reset() { legendDef.type = null; }\n\t function ingest(d, i) { return {data: d, index: i}; }\n\t\n\t legend.def = function() {\n\t var scale = size || shape || fill || stroke;\n\t\n\t if (!legendDef.type) {\n\t legendDef = (scale===fill || scale===stroke) && !discrete(scale.type) ?\n\t quantDef(scale) : ordinalDef(scale);\n\t }\n\t legendDef.orient = orient;\n\t legendDef.offset = offset;\n\t legendDef.padding = padding;\n\t legendDef.margin = config.margin;\n\t return legendDef;\n\t };\n\t\n\t function discrete(type) {\n\t return type==='ordinal' || type==='quantize' ||\n\t type==='quantile' || type==='threshold';\n\t }\n\t\n\t function ordinalDef(scale) {\n\t var def = o_legend_def(size, shape, fill, stroke);\n\t\n\t // generate data\n\t var data = (values == null ?\n\t (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) :\n\t values).map(ingest);\n\t\n\t var fmt = util.getTickFormat(scale, data.length, formatType, formatString);\n\t\n\t // determine spacing between legend entries\n\t var fs, range, offset, pad=5, domain = d3.range(data.length);\n\t if (size) {\n\t range = data.map(function(x) { return Math.sqrt(size(x.data)); });\n\t offset = d3.max(range);\n\t range = range.reduce(function(a,b,i,z) {\n\t if (i > 0) a[i] = a[i-1] + z[i-1]/2 + pad;\n\t return (a[i] += b/2, a); }, [0]).map(Math.round);\n\t } else {\n\t offset = Math.round(Math.sqrt(config.symbolSize));\n\t range = spacing ||\n\t (fs = labelStyle.fontSize) && (fs.value + pad) ||\n\t (config.labelFontSize + pad);\n\t range = domain.map(function(d,i) {\n\t return Math.round(offset/2 + i*range);\n\t });\n\t }\n\t\n\t // account for padding and title size\n\t var sz = padding, ts;\n\t if (title) {\n\t ts = titleStyle.fontSize;\n\t sz += 5 + ((ts && ts.value) || config.titleFontSize);\n\t }\n\t for (var i=0, n=range.length; i': parseComparator,\n\t '>=': parseComparator,\n\t '<': parseComparator,\n\t '<=': parseComparator,\n\t 'and': parseLogical,\n\t '&&': parseLogical,\n\t 'or': parseLogical,\n\t '||': parseLogical,\n\t 'in': parseIn\n\t};\n\t\n\tvar nullScale = function() { return 0; };\n\tnullScale.invert = nullScale;\n\t\n\tfunction parsePredicates(model, spec) {\n\t (spec || []).forEach(function(s) {\n\t var parse = types[s.type](model, s);\n\t\n\t /* jshint evil:true */\n\t var pred = Function(\"args\", \"db\", \"signals\", \"predicates\", parse.code);\n\t pred.root = function() { return model.scene().items[0]; }; // For global scales\n\t pred.nullScale = nullScale;\n\t pred.isFunction = dl.isFunction;\n\t pred.signals = parse.signals;\n\t pred.data = parse.data;\n\t\n\t model.predicate(s.name, pred);\n\t });\n\t\n\t return spec;\n\t}\n\t\n\tfunction parseSignal(signal, signals) {\n\t var s = dl.field(signal),\n\t code = \"signals[\"+s.map(dl.str).join(\"][\")+\"]\";\n\t signals[s[0]] = 1;\n\t return code;\n\t}\n\t\n\tfunction parseOperands(model, operands) {\n\t var decl = [], defs = [],\n\t signals = {}, db = {};\n\t\n\t function setSignal(s) { signals[s] = 1; }\n\t function setData(d) { db[d] = 1; }\n\t\n\t dl.array(operands).forEach(function(o, i) {\n\t var name = \"o\" + i,\n\t def = \"\";\n\t\n\t if (o.value !== undefined) {\n\t def = dl.str(o.value);\n\t } else if (o.arg) {\n\t def = \"args[\"+dl.str(o.arg)+\"]\";\n\t } else if (o.signal) {\n\t def = parseSignal(o.signal, signals);\n\t } else if (o.predicate) {\n\t var ref = o.predicate,\n\t predName = ref && (ref.name || ref),\n\t pred = model.predicate(predName),\n\t p = \"predicates[\"+dl.str(predName)+\"]\";\n\t\n\t pred.signals.forEach(setSignal);\n\t pred.data.forEach(setData);\n\t\n\t if (dl.isObject(ref)) {\n\t dl.keys(ref).forEach(function(k) {\n\t if (k === \"name\") return;\n\t var i = ref[k];\n\t def += \"args[\"+dl.str(k)+\"] = \";\n\t if (i.signal) {\n\t def += parseSignal(i.signal, signals);\n\t } else if (i.arg) {\n\t def += \"args[\"+dl.str(i.arg)+\"]\";\n\t }\n\t def += \", \";\n\t });\n\t }\n\t\n\t def += p+\".call(\"+p+\", args, db, signals, predicates)\";\n\t }\n\t\n\t decl.push(name);\n\t defs.push(name+\"=(\"+def+\")\");\n\t });\n\t\n\t return {\n\t code: \"var \" + decl.join(\", \") + \";\\n\" + defs.join(\";\\n\") + \";\\n\",\n\t signals: dl.keys(signals),\n\t data: dl.keys(db)\n\t };\n\t}\n\t\n\tfunction parseComparator(model, spec) {\n\t var ops = parseOperands(model, spec.operands);\n\t if (spec.type === '=') spec.type = '==';\n\t\n\t ops.code += \"o0 = o0 instanceof Date ? o0.getTime() : o0;\\n\" +\n\t \"o1 = o1 instanceof Date ? o1.getTime() : o1;\\n\";\n\t\n\t return {\n\t code: ops.code + \"return \" + [\"o0\", \"o1\"].join(spec.type) + \";\",\n\t signals: ops.signals,\n\t data: ops.data\n\t };\n\t}\n\t\n\tfunction parseLogical(model, spec) {\n\t var ops = parseOperands(model, spec.operands),\n\t o = [], i = 0, len = spec.operands.length;\n\t\n\t while (o.push(\"o\"+i++) < len);\n\t if (spec.type === 'and') spec.type = '&&';\n\t else if (spec.type === 'or') spec.type = '||';\n\t\n\t return {\n\t code: ops.code + \"return \" + o.join(spec.type) + \";\",\n\t signals: ops.signals,\n\t data: ops.data\n\t };\n\t}\n\t\n\tfunction parseIn(model, spec) {\n\t var o = [spec.item], code = \"\";\n\t if (spec.range) o.push.apply(o, spec.range);\n\t if (spec.scale) {\n\t code = parseScale(spec.scale, o);\n\t }\n\t\n\t var ops = parseOperands(model, o);\n\t code = ops.code + code + \"\\n var ordSet = null;\\n\";\n\t\n\t if (spec.data) {\n\t var field = dl.field(spec.field).map(dl.str);\n\t code += \"var where = function(d) { return d[\"+field.join(\"][\")+\"] == o0 };\\n\";\n\t code += \"return db[\"+dl.str(spec.data)+\"].filter(where).length > 0;\";\n\t } else if (spec.range) {\n\t // TODO: inclusive/exclusive range?\n\t if (spec.scale) {\n\t code += \"if (scale.length == 2) {\\n\" + // inverting ordinal scales\n\t \" ordSet = scale(o1, o2);\\n\" +\n\t \"} else {\\n\" +\n\t \" o1 = scale(o1);\\no2 = scale(o2);\\n\" +\n\t \"}\";\n\t }\n\t\n\t code += \"return ordSet !== null ? ordSet.indexOf(o0) !== -1 :\\n\" +\n\t \" o1 < o2 ? o1 <= o0 && o0 <= o2 : o2 <= o0 && o0 <= o1;\";\n\t }\n\t\n\t return {\n\t code: code,\n\t signals: ops.signals,\n\t data: ops.data.concat(spec.data ? [spec.data] : [])\n\t };\n\t}\n\t\n\t// Populate ops such that ultimate scale/inversion function will be in `scale` var.\n\tfunction parseScale(spec, ops) {\n\t var code = \"var scale = \",\n\t idx = ops.length;\n\t\n\t if (dl.isString(spec)) {\n\t ops.push({ value: spec });\n\t code += \"this.root().scale(o\"+idx+\")\";\n\t } else if (spec.arg) { // Scale function is being passed as an arg\n\t ops.push(spec);\n\t code += \"o\"+idx;\n\t } else if (spec.name) { // Full scale parameter {name: ..}\n\t ops.push(dl.isString(spec.name) ? {value: spec.name} : spec.name);\n\t code += \"(this.isFunction(o\"+idx+\") ? o\"+idx+\" : \";\n\t if (spec.scope) {\n\t ops.push(spec.scope);\n\t code += \"((o\"+(idx+1)+\".scale || this.root().scale)(o\"+idx+\") || this.nullScale)\";\n\t } else {\n\t code += \"this.root().scale(o\"+idx+\")\";\n\t }\n\t code += \")\";\n\t }\n\t\n\t if (spec.invert === true) { // Allow spec.invert.arg?\n\t code += \".invert\";\n\t }\n\t\n\t return code+\";\\n\";\n\t}\n\t\n\tmodule.exports = parsePredicates;\n\tparsePredicates.schema = {\n\t \"refs\": {\n\t \"operand\": {\n\t \"type\": \"object\",\n\t \"oneOf\": [\n\t {\n\t \"properties\": {\"value\": {}},\n\t \"required\": [\"value\"]\n\t },\n\t {\n\t \"properties\": {\"arg\": {\"type\": \"string\"}},\n\t \"required\": [\"arg\"]\n\t },\n\t {\"$ref\": \"#/refs/signal\"},\n\t {\n\t \"properties\": {\n\t \"predicate\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\"name\": {\"type\": \"string\"}},\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t }\n\t },\n\t \"required\": [\"predicate\"]\n\t }\n\t ]\n\t }\n\t },\n\t\n\t \"defs\": {\n\t \"predicate\": {\n\t \"type\": \"object\",\n\t \"oneOf\": [{\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"==\", \"!=\", \">\", \"<\", \">=\", \"<=\"]},\n\t \"operands\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/refs/operand\"},\n\t \"minItems\": 2,\n\t \"maxItems\": 2\n\t }\n\t },\n\t \"required\": [\"name\", \"type\", \"operands\"]\n\t }, {\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"and\", \"&&\", \"or\", \"||\"]},\n\t \"operands\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/refs/operand\"},\n\t \"minItems\": 2\n\t }\n\t },\n\t \"required\": [\"name\", \"type\", \"operands\"]\n\t }, {\n\t \"properties\": {\n\t \"name\": {\"type\": \"string\"},\n\t \"type\": {\"enum\": [\"in\"]},\n\t \"item\": {\"$ref\": \"#/refs/operand\"}\n\t },\n\t\n\t \"oneOf\": [\n\t {\n\t \"properties\": {\n\t \"range\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/refs/operand\"},\n\t \"minItems\": 2\n\t },\n\t \"scale\": {\"$ref\": \"#/refs/scopedScale\"}\n\t },\n\t \"required\": [\"range\"]\n\t },\n\t {\n\t \"properties\": {\n\t \"data\": {\"type\": \"string\"},\n\t \"field\": {\"type\": \"string\"}\n\t },\n\t \"required\": [\"data\", \"field\"]\n\t }\n\t ],\n\t\n\t \"required\": [\"name\", \"type\", \"item\"]\n\t }]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 147 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t expr = __webpack_require__(136),\n\t SIGNALS = __webpack_require__(4).Dependencies.SIGNALS;\n\t\n\tvar RESERVED = ['datum', 'event', 'signals', 'width', 'height', 'padding']\n\t .concat(dl.keys(expr.codegen.functions));\n\t\n\tfunction parseSignals(model, spec) {\n\t // process each signal definition\n\t (spec || []).forEach(function(s) {\n\t if (RESERVED.indexOf(s.name) !== -1) {\n\t throw Error('Signal name \"'+s.name+'\" is a '+\n\t 'reserved keyword ('+RESERVED.join(', ')+').');\n\t }\n\t\n\t var signal = model.signal(s.name, s.init)\n\t .verbose(s.verbose);\n\t\n\t if (s.init && s.init.expr) {\n\t s.init.expr = model.expr(s.init.expr);\n\t signal.value(exprVal(model, s.init));\n\t }\n\t\n\t if (s.expr) {\n\t s.expr = model.expr(s.expr);\n\t signal.evaluate = function(input) {\n\t var val = exprVal(model, s),\n\t sg = input.signals;\n\t if (val !== signal.value() || signal.verbose()) {\n\t signal.value(val);\n\t sg[s.name] = 1;\n\t }\n\t return sg[s.name] ? input : model.doNotPropagate;\n\t };\n\t signal.dependency(SIGNALS, s.expr.globals);\n\t s.expr.globals.forEach(function(dep) {\n\t model.signal(dep).addListener(signal);\n\t });\n\t }\n\t });\n\t\n\t return spec;\n\t}\n\t\n\tfunction exprVal(model, spec) {\n\t var e = spec.expr, v = e.fn();\n\t return spec.scale ? parseSignals.scale(model, spec, v) : v;\n\t}\n\t\n\tparseSignals.scale = function scale(model, spec, value, datum, evt) {\n\t var def = spec.scale,\n\t name = def.name || def.signal || def,\n\t scope = def.scope, e;\n\t\n\t if (scope) {\n\t if (scope.signal) {\n\t scope = model.signalRef(scope.signal);\n\t } else if (dl.isString(scope)) { // Scope is an expression\n\t e = def._expr = (def._expr || model.expr(scope));\n\t scope = e.fn(datum, evt);\n\t }\n\t }\n\t\n\t return expr.scale(model, def.invert, name, value, scope);\n\t};\n\t\n\tmodule.exports = parseSignals;\n\tparseSignals.schema = {\n\t \"refs\": {\n\t \"signal\": {\n\t \"title\": \"SignalRef\",\n\t \"type\": \"object\",\n\t \"properties\": {\"signal\": {\"type\": \"string\"}},\n\t \"required\": [\"signal\"]\n\t },\n\t\n\t \"scopedScale\": {\n\t \"oneOf\": [\n\t {\"type\": \"string\"},\n\t {\n\t \"type\": \"object\",\n\t \"properties\": {\n\t \"name\": {\n\t \"oneOf\": [{\"$ref\": \"#/refs/signal\"}, {\"type\": \"string\"}]\n\t },\n\t \"scope\": {\n\t \"oneOf\": [\n\t {\"$ref\": \"#/refs/signal\"},\n\t {\"type\": \"string\"}\n\t ]\n\t },\n\t \"invert\": {\"type\": \"boolean\", \"default\": false}\n\t },\n\t\n\t \"additionalProperties\": false,\n\t \"required\": [\"name\"]\n\t }\n\t ]\n\t }\n\t },\n\t\n\t \"defs\": {\n\t \"signal\": {\n\t \"type\": \"object\",\n\t\n\t \"properties\": {\n\t \"name\": {\n\t \"type\": \"string\",\n\t \"not\": {\"enum\": RESERVED}\n\t },\n\t \"init\": {},\n\t \"verbose\": {\"type\": \"boolean\", \"default\": false},\n\t \"expr\": {\"type\": \"string\"},\n\t \"scale\": {\"$ref\": \"#/refs/scopedScale\"},\n\t \"streams\": {\"$ref\": \"#/defs/streams\"}\n\t },\n\t\n\t \"additionalProperties\": false,\n\t \"required\": [\"name\"]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 148 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t Model = __webpack_require__(149),\n\t View = __webpack_require__(157);\n\t\n\t/**\n\t * Parse graph specification\n\t * @param spec (object)\n\t * @param config (optional object)\n\t * @param viewFactory (optional function)\n\t * @param callback (error, model)\n\t */\n\t function parseSpec(spec /*, [config,] [viewFactory,] callback */) {\n\t // do not assign any values to callback, as it will change arguments\n\t var arglen = arguments.length,\n\t argidx = 2,\n\t cb = arguments[arglen-1],\n\t model = new Model(),\n\t viewFactory = View.factory;\n\t\n\t if (arglen > argidx && dl.isFunction(arguments[arglen - argidx])) {\n\t viewFactory = arguments[arglen - argidx];\n\t ++argidx;\n\t }\n\t if (arglen > argidx && dl.isObject(arguments[arglen - argidx])) {\n\t model.config(arguments[arglen - argidx]);\n\t }\n\t\n\t if (dl.isObject(spec)) {\n\t parse(spec);\n\t } else if (dl.isString(spec)) {\n\t var opts = dl.extend({url: spec}, model.config().load);\n\t dl.json(opts, function(err, spec) {\n\t if (err) done('SPECIFICATION LOAD FAILED: ' + err);\n\t else parse(spec);\n\t });\n\t } else {\n\t done('INVALID SPECIFICATION: Must be a valid JSON object or URL.');\n\t }\n\t\n\t function parse(spec) {\n\t try {\n\t // protect against subsequent spec modification\n\t spec = dl.duplicate(spec);\n\t\n\t var parsers = __webpack_require__(52),\n\t width = spec.width || 500,\n\t height = spec.height || 500,\n\t padding = parsers.padding(spec.padding);\n\t\n\t // create signals for width, height, padding, and cursor\n\t model.signal('width', width);\n\t model.signal('height', height);\n\t model.signal('padding', padding);\n\t cursor(spec);\n\t\n\t // initialize model\n\t model.defs({\n\t width: width,\n\t height: height,\n\t padding: padding,\n\t viewport: spec.viewport || null,\n\t background: parsers.background(spec.background),\n\t signals: parsers.signals(model, spec.signals),\n\t predicates: parsers.predicates(model, spec.predicates),\n\t marks: parsers.marks(model, spec, width, height),\n\t data: parsers.data(model, spec.data, done)\n\t });\n\t } catch (err) { done(err); }\n\t }\n\t\n\t function cursor(spec) {\n\t var signals = spec.signals || (spec.signals=[]), def;\n\t signals.some(function(sg) {\n\t return (sg.name === 'cursor') ? (def=sg, true) : false;\n\t });\n\t\n\t if (!def) signals.push(def={name: 'cursor', streams: []});\n\t\n\t // Add a stream def at the head, so that custom defs can override it.\n\t def.init = def.init || {};\n\t def.streams.unshift({\n\t type: 'mousemove',\n\t expr: 'eventItem().cursor === cursor.default ? cursor : {default: eventItem().cursor}'\n\t });\n\t }\n\t\n\t function done(err) {\n\t var view;\n\t if (err) {\n\t log.error(err);\n\t } else {\n\t view = viewFactory(model.buildIndexes());\n\t }\n\t\n\t if (cb) {\n\t if (cb.length > 1) cb(err, view);\n\t else if (!err) cb(view);\n\t cb = null;\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = parseSpec;\n\t\n\tparseSpec.schema = {\n\t \"defs\": {\n\t \"spec\": {\n\t \"title\": \"Vega visualization specification\",\n\t \"type\": \"object\",\n\t\n\t \"allOf\": [{\"$ref\": \"#/defs/container\"}, {\n\t \"properties\": {\n\t \"width\": {\"type\": \"number\"},\n\t \"height\": {\"type\": \"number\"},\n\t \"viewport\": {\n\t \"type\": \"array\",\n\t \"items\": {\"type\": \"number\"},\n\t \"maxItems\": 2\n\t },\n\t\n\t \"background\": {\"$ref\": \"#/defs/background\"},\n\t \"padding\": {\"$ref\": \"#/defs/padding\"},\n\t\n\t \"signals\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/defs/signal\"}\n\t },\n\t\n\t \"predicates\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/defs/predicate\"}\n\t },\n\t\n\t \"data\": {\n\t \"type\": \"array\",\n\t \"items\": {\"$ref\": \"#/defs/data\"}\n\t }\n\t }\n\t }]\n\t }\n\t }\n\t};\n\n\n/***/ },\n/* 149 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t ChangeSet = df.ChangeSet,\n\t Base = df.Graph.prototype,\n\t Node = df.Node, // jshint ignore:line\n\t GroupBuilder = __webpack_require__(150),\n\t visit = __webpack_require__(155),\n\t compiler = __webpack_require__(136),\n\t config = __webpack_require__(156);\n\t\n\tfunction Model(cfg) {\n\t this._defs = {};\n\t this._predicates = {};\n\t\n\t this._scene = null; // Root scenegraph node.\n\t this._groups = null; // Index of group items.\n\t\n\t this._node = null;\n\t this._builder = null; // Top-level scenegraph builder.\n\t\n\t this._reset = {axes: false, legends: false};\n\t\n\t this.config(cfg);\n\t this.expr = compiler(this);\n\t Base.init.call(this);\n\t}\n\t\n\tvar prototype = (Model.prototype = Object.create(Base));\n\tprototype.constructor = Model;\n\t\n\tprototype.defs = function(defs) {\n\t if (!arguments.length) return this._defs;\n\t this._defs = defs;\n\t return this;\n\t};\n\t\n\tprototype.config = function(cfg) {\n\t if (!arguments.length) return this._config;\n\t this._config = Object.create(config);\n\t for (var name in cfg) {\n\t var x = cfg[name], y = this._config[name];\n\t if (dl.isObject(x) && dl.isObject(y)) {\n\t this._config[name] = dl.extend({}, y, x);\n\t } else {\n\t this._config[name] = x;\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tprototype.width = function(width) {\n\t if (this._defs) this._defs.width = width;\n\t if (this._defs && this._defs.marks) this._defs.marks.width = width;\n\t if (this._scene) {\n\t this._scene.items[0].width = width;\n\t this._scene.items[0]._dirty = true;\n\t }\n\t this._reset.axes = true;\n\t return this;\n\t};\n\t\n\tprototype.height = function(height) {\n\t if (this._defs) this._defs.height = height;\n\t if (this._defs && this._defs.marks) this._defs.marks.height = height;\n\t if (this._scene) {\n\t this._scene.items[0].height = height;\n\t this._scene.items[0]._dirty = true;\n\t }\n\t this._reset.axes = true;\n\t return this;\n\t};\n\t\n\tprototype.node = function() {\n\t return this._node || (this._node = new Node(this));\n\t};\n\t\n\tprototype.data = function() {\n\t var data = Base.data.apply(this, arguments);\n\t if (arguments.length > 1) { // new Datasource\n\t this.node().addListener(data.pipeline()[0]);\n\t }\n\t return data;\n\t};\n\t\n\tfunction predicates(name) {\n\t var m = this, pred = {};\n\t if (!dl.isArray(name)) return this._predicates[name];\n\t name.forEach(function(n) { pred[n] = m._predicates[n]; });\n\t return pred;\n\t}\n\t\n\tprototype.predicate = function(name, predicate) {\n\t if (arguments.length === 1) return predicates.call(this, name);\n\t return (this._predicates[name] = predicate);\n\t};\n\t\n\tprototype.predicates = function() { return this._predicates; };\n\t\n\tprototype.scene = function(renderer) {\n\t if (!arguments.length) return this._scene;\n\t\n\t if (this._builder) {\n\t this.node().removeListener(this._builder);\n\t this._builder._groupBuilder.disconnect();\n\t }\n\t\n\t var m = this,\n\t b = this._builder = new Node(this);\n\t\n\t b.evaluate = function(input) {\n\t if (b._groupBuilder) return input;\n\t\n\t var gb = b._groupBuilder = new GroupBuilder(m, m._defs.marks, m._scene={}),\n\t p = gb.pipeline();\n\t\n\t m._groups = {};\n\t this.addListener(gb.connect());\n\t p[p.length-1].addListener(renderer);\n\t return input;\n\t };\n\t\n\t this.addListener(b);\n\t return this;\n\t};\n\t\n\tprototype.group = function(id, item) {\n\t var groups = this._groups;\n\t if (arguments.length === 1) return groups[id];\n\t return (groups[id] = item, this);\n\t};\n\t\n\tprototype.reset = function() {\n\t if (this._scene && this._reset.axes) {\n\t visit(this._scene, function(item) {\n\t if (item.axes) item.axes.forEach(function(axis) { axis.reset(); });\n\t });\n\t this._reset.axes = false;\n\t }\n\t if (this._scene && this._reset.legends) {\n\t visit(this._scene, function(item) {\n\t if (item.legends) item.legends.forEach(function(l) { l.reset(); });\n\t });\n\t this._reset.legends = false;\n\t }\n\t return this;\n\t};\n\t\n\tprototype.addListener = function(l) {\n\t this.node().addListener(l);\n\t};\n\t\n\tprototype.removeListener = function(l) {\n\t this.node().removeListener(l);\n\t};\n\t\n\tprototype.fire = function(cs) {\n\t if (!cs) cs = ChangeSet.create();\n\t this.propagate(cs, this.node());\n\t};\n\t\n\tmodule.exports = Model;\n\n\n/***/ },\n/* 150 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t Node = df.Node, // jshint ignore:line\n\t Deps = df.Dependencies,\n\t Tuple = df.Tuple,\n\t Collector = df.Collector,\n\t log = __webpack_require__(8),\n\t Builder = __webpack_require__(151),\n\t Scale = __webpack_require__(154),\n\t parseAxes = __webpack_require__(53),\n\t parseLegends = __webpack_require__(142);\n\t\n\tfunction GroupBuilder() {\n\t this._children = {};\n\t this._scaler = null;\n\t this._recursor = null;\n\t\n\t this._scales = {};\n\t this.scale = scale.bind(this);\n\t return arguments.length ? this.init.apply(this, arguments) : this;\n\t}\n\t\n\tvar Types = GroupBuilder.TYPES = {\n\t GROUP: \"group\",\n\t MARK: \"mark\",\n\t AXIS: \"axis\",\n\t LEGEND: \"legend\"\n\t};\n\t\n\tvar proto = (GroupBuilder.prototype = new Builder());\n\t\n\tproto.init = function(graph, def) {\n\t var builder = this, name;\n\t\n\t this._scaler = new Node(graph);\n\t\n\t (def.scales||[]).forEach(function(s) {\n\t s = builder.scale((name=s.name), new Scale(graph, s, builder));\n\t builder.scale(name+\":prev\", s);\n\t builder._scaler.addListener(s); // Scales should be computed after group is encoded\n\t });\n\t\n\t this._recursor = new Node(graph);\n\t this._recursor.evaluate = recurse.bind(this);\n\t\n\t var scales = (def.axes||[]).reduce(function(acc, x) {\n\t return (acc[x.scale] = 1, acc);\n\t }, {});\n\t\n\t scales = (def.legends||[]).reduce(function(acc, x) {\n\t return (acc[x.size || x.shape || x.fill || x.stroke], acc);\n\t }, scales);\n\t\n\t this._recursor.dependency(Deps.SCALES, dl.keys(scales));\n\t\n\t // We only need a collector for up-propagation of bounds calculation,\n\t // so only GroupBuilders, and not regular Builders, have collectors.\n\t this._collector = new Collector(graph);\n\t\n\t return Builder.prototype.init.apply(this, arguments);\n\t};\n\t\n\tproto.evaluate = function() {\n\t var output = Builder.prototype.evaluate.apply(this, arguments),\n\t model = this._graph,\n\t builder = this,\n\t scales = this._scales,\n\t items = this._mark.items;\n\t\n\t // If scales need to be reevaluated, we need to send all group items forward.\n\t if (output.mod.length < items.length) {\n\t var fullUpdate = dl.keys(scales).some(function(s) {\n\t return scales[s].reevaluate(output);\n\t });\n\t\n\t if (fullUpdate) {\n\t output.mod = output.mod.concat(Tuple.idFilter(items, output.mod));\n\t }\n\t }\n\t\n\t output.add.forEach(function(group) { buildGroup.call(builder, output, group); });\n\t output.rem.forEach(function(group) { model.group(group._id, null); });\n\t return output;\n\t};\n\t\n\tproto.pipeline = function() {\n\t return [this, this._scaler, this._recursor, this._collector, this._bounder];\n\t};\n\t\n\tproto.disconnect = function() {\n\t var builder = this;\n\t dl.keys(builder._children).forEach(function(group_id) {\n\t builder._children[group_id].forEach(function(c) {\n\t builder._recursor.removeListener(c.builder);\n\t c.builder.disconnect();\n\t });\n\t });\n\t\n\t builder._children = {};\n\t return Builder.prototype.disconnect.call(this);\n\t};\n\t\n\tproto.child = function(name, group_id) {\n\t var children = this._children[group_id],\n\t i = 0, len = children.length,\n\t child;\n\t\n\t for (; i 0,\n\t hasAxes = dl.array(this._def.axes).length > 0,\n\t hasLegends = dl.array(this._def.legends).length > 0,\n\t i, j, c, len, group, pipeline, def, inline = false;\n\t\n\t for (i=0, len=input.add.length; i=0; --i) {\n\t group = input.add[i];\n\t for (j=this._children[group._id].length-1; j>=0; --j) {\n\t c = this._children[group._id][j];\n\t c.builder.connect();\n\t pipeline = c.builder.pipeline();\n\t def = c.builder._def;\n\t\n\t // This new child needs to be built during this propagation cycle.\n\t // We could add its builder as a listener off the _recursor node,\n\t // but try to inline it if we can to minimize graph dispatches.\n\t inline = (def.type !== Types.GROUP);\n\t inline = inline && (this._graph.data(c.from) !== undefined);\n\t inline = inline && (pipeline[pipeline.length-1].listeners().length === 1); // Reactive geom source\n\t inline = inline && (def.from && !def.from.mark); // Reactive geom target\n\t c.inline = inline;\n\t\n\t if (inline) this._graph.evaluate(input, c.builder);\n\t else this._recursor.addListener(c.builder);\n\t }\n\t }\n\t\n\t function removeTemp(c) {\n\t if (c.type == Types.MARK && !c.inline &&\n\t builder._graph.data(c.from) !== undefined) {\n\t builder._recursor.removeListener(c.builder);\n\t }\n\t }\n\t\n\t function updateAxis(a) {\n\t var scale = a.scale();\n\t if (!input.scales[scale.scaleName]) return;\n\t a.reset().def();\n\t }\n\t\n\t function updateLegend(l) {\n\t var scale = l.size() || l.shape() || l.fill() || l.stroke();\n\t if (!input.scales[scale.scaleName]) return;\n\t l.reset().def();\n\t }\n\t\n\t for (i=0, len=input.mod.length; i this._stamp) {\n\t join.call(this, fcs, output, this._ds.values(), true, fullUpdate);\n\t } else if (fullUpdate) {\n\t output.mod = this._mark.items.slice();\n\t }\n\t } else {\n\t data = dl.isFunction(this._def.from) ? this._def.from() : [Sentinel];\n\t join.call(this, input, output, data);\n\t }\n\t\n\t // Stash output before Bounder for downstream reactive geometry.\n\t this._output = output = this._graph.evaluate(output, this._encoder);\n\t\n\t // Add any new scale references to the dependency list, and ensure\n\t // they're connected.\n\t if (update.nested && update.nested.length && this._status === CONNECTED) {\n\t dl.keys(this._mark._scaleRefs).forEach(function(s) {\n\t var scale = self._parent.scale(s);\n\t if (!scale) return;\n\t\n\t scale.addListener(self);\n\t self.dependency(Deps.SCALES, s);\n\t self._encoder.dependency(Deps.SCALES, s);\n\t });\n\t }\n\t\n\t // Supernodes calculate bounds too, but only on items marked dirty.\n\t if (this._isSuper) {\n\t output.mod = output.mod.filter(function(x) { return x._dirty; });\n\t output = this._graph.evaluate(output, this._bounder);\n\t }\n\t\n\t return output;\n\t};\n\t\n\tfunction newItem() {\n\t var item = Tuple.ingest(new Item(this._mark));\n\t\n\t // For the root node's item\n\t if (this._def.width) Tuple.set(item, 'width', this._def.width);\n\t if (this._def.height) Tuple.set(item, 'height', this._def.height);\n\t return item;\n\t}\n\t\n\tfunction join(input, output, data, ds, fullUpdate) {\n\t var keyf = keyFunction(this._def.key || (ds ? '_id' : null)),\n\t prev = this._mark.items || [],\n\t rem = ds ? input.rem : prev,\n\t mod = Tuple.idMap((!ds || fullUpdate) ? data : input.mod),\n\t next = [],\n\t i, key, len, item, datum, enter, diff;\n\t\n\t // Only mark rems as exiting. Due to keyf, there may be an add/mod\n\t // tuple that replaces it.\n\t for (i=0, len=rem.length; i0) s += '|';\n\t s += String(f[i](d));\n\t }\n\t return s;\n\t };\n\t}\n\t\n\tmodule.exports = Builder;\n\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t log = __webpack_require__(8),\n\t df = __webpack_require__(4),\n\t Node = df.Node, // jshint ignore:line\n\t Deps = df.Dependencies,\n\t bound = __webpack_require__(60).bound;\n\t\n\tvar EMPTY = {};\n\t\n\tfunction Encoder(graph, mark, builder) {\n\t var props = mark.def.properties || {},\n\t enter = props.enter,\n\t update = props.update,\n\t exit = props.exit;\n\t\n\t Node.prototype.init.call(this, graph);\n\t\n\t this._mark = mark;\n\t this._builder = builder;\n\t var s = this._scales = [];\n\t\n\t // Only scales used in the 'update' property set are set as\n\t // encoder depedencies to have targeted reevaluations. However,\n\t // we still want scales in 'enter' and 'exit' to be evaluated\n\t // before the encoder.\n\t if (enter) s.push.apply(s, enter.scales);\n\t\n\t if (update) {\n\t this.dependency(Deps.DATA, update.data);\n\t this.dependency(Deps.SIGNALS, update.signals);\n\t this.dependency(Deps.FIELDS, update.fields);\n\t this.dependency(Deps.SCALES, update.scales);\n\t s.push.apply(s, update.scales);\n\t }\n\t\n\t if (exit) s.push.apply(s, exit.scales);\n\t\n\t return this.mutates(true);\n\t}\n\t\n\tvar proto = (Encoder.prototype = new Node());\n\t\n\tproto.evaluate = function(input) {\n\t log.debug(input, ['encoding', this._mark.def.type]);\n\t var graph = this._graph,\n\t props = this._mark.def.properties || {},\n\t items = this._mark.items,\n\t enter = props.enter,\n\t update = props.update,\n\t exit = props.exit,\n\t dirty = input.dirty,\n\t preds = graph.predicates(),\n\t req = input.request,\n\t group = this._mark.group,\n\t guide = group && (group.mark.axis || group.mark.legend),\n\t db = EMPTY, sg = EMPTY, i, len, item, prop;\n\t\n\t if (req && !guide) {\n\t if ((prop = props[req]) && input.mod.length) {\n\t db = prop.data ? graph.values(Deps.DATA, prop.data) : null;\n\t sg = prop.signals ? graph.values(Deps.SIGNALS, prop.signals) : null;\n\t\n\t for (i=0, len=input.mod.length; i this._stamp) return true;\n\t }\n\t\n\t return false;\n\t}\n\t\n\t// Short-circuit encoder if user specifies items\n\tEncoder.update = function(graph, trans, request, items, dirty) {\n\t items = dl.array(items);\n\t var preds = graph.predicates(),\n\t db = graph.values(Deps.DATA),\n\t sg = graph.values(Deps.SIGNALS),\n\t i, len, item, props, prop;\n\t\n\t for (i=0, len=items.length; i 0,\n\t bounds = mark.bounds,\n\t rebound = !bounds || input.rem.length,\n\t i, ilen, j, jlen, group, legend;\n\t\n\t if (type === 'line' || type === 'area') {\n\t bound.mark(mark, null, isGrp && !hasLegends);\n\t } else {\n\t input.add.forEach(function(item) {\n\t bound.item(item);\n\t rebound = rebound || (bounds && !bounds.encloses(item.bounds));\n\t });\n\t\n\t input.mod.forEach(function(item) {\n\t rebound = rebound || (bounds && bounds.alignsWith(item.bounds));\n\t bound.item(item);\n\t });\n\t\n\t if (rebound) {\n\t bounds = mark.bounds && mark.bounds.clear() || (mark.bounds = new Bounds());\n\t for (i=0, ilen=items.length; i rng[1]) {\n\t start = rng[1] || 0;\n\t rng = [start + (bw * len + space), start];\n\t } else {\n\t start = rng[0] || 0;\n\t rng = [start, start + (bw * len + space)];\n\t }\n\t\n\t if (def.reverse) rng = rng.reverse();\n\t }\n\t\n\t str = typeof rng[0] === 'string';\n\t if (str || rng.length > 2 || rng.length===1 || dataDrivenRange) {\n\t scale.range(rng); // color or shape values\n\t spatial = false;\n\t } else if (points && round) {\n\t scale.rangeRoundPoints(rng, pad);\n\t } else if (points) {\n\t scale.rangePoints(rng, pad);\n\t } else if (round) {\n\t scale.rangeRoundBands(rng, pad, outer);\n\t } else {\n\t scale.rangeBands(rng, pad, outer);\n\t }\n\t\n\t prev.range = rng;\n\t this._updated = true;\n\t }\n\t\n\t if (!scale.invert && spatial) invertOrdinal(scale);\n\t}\n\t\n\t// \"Polyfill\" ordinal scale inversion. Currently, only ordinal scales\n\t// with ordered numeric ranges are supported.\n\tvar bisect = d3.bisector(dl.numcmp).right,\n\t findAsc = function(a, x) { return bisect(a,x) - 1; },\n\t findDsc = d3.bisector(function(a,b) { return -1 * dl.numcmp(a,b); }).left;\n\t\n\tfunction invertOrdinal(scale) {\n\t scale.invert = function(x, y) {\n\t var rng = scale.range(),\n\t asc = rng[0] < rng[1],\n\t find = asc ? findAsc : findDsc;\n\t\n\t if (arguments.length === 1) {\n\t if (!dl.isNumber(x)) {\n\t throw Error('Ordinal scale inversion is only supported for numeric input ('+x+').');\n\t }\n\t return scale.domain()[find(rng, x)];\n\t\n\t } else if (arguments.length === 2) { // Invert extents\n\t if (!dl.isNumber(x) || !dl.isNumber(y)) {\n\t throw Error('Extents to ordinal invert are not numbers ('+x+', '+y+').');\n\t }\n\t\n\t var domain = scale.domain(),\n\t a = find(rng, x),\n\t b = find(rng, y),\n\t n = rng.length - 1, r;\n\t if (b < a) { r = a; a = b; b = a; } // ensure a <= b\n\t if (a < 0) a = 0;\n\t if (b > n) b = n;\n\t\n\t return (asc ? dl.range(a, b+1) : dl.range(b, a-1, -1))\n\t .map(function(i) { return domain[i]; });\n\t }\n\t };\n\t}\n\t\n\tfunction quantitative(scale, rng, group) {\n\t var def = this._def,\n\t prev = scale._prev,\n\t round = signal.call(this, def.round),\n\t exponent = signal.call(this, def.exponent),\n\t clamp = signal.call(this, def.clamp),\n\t nice = signal.call(this, def.nice),\n\t domain, interval;\n\t\n\t // domain\n\t domain = (def.type === Types.QUANTILE) ?\n\t dataRef.call(this, DataRef.DOMAIN, def.domain, scale, group) :\n\t domainMinMax.call(this, scale, group);\n\t if (domain && !dl.equal(prev.domain, domain)) {\n\t scale.domain(domain);\n\t prev.domain = domain;\n\t this._updated = true;\n\t }\n\t\n\t // range\n\t // vertical scales should flip by default, so use XOR here\n\t if (signal.call(this, def.range) === 'height') rng = rng.reverse();\n\t if (rng && !dl.equal(prev.range, rng)) {\n\t scale[round && scale.rangeRound ? 'rangeRound' : 'range'](rng);\n\t prev.range = rng;\n\t this._updated = true;\n\t }\n\t\n\t if (exponent && def.type===Types.POWER) scale.exponent(exponent);\n\t if (clamp) scale.clamp(true);\n\t if (nice) {\n\t if (def.type === Types.TIME) {\n\t interval = d3.time[nice];\n\t if (!interval) log.error('Unrecognized interval: ' + interval);\n\t scale.nice(interval);\n\t } else {\n\t scale.nice();\n\t }\n\t }\n\t}\n\t\n\tfunction isUniques(scale) {\n\t return scale.type === Types.ORDINAL || scale.type === Types.QUANTILE;\n\t}\n\t\n\tfunction getRefs(def) {\n\t return def.fields || dl.array(def);\n\t}\n\t\n\tfunction inherits(refs) {\n\t return refs.some(function(r) {\n\t if (!r.data) return true;\n\t return r.data && dl.array(r.field).some(function(f) {\n\t return f.parent;\n\t });\n\t });\n\t}\n\t\n\tfunction getFields(ref, group) {\n\t return dl.array(ref.field).map(function(f) {\n\t return f.parent ?\n\t dl.accessor(f.parent)(group.datum) :\n\t f; // String or {'signal'}\n\t });\n\t}\n\t\n\t// Scale datarefs can be computed over multiple schema types.\n\t// This function determines the type of aggregator created, and\n\t// what data is sent to it: values, tuples, or multi-tuples that must\n\t// be standardized into a consistent schema.\n\tfunction aggrType(def, scale) {\n\t var refs = getRefs(def);\n\t\n\t // If we're operating over only a single domain, send full tuples\n\t // through for efficiency (fewer accessor creations/calls)\n\t if (refs.length == 1 && dl.array(refs[0].field).length == 1) {\n\t return Aggregate.TYPES.TUPLE;\n\t }\n\t\n\t // With quantitative scales, we only care about min/max.\n\t if (!isUniques(scale)) return Aggregate.TYPES.VALUE;\n\t\n\t // If we don't sort, then we can send values directly to aggrs as well\n\t if (!dl.isObject(def.sort)) return Aggregate.TYPES.VALUE;\n\t\n\t return Aggregate.TYPES.MULTI;\n\t}\n\t\n\tfunction getCache(which, def, scale, group) {\n\t var refs = getRefs(def),\n\t inherit = inherits(refs),\n\t atype = aggrType(def, scale),\n\t uniques = isUniques(scale),\n\t sort = def.sort,\n\t ck = '_'+which,\n\t fields = getFields(refs[0], group);\n\t\n\t if (scale[ck] || this[ck]) return scale[ck] || this[ck];\n\t\n\t var cache = new Aggregate(this._graph).type(atype),\n\t groupby, summarize;\n\t\n\t // If a scale's dataref doesn't inherit data from the group, we can\n\t // store the dataref aggregator at the Scale (dataflow node) level.\n\t if (inherit) {\n\t scale[ck] = cache;\n\t } else {\n\t this[ck] = cache;\n\t }\n\t\n\t if (uniques) {\n\t if (atype === Aggregate.TYPES.VALUE) {\n\t groupby = [{ name: DataRef.GROUPBY, get: dl.identity }];\n\t summarize = {'*': DataRef.COUNT};\n\t } else if (atype === Aggregate.TYPES.TUPLE) {\n\t groupby = [{ name: DataRef.GROUPBY, get: dl.$(fields[0]) }];\n\t summarize = dl.isObject(sort) ? [{\n\t field: DataRef.VALUE,\n\t get: dl.$(sort.field),\n\t ops: [sort.op]\n\t }] : {'*': DataRef.COUNT};\n\t } else { // atype === Aggregate.TYPES.MULTI\n\t groupby = DataRef.GROUPBY;\n\t summarize = [{ field: DataRef.VALUE, ops: [sort.op] }];\n\t }\n\t } else {\n\t groupby = [];\n\t summarize = [{\n\t field: DataRef.VALUE,\n\t get: (atype == Aggregate.TYPES.TUPLE) ? dl.$(fields[0]) : dl.identity,\n\t ops: [DataRef.MIN, DataRef.MAX],\n\t as: [DataRef.MIN, DataRef.MAX]\n\t }];\n\t }\n\t\n\t cache.param('groupby', groupby)\n\t .param('summarize', summarize);\n\t\n\t return (cache._lastUpdate = -1, cache);\n\t}\n\t\n\tfunction dataRef(which, def, scale, group) {\n\t if (def == null) { return []; }\n\t if (dl.isArray(def)) return def.map(signal.bind(this));\n\t\n\t var self = this, graph = this._graph,\n\t refs = getRefs(def),\n\t inherit = inherits(refs),\n\t atype = aggrType(def, scale),\n\t cache = getCache.apply(this, arguments),\n\t sort = def.sort,\n\t uniques = isUniques(scale),\n\t i, rlen, j, flen, ref, fields, field, data, from, cmp;\n\t\n\t function addDep(s) {\n\t self.dependency(Deps.SIGNALS, s);\n\t }\n\t\n\t if (inherit || (!inherit && cache._lastUpdate < this._stamp)) {\n\t for (i=0, rlen=refs.length; i this._width ? Math.ceil(+b.x2 - this._width) + inset : 0;\n\t b = b.y2 > this._height ? Math.ceil(+b.y2 - this._height) + inset : 0;\n\t pad = {left:l, top:t, right:r, bottom:b};\n\t\n\t if (this._strict) {\n\t this._autopad = 0;\n\t this._padding = pad;\n\t this._width = Math.max(0, this.__width - (l+r));\n\t this._height = Math.max(0, this.__height - (t+b));\n\t\n\t this._model.width(this._width).height(this._height).reset();\n\t setSignal.call(this, 'width', this._width);\n\t setSignal.call(this, 'height', this._height);\n\t setSignal.call(this, 'padding', pad);\n\t\n\t this.initialize().update({props:'enter'}).update({props:'update'});\n\t } else {\n\t this.padding(pad).update(opt);\n\t }\n\t return this;\n\t};\n\t\n\tprototype.viewport = function(size) {\n\t if (!arguments.length) return this._viewport;\n\t if (this._viewport !== size) {\n\t this._viewport = size;\n\t this.initialize();\n\t }\n\t return this;\n\t};\n\t\n\tprototype.renderer = function(type) {\n\t if (!arguments.length) return this._renderer;\n\t if (this._renderers[type]) type = this._renderers[type];\n\t else if (dl.isString(type)) throw new Error('Unknown renderer: ' + type);\n\t else if (!type) throw new Error('No renderer specified');\n\t\n\t if (this._io !== type) {\n\t this._io = type;\n\t this._renderer = null;\n\t this.initialize();\n\t if (this._build) this.render();\n\t }\n\t return this;\n\t};\n\t\n\tprototype.initialize = function(el) {\n\t var v = this, prevHandler,\n\t w = v._width, h = v._height, pad = v._padding, bg = v._bgcolor,\n\t config = this.model().config();\n\t\n\t if (!arguments.length || el === null) {\n\t el = this._el ? this._el.parentNode : null;\n\t if (!el) return this; // This View cannot init w/o an\n\t }\n\t\n\t // clear pre-existing container\n\t d3.select(el).select('div.vega').remove();\n\t\n\t // add div container\n\t this._el = el = d3.select(el)\n\t .append('div')\n\t .attr('class', 'vega')\n\t .style('position', 'relative')\n\t .node();\n\t if (v._viewport) {\n\t d3.select(el)\n\t .style('width', (v._viewport[0] || w)+'px')\n\t .style('height', (v._viewport[1] || h)+'px')\n\t .style('overflow', 'auto');\n\t }\n\t\n\t // renderer\n\t sg.canvas.Renderer.RETINA = config.render.retina;\n\t v._renderer = (v._renderer || new this._io.Renderer(config.load))\n\t .initialize(el, w, h, pad)\n\t .background(bg);\n\t\n\t // input handler\n\t prevHandler = v._handler;\n\t v._handler = new this._io.Handler()\n\t .initialize(el, pad, v);\n\t\n\t if (prevHandler) {\n\t prevHandler.handlers().forEach(function(h) {\n\t v._handler.on(h.type, h.handler);\n\t });\n\t } else {\n\t // Register event listeners for signal stream definitions.\n\t v._detach = parseStreams(this);\n\t }\n\t\n\t return (this._repaint = true, this);\n\t};\n\t\n\tprototype.destroy = function() {\n\t if (this._detach) this._detach();\n\t};\n\t\n\tfunction build() {\n\t var v = this;\n\t v._renderNode = new df.Node(v._model)\n\t .router(true);\n\t\n\t v._renderNode.evaluate = function(input) {\n\t log.debug(input, ['rendering']);\n\t\n\t var s = v._model.scene(),\n\t h = v._handler;\n\t\n\t if (h && h.scene) h.scene(s);\n\t\n\t if (input.trans) {\n\t input.trans.start(function(items) { v._renderer.render(s, items); });\n\t } else if (v._repaint) {\n\t v._renderer.render(s);\n\t } else if (input.dirty.length) {\n\t v._renderer.render(s, input.dirty);\n\t }\n\t\n\t if (input.dirty.length) {\n\t input.dirty.forEach(function(i) { i._dirty = false; });\n\t s.items[0]._dirty = false;\n\t }\n\t\n\t v._repaint = v._skipSignals = false;\n\t return input;\n\t };\n\t\n\t return (v._model.scene(v._renderNode), true);\n\t}\n\t\n\tprototype.update = function(opt) {\n\t opt = opt || {};\n\t var v = this,\n\t model = this._model,\n\t streamer = this._streamer,\n\t cs = this._changeset,\n\t trans = opt.duration ? new Transition(opt.duration, opt.ease) : null;\n\t\n\t if (trans) cs.trans = trans;\n\t if (opt.props !== undefined) {\n\t if (dl.keys(cs.data).length > 0) {\n\t throw Error(\n\t 'New data values are not reflected in the visualization.' +\n\t ' Please call view.update() before updating a specified property set.'\n\t );\n\t }\n\t\n\t cs.reflow = true;\n\t cs.request = opt.props;\n\t }\n\t\n\t var built = v._build;\n\t v._build = v._build || build.call(this);\n\t\n\t // If specific items are specified, short-circuit dataflow graph.\n\t // Else-If there are streaming updates, perform a targeted propagation.\n\t // Otherwise, re-evaluate the entire model (datasources + scene).\n\t if (opt.items && built) {\n\t Encoder.update(model, opt.trans, opt.props, opt.items, cs.dirty);\n\t v._renderNode.evaluate(cs);\n\t } else if (streamer.listeners().length && built) {\n\t // Include re-evaluation entire model when repaint flag is set\n\t if (this._repaint) streamer.addListener(model.node());\n\t model.propagate(cs, streamer, null, this._skipSignals);\n\t streamer.disconnect();\n\t } else {\n\t model.fire(cs);\n\t }\n\t\n\t v._changeset = df.ChangeSet.create();\n\t\n\t return v.autopad(opt);\n\t};\n\t\n\tprototype.toImageURL = function(type) {\n\t var v = this, Renderer;\n\t\n\t // lookup appropriate renderer\n\t switch (type || 'png') {\n\t case 'canvas':\n\t case 'png':\n\t Renderer = sg.canvas.Renderer; break;\n\t case 'svg':\n\t Renderer = sg.svg.string.Renderer; break;\n\t default: throw Error('Unrecognized renderer type: ' + type);\n\t }\n\t\n\t var retina = sg.canvas.Renderer.RETINA;\n\t sg.canvas.Renderer.RETINA = false; // ignore retina screen\n\t\n\t // render the scenegraph\n\t var ren = new Renderer(v._model.config.load)\n\t .initialize(null, v._width, v._height, v._padding)\n\t .background(v._bgcolor)\n\t .render(v._model.scene());\n\t\n\t sg.canvas.Renderer.RETINA = retina; // restore retina settings\n\t\n\t // return data url\n\t if (type === 'svg') {\n\t var blob = new Blob([ren.svg()], {type: 'image/svg+xml'});\n\t return window.URL.createObjectURL(blob);\n\t } else {\n\t return ren.canvas().toDataURL('image/png');\n\t }\n\t};\n\t\n\tprototype.render = function(items) {\n\t this._renderer.render(this._model.scene(), items);\n\t return this;\n\t};\n\t\n\tprototype.on = function() {\n\t this._handler.on.apply(this._handler, arguments);\n\t return this;\n\t};\n\t\n\tprototype.onSignal = function(name, handler) {\n\t var sg = this._model.signal(name);\n\t return (sg ?\n\t sg.on(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n\t};\n\t\n\tprototype.off = function() {\n\t this._handler.off.apply(this._handler, arguments);\n\t return this;\n\t};\n\t\n\tprototype.offSignal = function(name, handler) {\n\t var sg = this._model.signal(name);\n\t return (sg ?\n\t sg.off(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n\t};\n\t\n\tView.factory = function(model) {\n\t var HeadlessView = __webpack_require__(160);\n\t return function(opt) {\n\t opt = opt || {};\n\t var defs = model.defs();\n\t var v = (opt.el ? new View() : new HeadlessView())\n\t .model(model)\n\t .renderer(opt.renderer || 'canvas')\n\t .width(defs.width)\n\t .height(defs.height)\n\t .background(defs.background)\n\t .padding(defs.padding)\n\t .viewport(defs.viewport)\n\t .initialize(opt.el);\n\t\n\t if (opt.data) v.data(opt.data);\n\t\n\t // Register handlers for the hover propset and cursors.\n\t if (opt.el) {\n\t if (opt.hover !== false) {\n\t v.on('mouseover', function(evt, item) {\n\t if (item && item.hasPropertySet('hover')) {\n\t this.update({props:'hover', items:item});\n\t }\n\t })\n\t .on('mouseout', function(evt, item) {\n\t if (item && item.hasPropertySet('hover')) {\n\t this.update({props:'update', items:item});\n\t }\n\t });\n\t }\n\t\n\t if (opt.cursor !== false) {\n\t // If value is a string, it is a custom value set by the user.\n\t // In this case, the user is responsible for maintaining the cursor state\n\t // and control only reverts back to this handler if set back to 'default'.\n\t v.onSignal('cursor', function(name, value) {\n\t var body = d3.select('body');\n\t if (dl.isString(value)) {\n\t v._cursor = value === 'default';\n\t body.style('cursor', value);\n\t } else if (dl.isObject(value) && v._cursor) {\n\t body.style('cursor', value.default);\n\t }\n\t });\n\t }\n\t }\n\t\n\t return v;\n\t };\n\t};\n\t\n\tmodule.exports = View;\n\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(57),\n\t dl = __webpack_require__(12),\n\t df = __webpack_require__(4),\n\t selector = __webpack_require__(135),\n\t parseSignals = __webpack_require__(147);\n\t\n\tvar GATEKEEPER = '_vgGATEKEEPER',\n\t EVALUATOR = '_vgEVALUATOR';\n\t\n\tvar vgEvent = {\n\t getItem: function() { return this.item; },\n\t getGroup: function(name) { return name ? this.name[name] : this.group; },\n\t getXY: function(item) {\n\t var p = {x: this.x, y: this.y};\n\t if (typeof item === 'string') {\n\t item = this.name[item];\n\t }\n\t for (; item; item = item.mark && item.mark.group) {\n\t p.x -= item.x || 0;\n\t p.y -= item.y || 0;\n\t }\n\t return p;\n\t },\n\t getX: function(item) { return this.getXY(item).x; },\n\t getY: function(item) { return this.getXY(item).y; }\n\t};\n\t\n\tfunction parseStreams(view) {\n\t var model = view.model(),\n\t trueFn = model.expr('true'),\n\t falseFn = model.expr('false'),\n\t spec = model.defs().signals,\n\t registry = {handlers: {}, nodes: {}},\n\t internal = dl.duplicate(registry), // Internal event processing\n\t external = dl.duplicate(registry); // External event processing\n\t\n\t dl.array(spec).forEach(function(sig) {\n\t var signal = model.signal(sig.name);\n\t if (sig.expr) return; // Cannot have an expr and stream definition.\n\t\n\t dl.array(sig.streams).forEach(function(stream) {\n\t var sel = selector.parse(stream.type),\n\t exp = model.expr(stream.expr);\n\t mergedStream(signal, sel, exp, stream);\n\t });\n\t });\n\t\n\t // We register the event listeners all together so that if multiple\n\t // signals are registered on the same event, they will receive the\n\t // new value on the same pulse.\n\t dl.keys(internal.handlers).forEach(function(type) {\n\t view.on(type, function(evt, item) {\n\t evt.preventDefault(); // stop text selection\n\t extendEvent(evt, item);\n\t fire(internal, type, (item && item.datum) || {}, evt);\n\t });\n\t });\n\t\n\t // add external event listeners\n\t dl.keys(external.handlers).forEach(function(type) {\n\t if (typeof window === 'undefined') return; // No external support\n\t\n\t var h = external.handlers[type],\n\t t = type.split(':'), // --> no element pseudo-selectors\n\t elt = (t[0] === 'window') ? [window] :\n\t window.document.querySelectorAll(t[0]);\n\t\n\t function handler(evt) {\n\t extendEvent(evt);\n\t fire(external, type, d3.select(this).datum(), evt);\n\t }\n\t\n\t for (var i=0; i 1) f = 1;\n\t e = curr.ease(f);\n\t\n\t for (i=0, n=curr.length; i 0) { wait(); } else { callback(this.canvas()); }\n\t};\n\t\n\tprototype.svg = function() {\n\t return (this._type === 'svg') ? this._renderer.svg() : null;\n\t};\n\t\n\tprototype.initialize = function() {\n\t var w = this._width,\n\t h = this._height,\n\t bg = this._bgcolor,\n\t pad = this._padding,\n\t config = this.model().config();\n\t\n\t if (this._viewport) {\n\t w = this._viewport[0] - (pad ? pad.left + pad.right : 0);\n\t h = this._viewport[1] - (pad ? pad.top + pad.bottom : 0);\n\t }\n\t\n\t this._renderer = (this._renderer || new this._io.Renderer(config.load))\n\t .initialize(null, w, h, pad)\n\t .background(bg);\n\t\n\t return this;\n\t};\n\t\n\tmodule.exports = HeadlessView;\n\n\n/***/ },\n/* 161 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dl = __webpack_require__(12),\n\t parse = __webpack_require__(52),\n\t Scale = __webpack_require__(154),\n\t config = __webpack_require__(156);\n\t\n\tfunction compile(module, opt, schema) {\n\t var s = module.schema;\n\t if (!s) return;\n\t if (s.refs) dl.extend(schema.refs, s.refs);\n\t if (s.defs) dl.extend(schema.defs, s.defs);\n\t}\n\t\n\tmodule.exports = function(opt) {\n\t var schema = null;\n\t opt = opt || {};\n\t\n\t // Compile if we're not loading the schema from a URL.\n\t // Load from a URL to extend the existing base schema.\n\t if (opt.url) {\n\t schema = dl.json(dl.extend({url: opt.url}, config.load));\n\t } else {\n\t schema = {\n\t \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n\t \"title\": \"Vega Visualization Specification Language\",\n\t \"defs\": {},\n\t \"refs\": {},\n\t \"$ref\": \"#/defs/spec\"\n\t };\n\t\n\t dl.keys(parse).forEach(function(k) { compile(parse[k], opt, schema); });\n\t\n\t // Scales aren't in the parser, add schema manually\n\t compile(Scale, opt, schema);\n\t }\n\t\n\t // Extend schema to support custom mark properties or property sets.\n\t if (opt.properties) dl.keys(opt.properties).forEach(function(k) {\n\t schema.defs.propset.properties[k] = {\"$ref\": \"#/refs/\"+opt.properties[k]+\"Value\"};\n\t });\n\t\n\t if (opt.propertySets) dl.keys(opt.propertySets).forEach(function(k) {\n\t schema.defs.mark.properties.properties.properties[k] = {\"$ref\": \"#/defs/propset\"};\n\t });\n\t\n\t return schema;\n\t};\n\n\n/***/ },\n/* 162 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar vlBin = __webpack_require__(163);\n\tvar vlChannel = __webpack_require__(164);\n\tvar vlData = __webpack_require__(171);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar vlFieldDef = __webpack_require__(174);\n\tvar vlCompile = __webpack_require__(177);\n\tvar vlShorthand = __webpack_require__(202);\n\tvar vlSpec = __webpack_require__(203);\n\tvar vlTimeUnit = __webpack_require__(176);\n\tvar vlType = __webpack_require__(172);\n\tvar vlValidate = __webpack_require__(204);\n\tvar vlUtil = __webpack_require__(165);\n\texports.bin = vlBin;\n\texports.channel = vlChannel;\n\texports.compile = vlCompile.compile;\n\texports.data = vlData;\n\texports.encoding = vlEncoding;\n\texports.fieldDef = vlFieldDef;\n\texports.shorthand = vlShorthand;\n\texports.spec = vlSpec;\n\texports.timeUnit = vlTimeUnit;\n\texports.type = vlType;\n\texports.util = vlUtil;\n\texports.validate = vlValidate;\n\texports.version = '__VERSION__';\n\t//# sourceMappingURL=vl.js.map\n\n/***/ },\n/* 163 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tfunction autoMaxBins(channel) {\n\t switch (channel) {\n\t case channel_1.ROW:\n\t case channel_1.COLUMN:\n\t case channel_1.SIZE:\n\t case channel_1.SHAPE:\n\t return 6;\n\t default:\n\t return 10;\n\t }\n\t}\n\texports.autoMaxBins = autoMaxBins;\n\t//# sourceMappingURL=bin.js.map\n\n/***/ },\n/* 164 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\t(function (Channel) {\n\t Channel[Channel[\"X\"] = 'x'] = \"X\";\n\t Channel[Channel[\"Y\"] = 'y'] = \"Y\";\n\t Channel[Channel[\"ROW\"] = 'row'] = \"ROW\";\n\t Channel[Channel[\"COLUMN\"] = 'column'] = \"COLUMN\";\n\t Channel[Channel[\"SHAPE\"] = 'shape'] = \"SHAPE\";\n\t Channel[Channel[\"SIZE\"] = 'size'] = \"SIZE\";\n\t Channel[Channel[\"COLOR\"] = 'color'] = \"COLOR\";\n\t Channel[Channel[\"TEXT\"] = 'text'] = \"TEXT\";\n\t Channel[Channel[\"DETAIL\"] = 'detail'] = \"DETAIL\";\n\t Channel[Channel[\"LABEL\"] = 'label'] = \"LABEL\";\n\t Channel[Channel[\"PATH\"] = 'path'] = \"PATH\";\n\t Channel[Channel[\"ORDER\"] = 'order'] = \"ORDER\";\n\t})(exports.Channel || (exports.Channel = {}));\n\tvar Channel = exports.Channel;\n\texports.X = Channel.X;\n\texports.Y = Channel.Y;\n\texports.ROW = Channel.ROW;\n\texports.COLUMN = Channel.COLUMN;\n\texports.SHAPE = Channel.SHAPE;\n\texports.SIZE = Channel.SIZE;\n\texports.COLOR = Channel.COLOR;\n\texports.TEXT = Channel.TEXT;\n\texports.DETAIL = Channel.DETAIL;\n\texports.LABEL = Channel.LABEL;\n\texports.PATH = Channel.PATH;\n\texports.ORDER = Channel.ORDER;\n\texports.CHANNELS = [exports.X, exports.Y, exports.ROW, exports.COLUMN, exports.SIZE, exports.SHAPE, exports.COLOR, exports.PATH, exports.ORDER, exports.TEXT, exports.DETAIL, exports.LABEL];\n\t;\n\tfunction supportMark(channel, mark) {\n\t return !!getSupportedMark(channel)[mark];\n\t}\n\texports.supportMark = supportMark;\n\tfunction getSupportedMark(channel) {\n\t switch (channel) {\n\t case exports.X:\n\t case exports.Y:\n\t case exports.COLOR:\n\t case exports.DETAIL:\n\t case exports.ORDER:\n\t case exports.ROW:\n\t case exports.COLUMN:\n\t return {\n\t point: true, tick: true, circle: true, square: true,\n\t bar: true, line: true, area: true, text: true\n\t };\n\t case exports.SIZE:\n\t return {\n\t point: true, tick: true, circle: true, square: true,\n\t bar: true, text: true\n\t };\n\t case exports.SHAPE:\n\t return { point: true };\n\t case exports.TEXT:\n\t return { text: true };\n\t case exports.PATH:\n\t return { line: true };\n\t }\n\t return {};\n\t}\n\texports.getSupportedMark = getSupportedMark;\n\t;\n\tfunction getSupportedRole(channel) {\n\t switch (channel) {\n\t case exports.X:\n\t case exports.Y:\n\t case exports.COLOR:\n\t case exports.LABEL:\n\t return {\n\t measure: true,\n\t dimension: true\n\t };\n\t case exports.ROW:\n\t case exports.COLUMN:\n\t case exports.SHAPE:\n\t case exports.DETAIL:\n\t return {\n\t measure: false,\n\t dimension: true\n\t };\n\t case exports.SIZE:\n\t case exports.TEXT:\n\t return {\n\t measure: true,\n\t dimension: false\n\t };\n\t case exports.PATH:\n\t return {\n\t measure: false,\n\t dimension: true\n\t };\n\t }\n\t throw new Error('Invalid encoding channel' + channel);\n\t}\n\texports.getSupportedRole = getSupportedRole;\n\tfunction hasScale(channel) {\n\t return !util_1.contains([exports.DETAIL, exports.PATH, exports.TEXT, exports.LABEL, exports.ORDER], channel);\n\t}\n\texports.hasScale = hasScale;\n\t//# sourceMappingURL=channel.js.map\n\n/***/ },\n/* 165 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(166);\n\texports.keys = util_1.keys;\n\texports.extend = util_1.extend;\n\texports.duplicate = util_1.duplicate;\n\texports.isArray = util_1.isArray;\n\texports.vals = util_1.vals;\n\texports.truncate = util_1.truncate;\n\texports.toMap = util_1.toMap;\n\texports.isObject = util_1.isObject;\n\tvar generate_1 = __webpack_require__(167);\n\texports.range = generate_1.range;\n\tfunction contains(array, item) {\n\t return array.indexOf(item) > -1;\n\t}\n\texports.contains = contains;\n\tfunction without(array, items) {\n\t return array.filter(function (item) {\n\t return !contains(items, item);\n\t });\n\t}\n\texports.without = without;\n\tfunction forEach(obj, f, thisArg) {\n\t if (obj.forEach) {\n\t obj.forEach.call(thisArg, f);\n\t }\n\t else {\n\t for (var k in obj) {\n\t if (obj.hasOwnProperty(k)) {\n\t f.call(thisArg, obj[k], k, obj);\n\t }\n\t }\n\t }\n\t}\n\texports.forEach = forEach;\n\tfunction reduce(obj, f, init, thisArg) {\n\t if (obj.reduce) {\n\t return obj.reduce.call(thisArg, f, init);\n\t }\n\t else {\n\t for (var k in obj) {\n\t if (obj.hasOwnProperty(k)) {\n\t init = f.call(thisArg, init, obj[k], k, obj);\n\t }\n\t }\n\t return init;\n\t }\n\t}\n\texports.reduce = reduce;\n\tfunction map(obj, f, thisArg) {\n\t if (obj.map) {\n\t return obj.map.call(thisArg, f);\n\t }\n\t else {\n\t var output = [];\n\t for (var k in obj) {\n\t if (obj.hasOwnProperty(k)) {\n\t output.push(f.call(thisArg, obj[k], k, obj));\n\t }\n\t }\n\t return output;\n\t }\n\t}\n\texports.map = map;\n\tfunction any(arr, f) {\n\t var i = 0;\n\t for (var k = 0; k < arr.length; k++) {\n\t if (f(arr[k], k, i++)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\texports.any = any;\n\tfunction all(arr, f) {\n\t var i = 0;\n\t for (var k = 0; k < arr.length; k++) {\n\t if (!f(arr[k], k, i++)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\texports.all = all;\n\tfunction mergeDeep(dest) {\n\t var src = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t src[_i - 1] = arguments[_i];\n\t }\n\t for (var i = 0; i < src.length; i++) {\n\t dest = deepMerge_(dest, src[i]);\n\t }\n\t return dest;\n\t}\n\texports.mergeDeep = mergeDeep;\n\t;\n\tfunction deepMerge_(dest, src) {\n\t if (typeof src !== 'object' || src === null) {\n\t return dest;\n\t }\n\t for (var p in src) {\n\t if (!src.hasOwnProperty(p)) {\n\t continue;\n\t }\n\t if (src[p] === undefined) {\n\t continue;\n\t }\n\t if (typeof src[p] !== 'object' || src[p] === null) {\n\t dest[p] = src[p];\n\t }\n\t else if (typeof dest[p] !== 'object' || dest[p] === null) {\n\t dest[p] = mergeDeep(src[p].constructor === Array ? [] : {}, src[p]);\n\t }\n\t else {\n\t mergeDeep(dest[p], src[p]);\n\t }\n\t }\n\t return dest;\n\t}\n\tvar dlBin = __webpack_require__(168);\n\tfunction getbins(stats, maxbins) {\n\t return dlBin({\n\t min: stats.min,\n\t max: stats.max,\n\t maxbins: maxbins\n\t });\n\t}\n\texports.getbins = getbins;\n\tfunction error(message) {\n\t console.error('[VL Error]', message);\n\t}\n\texports.error = error;\n\t//# sourceMappingURL=util.js.map\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var u = module.exports;\n\t\n\t// utility functions\n\t\n\tvar FNAME = '__name__';\n\t\n\tu.namedfunc = function(name, f) { return (f[FNAME] = name, f); };\n\t\n\tu.name = function(f) { return f==null ? null : f[FNAME]; };\n\t\n\tu.identity = function(x) { return x; };\n\t\n\tu.true = u.namedfunc('true', function() { return true; });\n\t\n\tu.false = u.namedfunc('false', function() { return false; });\n\t\n\tu.duplicate = function(obj) {\n\t return JSON.parse(JSON.stringify(obj));\n\t};\n\t\n\tu.equal = function(a, b) {\n\t return JSON.stringify(a) === JSON.stringify(b);\n\t};\n\t\n\tu.extend = function(obj) {\n\t for (var x, name, i=1, len=arguments.length; i 1 ?\n\t function(x, v) {\n\t for (var i=0; i y) return sign[i];\n\t }\n\t return 0;\n\t };\n\t};\n\t\n\tu.cmp = function(a, b) {\n\t if (a < b) {\n\t return -1;\n\t } else if (a > b) {\n\t return 1;\n\t } else if (a >= b) {\n\t return 0;\n\t } else if (a === null) {\n\t return -1;\n\t } else if (b === null) {\n\t return 1;\n\t }\n\t return NaN;\n\t};\n\t\n\tu.numcmp = function(a, b) { return a - b; };\n\t\n\tu.stablesort = function(array, sortBy, keyFn) {\n\t var indices = array.reduce(function(idx, v, i) {\n\t return (idx[keyFn(v)] = i, idx);\n\t }, {});\n\t\n\t array.sort(function(a, b) {\n\t var sa = sortBy(a),\n\t sb = sortBy(b);\n\t return sa < sb ? -1 : sa > sb ? 1\n\t : (indices[keyFn(a)] - indices[keyFn(b)]);\n\t });\n\t\n\t return array;\n\t};\n\t\n\t\n\t// string functions\n\t\n\tu.pad = function(s, length, pos, padchar) {\n\t padchar = padchar || \" \";\n\t var d = length - s.length;\n\t if (d <= 0) return s;\n\t switch (pos) {\n\t case 'left':\n\t return strrep(d, padchar) + s;\n\t case 'middle':\n\t case 'center':\n\t return strrep(Math.floor(d/2), padchar) +\n\t s + strrep(Math.ceil(d/2), padchar);\n\t default:\n\t return s + strrep(d, padchar);\n\t }\n\t};\n\t\n\tfunction strrep(n, str) {\n\t var s = \"\", i;\n\t for (i=0; i stop) range.push(j);\n\t else while ((j = start + step * ++i) < stop) range.push(j);\n\t return range;\n\t};\n\t\n\tgen.random = {};\n\t\n\tgen.random.uniform = function(min, max) {\n\t if (max === undefined) {\n\t max = min === undefined ? 1 : min;\n\t min = 0;\n\t }\n\t var d = max - min;\n\t var f = function() {\n\t return min + d * Math.random();\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x >= min && x <= max) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t return x < min ? 0 : x > max ? 1 : (x - min) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? min + p*d : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.integer = function(a, b) {\n\t if (b === undefined) {\n\t b = a;\n\t a = 0;\n\t }\n\t var d = b - a;\n\t var f = function() {\n\t return a + Math.floor(d * Math.random());\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n\t };\n\t f.cdf = function(x) {\n\t var v = Math.floor(x);\n\t return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n\t };\n\t f.icdf = function(p) {\n\t return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.normal = function(mean, stdev) {\n\t mean = mean || 0;\n\t stdev = stdev || 1;\n\t var next;\n\t var f = function() {\n\t var x = 0, y = 0, rds, c;\n\t if (next !== undefined) {\n\t x = next;\n\t next = undefined;\n\t return x;\n\t }\n\t do {\n\t x = Math.random()*2-1;\n\t y = Math.random()*2-1;\n\t rds = x*x + y*y;\n\t } while (rds === 0 || rds > 1);\n\t c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n\t next = mean + y*c*stdev;\n\t return mean + x*c*stdev;\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t f.pdf = function(x) {\n\t var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n\t return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n\t };\n\t f.cdf = function(x) {\n\t // Approximation from West (2009)\n\t // Better Approximations to Cumulative Normal Functions\n\t var cd,\n\t z = (x - mean) / stdev,\n\t Z = Math.abs(z);\n\t if (Z > 37) {\n\t cd = 0;\n\t } else {\n\t var sum, exp = Math.exp(-Z*Z/2);\n\t if (Z < 7.07106781186547) {\n\t sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n\t sum = sum * Z + 6.37396220353165;\n\t sum = sum * Z + 33.912866078383;\n\t sum = sum * Z + 112.079291497871;\n\t sum = sum * Z + 221.213596169931;\n\t sum = sum * Z + 220.206867912376;\n\t cd = exp * sum;\n\t sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n\t sum = sum * Z + 16.064177579207;\n\t sum = sum * Z + 86.7807322029461;\n\t sum = sum * Z + 296.564248779674;\n\t sum = sum * Z + 637.333633378831;\n\t sum = sum * Z + 793.826512519948;\n\t sum = sum * Z + 440.413735824752;\n\t cd = cd / sum;\n\t } else {\n\t sum = Z + 0.65;\n\t sum = Z + 4 / sum;\n\t sum = Z + 3 / sum;\n\t sum = Z + 2 / sum;\n\t sum = Z + 1 / sum;\n\t cd = exp / sum / 2.506628274631;\n\t }\n\t }\n\t return z > 0 ? 1 - cd : cd;\n\t };\n\t f.icdf = function(p) {\n\t // Approximation of Probit function using inverse error function.\n\t if (p <= 0 || p >= 1) return NaN;\n\t var x = 2*p - 1,\n\t v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n\t a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n\t b = Math.log(1 - (x*x)) / v,\n\t s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n\t return mean + stdev * Math.SQRT2 * s;\n\t };\n\t return f;\n\t};\n\t\n\tgen.random.bootstrap = function(domain, smooth) {\n\t // Generates a bootstrap sample from a set of observations.\n\t // Smooth bootstrapping adds random zero-centered noise to the samples.\n\t var val = domain.filter(util.isValid),\n\t len = val.length,\n\t err = smooth ? gen.random.normal(0, smooth) : null;\n\t var f = function() {\n\t return val[~~(Math.random()*len)] + (err ? err() : 0);\n\t };\n\t f.samples = function(n) {\n\t return gen.zeros(n).map(f);\n\t };\n\t return f;\n\t};\n\n/***/ },\n/* 168 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar util = __webpack_require__(166),\n\t time = __webpack_require__(169),\n\t EPSILON = 1e-15;\n\t\n\tfunction bins(opt) {\n\t if (!opt) { throw Error(\"Missing binning options.\"); }\n\t\n\t // determine range\n\t var maxb = opt.maxbins || 15,\n\t base = opt.base || 10,\n\t logb = Math.log(base),\n\t div = opt.div || [5, 2],\n\t min = opt.min,\n\t max = opt.max,\n\t span = max - min,\n\t step, level, minstep, precision, v, i, eps;\n\t\n\t if (opt.step) {\n\t // if step size is explicitly given, use that\n\t step = opt.step;\n\t } else if (opt.steps) {\n\t // if provided, limit choice to acceptable step sizes\n\t step = opt.steps[Math.min(\n\t opt.steps.length - 1,\n\t bisect(opt.steps, span/maxb, 0, opt.steps.length)\n\t )];\n\t } else {\n\t // else use span to determine step size\n\t level = Math.ceil(Math.log(maxb) / logb);\n\t minstep = opt.minstep || 0;\n\t step = Math.max(\n\t minstep,\n\t Math.pow(base, Math.round(Math.log(span) / logb) - level)\n\t );\n\t\n\t // increase step size if too many bins\n\t while (Math.ceil(span/step) > maxb) { step *= base; }\n\t\n\t // decrease step size if allowed\n\t for (i=0; i= minstep && span / v <= maxb) step = v;\n\t }\n\t }\n\t\n\t // update precision, min and max\n\t v = Math.log(step);\n\t precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n\t eps = Math.pow(base, -precision - 1);\n\t min = Math.min(min, Math.floor(min / step + eps) * step);\n\t max = Math.ceil(max / step) * step;\n\t\n\t return {\n\t start: min,\n\t stop: max,\n\t step: step,\n\t unit: {precision: precision},\n\t value: value,\n\t index: index\n\t };\n\t}\n\t\n\tfunction bisect(a, x, lo, hi) {\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n\t else { hi = mid; }\n\t }\n\t return lo;\n\t}\n\t\n\tfunction value(v) {\n\t return this.step * Math.floor(v / this.step + EPSILON);\n\t}\n\t\n\tfunction index(v) {\n\t return Math.floor((v - this.start) / this.step + EPSILON);\n\t}\n\t\n\tfunction date_value(v) {\n\t return this.unit.date(value.call(this, v));\n\t}\n\t\n\tfunction date_index(v) {\n\t return index.call(this, this.unit.unit(v));\n\t}\n\t\n\tbins.date = function(opt) {\n\t if (!opt) { throw Error(\"Missing date binning options.\"); }\n\t\n\t // find time step, then bin\n\t var units = opt.utc ? time.utc : time,\n\t dmin = opt.min,\n\t dmax = opt.max,\n\t maxb = opt.maxbins || 20,\n\t minb = opt.minbins || 4,\n\t span = (+dmax) - (+dmin),\n\t unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n\t spec = bins({\n\t min: unit.min != null ? unit.min : unit.unit(dmin),\n\t max: unit.max != null ? unit.max : unit.unit(dmax),\n\t maxbins: maxb,\n\t minstep: unit.minstep,\n\t steps: unit.step\n\t });\n\t\n\t spec.unit = unit;\n\t spec.index = date_index;\n\t if (!opt.raw) spec.value = date_value;\n\t return spec;\n\t};\n\t\n\tmodule.exports = bins;\n\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3_time = __webpack_require__(170);\n\t\n\tvar tempDate = new Date(),\n\t baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n\t utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\t\n\tfunction date(d) {\n\t return (tempDate.setTime(+d), tempDate);\n\t}\n\t\n\t// create a time unit entry\n\tfunction entry(type, date, unit, step, min, max) {\n\t var e = {\n\t type: type,\n\t date: date,\n\t unit: unit\n\t };\n\t if (step) {\n\t e.step = step;\n\t } else {\n\t e.minstep = 1;\n\t }\n\t if (min != null) e.min = min;\n\t if (max != null) e.max = max;\n\t return e;\n\t}\n\t\n\tfunction create(type, unit, base, step, min, max) {\n\t return entry(type,\n\t function(d) { return unit.offset(base, d); },\n\t function(d) { return unit.count(base, d); },\n\t step, min, max);\n\t}\n\t\n\tvar locale = [\n\t create('second', d3_time.second, baseDate),\n\t create('minute', d3_time.minute, baseDate),\n\t create('hour', d3_time.hour, baseDate),\n\t create('day', d3_time.day, baseDate, [1, 7]),\n\t create('month', d3_time.month, baseDate, [1, 3, 6]),\n\t create('year', d3_time.year, baseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n\t function(d) { return date(d).getSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(1970, 0, 1, 0, d); },\n\t function(d) { return date(d).getMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(1970, 0, 1, d); },\n\t function(d) { return date(d).getHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(1970, 0, 4+d); },\n\t function(d) { return date(d).getDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(1970, 0, d); },\n\t function(d) { return date(d).getDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(1970, d % 12, 1); },\n\t function(d) { return date(d).getMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar utc = [\n\t create('second', d3_time.utcSecond, utcBaseDate),\n\t create('minute', d3_time.utcMinute, utcBaseDate),\n\t create('hour', d3_time.utcHour, utcBaseDate),\n\t create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n\t create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n\t create('year', d3_time.utcYear, utcBaseDate),\n\t\n\t // periodic units\n\t entry('seconds',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n\t function(d) { return date(d).getUTCSeconds(); },\n\t null, 0, 59\n\t ),\n\t entry('minutes',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n\t function(d) { return date(d).getUTCMinutes(); },\n\t null, 0, 59\n\t ),\n\t entry('hours',\n\t function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n\t function(d) { return date(d).getUTCHours(); },\n\t null, 0, 23\n\t ),\n\t entry('weekdays',\n\t function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n\t function(d) { return date(d).getUTCDay(); },\n\t [1], 0, 6\n\t ),\n\t entry('dates',\n\t function(d) { return new Date(Date.UTC(1970, 0, d)); },\n\t function(d) { return date(d).getUTCDate(); },\n\t [1], 1, 31\n\t ),\n\t entry('months',\n\t function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n\t function(d) { return date(d).getUTCMonth(); },\n\t [1], 0, 11\n\t )\n\t];\n\t\n\tvar STEPS = [\n\t [31536e6, 5], // 1-year\n\t [7776e6, 4], // 3-month\n\t [2592e6, 4], // 1-month\n\t [12096e5, 3], // 2-week\n\t [6048e5, 3], // 1-week\n\t [1728e5, 3], // 2-day\n\t [864e5, 3], // 1-day\n\t [432e5, 2], // 12-hour\n\t [216e5, 2], // 6-hour\n\t [108e5, 2], // 3-hour\n\t [36e5, 2], // 1-hour\n\t [18e5, 1], // 30-minute\n\t [9e5, 1], // 15-minute\n\t [3e5, 1], // 5-minute\n\t [6e4, 1], // 1-minute\n\t [3e4, 0], // 30-second\n\t [15e3, 0], // 15-second\n\t [5e3, 0], // 5-second\n\t [1e3, 0] // 1-second\n\t];\n\t\n\tfunction find(units, span, minb, maxb) {\n\t var step = STEPS[0], i, n, bins;\n\t\n\t for (i=1, n=STEPS.length; i step[0]) {\n\t bins = span / step[0];\n\t if (bins > maxb) {\n\t return units[STEPS[i-1][1]];\n\t }\n\t if (bins >= minb) {\n\t return units[step[1]];\n\t }\n\t }\n\t }\n\t return units[STEPS[n-1][1]];\n\t}\n\t\n\tfunction toUnitMap(units) {\n\t var map = {}, i, n;\n\t for (i=0, n=units.length; i 0)) return range; // also handles Invalid Date\n\t offseti(start, 1), floori(start);\n\t if (start < stop) range.push(new Date(+start));\n\t while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t while (--step >= 0) while (offseti(date, 1), !test(date));\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t };\n\t\n\t var millisecond = newInterval(function() {\n\t // noop\n\t }, function(date, step) {\n\t date.setTime(+date + step);\n\t }, function(start, end) {\n\t return end - start;\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t millisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t };\n\t\n\t var second = newInterval(function(date) {\n\t date.setMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getSeconds();\n\t });\n\t\n\t var minute = newInterval(function(date) {\n\t date.setSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t\n\t var hour = newInterval(function(date) {\n\t date.setMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t\n\t var day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t\n\t function weekday(i) {\n\t return newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n\t });\n\t }\n\t\n\t var sunday = weekday(0);\n\t var monday = weekday(1);\n\t var tuesday = weekday(2);\n\t var wednesday = weekday(3);\n\t var thursday = weekday(4);\n\t var friday = weekday(5);\n\t var saturday = weekday(6);\n\t\n\t var month = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setDate(1);\n\t }, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t }, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t\n\t var year = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t date.setMonth(0, 1);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t }, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t\n\t var utcSecond = newInterval(function(date) {\n\t date.setUTCMilliseconds(0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 1e3);\n\t }, function(start, end) {\n\t return (end - start) / 1e3;\n\t }, function(date) {\n\t return date.getUTCSeconds();\n\t });\n\t\n\t var utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 6e4);\n\t }, function(start, end) {\n\t return (end - start) / 6e4;\n\t }, function(date) {\n\t return date.getUTCMinutes();\n\t });\n\t\n\t var utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * 36e5);\n\t }, function(start, end) {\n\t return (end - start) / 36e5;\n\t }, function(date) {\n\t return date.getUTCHours();\n\t });\n\t\n\t var utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t }, function(start, end) {\n\t return (end - start) / 864e5;\n\t }, function(date) {\n\t return date.getUTCDate() - 1;\n\t });\n\t\n\t function utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / 6048e5;\n\t });\n\t }\n\t\n\t var utcSunday = utcWeekday(0);\n\t var utcMonday = utcWeekday(1);\n\t var utcTuesday = utcWeekday(2);\n\t var utcWednesday = utcWeekday(3);\n\t var utcThursday = utcWeekday(4);\n\t var utcFriday = utcWeekday(5);\n\t var utcSaturday = utcWeekday(6);\n\t\n\t var utcMonth = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCDate(1);\n\t }, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t }, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t }, function(date) {\n\t return date.getUTCMonth();\n\t });\n\t\n\t var utcYear = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t date.setUTCMonth(0, 1);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t }, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t }, function(date) {\n\t return date.getUTCFullYear();\n\t });\n\t\n\t var milliseconds = millisecond.range;\n\t var seconds = second.range;\n\t var minutes = minute.range;\n\t var hours = hour.range;\n\t var days = day.range;\n\t var sundays = sunday.range;\n\t var mondays = monday.range;\n\t var tuesdays = tuesday.range;\n\t var wednesdays = wednesday.range;\n\t var thursdays = thursday.range;\n\t var fridays = friday.range;\n\t var saturdays = saturday.range;\n\t var weeks = sunday.range;\n\t var months = month.range;\n\t var years = year.range;\n\t\n\t var utcMillisecond = millisecond;\n\t var utcMilliseconds = milliseconds;\n\t var utcSeconds = utcSecond.range;\n\t var utcMinutes = utcMinute.range;\n\t var utcHours = utcHour.range;\n\t var utcDays = utcDay.range;\n\t var utcSundays = utcSunday.range;\n\t var utcMondays = utcMonday.range;\n\t var utcTuesdays = utcTuesday.range;\n\t var utcWednesdays = utcWednesday.range;\n\t var utcThursdays = utcThursday.range;\n\t var utcFridays = utcFriday.range;\n\t var utcSaturdays = utcSaturday.range;\n\t var utcWeeks = utcSunday.range;\n\t var utcMonths = utcMonth.range;\n\t var utcYears = utcYear.range;\n\t\n\t var version = \"0.1.1\";\n\t\n\t exports.version = version;\n\t exports.milliseconds = milliseconds;\n\t exports.seconds = seconds;\n\t exports.minutes = minutes;\n\t exports.hours = hours;\n\t exports.days = days;\n\t exports.sundays = sundays;\n\t exports.mondays = mondays;\n\t exports.tuesdays = tuesdays;\n\t exports.wednesdays = wednesdays;\n\t exports.thursdays = thursdays;\n\t exports.fridays = fridays;\n\t exports.saturdays = saturdays;\n\t exports.weeks = weeks;\n\t exports.months = months;\n\t exports.years = years;\n\t exports.utcMillisecond = utcMillisecond;\n\t exports.utcMilliseconds = utcMilliseconds;\n\t exports.utcSeconds = utcSeconds;\n\t exports.utcMinutes = utcMinutes;\n\t exports.utcHours = utcHours;\n\t exports.utcDays = utcDays;\n\t exports.utcSundays = utcSundays;\n\t exports.utcMondays = utcMondays;\n\t exports.utcTuesdays = utcTuesdays;\n\t exports.utcWednesdays = utcWednesdays;\n\t exports.utcThursdays = utcThursdays;\n\t exports.utcFridays = utcFridays;\n\t exports.utcSaturdays = utcSaturdays;\n\t exports.utcWeeks = utcWeeks;\n\t exports.utcMonths = utcMonths;\n\t exports.utcYears = utcYears;\n\t exports.millisecond = millisecond;\n\t exports.second = second;\n\t exports.minute = minute;\n\t exports.hour = hour;\n\t exports.day = day;\n\t exports.sunday = sunday;\n\t exports.monday = monday;\n\t exports.tuesday = tuesday;\n\t exports.wednesday = wednesday;\n\t exports.thursday = thursday;\n\t exports.friday = friday;\n\t exports.saturday = saturday;\n\t exports.week = sunday;\n\t exports.month = month;\n\t exports.year = year;\n\t exports.utcSecond = utcSecond;\n\t exports.utcMinute = utcMinute;\n\t exports.utcHour = utcHour;\n\t exports.utcDay = utcDay;\n\t exports.utcSunday = utcSunday;\n\t exports.utcMonday = utcMonday;\n\t exports.utcTuesday = utcTuesday;\n\t exports.utcWednesday = utcWednesday;\n\t exports.utcThursday = utcThursday;\n\t exports.utcFriday = utcFriday;\n\t exports.utcSaturday = utcSaturday;\n\t exports.utcWeek = utcSunday;\n\t exports.utcMonth = utcMonth;\n\t exports.utcYear = utcYear;\n\t exports.interval = newInterval;\n\t\n\t}));\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar type_1 = __webpack_require__(172);\n\t(function (DataFormat) {\n\t DataFormat[DataFormat[\"JSON\"] = 'json'] = \"JSON\";\n\t DataFormat[DataFormat[\"CSV\"] = 'csv'] = \"CSV\";\n\t DataFormat[DataFormat[\"TSV\"] = 'tsv'] = \"TSV\";\n\t})(exports.DataFormat || (exports.DataFormat = {}));\n\tvar DataFormat = exports.DataFormat;\n\texports.SUMMARY = 'summary';\n\texports.SOURCE = 'source';\n\texports.STACKED_SCALE = 'stacked_scale';\n\texports.LAYOUT = 'layout';\n\texports.types = {\n\t 'boolean': type_1.Type.NOMINAL,\n\t 'number': type_1.Type.QUANTITATIVE,\n\t 'integer': type_1.Type.QUANTITATIVE,\n\t 'date': type_1.Type.TEMPORAL,\n\t 'string': type_1.Type.NOMINAL\n\t};\n\t//# sourceMappingURL=data.js.map\n\n/***/ },\n/* 172 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (Type) {\n\t Type[Type[\"QUANTITATIVE\"] = 'quantitative'] = \"QUANTITATIVE\";\n\t Type[Type[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n\t Type[Type[\"TEMPORAL\"] = 'temporal'] = \"TEMPORAL\";\n\t Type[Type[\"NOMINAL\"] = 'nominal'] = \"NOMINAL\";\n\t})(exports.Type || (exports.Type = {}));\n\tvar Type = exports.Type;\n\texports.QUANTITATIVE = Type.QUANTITATIVE;\n\texports.ORDINAL = Type.ORDINAL;\n\texports.TEMPORAL = Type.TEMPORAL;\n\texports.NOMINAL = Type.NOMINAL;\n\texports.SHORT_TYPE = {\n\t quantitative: 'Q',\n\t temporal: 'T',\n\t nominal: 'N',\n\t ordinal: 'O'\n\t};\n\texports.TYPE_FROM_SHORT_TYPE = {\n\t Q: exports.QUANTITATIVE,\n\t T: exports.TEMPORAL,\n\t O: exports.ORDINAL,\n\t N: exports.NOMINAL\n\t};\n\tfunction getFullName(type) {\n\t var typeString = type;\n\t return exports.TYPE_FROM_SHORT_TYPE[typeString.toUpperCase()] ||\n\t typeString.toLowerCase();\n\t}\n\texports.getFullName = getFullName;\n\t//# sourceMappingURL=type.js.map\n\n/***/ },\n/* 173 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar util_1 = __webpack_require__(165);\n\tfunction countRetinal(encoding) {\n\t var count = 0;\n\t if (encoding.color) {\n\t count++;\n\t }\n\t if (encoding.size) {\n\t count++;\n\t }\n\t if (encoding.shape) {\n\t count++;\n\t }\n\t return count;\n\t}\n\texports.countRetinal = countRetinal;\n\tfunction channels(encoding) {\n\t return channel_1.CHANNELS.filter(function (channel) {\n\t return has(encoding, channel);\n\t });\n\t}\n\texports.channels = channels;\n\tfunction has(encoding, channel) {\n\t var channelEncoding = encoding && encoding[channel];\n\t return channelEncoding && (channelEncoding.field !== undefined ||\n\t (util_1.isArray(channelEncoding) && channelEncoding.length > 0));\n\t}\n\texports.has = has;\n\tfunction isAggregate(encoding) {\n\t return util_1.any(channel_1.CHANNELS, function (channel) {\n\t if (has(encoding, channel) && encoding[channel].aggregate) {\n\t return true;\n\t }\n\t return false;\n\t });\n\t}\n\texports.isAggregate = isAggregate;\n\tfunction fieldDefs(encoding) {\n\t var arr = [];\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t arr.push(fieldDef);\n\t });\n\t }\n\t else {\n\t arr.push(encoding[channel]);\n\t }\n\t }\n\t });\n\t return arr;\n\t}\n\texports.fieldDefs = fieldDefs;\n\t;\n\tfunction forEach(encoding, f, thisArg) {\n\t var i = 0;\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t f.call(thisArg, fieldDef, channel, i++);\n\t });\n\t }\n\t else {\n\t f.call(thisArg, encoding[channel], channel, i++);\n\t }\n\t }\n\t });\n\t}\n\texports.forEach = forEach;\n\tfunction map(encoding, f, thisArg) {\n\t var arr = [];\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t arr.push(f.call(thisArg, fieldDef, channel, encoding));\n\t });\n\t }\n\t else {\n\t arr.push(f.call(thisArg, encoding[channel], channel, encoding));\n\t }\n\t }\n\t });\n\t return arr;\n\t}\n\texports.map = map;\n\tfunction reduce(encoding, f, init, thisArg) {\n\t var r = init;\n\t channel_1.CHANNELS.forEach(function (channel) {\n\t if (has(encoding, channel)) {\n\t if (util_1.isArray(encoding[channel])) {\n\t encoding[channel].forEach(function (fieldDef) {\n\t r = f.call(thisArg, r, fieldDef, channel, encoding);\n\t });\n\t }\n\t else {\n\t r = f.call(thisArg, r, encoding[channel], channel, encoding);\n\t }\n\t }\n\t });\n\t return r;\n\t}\n\texports.reduce = reduce;\n\t//# sourceMappingURL=encoding.js.map\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar timeunit_1 = __webpack_require__(176);\n\tvar type_1 = __webpack_require__(172);\n\tvar util_1 = __webpack_require__(165);\n\texports.aggregate = {\n\t type: 'string',\n\t enum: aggregate_1.AGGREGATE_OPS,\n\t supportedEnums: {\n\t quantitative: aggregate_1.AGGREGATE_OPS,\n\t ordinal: ['median', 'min', 'max'],\n\t nominal: [],\n\t temporal: ['mean', 'median', 'min', 'max'],\n\t '': ['count']\n\t },\n\t supportedTypes: util_1.toMap([type_1.QUANTITATIVE, type_1.NOMINAL, type_1.ORDINAL, type_1.TEMPORAL, ''])\n\t};\n\tfunction field(fieldDef, opt) {\n\t if (opt === void 0) { opt = {}; }\n\t var prefix = (opt.datum ? 'datum.' : '') + (opt.prefn || '');\n\t var suffix = opt.suffix || '';\n\t var field = fieldDef.field;\n\t if (isCount(fieldDef)) {\n\t return prefix + 'count' + suffix;\n\t }\n\t else if (opt.fn) {\n\t return prefix + opt.fn + '_' + field + suffix;\n\t }\n\t else if (!opt.nofn && fieldDef.bin) {\n\t return prefix + 'bin_' + field + (opt.binSuffix || suffix || '_start');\n\t }\n\t else if (!opt.nofn && !opt.noAggregate && fieldDef.aggregate) {\n\t return prefix + fieldDef.aggregate + '_' + field + suffix;\n\t }\n\t else if (!opt.nofn && fieldDef.timeUnit) {\n\t return prefix + fieldDef.timeUnit + '_' + field + suffix;\n\t }\n\t else {\n\t return prefix + field;\n\t }\n\t}\n\texports.field = field;\n\tfunction _isFieldDimension(fieldDef) {\n\t return util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) || !!fieldDef.bin ||\n\t (fieldDef.type === type_1.TEMPORAL && !!fieldDef.timeUnit);\n\t}\n\tfunction isDimension(fieldDef) {\n\t return fieldDef && fieldDef.field && _isFieldDimension(fieldDef);\n\t}\n\texports.isDimension = isDimension;\n\tfunction isMeasure(fieldDef) {\n\t return fieldDef && fieldDef.field && !_isFieldDimension(fieldDef);\n\t}\n\texports.isMeasure = isMeasure;\n\texports.COUNT_DISPLAYNAME = 'Number of Records';\n\tfunction count() {\n\t return { field: '*', aggregate: aggregate_1.AggregateOp.COUNT, type: type_1.QUANTITATIVE, displayName: exports.COUNT_DISPLAYNAME };\n\t}\n\texports.count = count;\n\tfunction isCount(fieldDef) {\n\t return fieldDef.aggregate === aggregate_1.AggregateOp.COUNT;\n\t}\n\texports.isCount = isCount;\n\tfunction cardinality(fieldDef, stats, filterNull) {\n\t if (filterNull === void 0) { filterNull = {}; }\n\t var stat = stats[fieldDef.field], type = fieldDef.type;\n\t if (fieldDef.bin) {\n\t var bin_1 = fieldDef.bin;\n\t var maxbins = (typeof bin_1 === 'boolean') ? undefined : bin_1.maxbins;\n\t if (maxbins === undefined) {\n\t maxbins = 10;\n\t }\n\t var bins = util_1.getbins(stat, maxbins);\n\t return (bins.stop - bins.start) / bins.step;\n\t }\n\t if (type === type_1.TEMPORAL) {\n\t var timeUnit = fieldDef.timeUnit;\n\t switch (timeUnit) {\n\t case timeunit_1.TimeUnit.SECONDS: return 60;\n\t case timeunit_1.TimeUnit.MINUTES: return 60;\n\t case timeunit_1.TimeUnit.HOURS: return 24;\n\t case timeunit_1.TimeUnit.DAY: return 7;\n\t case timeunit_1.TimeUnit.DATE: return 31;\n\t case timeunit_1.TimeUnit.MONTH: return 12;\n\t case timeunit_1.TimeUnit.YEAR:\n\t var yearstat = stats['year_' + fieldDef.field];\n\t if (!yearstat) {\n\t return null;\n\t }\n\t return yearstat.distinct -\n\t (stat.missing > 0 && filterNull[type] ? 1 : 0);\n\t }\n\t }\n\t if (fieldDef.aggregate) {\n\t return 1;\n\t }\n\t return stat.distinct -\n\t (stat.missing > 0 && filterNull[type] ? 1 : 0);\n\t}\n\texports.cardinality = cardinality;\n\tfunction title(fieldDef) {\n\t if (isCount(fieldDef)) {\n\t return exports.COUNT_DISPLAYNAME;\n\t }\n\t var fn = fieldDef.aggregate || fieldDef.timeUnit || (fieldDef.bin && 'bin');\n\t if (fn) {\n\t return fn.toString().toUpperCase() + '(' + fieldDef.field + ')';\n\t }\n\t else {\n\t return fieldDef.field;\n\t }\n\t}\n\texports.title = title;\n\t//# sourceMappingURL=fielddef.js.map\n\n/***/ },\n/* 175 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (AggregateOp) {\n\t AggregateOp[AggregateOp[\"VALUES\"] = 'values'] = \"VALUES\";\n\t AggregateOp[AggregateOp[\"COUNT\"] = 'count'] = \"COUNT\";\n\t AggregateOp[AggregateOp[\"VALID\"] = 'valid'] = \"VALID\";\n\t AggregateOp[AggregateOp[\"MISSING\"] = 'missing'] = \"MISSING\";\n\t AggregateOp[AggregateOp[\"DISTINCT\"] = 'distinct'] = \"DISTINCT\";\n\t AggregateOp[AggregateOp[\"SUM\"] = 'sum'] = \"SUM\";\n\t AggregateOp[AggregateOp[\"MEAN\"] = 'mean'] = \"MEAN\";\n\t AggregateOp[AggregateOp[\"AVERAGE\"] = 'average'] = \"AVERAGE\";\n\t AggregateOp[AggregateOp[\"VARIANCE\"] = 'variance'] = \"VARIANCE\";\n\t AggregateOp[AggregateOp[\"VARIANCEP\"] = 'variancep'] = \"VARIANCEP\";\n\t AggregateOp[AggregateOp[\"STDEV\"] = 'stdev'] = \"STDEV\";\n\t AggregateOp[AggregateOp[\"STDEVP\"] = 'stdevp'] = \"STDEVP\";\n\t AggregateOp[AggregateOp[\"MEDIAN\"] = 'median'] = \"MEDIAN\";\n\t AggregateOp[AggregateOp[\"Q1\"] = 'q1'] = \"Q1\";\n\t AggregateOp[AggregateOp[\"Q3\"] = 'q3'] = \"Q3\";\n\t AggregateOp[AggregateOp[\"MODESKEW\"] = 'modeskew'] = \"MODESKEW\";\n\t AggregateOp[AggregateOp[\"MIN\"] = 'min'] = \"MIN\";\n\t AggregateOp[AggregateOp[\"MAX\"] = 'max'] = \"MAX\";\n\t AggregateOp[AggregateOp[\"ARGMIN\"] = 'argmin'] = \"ARGMIN\";\n\t AggregateOp[AggregateOp[\"ARGMAX\"] = 'argmax'] = \"ARGMAX\";\n\t})(exports.AggregateOp || (exports.AggregateOp = {}));\n\tvar AggregateOp = exports.AggregateOp;\n\texports.AGGREGATE_OPS = [\n\t AggregateOp.VALUES,\n\t AggregateOp.COUNT,\n\t AggregateOp.VALID,\n\t AggregateOp.MISSING,\n\t AggregateOp.DISTINCT,\n\t AggregateOp.SUM,\n\t AggregateOp.MEAN,\n\t AggregateOp.AVERAGE,\n\t AggregateOp.VARIANCE,\n\t AggregateOp.VARIANCEP,\n\t AggregateOp.STDEV,\n\t AggregateOp.STDEVP,\n\t AggregateOp.MEDIAN,\n\t AggregateOp.Q1,\n\t AggregateOp.Q3,\n\t AggregateOp.MODESKEW,\n\t AggregateOp.MIN,\n\t AggregateOp.MAX,\n\t AggregateOp.ARGMIN,\n\t AggregateOp.ARGMAX,\n\t];\n\texports.SHARED_DOMAIN_OPS = [\n\t AggregateOp.MEAN,\n\t AggregateOp.AVERAGE,\n\t AggregateOp.STDEV,\n\t AggregateOp.STDEVP,\n\t AggregateOp.MEDIAN,\n\t AggregateOp.Q1,\n\t AggregateOp.Q3,\n\t AggregateOp.MIN,\n\t AggregateOp.MAX,\n\t];\n\t//# sourceMappingURL=aggregate.js.map\n\n/***/ },\n/* 176 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (TimeUnit) {\n\t TimeUnit[TimeUnit[\"YEAR\"] = 'year'] = \"YEAR\";\n\t TimeUnit[TimeUnit[\"MONTH\"] = 'month'] = \"MONTH\";\n\t TimeUnit[TimeUnit[\"DAY\"] = 'day'] = \"DAY\";\n\t TimeUnit[TimeUnit[\"DATE\"] = 'date'] = \"DATE\";\n\t TimeUnit[TimeUnit[\"HOURS\"] = 'hours'] = \"HOURS\";\n\t TimeUnit[TimeUnit[\"MINUTES\"] = 'minutes'] = \"MINUTES\";\n\t TimeUnit[TimeUnit[\"SECONDS\"] = 'seconds'] = \"SECONDS\";\n\t TimeUnit[TimeUnit[\"MILLISECONDS\"] = 'milliseconds'] = \"MILLISECONDS\";\n\t TimeUnit[TimeUnit[\"YEARMONTH\"] = 'yearmonth'] = \"YEARMONTH\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAY\"] = 'yearmonthday'] = \"YEARMONTHDAY\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDATE\"] = 'yearmonthdate'] = \"YEARMONTHDATE\";\n\t TimeUnit[TimeUnit[\"YEARDAY\"] = 'yearday'] = \"YEARDAY\";\n\t TimeUnit[TimeUnit[\"YEARDATE\"] = 'yeardate'] = \"YEARDATE\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAYHOURS\"] = 'yearmonthdayhours'] = \"YEARMONTHDAYHOURS\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTES\"] = 'yearmonthdayhoursminutes'] = \"YEARMONTHDAYHOURSMINUTES\";\n\t TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTESSECONDS\"] = 'yearmonthdayhoursminutesseconds'] = \"YEARMONTHDAYHOURSMINUTESSECONDS\";\n\t TimeUnit[TimeUnit[\"HOURSMINUTES\"] = 'hoursminutes'] = \"HOURSMINUTES\";\n\t TimeUnit[TimeUnit[\"HOURSMINUTESSECONDS\"] = 'hoursminutesseconds'] = \"HOURSMINUTESSECONDS\";\n\t TimeUnit[TimeUnit[\"MINUTESSECONDS\"] = 'minutesseconds'] = \"MINUTESSECONDS\";\n\t TimeUnit[TimeUnit[\"SECONDSMILLISECONDS\"] = 'secondsmilliseconds'] = \"SECONDSMILLISECONDS\";\n\t})(exports.TimeUnit || (exports.TimeUnit = {}));\n\tvar TimeUnit = exports.TimeUnit;\n\texports.TIMEUNITS = [\n\t TimeUnit.YEAR,\n\t TimeUnit.MONTH,\n\t TimeUnit.DAY,\n\t TimeUnit.DATE,\n\t TimeUnit.HOURS,\n\t TimeUnit.MINUTES,\n\t TimeUnit.SECONDS,\n\t TimeUnit.MILLISECONDS,\n\t TimeUnit.YEARMONTH,\n\t TimeUnit.YEARMONTHDAY,\n\t TimeUnit.YEARMONTHDATE,\n\t TimeUnit.YEARDAY,\n\t TimeUnit.YEARDATE,\n\t TimeUnit.YEARMONTHDAYHOURS,\n\t TimeUnit.YEARMONTHDAYHOURSMINUTES,\n\t TimeUnit.YEARMONTHDAYHOURSMINUTESSECONDS,\n\t TimeUnit.HOURSMINUTES,\n\t TimeUnit.HOURSMINUTESSECONDS,\n\t TimeUnit.MINUTESSECONDS,\n\t TimeUnit.SECONDSMILLISECONDS,\n\t];\n\t//# sourceMappingURL=timeunit.js.map\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Model_1 = __webpack_require__(178);\n\tvar axis_1 = __webpack_require__(190);\n\tvar data_1 = __webpack_require__(191);\n\tvar layout_1 = __webpack_require__(192);\n\tvar facet_1 = __webpack_require__(193);\n\tvar legend_1 = __webpack_require__(194);\n\tvar mark_1 = __webpack_require__(195);\n\tvar scale_1 = __webpack_require__(189);\n\tvar common_1 = __webpack_require__(186);\n\tvar util_1 = __webpack_require__(165);\n\tvar data_2 = __webpack_require__(171);\n\tvar channel_1 = __webpack_require__(164);\n\tvar Model_2 = __webpack_require__(178);\n\texports.Model = Model_2.Model;\n\tfunction compile(spec) {\n\t var model = new Model_1.Model(spec);\n\t var config = model.config();\n\t var output = util_1.extend(spec.name ? { name: spec.name } : {}, {\n\t width: 1,\n\t height: 1,\n\t padding: 'auto'\n\t }, config.viewport ? { viewport: config.viewport } : {}, config.background ? { background: config.background } : {}, {\n\t data: data_1.compileData(model).concat([layout_1.compileLayoutData(model)]),\n\t marks: [compileRootGroup(model)]\n\t });\n\t return {\n\t spec: output\n\t };\n\t}\n\texports.compile = compile;\n\tfunction compileRootGroup(model) {\n\t var spec = model.spec();\n\t var rootGroup = util_1.extend({\n\t name: spec.name ? spec.name + '-root' : 'root',\n\t type: 'group',\n\t }, spec.description ? { description: spec.description } : {}, {\n\t from: { data: data_2.LAYOUT },\n\t properties: {\n\t update: {\n\t width: { field: 'width' },\n\t height: { field: 'height' }\n\t }\n\t }\n\t });\n\t var marks = mark_1.compileMark(model);\n\t if (model.has(channel_1.ROW) || model.has(channel_1.COLUMN)) {\n\t util_1.extend(rootGroup, facet_1.facetMixins(model, marks));\n\t }\n\t else {\n\t common_1.applyConfig(rootGroup.properties.update, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n\t rootGroup.marks = marks;\n\t rootGroup.scales = scale_1.compileScales(model);\n\t var axes = (model.has(channel_1.X) && model.axis(channel_1.X) ? [axis_1.compileAxis(channel_1.X, model)] : [])\n\t .concat(model.has(channel_1.Y) && model.axis(channel_1.Y) ? [axis_1.compileAxis(channel_1.Y, model)] : []);\n\t if (axes.length > 0) {\n\t rootGroup.axes = axes;\n\t }\n\t }\n\t var legends = legend_1.compileLegends(model);\n\t if (legends.length > 0) {\n\t rootGroup.legends = legends;\n\t }\n\t return rootGroup;\n\t}\n\texports.compileRootGroup = compileRootGroup;\n\t//# sourceMappingURL=compile.js.map\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar config_1 = __webpack_require__(179);\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar mark_1 = __webpack_require__(183);\n\tvar type_1 = __webpack_require__(172);\n\tvar util_1 = __webpack_require__(165);\n\tvar config_2 = __webpack_require__(184);\n\tvar stack_1 = __webpack_require__(185);\n\tvar scale_1 = __webpack_require__(189);\n\tvar scale_2 = __webpack_require__(180);\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar channel_2 = __webpack_require__(164);\n\t;\n\tvar Model = (function () {\n\t function Model(spec) {\n\t var model = this;\n\t this._spec = spec;\n\t var mark = this._spec.mark;\n\t var encoding = this._spec.encoding = this._spec.encoding || {};\n\t var config = this._config = util_1.mergeDeep(util_1.duplicate(config_1.defaultConfig), spec.config);\n\t vlEncoding.forEach(this._spec.encoding, function (fieldDef, channel) {\n\t if (!channel_1.supportMark(channel, this._spec.mark)) {\n\t console.warn(channel, 'dropped as it is incompatible with', this._spec.mark);\n\t delete this._spec.encoding[channel].field;\n\t }\n\t if (fieldDef.type) {\n\t fieldDef.type = type_1.getFullName(fieldDef.type);\n\t }\n\t if ((channel === channel_1.PATH || channel === channel_1.ORDER) && !fieldDef.aggregate && fieldDef.type === type_1.QUANTITATIVE) {\n\t fieldDef.aggregate = aggregate_1.AggregateOp.MIN;\n\t }\n\t }, this);\n\t var scale = this._scale = [channel_1.X, channel_1.Y, channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE, channel_1.ROW, channel_1.COLUMN].reduce(function (_scale, channel) {\n\t if (vlEncoding.has(encoding, channel)) {\n\t var channelScale = encoding[channel].scale || {};\n\t var channelDef = encoding[channel];\n\t var _scaleType = scale_1.scaleType(channelScale, channelDef, channel, mark);\n\t if (util_1.contains([channel_1.ROW, channel_1.COLUMN], channel)) {\n\t _scale[channel] = util_1.extend({\n\t type: _scaleType,\n\t round: config.facet.scale.round,\n\t padding: (channel === channel_1.ROW && model.has(channel_1.Y)) || (channel === channel_1.COLUMN && model.has(channel_1.X)) ?\n\t config.facet.scale.padding : 0\n\t }, channelScale);\n\t }\n\t else {\n\t _scale[channel] = util_1.extend({\n\t type: _scaleType,\n\t round: config.scale.round,\n\t padding: config.scale.padding,\n\t includeRawDomain: config.scale.includeRawDomain,\n\t bandSize: channel === channel_1.X && _scaleType === scale_2.ScaleType.ORDINAL && mark === mark_1.TEXT ?\n\t config.scale.textBandWidth : config.scale.bandSize\n\t }, channelScale);\n\t }\n\t }\n\t return _scale;\n\t }, {});\n\t this._axis = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (_axis, channel) {\n\t if (vlEncoding.has(encoding, channel)) {\n\t var channelAxis = encoding[channel].axis;\n\t if (channelAxis !== false) {\n\t _axis[channel] = util_1.extend({}, channel === channel_1.X || channel === channel_1.Y ? config.axis : config.facet.axis, channelAxis === true ? {} : channelAxis || {});\n\t }\n\t }\n\t return _axis;\n\t }, {});\n\t this._legend = [channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE].reduce(function (_legend, channel) {\n\t if (vlEncoding.has(encoding, channel)) {\n\t var channelLegend = encoding[channel].legend;\n\t if (channelLegend !== false) {\n\t _legend[channel] = util_1.extend({}, config.legend, channelLegend === true ? {} : channelLegend || {});\n\t }\n\t }\n\t return _legend;\n\t }, {});\n\t this._stack = stack_1.compileStackProperties(mark, encoding, scale, config);\n\t this._config.mark = config_2.compileMarkConfig(mark, encoding, config, this._stack);\n\t }\n\t Model.prototype.stack = function () {\n\t return this._stack;\n\t };\n\t Model.prototype.toSpec = function (excludeConfig, excludeData) {\n\t var encoding = util_1.duplicate(this._spec.encoding);\n\t var spec;\n\t spec = {\n\t mark: this._spec.mark,\n\t encoding: encoding\n\t };\n\t if (!excludeConfig) {\n\t spec.config = util_1.duplicate(this._spec.config);\n\t }\n\t if (!excludeData) {\n\t spec.data = util_1.duplicate(this._spec.data);\n\t }\n\t return spec;\n\t };\n\t Model.prototype.cellWidth = function () {\n\t return (this.isFacet() ? this.config().facet.cell.width : null) ||\n\t this.config().cell.width;\n\t };\n\t Model.prototype.cellHeight = function () {\n\t return (this.isFacet() ? this.config().facet.cell.height : null) ||\n\t this.config().cell.height;\n\t };\n\t Model.prototype.mark = function () {\n\t return this._spec.mark;\n\t };\n\t Model.prototype.spec = function () {\n\t return this._spec;\n\t };\n\t Model.prototype.has = function (channel) {\n\t return vlEncoding.has(this._spec.encoding, channel);\n\t };\n\t Model.prototype.encoding = function () {\n\t return this._spec.encoding;\n\t };\n\t Model.prototype.fieldDef = function (channel) {\n\t return this._spec.encoding[channel] || {};\n\t };\n\t Model.prototype.field = function (channel, opt) {\n\t if (opt === void 0) { opt = {}; }\n\t var fieldDef = this.fieldDef(channel);\n\t var scale = this.scale(channel);\n\t if (fieldDef.bin) {\n\t opt = util_1.extend({\n\t binSuffix: scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL ? '_range' : '_start'\n\t }, opt);\n\t }\n\t return fielddef_1.field(fieldDef, opt);\n\t };\n\t Model.prototype.channelWithScales = function () {\n\t var model = this;\n\t return channel_2.CHANNELS.filter(function (channel) {\n\t return !!model.scale(channel);\n\t });\n\t };\n\t Model.prototype.reduce = function (f, init, t) {\n\t return vlEncoding.reduce(this._spec.encoding, f, init, t);\n\t };\n\t Model.prototype.forEach = function (f, t) {\n\t vlEncoding.forEach(this._spec.encoding, f, t);\n\t };\n\t Model.prototype.isOrdinalScale = function (channel) {\n\t var fieldDef = this.fieldDef(channel);\n\t var scale = this.scale(channel);\n\t return this.has(channel) && scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL;\n\t };\n\t Model.prototype.isFacet = function () {\n\t return this.has(channel_1.ROW) || this.has(channel_1.COLUMN);\n\t };\n\t Model.prototype.dataTable = function () {\n\t return vlEncoding.isAggregate(this._spec.encoding) ? data_1.SUMMARY : data_1.SOURCE;\n\t };\n\t Model.prototype.data = function () {\n\t return this._spec.data;\n\t };\n\t Model.prototype.transform = function () {\n\t return this._spec.transform || {};\n\t };\n\t Model.prototype.config = function () {\n\t return this._config;\n\t };\n\t Model.prototype.sort = function (channel) {\n\t return this._spec.encoding[channel].sort;\n\t };\n\t Model.prototype.scale = function (channel) {\n\t return this._scale[channel];\n\t };\n\t Model.prototype.axis = function (channel) {\n\t return this._axis[channel];\n\t };\n\t Model.prototype.legend = function (channel) {\n\t return this._legend[channel];\n\t };\n\t Model.prototype.scaleName = function (channel) {\n\t var name = this.spec().name;\n\t return (name ? name + '-' : '') + channel;\n\t };\n\t return Model;\n\t}());\n\texports.Model = Model;\n\t//# sourceMappingURL=Model.js.map\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar scale_1 = __webpack_require__(180);\n\tvar axis_1 = __webpack_require__(181);\n\tvar legend_1 = __webpack_require__(182);\n\texports.defaultCellConfig = {\n\t width: 200,\n\t height: 200\n\t};\n\texports.defaultFacetCellConfig = {\n\t stroke: '#ccc',\n\t strokeWidth: 1\n\t};\n\tvar defaultFacetGridConfig = {\n\t color: '#000000',\n\t opacity: 0.4,\n\t offset: 0\n\t};\n\texports.defaultFacetConfig = {\n\t scale: scale_1.defaultFacetScaleConfig,\n\t axis: axis_1.defaultFacetAxisConfig,\n\t grid: defaultFacetGridConfig,\n\t cell: exports.defaultFacetCellConfig\n\t};\n\t(function (FontWeight) {\n\t FontWeight[FontWeight[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n\t FontWeight[FontWeight[\"BOLD\"] = 'bold'] = \"BOLD\";\n\t})(exports.FontWeight || (exports.FontWeight = {}));\n\tvar FontWeight = exports.FontWeight;\n\t(function (Shape) {\n\t Shape[Shape[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n\t Shape[Shape[\"SQUARE\"] = 'square'] = \"SQUARE\";\n\t Shape[Shape[\"CROSS\"] = 'cross'] = \"CROSS\";\n\t Shape[Shape[\"DIAMOND\"] = 'diamond'] = \"DIAMOND\";\n\t Shape[Shape[\"TRIANGLEUP\"] = 'triangle-up'] = \"TRIANGLEUP\";\n\t Shape[Shape[\"TRIANGLEDOWN\"] = 'triangle-down'] = \"TRIANGLEDOWN\";\n\t})(exports.Shape || (exports.Shape = {}));\n\tvar Shape = exports.Shape;\n\t(function (HorizontalAlign) {\n\t HorizontalAlign[HorizontalAlign[\"LEFT\"] = 'left'] = \"LEFT\";\n\t HorizontalAlign[HorizontalAlign[\"RIGHT\"] = 'right'] = \"RIGHT\";\n\t HorizontalAlign[HorizontalAlign[\"CENTER\"] = 'center'] = \"CENTER\";\n\t})(exports.HorizontalAlign || (exports.HorizontalAlign = {}));\n\tvar HorizontalAlign = exports.HorizontalAlign;\n\t(function (VerticalAlign) {\n\t VerticalAlign[VerticalAlign[\"TOP\"] = 'top'] = \"TOP\";\n\t VerticalAlign[VerticalAlign[\"MIDDLE\"] = 'middle'] = \"MIDDLE\";\n\t VerticalAlign[VerticalAlign[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n\t})(exports.VerticalAlign || (exports.VerticalAlign = {}));\n\tvar VerticalAlign = exports.VerticalAlign;\n\t(function (FontStyle) {\n\t FontStyle[FontStyle[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n\t FontStyle[FontStyle[\"ITALIC\"] = 'italic'] = \"ITALIC\";\n\t})(exports.FontStyle || (exports.FontStyle = {}));\n\tvar FontStyle = exports.FontStyle;\n\t(function (StackOffset) {\n\t StackOffset[StackOffset[\"ZERO\"] = 'zero'] = \"ZERO\";\n\t StackOffset[StackOffset[\"CENTER\"] = 'center'] = \"CENTER\";\n\t StackOffset[StackOffset[\"NORMALIZE\"] = 'normalize'] = \"NORMALIZE\";\n\t StackOffset[StackOffset[\"NONE\"] = 'none'] = \"NONE\";\n\t})(exports.StackOffset || (exports.StackOffset = {}));\n\tvar StackOffset = exports.StackOffset;\n\texports.defaultMarkConfig = {\n\t color: '#4682b4',\n\t strokeWidth: 2,\n\t size: 30,\n\t barThinSize: 2,\n\t tickThickness: 1,\n\t fontSize: 10,\n\t baseline: VerticalAlign.MIDDLE,\n\t text: 'Abc',\n\t shortTimeLabels: false,\n\t applyColorToBackground: false\n\t};\n\texports.defaultConfig = {\n\t numberFormat: 's',\n\t timeFormat: '%Y-%m-%d',\n\t cell: exports.defaultCellConfig,\n\t mark: exports.defaultMarkConfig,\n\t scale: scale_1.defaultScaleConfig,\n\t axis: axis_1.defaultAxisConfig,\n\t legend: legend_1.defaultLegendConfig,\n\t facet: exports.defaultFacetConfig,\n\t};\n\t//# sourceMappingURL=config.js.map\n\n/***/ },\n/* 180 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (ScaleType) {\n\t ScaleType[ScaleType[\"LINEAR\"] = 'linear'] = \"LINEAR\";\n\t ScaleType[ScaleType[\"LOG\"] = 'log'] = \"LOG\";\n\t ScaleType[ScaleType[\"POW\"] = 'pow'] = \"POW\";\n\t ScaleType[ScaleType[\"SQRT\"] = 'sqrt'] = \"SQRT\";\n\t ScaleType[ScaleType[\"QUANTILE\"] = 'quantile'] = \"QUANTILE\";\n\t ScaleType[ScaleType[\"QUANTIZE\"] = 'quantize'] = \"QUANTIZE\";\n\t ScaleType[ScaleType[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n\t ScaleType[ScaleType[\"TIME\"] = 'time'] = \"TIME\";\n\t ScaleType[ScaleType[\"UTC\"] = 'utc'] = \"UTC\";\n\t})(exports.ScaleType || (exports.ScaleType = {}));\n\tvar ScaleType = exports.ScaleType;\n\t(function (NiceTime) {\n\t NiceTime[NiceTime[\"SECOND\"] = 'second'] = \"SECOND\";\n\t NiceTime[NiceTime[\"MINUTE\"] = 'minute'] = \"MINUTE\";\n\t NiceTime[NiceTime[\"HOUR\"] = 'hour'] = \"HOUR\";\n\t NiceTime[NiceTime[\"DAY\"] = 'day'] = \"DAY\";\n\t NiceTime[NiceTime[\"WEEK\"] = 'week'] = \"WEEK\";\n\t NiceTime[NiceTime[\"MONTH\"] = 'month'] = \"MONTH\";\n\t NiceTime[NiceTime[\"YEAR\"] = 'year'] = \"YEAR\";\n\t})(exports.NiceTime || (exports.NiceTime = {}));\n\tvar NiceTime = exports.NiceTime;\n\texports.defaultScaleConfig = {\n\t round: true,\n\t textBandWidth: 90,\n\t bandSize: 21,\n\t padding: 1,\n\t includeRawDomain: false,\n\t nominalColorRange: 'category10',\n\t sequentialColorRange: ['#AFC6A3', '#09622A'],\n\t shapeRange: 'shapes',\n\t fontSizeRange: [8, 40]\n\t};\n\texports.defaultFacetScaleConfig = {\n\t round: true,\n\t padding: 16\n\t};\n\t//# sourceMappingURL=scale.js.map\n\n/***/ },\n/* 181 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (AxisOrient) {\n\t AxisOrient[AxisOrient[\"TOP\"] = 'top'] = \"TOP\";\n\t AxisOrient[AxisOrient[\"RIGHT\"] = 'right'] = \"RIGHT\";\n\t AxisOrient[AxisOrient[\"LEFT\"] = 'left'] = \"LEFT\";\n\t AxisOrient[AxisOrient[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n\t})(exports.AxisOrient || (exports.AxisOrient = {}));\n\tvar AxisOrient = exports.AxisOrient;\n\texports.defaultAxisConfig = {\n\t offset: undefined,\n\t grid: undefined,\n\t labels: true,\n\t labelMaxLength: 25,\n\t tickSize: undefined,\n\t characterWidth: 6\n\t};\n\texports.defaultFacetAxisConfig = {\n\t axisWidth: 0,\n\t labels: true,\n\t grid: false,\n\t tickSize: 0\n\t};\n\t//# sourceMappingURL=axis.js.map\n\n/***/ },\n/* 182 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\texports.defaultLegendConfig = {\n\t orient: undefined,\n\t shortTimeLabels: false\n\t};\n\t//# sourceMappingURL=legend.js.map\n\n/***/ },\n/* 183 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (Mark) {\n\t Mark[Mark[\"AREA\"] = 'area'] = \"AREA\";\n\t Mark[Mark[\"BAR\"] = 'bar'] = \"BAR\";\n\t Mark[Mark[\"LINE\"] = 'line'] = \"LINE\";\n\t Mark[Mark[\"POINT\"] = 'point'] = \"POINT\";\n\t Mark[Mark[\"TEXT\"] = 'text'] = \"TEXT\";\n\t Mark[Mark[\"TICK\"] = 'tick'] = \"TICK\";\n\t Mark[Mark[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n\t Mark[Mark[\"SQUARE\"] = 'square'] = \"SQUARE\";\n\t})(exports.Mark || (exports.Mark = {}));\n\tvar Mark = exports.Mark;\n\texports.AREA = Mark.AREA;\n\texports.BAR = Mark.BAR;\n\texports.LINE = Mark.LINE;\n\texports.POINT = Mark.POINT;\n\texports.TEXT = Mark.TEXT;\n\texports.TICK = Mark.TICK;\n\texports.CIRCLE = Mark.CIRCLE;\n\texports.SQUARE = Mark.SQUARE;\n\t//# sourceMappingURL=mark.js.map\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar encoding_1 = __webpack_require__(173);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar mark_1 = __webpack_require__(183);\n\tvar util_1 = __webpack_require__(165);\n\tfunction compileMarkConfig(mark, encoding, config, stack) {\n\t return util_1.extend(['filled', 'opacity', 'orient', 'align'].reduce(function (cfg, property) {\n\t var value = config.mark[property];\n\t switch (property) {\n\t case 'filled':\n\t if (value === undefined) {\n\t cfg[property] = mark !== mark_1.POINT && mark !== mark_1.LINE;\n\t }\n\t break;\n\t case 'opacity':\n\t if (value === undefined && util_1.contains([mark_1.POINT, mark_1.TICK, mark_1.CIRCLE, mark_1.SQUARE], mark)) {\n\t if (!encoding_1.isAggregate(encoding) || encoding_1.has(encoding, channel_1.DETAIL)) {\n\t cfg[property] = 0.7;\n\t }\n\t }\n\t break;\n\t case 'orient':\n\t if (stack) {\n\t cfg[property] = stack.groupbyChannel === channel_1.Y ? 'horizontal' : undefined;\n\t }\n\t if (value === undefined) {\n\t cfg[property] = fielddef_1.isMeasure(encoding[channel_1.X]) && !fielddef_1.isMeasure(encoding[channel_1.Y]) ?\n\t 'horizontal' :\n\t undefined;\n\t }\n\t break;\n\t case 'align':\n\t if (value === undefined) {\n\t cfg[property] = encoding_1.has(encoding, channel_1.X) ? 'center' : 'right';\n\t }\n\t }\n\t return cfg;\n\t }, {}), config.mark);\n\t}\n\texports.compileMarkConfig = compileMarkConfig;\n\t//# sourceMappingURL=config.js.map\n\n/***/ },\n/* 185 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar scale_1 = __webpack_require__(180);\n\tvar config_1 = __webpack_require__(179);\n\tvar mark_1 = __webpack_require__(183);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar encoding_1 = __webpack_require__(173);\n\tvar util_1 = __webpack_require__(165);\n\tvar common_1 = __webpack_require__(186);\n\tvar scale_2 = __webpack_require__(189);\n\tfunction compileStackProperties(mark, encoding, scale, config) {\n\t var stackFields = getStackFields(mark, encoding, scale);\n\t if (stackFields.length > 0 &&\n\t util_1.contains([mark_1.BAR, mark_1.AREA], mark) &&\n\t config.mark.stacked !== config_1.StackOffset.NONE &&\n\t encoding_1.isAggregate(encoding)) {\n\t var isXMeasure = encoding_1.has(encoding, channel_1.X) && fielddef_1.isMeasure(encoding.x), isYMeasure = encoding_1.has(encoding, channel_1.Y) && fielddef_1.isMeasure(encoding.y);\n\t if (isXMeasure && !isYMeasure) {\n\t return {\n\t groupbyChannel: channel_1.Y,\n\t fieldChannel: channel_1.X,\n\t stackFields: stackFields,\n\t offset: config.mark.stacked\n\t };\n\t }\n\t else if (isYMeasure && !isXMeasure) {\n\t return {\n\t groupbyChannel: channel_1.X,\n\t fieldChannel: channel_1.Y,\n\t stackFields: stackFields,\n\t offset: config.mark.stacked\n\t };\n\t }\n\t }\n\t return null;\n\t}\n\texports.compileStackProperties = compileStackProperties;\n\tfunction getStackFields(mark, encoding, scale) {\n\t return [channel_1.COLOR, channel_1.DETAIL].reduce(function (fields, channel) {\n\t var channelEncoding = encoding[channel];\n\t if (encoding_1.has(encoding, channel)) {\n\t if (util_1.isArray(channelEncoding)) {\n\t channelEncoding.forEach(function (fieldDef) {\n\t fields.push(fielddef_1.field(fieldDef));\n\t });\n\t }\n\t else {\n\t var fieldDef = channelEncoding;\n\t fields.push(fielddef_1.field(fieldDef, {\n\t binSuffix: scale_2.scaleType(scale[channel], fieldDef, channel, mark) === scale_1.ScaleType.ORDINAL ? '_range' : '_start'\n\t }));\n\t }\n\t }\n\t return fields;\n\t }, []);\n\t}\n\tfunction imputeTransform(model) {\n\t var stack = model.stack();\n\t return {\n\t type: 'impute',\n\t field: model.field(stack.fieldChannel),\n\t groupby: stack.stackFields,\n\t orderby: [model.field(stack.groupbyChannel)],\n\t method: 'value',\n\t value: 0\n\t };\n\t}\n\texports.imputeTransform = imputeTransform;\n\tfunction stackTransform(model) {\n\t var stack = model.stack();\n\t var encoding = model.encoding();\n\t var sortby = model.has(channel_1.ORDER) ?\n\t (util_1.isArray(encoding[channel_1.ORDER]) ? encoding[channel_1.ORDER] : [encoding[channel_1.ORDER]]).map(common_1.sortField) :\n\t stack.stackFields.map(function (field) {\n\t return '-' + field;\n\t });\n\t var valName = model.field(stack.fieldChannel);\n\t var transform = {\n\t type: 'stack',\n\t groupby: [model.field(stack.groupbyChannel)],\n\t field: model.field(stack.fieldChannel),\n\t sortby: sortby,\n\t output: {\n\t start: valName + '_start',\n\t end: valName + '_end'\n\t }\n\t };\n\t if (stack.offset) {\n\t transform.offset = stack.offset;\n\t }\n\t return transform;\n\t}\n\texports.stackTransform = stackTransform;\n\t//# sourceMappingURL=stack.js.map\n\n/***/ },\n/* 186 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar sort_1 = __webpack_require__(187);\n\tvar type_1 = __webpack_require__(172);\n\tvar time_1 = __webpack_require__(188);\n\tvar util_1 = __webpack_require__(165);\n\texports.FILL_STROKE_CONFIG = ['fill', 'fillOpacity',\n\t 'stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity',\n\t 'opacity'];\n\tfunction applyColorAndOpacity(p, model) {\n\t var filled = model.config().mark.filled;\n\t var fieldDef = model.fieldDef(channel_1.COLOR);\n\t applyMarkConfig(p, model, exports.FILL_STROKE_CONFIG);\n\t var value;\n\t if (model.has(channel_1.COLOR)) {\n\t value = {\n\t scale: model.scaleName(channel_1.COLOR),\n\t field: model.field(channel_1.COLOR, fieldDef.type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n\t };\n\t }\n\t else if (fieldDef && fieldDef.value) {\n\t value = { value: fieldDef.value };\n\t }\n\t if (value !== undefined) {\n\t if (filled) {\n\t p.fill = value;\n\t }\n\t else {\n\t p.stroke = value;\n\t }\n\t }\n\t else {\n\t p[filled ? 'fill' : 'stroke'] = p[filled ? 'fill' : 'stroke'] ||\n\t { value: model.config().mark.color };\n\t }\n\t}\n\texports.applyColorAndOpacity = applyColorAndOpacity;\n\tfunction applyConfig(properties, config, propsList) {\n\t propsList.forEach(function (property) {\n\t var value = config[property];\n\t if (value !== undefined) {\n\t properties[property] = { value: value };\n\t }\n\t });\n\t}\n\texports.applyConfig = applyConfig;\n\tfunction applyMarkConfig(marksProperties, model, propsList) {\n\t applyConfig(marksProperties, model.config().mark, propsList);\n\t}\n\texports.applyMarkConfig = applyMarkConfig;\n\tfunction formatMixins(model, channel, format) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (!util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], fieldDef.type)) {\n\t return {};\n\t }\n\t var def = {};\n\t if (fieldDef.type === type_1.TEMPORAL) {\n\t def.formatType = 'time';\n\t }\n\t if (format !== undefined) {\n\t def.format = format;\n\t }\n\t else {\n\t switch (fieldDef.type) {\n\t case type_1.QUANTITATIVE:\n\t def.format = model.config().numberFormat;\n\t break;\n\t case type_1.TEMPORAL:\n\t def.format = timeFormat(model, channel) || model.config().timeFormat;\n\t break;\n\t }\n\t }\n\t if (channel === channel_1.TEXT) {\n\t var filter = (def.formatType || 'number') + (def.format ? ':\\'' + def.format + '\\'' : '');\n\t return {\n\t text: {\n\t template: '{{' + model.field(channel, { datum: true }) + ' | ' + filter + '}}'\n\t }\n\t };\n\t }\n\t return def;\n\t}\n\texports.formatMixins = formatMixins;\n\tfunction isAbbreviated(model, channel, fieldDef) {\n\t switch (channel) {\n\t case channel_1.ROW:\n\t case channel_1.COLUMN:\n\t case channel_1.X:\n\t case channel_1.Y:\n\t return model.axis(channel).shortTimeLabels;\n\t case channel_1.COLOR:\n\t case channel_1.SHAPE:\n\t case channel_1.SIZE:\n\t return model.legend(channel).shortTimeLabels;\n\t case channel_1.TEXT:\n\t return model.config().mark.shortTimeLabels;\n\t case channel_1.LABEL:\n\t }\n\t return false;\n\t}\n\tfunction sortField(orderChannelDef) {\n\t return (orderChannelDef.sort === sort_1.SortOrder.DESCENDING ? '-' : '') + fielddef_1.field(orderChannelDef);\n\t}\n\texports.sortField = sortField;\n\tfunction timeFormat(model, channel) {\n\t var fieldDef = model.fieldDef(channel);\n\t return time_1.format(fieldDef.timeUnit, isAbbreviated(model, channel, fieldDef));\n\t}\n\texports.timeFormat = timeFormat;\n\t//# sourceMappingURL=common.js.map\n\n/***/ },\n/* 187 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t(function (SortOrder) {\n\t SortOrder[SortOrder[\"ASCENDING\"] = 'ascending'] = \"ASCENDING\";\n\t SortOrder[SortOrder[\"DESCENDING\"] = 'descending'] = \"DESCENDING\";\n\t SortOrder[SortOrder[\"NONE\"] = 'none'] = \"NONE\";\n\t})(exports.SortOrder || (exports.SortOrder = {}));\n\tvar SortOrder = exports.SortOrder;\n\t//# sourceMappingURL=sort.js.map\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\tvar channel_1 = __webpack_require__(164);\n\tvar timeunit_1 = __webpack_require__(176);\n\tfunction format(timeUnit, abbreviated) {\n\t if (abbreviated === void 0) { abbreviated = false; }\n\t if (!timeUnit) {\n\t return undefined;\n\t }\n\t var timeString = timeUnit.toString();\n\t var dateComponents = [];\n\t if (timeString.indexOf('year') > -1) {\n\t dateComponents.push(abbreviated ? '%y' : '%Y');\n\t }\n\t if (timeString.indexOf('month') > -1) {\n\t dateComponents.push(abbreviated ? '%b' : '%B');\n\t }\n\t if (timeString.indexOf('day') > -1) {\n\t dateComponents.push(abbreviated ? '%a' : '%A');\n\t }\n\t else if (timeString.indexOf('date') > -1) {\n\t dateComponents.push('%d');\n\t }\n\t var timeComponents = [];\n\t if (timeString.indexOf('hours') > -1) {\n\t timeComponents.push('%H');\n\t }\n\t if (timeString.indexOf('minutes') > -1) {\n\t timeComponents.push('%M');\n\t }\n\t if (timeString.indexOf('seconds') > -1) {\n\t timeComponents.push('%S');\n\t }\n\t if (timeString.indexOf('milliseconds') > -1) {\n\t timeComponents.push('%L');\n\t }\n\t var out = [];\n\t if (dateComponents.length > 0) {\n\t out.push(dateComponents.join('-'));\n\t }\n\t if (timeComponents.length > 0) {\n\t out.push(timeComponents.join(':'));\n\t }\n\t return out.length > 0 ? out.join(' ') : undefined;\n\t}\n\texports.format = format;\n\tfunction smallestUnit(timeUnit) {\n\t if (!timeUnit) {\n\t return undefined;\n\t }\n\t if (timeUnit.indexOf('second') > -1) {\n\t return 'second';\n\t }\n\t if (timeUnit.indexOf('minute') > -1) {\n\t return 'minute';\n\t }\n\t if (timeUnit.indexOf('hour') > -1) {\n\t return 'hour';\n\t }\n\t if (timeUnit.indexOf('day') > -1 || timeUnit.indexOf('date') > -1) {\n\t return 'day';\n\t }\n\t if (timeUnit.indexOf('month') > -1) {\n\t return 'month';\n\t }\n\t if (timeUnit.indexOf('year') > -1) {\n\t return 'year';\n\t }\n\t return undefined;\n\t}\n\texports.smallestUnit = smallestUnit;\n\tfunction parseExpression(timeUnit, fieldRef, onlyRef) {\n\t if (onlyRef === void 0) { onlyRef = false; }\n\t var out = 'datetime(';\n\t var timeString = timeUnit.toString();\n\t function get(fun, addComma) {\n\t if (addComma === void 0) { addComma = true; }\n\t if (onlyRef) {\n\t return fieldRef + (addComma ? ', ' : '');\n\t }\n\t else {\n\t return fun + '(' + fieldRef + ')' + (addComma ? ', ' : '');\n\t }\n\t }\n\t if (timeString.indexOf('year') > -1) {\n\t out += get('year');\n\t }\n\t else {\n\t out += '2006, ';\n\t }\n\t if (timeString.indexOf('month') > -1) {\n\t out += get('month');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('day') > -1) {\n\t out += get('day', false) + '+1, ';\n\t }\n\t else if (timeString.indexOf('date') > -1) {\n\t out += get('date');\n\t }\n\t else {\n\t out += '1, ';\n\t }\n\t if (timeString.indexOf('hours') > -1) {\n\t out += get('hours');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('minutes') > -1) {\n\t out += get('minutes');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('seconds') > -1) {\n\t out += get('seconds');\n\t }\n\t else {\n\t out += '0, ';\n\t }\n\t if (timeString.indexOf('milliseconds') > -1) {\n\t out += get('milliseconds', false);\n\t }\n\t else {\n\t out += '0';\n\t }\n\t return out + ')';\n\t}\n\texports.parseExpression = parseExpression;\n\tfunction rawDomain(timeUnit, channel) {\n\t if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE, channel_1.COLOR], channel)) {\n\t return null;\n\t }\n\t switch (timeUnit) {\n\t case timeunit_1.TimeUnit.SECONDS:\n\t return util_1.range(0, 60);\n\t case timeunit_1.TimeUnit.MINUTES:\n\t return util_1.range(0, 60);\n\t case timeunit_1.TimeUnit.HOURS:\n\t return util_1.range(0, 24);\n\t case timeunit_1.TimeUnit.DAY:\n\t return util_1.range(0, 7);\n\t case timeunit_1.TimeUnit.DATE:\n\t return util_1.range(1, 32);\n\t case timeunit_1.TimeUnit.MONTH:\n\t return util_1.range(0, 12);\n\t }\n\t return null;\n\t}\n\texports.rawDomain = rawDomain;\n\t//# sourceMappingURL=time.js.map\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar type_1 = __webpack_require__(172);\n\tvar mark_1 = __webpack_require__(183);\n\tvar time_1 = __webpack_require__(188);\n\tvar scale_1 = __webpack_require__(180);\n\tvar config_1 = __webpack_require__(179);\n\tvar timeunit_1 = __webpack_require__(176);\n\tvar fielddef_1 = __webpack_require__(174);\n\texports.COLOR_LEGEND = 'color_legend';\n\texports.COLOR_LEGEND_LABEL = 'color_legend_label';\n\tfunction compileScales(model) {\n\t return model.channelWithScales().reduce(function (scales, channel) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (channel === channel_1.COLOR && model.legend(channel_1.COLOR) && (fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit)) {\n\t scales.push(colorLegendScale(model, fieldDef));\n\t if (fieldDef.bin) {\n\t scales.push(binColorLegendLabel(model, fieldDef));\n\t }\n\t }\n\t scales.push(mainScale(model, fieldDef, channel));\n\t return scales;\n\t }, []);\n\t}\n\texports.compileScales = compileScales;\n\tfunction mainScale(model, fieldDef, channel) {\n\t var scale = model.scale(channel);\n\t var sort = model.sort(channel);\n\t var scaleDef = {\n\t name: model.scaleName(channel),\n\t type: scaleType(scale, fieldDef, channel, model.mark()),\n\t };\n\t scaleDef.domain = domain(scale, model, channel, scaleDef.type);\n\t util_1.extend(scaleDef, rangeMixins(scale, model, channel, scaleDef.type));\n\t if (sort && (typeof sort === 'string' ? sort : sort.order) === 'descending') {\n\t scaleDef.reverse = true;\n\t }\n\t [\n\t 'round',\n\t 'clamp', 'nice',\n\t 'exponent', 'zero',\n\t 'padding', 'points'\n\t ].forEach(function (property) {\n\t var value = exports[property](scale[property], scaleDef.type, channel, fieldDef);\n\t if (value !== undefined) {\n\t scaleDef[property] = value;\n\t }\n\t });\n\t return scaleDef;\n\t}\n\tfunction colorLegendScale(model, fieldDef) {\n\t return {\n\t name: model.scaleName(exports.COLOR_LEGEND),\n\t type: 'ordinal',\n\t domain: {\n\t data: model.dataTable(),\n\t field: model.field(channel_1.COLOR, (fieldDef.bin || fieldDef.timeUnit) ? {} : { prefn: 'rank_' }), sort: true\n\t },\n\t range: { data: model.dataTable(), field: model.field(channel_1.COLOR), sort: true }\n\t };\n\t}\n\tfunction binColorLegendLabel(model, fieldDef) {\n\t return {\n\t name: model.scaleName(exports.COLOR_LEGEND_LABEL),\n\t type: 'ordinal',\n\t domain: {\n\t data: model.dataTable(),\n\t field: model.field(channel_1.COLOR, { prefn: 'rank_' }),\n\t sort: true\n\t },\n\t range: {\n\t data: model.dataTable(),\n\t field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n\t sort: {\n\t field: model.field(channel_1.COLOR, { binSuffix: '_start' }),\n\t op: 'min'\n\t }\n\t }\n\t };\n\t}\n\tfunction scaleType(scale, fieldDef, channel, mark) {\n\t if (!channel_1.hasScale(channel)) {\n\t return null;\n\t }\n\t if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE], channel)) {\n\t return scale_1.ScaleType.ORDINAL;\n\t }\n\t if (scale.type !== undefined) {\n\t return scale.type;\n\t }\n\t switch (fieldDef.type) {\n\t case type_1.NOMINAL:\n\t return scale_1.ScaleType.ORDINAL;\n\t case type_1.ORDINAL:\n\t if (channel === channel_1.COLOR) {\n\t return scale_1.ScaleType.LINEAR;\n\t }\n\t return scale_1.ScaleType.ORDINAL;\n\t case type_1.TEMPORAL:\n\t if (channel === channel_1.COLOR) {\n\t return scale_1.ScaleType.TIME;\n\t }\n\t if (fieldDef.timeUnit) {\n\t switch (fieldDef.timeUnit) {\n\t case timeunit_1.TimeUnit.HOURS:\n\t case timeunit_1.TimeUnit.DAY:\n\t case timeunit_1.TimeUnit.MONTH:\n\t return scale_1.ScaleType.ORDINAL;\n\t default:\n\t return scale_1.ScaleType.TIME;\n\t }\n\t }\n\t return scale_1.ScaleType.TIME;\n\t case type_1.QUANTITATIVE:\n\t if (fieldDef.bin) {\n\t return util_1.contains([channel_1.X, channel_1.Y, channel_1.COLOR], channel) ? scale_1.ScaleType.LINEAR : scale_1.ScaleType.ORDINAL;\n\t }\n\t return scale_1.ScaleType.LINEAR;\n\t }\n\t return null;\n\t}\n\texports.scaleType = scaleType;\n\tfunction domain(scale, model, channel, scaleType) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (scale.domain) {\n\t return scale.domain;\n\t }\n\t if (fieldDef.type === type_1.TEMPORAL) {\n\t if (time_1.rawDomain(fieldDef.timeUnit, channel)) {\n\t return {\n\t data: fieldDef.timeUnit,\n\t field: 'date'\n\t };\n\t }\n\t return {\n\t data: model.dataTable(),\n\t field: model.field(channel),\n\t sort: {\n\t field: model.field(channel),\n\t op: 'min'\n\t }\n\t };\n\t }\n\t var stack = model.stack();\n\t if (stack && channel === stack.fieldChannel) {\n\t if (stack.offset === config_1.StackOffset.NORMALIZE) {\n\t return [0, 1];\n\t }\n\t return {\n\t data: data_1.STACKED_SCALE,\n\t field: model.field(channel, { prefn: 'sum_' })\n\t };\n\t }\n\t var includeRawDomain = _includeRawDomain(scale, model, channel, scaleType), sort = domainSort(model, channel, scaleType);\n\t if (includeRawDomain) {\n\t return {\n\t data: data_1.SOURCE,\n\t field: model.field(channel, { noAggregate: true })\n\t };\n\t }\n\t else if (fieldDef.bin) {\n\t return scaleType === scale_1.ScaleType.ORDINAL ? {\n\t data: model.dataTable(),\n\t field: model.field(channel, { binSuffix: '_range' }),\n\t sort: {\n\t field: model.field(channel, { binSuffix: '_start' }),\n\t op: 'min'\n\t }\n\t } : channel === channel_1.COLOR ? {\n\t data: model.dataTable(),\n\t field: model.field(channel, { binSuffix: '_start' })\n\t } : {\n\t data: model.dataTable(),\n\t field: [\n\t model.field(channel, { binSuffix: '_start' }),\n\t model.field(channel, { binSuffix: '_end' })\n\t ]\n\t };\n\t }\n\t else if (sort) {\n\t return {\n\t data: sort.op ? data_1.SOURCE : model.dataTable(),\n\t field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n\t sort: sort\n\t };\n\t }\n\t else {\n\t return {\n\t data: model.dataTable(),\n\t field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n\t };\n\t }\n\t}\n\texports.domain = domain;\n\tfunction domainSort(model, channel, scaleType) {\n\t if (scaleType !== scale_1.ScaleType.ORDINAL) {\n\t return undefined;\n\t }\n\t var sort = model.sort(channel);\n\t if (util_1.contains(['ascending', 'descending', undefined], sort)) {\n\t return true;\n\t }\n\t if (typeof sort !== 'string') {\n\t return {\n\t op: sort.op,\n\t field: sort.field\n\t };\n\t }\n\t return undefined;\n\t}\n\texports.domainSort = domainSort;\n\tfunction _includeRawDomain(scale, model, channel, scaleType) {\n\t var fieldDef = model.fieldDef(channel);\n\t return scale.includeRawDomain &&\n\t fieldDef.aggregate &&\n\t aggregate_1.SHARED_DOMAIN_OPS.indexOf(fieldDef.aggregate) >= 0 &&\n\t ((fieldDef.type === type_1.QUANTITATIVE && !fieldDef.bin) ||\n\t (fieldDef.type === type_1.TEMPORAL && util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)));\n\t}\n\tfunction rangeMixins(scale, model, channel, scaleType) {\n\t var fieldDef = model.fieldDef(channel), scaleConfig = model.config().scale;\n\t if (scaleType === scale_1.ScaleType.ORDINAL && scale.bandSize && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n\t return { bandSize: scale.bandSize };\n\t }\n\t if (scale.range && !util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN], channel)) {\n\t return { range: scale.range };\n\t }\n\t switch (channel) {\n\t case channel_1.X:\n\t return {\n\t rangeMin: 0,\n\t rangeMax: model.cellWidth()\n\t };\n\t case channel_1.Y:\n\t return {\n\t rangeMin: model.cellHeight(),\n\t rangeMax: 0\n\t };\n\t case channel_1.SIZE:\n\t if (model.mark() === mark_1.BAR) {\n\t if (scaleConfig.barSizeRange !== undefined) {\n\t return { range: scaleConfig.barSizeRange };\n\t }\n\t var dimension = model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X;\n\t return { range: [model.config().mark.barThinSize, model.scale(dimension).bandSize] };\n\t }\n\t else if (model.mark() === mark_1.TEXT) {\n\t return { range: scaleConfig.fontSizeRange };\n\t }\n\t if (scaleConfig.pointSizeRange !== undefined) {\n\t return { range: scaleConfig.pointSizeRange };\n\t }\n\t var xIsMeasure = fielddef_1.isMeasure(model.encoding().x);\n\t var yIsMeasure = fielddef_1.isMeasure(model.encoding().y);\n\t var bandSize = xIsMeasure !== yIsMeasure ?\n\t model.scale(xIsMeasure ? channel_1.Y : channel_1.X).bandSize :\n\t Math.min(model.scale(channel_1.X).bandSize || scaleConfig.bandSize, model.scale(channel_1.Y).bandSize || scaleConfig.bandSize);\n\t return { range: [9, (bandSize - 2) * (bandSize - 2)] };\n\t case channel_1.SHAPE:\n\t return { range: scaleConfig.shapeRange };\n\t case channel_1.COLOR:\n\t if (fieldDef.type === type_1.NOMINAL) {\n\t return { range: scaleConfig.nominalColorRange };\n\t }\n\t return { range: scaleConfig.sequentialColorRange };\n\t case channel_1.ROW:\n\t return { range: 'height' };\n\t case channel_1.COLUMN:\n\t return { range: 'width' };\n\t }\n\t return {};\n\t}\n\texports.rangeMixins = rangeMixins;\n\tfunction clamp(prop, scaleType) {\n\t if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT,\n\t scale_1.ScaleType.LOG, scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.clamp = clamp;\n\tfunction exponent(prop, scaleType) {\n\t if (scaleType === scale_1.ScaleType.POW) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.exponent = exponent;\n\tfunction nice(prop, scaleType, channel, fieldDef) {\n\t if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT, scale_1.ScaleType.LOG,\n\t scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.QUANTIZE], scaleType)) {\n\t if (prop !== undefined) {\n\t return prop;\n\t }\n\t if (util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n\t return time_1.smallestUnit(fieldDef.timeUnit);\n\t }\n\t return util_1.contains([channel_1.X, channel_1.Y], channel);\n\t }\n\t return undefined;\n\t}\n\texports.nice = nice;\n\tfunction padding(prop, scaleType, channel) {\n\t if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.padding = padding;\n\tfunction points(__, scaleType, channel) {\n\t if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n\t return true;\n\t }\n\t return undefined;\n\t}\n\texports.points = points;\n\tfunction round(prop, scaleType, channel) {\n\t if (util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN, channel_1.SIZE], channel) && prop !== undefined) {\n\t return prop;\n\t }\n\t return undefined;\n\t}\n\texports.round = round;\n\tfunction zero(prop, scaleType, channel, fieldDef) {\n\t if (!util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.ORDINAL], scaleType)) {\n\t if (prop !== undefined) {\n\t return prop;\n\t }\n\t return !fieldDef.bin && util_1.contains([channel_1.X, channel_1.Y], channel);\n\t }\n\t return undefined;\n\t}\n\texports.zero = zero;\n\t//# sourceMappingURL=scale.js.map\n\n/***/ },\n/* 190 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar axis_1 = __webpack_require__(181);\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar type_1 = __webpack_require__(172);\n\tvar util_1 = __webpack_require__(165);\n\tvar common_1 = __webpack_require__(186);\n\tfunction compileInnerAxis(channel, model) {\n\t var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n\t var def = {\n\t type: type,\n\t scale: model.scaleName(channel),\n\t grid: true,\n\t tickSize: 0,\n\t properties: {\n\t labels: {\n\t text: { value: '' }\n\t },\n\t axis: {\n\t stroke: { value: 'transparent' }\n\t }\n\t }\n\t };\n\t var axis = model.axis(channel);\n\t ['layer', 'ticks', 'values', 'subdivide'].forEach(function (property) {\n\t var method;\n\t var value = (method = exports[property]) ?\n\t method(model, channel, def) :\n\t axis[property];\n\t if (value !== undefined) {\n\t def[property] = value;\n\t }\n\t });\n\t return def;\n\t}\n\texports.compileInnerAxis = compileInnerAxis;\n\tfunction compileAxis(channel, model) {\n\t var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n\t var axis = model.axis(channel);\n\t var def = {\n\t type: type,\n\t scale: model.scaleName(channel)\n\t };\n\t util_1.extend(def, common_1.formatMixins(model, channel, model.axis(channel).format));\n\t [\n\t 'grid', 'layer', 'offset', 'orient', 'tickSize', 'ticks', 'title',\n\t 'tickPadding', 'tickSize', 'tickSizeMajor', 'tickSizeMinor', 'tickSizeEnd',\n\t 'titleOffset', 'values', 'subdivide'\n\t ].forEach(function (property) {\n\t var method;\n\t var value = (method = exports[property]) ?\n\t method(model, channel, def) :\n\t axis[property];\n\t if (value !== undefined) {\n\t def[property] = value;\n\t }\n\t });\n\t var props = model.axis(channel).properties || {};\n\t [\n\t 'axis', 'labels',\n\t 'grid', 'title', 'ticks', 'majorTicks', 'minorTicks'\n\t ].forEach(function (group) {\n\t var value = properties[group] ?\n\t properties[group](model, channel, props[group] || {}, def) :\n\t props[group];\n\t if (value !== undefined) {\n\t def.properties = def.properties || {};\n\t def.properties[group] = value;\n\t }\n\t });\n\t return def;\n\t}\n\texports.compileAxis = compileAxis;\n\tfunction offset(model, channel) {\n\t return model.axis(channel).offset;\n\t}\n\texports.offset = offset;\n\tfunction gridShow(model, channel) {\n\t var grid = model.axis(channel).grid;\n\t if (grid !== undefined) {\n\t return grid;\n\t }\n\t return !model.isOrdinalScale(channel) && !model.fieldDef(channel).bin;\n\t}\n\texports.gridShow = gridShow;\n\tfunction grid(model, channel) {\n\t if (channel === channel_1.ROW || channel === channel_1.COLUMN) {\n\t return undefined;\n\t }\n\t return gridShow(model, channel) && ((channel === channel_1.Y || channel === channel_1.X) && !(model.has(channel_1.COLUMN) || model.has(channel_1.ROW)));\n\t}\n\texports.grid = grid;\n\tfunction layer(model, channel, def) {\n\t var layer = model.axis(channel).layer;\n\t if (layer !== undefined) {\n\t return layer;\n\t }\n\t if (def.grid) {\n\t return 'back';\n\t }\n\t return undefined;\n\t}\n\texports.layer = layer;\n\t;\n\tfunction orient(model, channel) {\n\t var orient = model.axis(channel).orient;\n\t if (orient) {\n\t return orient;\n\t }\n\t else if (channel === channel_1.COLUMN) {\n\t return axis_1.AxisOrient.TOP;\n\t }\n\t else if (channel === channel_1.ROW) {\n\t if (model.has(channel_1.Y) && model.axis(channel_1.Y).orient !== axis_1.AxisOrient.RIGHT) {\n\t return axis_1.AxisOrient.RIGHT;\n\t }\n\t }\n\t return undefined;\n\t}\n\texports.orient = orient;\n\tfunction ticks(model, channel) {\n\t var ticks = model.axis(channel).ticks;\n\t if (ticks !== undefined) {\n\t return ticks;\n\t }\n\t if (channel === channel_1.X && !model.fieldDef(channel).bin) {\n\t return 5;\n\t }\n\t return undefined;\n\t}\n\texports.ticks = ticks;\n\tfunction tickSize(model, channel) {\n\t var tickSize = model.axis(channel).tickSize;\n\t if (tickSize !== undefined) {\n\t return tickSize;\n\t }\n\t return undefined;\n\t}\n\texports.tickSize = tickSize;\n\tfunction title(model, channel) {\n\t var axis = model.axis(channel);\n\t if (axis.title !== undefined) {\n\t return axis.title;\n\t }\n\t var fieldTitle = fielddef_1.title(model.fieldDef(channel));\n\t var maxLength;\n\t if (axis.titleMaxLength) {\n\t maxLength = axis.titleMaxLength;\n\t }\n\t else if (channel === channel_1.X && !model.isOrdinalScale(channel_1.X)) {\n\t maxLength = model.cellWidth() / model.axis(channel_1.X).characterWidth;\n\t }\n\t else if (channel === channel_1.Y && !model.isOrdinalScale(channel_1.Y)) {\n\t maxLength = model.cellHeight() / model.axis(channel_1.Y).characterWidth;\n\t }\n\t return maxLength ? util_1.truncate(fieldTitle, maxLength) : fieldTitle;\n\t}\n\texports.title = title;\n\tvar properties;\n\t(function (properties) {\n\t function axis(model, channel, axisPropsSpec, def) {\n\t var axis = model.axis(channel);\n\t return util_1.extend(axis.axisWidth !== undefined ?\n\t { strokeWidth: { value: axis.axisWidth } } :\n\t {}, axisPropsSpec || {});\n\t }\n\t properties.axis = axis;\n\t function labels(model, channel, labelsSpec, def) {\n\t var fieldDef = model.fieldDef(channel);\n\t var axis = model.axis(channel);\n\t if (!axis.labels) {\n\t return util_1.extend({\n\t text: ''\n\t }, labelsSpec);\n\t }\n\t if (util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) && axis.labelMaxLength) {\n\t labelsSpec = util_1.extend({\n\t text: {\n\t template: '{{ datum.data | truncate:' + axis.labelMaxLength + '}}'\n\t }\n\t }, labelsSpec || {});\n\t }\n\t if (axis.labelAngle !== undefined) {\n\t labelsSpec.angle = { value: axis.labelAngle };\n\t }\n\t else {\n\t if (channel === channel_1.X && (fielddef_1.isDimension(fieldDef) || fieldDef.type === type_1.TEMPORAL)) {\n\t labelsSpec.angle = { value: 270 };\n\t }\n\t else if (channel === channel_1.ROW && model.has(channel_1.X)) {\n\t labelsSpec.angle = { value: def.orient === 'left' ? 270 : 90 };\n\t }\n\t }\n\t if (axis.labelAlign !== undefined) {\n\t labelsSpec.align = { value: axis.labelAlign };\n\t }\n\t else {\n\t if (labelsSpec.angle) {\n\t if (labelsSpec.angle.value === 270) {\n\t labelsSpec.align = {\n\t value: def.orient === 'top' ? 'left' :\n\t def.type === 'x' ? 'right' :\n\t 'center'\n\t };\n\t }\n\t else if (labelsSpec.angle.value === 90) {\n\t labelsSpec.align = { value: 'center' };\n\t }\n\t }\n\t }\n\t if (axis.labelBaseline !== undefined) {\n\t labelsSpec.baseline = { value: axis.labelBaseline };\n\t }\n\t else {\n\t if (labelsSpec.angle) {\n\t if (labelsSpec.angle.value === 270) {\n\t labelsSpec.baseline = { value: def.type === 'x' ? 'middle' : 'bottom' };\n\t }\n\t else if (labelsSpec.angle.value === 90) {\n\t labelsSpec.baseline = { value: 'bottom' };\n\t }\n\t }\n\t }\n\t return labelsSpec || undefined;\n\t }\n\t properties.labels = labels;\n\t})(properties = exports.properties || (exports.properties = {}));\n\t//# sourceMappingURL=axis.js.map\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar vlFieldDef = __webpack_require__(174);\n\tvar util_1 = __webpack_require__(165);\n\tvar scale_1 = __webpack_require__(180);\n\tvar bin_1 = __webpack_require__(163);\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar type_1 = __webpack_require__(172);\n\tvar scale_2 = __webpack_require__(189);\n\tvar time_1 = __webpack_require__(188);\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar DEFAULT_NULL_FILTERS = {\n\t nominal: false,\n\t ordinal: false,\n\t quantitative: true,\n\t temporal: true\n\t};\n\tfunction compileData(model) {\n\t var def = [source.def(model)];\n\t var summaryDef = summary.def(model);\n\t if (summaryDef) {\n\t def.push(summaryDef);\n\t }\n\t rankTransform(def[def.length - 1], model);\n\t filterNonPositiveForLog(def[def.length - 1], model);\n\t var stackDef = model.stack();\n\t if (stackDef) {\n\t def.push(stack.def(model, stackDef));\n\t }\n\t return def.concat(dates.defs(model));\n\t}\n\texports.compileData = compileData;\n\tvar source;\n\t(function (source_1) {\n\t function def(model) {\n\t var source = { name: data_1.SOURCE };\n\t var data = model.data();\n\t if (data) {\n\t if (data.values && data.values.length > 0) {\n\t source.values = model.data().values;\n\t source.format = { type: 'json' };\n\t }\n\t else if (data.url) {\n\t source.url = data.url;\n\t var defaultExtension = /(?:\\.([^.]+))?$/.exec(source.url)[1];\n\t if (!util_1.contains(['json', 'csv', 'tsv'], defaultExtension)) {\n\t defaultExtension = 'json';\n\t }\n\t source.format = { type: model.data().formatType || defaultExtension };\n\t }\n\t }\n\t var parse = formatParse(model);\n\t if (parse) {\n\t source.format = source.format || {};\n\t source.format.parse = parse;\n\t }\n\t source.transform = transform(model);\n\t return source;\n\t }\n\t source_1.def = def;\n\t function formatParse(model) {\n\t var calcFieldMap = (model.transform().calculate || []).reduce(function (fieldMap, formula) {\n\t fieldMap[formula.field] = true;\n\t return fieldMap;\n\t }, {});\n\t var parse;\n\t model.forEach(function (fieldDef) {\n\t if (fieldDef.type === type_1.TEMPORAL) {\n\t parse = parse || {};\n\t parse[fieldDef.field] = 'date';\n\t }\n\t else if (fieldDef.type === type_1.QUANTITATIVE) {\n\t if (vlFieldDef.isCount(fieldDef) || calcFieldMap[fieldDef.field]) {\n\t return;\n\t }\n\t parse = parse || {};\n\t parse[fieldDef.field] = 'number';\n\t }\n\t });\n\t return parse;\n\t }\n\t function transform(model) {\n\t return nullFilterTransform(model).concat(formulaTransform(model), filterTransform(model), binTransform(model), timeTransform(model));\n\t }\n\t source_1.transform = transform;\n\t function timeTransform(model) {\n\t return model.reduce(function (transform, fieldDef, channel) {\n\t var ref = fielddef_1.field(fieldDef, { nofn: true, datum: true });\n\t if (fieldDef.type === type_1.TEMPORAL && fieldDef.timeUnit) {\n\t transform.push({\n\t type: 'formula',\n\t field: fielddef_1.field(fieldDef),\n\t expr: time_1.parseExpression(fieldDef.timeUnit, ref)\n\t });\n\t }\n\t return transform;\n\t }, []);\n\t }\n\t source_1.timeTransform = timeTransform;\n\t function binTransform(model) {\n\t return model.reduce(function (transform, fieldDef, channel) {\n\t var bin = model.fieldDef(channel).bin;\n\t var scale = model.scale(channel);\n\t if (bin) {\n\t var binTrans = util_1.extend({\n\t type: 'bin',\n\t field: fieldDef.field,\n\t output: {\n\t start: fielddef_1.field(fieldDef, { binSuffix: '_start' }),\n\t mid: fielddef_1.field(fieldDef, { binSuffix: '_mid' }),\n\t end: fielddef_1.field(fieldDef, { binSuffix: '_end' })\n\t }\n\t }, typeof bin === 'boolean' ? {} : bin);\n\t if (!binTrans.maxbins && !binTrans.step) {\n\t binTrans.maxbins = bin_1.autoMaxBins(channel);\n\t }\n\t transform.push(binTrans);\n\t if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL || channel === channel_1.COLOR) {\n\t transform.push({\n\t type: 'formula',\n\t field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n\t expr: fielddef_1.field(fieldDef, { datum: true, binSuffix: '_start' }) +\n\t ' + \\'-\\' + ' +\n\t fielddef_1.field(fieldDef, { datum: true, binSuffix: '_end' })\n\t });\n\t }\n\t }\n\t return transform;\n\t }, []);\n\t }\n\t source_1.binTransform = binTransform;\n\t function nullFilterTransform(model) {\n\t var filterNull = model.transform().filterNull;\n\t var filteredFields = util_1.keys(model.reduce(function (aggregator, fieldDef) {\n\t if (filterNull ||\n\t (filterNull === undefined && fieldDef.field && fieldDef.field !== '*' && DEFAULT_NULL_FILTERS[fieldDef.type])) {\n\t aggregator[fieldDef.field] = true;\n\t }\n\t return aggregator;\n\t }, {}));\n\t return filteredFields.length > 0 ?\n\t [{\n\t type: 'filter',\n\t test: filteredFields.map(function (fieldName) {\n\t return 'datum.' + fieldName + '!==null';\n\t }).join(' && ')\n\t }] : [];\n\t }\n\t source_1.nullFilterTransform = nullFilterTransform;\n\t function filterTransform(model) {\n\t var filter = model.transform().filter;\n\t return filter ? [{\n\t type: 'filter',\n\t test: filter\n\t }] : [];\n\t }\n\t source_1.filterTransform = filterTransform;\n\t function formulaTransform(model) {\n\t return (model.transform().calculate || []).reduce(function (transform, formula) {\n\t transform.push(util_1.extend({ type: 'formula' }, formula));\n\t return transform;\n\t }, []);\n\t }\n\t source_1.formulaTransform = formulaTransform;\n\t})(source = exports.source || (exports.source = {}));\n\tvar summary;\n\t(function (summary) {\n\t function def(model) {\n\t var dims = {};\n\t var meas = {};\n\t var hasAggregate = false;\n\t model.forEach(function (fieldDef, channel) {\n\t if (fieldDef.aggregate) {\n\t hasAggregate = true;\n\t if (fieldDef.aggregate === aggregate_1.AggregateOp.COUNT) {\n\t meas['*'] = meas['*'] || {};\n\t meas['*'].count = true;\n\t }\n\t else {\n\t meas[fieldDef.field] = meas[fieldDef.field] || {};\n\t meas[fieldDef.field][fieldDef.aggregate] = true;\n\t }\n\t }\n\t else {\n\t if (fieldDef.bin) {\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_start' })] = fielddef_1.field(fieldDef, { binSuffix: '_start' });\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_mid' })] = fielddef_1.field(fieldDef, { binSuffix: '_mid' });\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_end' })] = fielddef_1.field(fieldDef, { binSuffix: '_end' });\n\t var scale = model.scale(channel);\n\t if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL) {\n\t dims[fielddef_1.field(fieldDef, { binSuffix: '_range' })] = fielddef_1.field(fieldDef, { binSuffix: '_range' });\n\t }\n\t }\n\t else {\n\t dims[fielddef_1.field(fieldDef)] = fielddef_1.field(fieldDef);\n\t }\n\t }\n\t });\n\t var groupby = util_1.vals(dims);\n\t var summarize = util_1.reduce(meas, function (aggregator, fnDictSet, field) {\n\t aggregator[field] = util_1.keys(fnDictSet);\n\t return aggregator;\n\t }, {});\n\t if (hasAggregate) {\n\t return {\n\t name: data_1.SUMMARY,\n\t source: data_1.SOURCE,\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: groupby,\n\t summarize: summarize\n\t }]\n\t };\n\t }\n\t return null;\n\t }\n\t summary.def = def;\n\t ;\n\t})(summary = exports.summary || (exports.summary = {}));\n\tvar stack;\n\t(function (stack) {\n\t function def(model, stackProps) {\n\t var groupbyChannel = stackProps.groupbyChannel, fieldChannel = stackProps.fieldChannel, facetFields = (model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n\t .concat((model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : []));\n\t var stacked = {\n\t name: data_1.STACKED_SCALE,\n\t source: model.dataTable(),\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: [model.field(groupbyChannel)].concat(facetFields),\n\t summarize: [{ ops: ['sum'], field: model.field(fieldChannel) }]\n\t }]\n\t };\n\t return stacked;\n\t }\n\t stack.def = def;\n\t ;\n\t})(stack = exports.stack || (exports.stack = {}));\n\tvar dates;\n\t(function (dates) {\n\t function defs(model) {\n\t var alreadyAdded = {};\n\t return model.reduce(function (aggregator, fieldDef, channel) {\n\t if (fieldDef.timeUnit) {\n\t var domain = time_1.rawDomain(fieldDef.timeUnit, channel);\n\t if (domain && !alreadyAdded[fieldDef.timeUnit]) {\n\t alreadyAdded[fieldDef.timeUnit] = true;\n\t aggregator.push({\n\t name: fieldDef.timeUnit,\n\t values: domain,\n\t transform: [{\n\t type: 'formula',\n\t field: 'date',\n\t expr: time_1.parseExpression(fieldDef.timeUnit, 'datum.data', true)\n\t }]\n\t });\n\t }\n\t }\n\t return aggregator;\n\t }, []);\n\t }\n\t dates.defs = defs;\n\t})(dates = exports.dates || (exports.dates = {}));\n\tfunction rankTransform(dataTable, model) {\n\t if (model.has(channel_1.COLOR) && model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL) {\n\t dataTable.transform = dataTable.transform.concat([{\n\t type: 'sort',\n\t by: model.field(channel_1.COLOR)\n\t }, {\n\t type: 'rank',\n\t field: model.field(channel_1.COLOR),\n\t output: {\n\t rank: model.field(channel_1.COLOR, { prefn: 'rank_' })\n\t }\n\t }]);\n\t }\n\t}\n\texports.rankTransform = rankTransform;\n\tfunction filterNonPositiveForLog(dataTable, model) {\n\t model.forEach(function (_, channel) {\n\t var scale = model.scale(channel);\n\t if (scale && scale.type === scale_1.ScaleType.LOG) {\n\t dataTable.transform.push({\n\t type: 'filter',\n\t test: model.field(channel, { datum: true }) + ' > 0'\n\t });\n\t }\n\t });\n\t}\n\texports.filterNonPositiveForLog = filterNonPositiveForLog;\n\t//# sourceMappingURL=data.js.map\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar data_1 = __webpack_require__(171);\n\tvar mark_1 = __webpack_require__(183);\n\tvar time_1 = __webpack_require__(188);\n\tfunction compileLayoutData(model) {\n\t var distinctSummary = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (summary, channel) {\n\t if (model.has(channel) && model.isOrdinalScale(channel)) {\n\t var scale = model.scale(channel);\n\t if (!(scale.domain instanceof Array)) {\n\t summary.push({\n\t field: model.field(channel),\n\t ops: ['distinct']\n\t });\n\t }\n\t }\n\t return summary;\n\t }, []);\n\t var cellWidthFormula = scaleWidthFormula(model, channel_1.X, model.cellWidth());\n\t var cellHeightFormula = scaleWidthFormula(model, channel_1.Y, model.cellHeight());\n\t var isFacet = model.has(channel_1.COLUMN) || model.has(channel_1.ROW);\n\t var formulas = [{\n\t type: 'formula',\n\t field: 'cellWidth',\n\t expr: cellWidthFormula\n\t }, {\n\t type: 'formula',\n\t field: 'cellHeight',\n\t expr: cellHeightFormula\n\t }, {\n\t type: 'formula',\n\t field: 'width',\n\t expr: isFacet ?\n\t facetScaleWidthFormula(model, channel_1.COLUMN, 'datum.cellWidth') :\n\t cellWidthFormula\n\t }, {\n\t type: 'formula',\n\t field: 'height',\n\t expr: isFacet ?\n\t facetScaleWidthFormula(model, channel_1.ROW, 'datum.cellHeight') :\n\t cellHeightFormula\n\t }];\n\t return distinctSummary.length > 0 ? {\n\t name: data_1.LAYOUT,\n\t source: model.dataTable(),\n\t transform: [].concat([{\n\t type: 'aggregate',\n\t summarize: distinctSummary\n\t }], formulas)\n\t } : {\n\t name: data_1.LAYOUT,\n\t values: [{}],\n\t transform: formulas\n\t };\n\t}\n\texports.compileLayoutData = compileLayoutData;\n\tfunction cardinalityFormula(model, channel) {\n\t var scale = model.scale(channel);\n\t if (scale.domain instanceof Array) {\n\t return scale.domain.length;\n\t }\n\t var timeUnit = model.fieldDef(channel).timeUnit;\n\t var timeUnitDomain = timeUnit ? time_1.rawDomain(timeUnit, channel) : null;\n\t return timeUnitDomain !== null ? timeUnitDomain.length :\n\t model.field(channel, { datum: true, prefn: 'distinct_' });\n\t}\n\tfunction scaleWidthFormula(model, channel, nonOrdinalSize) {\n\t if (model.has(channel)) {\n\t if (model.isOrdinalScale(channel)) {\n\t var scale = model.scale(channel);\n\t return '(' + cardinalityFormula(model, channel) +\n\t ' + ' + scale.padding +\n\t ') * ' + scale.bandSize;\n\t }\n\t else {\n\t return nonOrdinalSize + '';\n\t }\n\t }\n\t else {\n\t if (model.mark() === mark_1.TEXT && channel === channel_1.X) {\n\t return model.config().scale.textBandWidth + '';\n\t }\n\t return model.config().scale.bandSize + '';\n\t }\n\t}\n\tfunction facetScaleWidthFormula(model, channel, innerWidth) {\n\t var scale = model.scale(channel);\n\t if (model.has(channel)) {\n\t var cardinality = scale.domain instanceof Array ? scale.domain.length :\n\t model.field(channel, { datum: true, prefn: 'distinct_' });\n\t return '(' + innerWidth + ' + ' + scale.padding + ')' + ' * ' + cardinality;\n\t }\n\t else {\n\t return innerWidth + ' + ' + model.config().facet.scale.padding;\n\t }\n\t}\n\t//# sourceMappingURL=layout.js.map\n\n/***/ },\n/* 193 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util = __webpack_require__(165);\n\tvar util_1 = __webpack_require__(165);\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar axis_1 = __webpack_require__(190);\n\tvar scale_1 = __webpack_require__(189);\n\tvar common_1 = __webpack_require__(186);\n\tfunction facetMixins(model, marks) {\n\t var hasRow = model.has(channel_1.ROW), hasCol = model.has(channel_1.COLUMN);\n\t if (model.has(channel_1.ROW) && !fielddef_1.isDimension(model.encoding().row)) {\n\t util.error('Row encoding should be ordinal.');\n\t }\n\t if (model.has(channel_1.COLUMN) && !fielddef_1.isDimension(model.encoding().column)) {\n\t util.error('Col encoding should be ordinal.');\n\t }\n\t return {\n\t marks: [].concat(getFacetGuideGroups(model), [getFacetGroup(model, marks)]),\n\t scales: scale_1.compileScales(model),\n\t axes: [].concat(hasRow && model.axis(channel_1.ROW) ? [axis_1.compileAxis(channel_1.ROW, model)] : [], hasCol && model.axis(channel_1.COLUMN) ? [axis_1.compileAxis(channel_1.COLUMN, model)] : [])\n\t };\n\t}\n\texports.facetMixins = facetMixins;\n\tfunction getCellAxes(model) {\n\t var cellAxes = [];\n\t if (model.has(channel_1.X) && model.axis(channel_1.X) && axis_1.gridShow(model, channel_1.X)) {\n\t cellAxes.push(axis_1.compileInnerAxis(channel_1.X, model));\n\t }\n\t if (model.has(channel_1.Y) && model.axis(channel_1.Y) && axis_1.gridShow(model, channel_1.Y)) {\n\t cellAxes.push(axis_1.compileInnerAxis(channel_1.Y, model));\n\t }\n\t return cellAxes;\n\t}\n\tfunction getFacetGroup(model, marks) {\n\t var name = model.spec().name;\n\t var facetGroup = {\n\t name: (name ? name + '-' : '') + 'cell',\n\t type: 'group',\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{\n\t type: 'facet',\n\t groupby: [].concat(model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : [], model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n\t }]\n\t },\n\t properties: {\n\t update: getFacetGroupProperties(model)\n\t },\n\t marks: marks\n\t };\n\t var cellAxes = getCellAxes(model);\n\t if (cellAxes.length > 0) {\n\t facetGroup.axes = cellAxes;\n\t }\n\t return facetGroup;\n\t}\n\tfunction getFacetGroupProperties(model) {\n\t var facetGroupProperties = {\n\t x: model.has(channel_1.COLUMN) ? {\n\t scale: model.scaleName(channel_1.COLUMN),\n\t field: model.field(channel_1.COLUMN),\n\t offset: model.scale(channel_1.COLUMN).padding / 2\n\t } : { value: model.config().facet.scale.padding / 2 },\n\t y: model.has(channel_1.ROW) ? {\n\t scale: model.scaleName(channel_1.ROW),\n\t field: model.field(channel_1.ROW),\n\t offset: model.scale(channel_1.ROW).padding / 2\n\t } : { value: model.config().facet.scale.padding / 2 },\n\t width: { field: { parent: 'cellWidth' } },\n\t height: { field: { parent: 'cellHeight' } }\n\t };\n\t common_1.applyConfig(facetGroupProperties, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n\t common_1.applyConfig(facetGroupProperties, model.config().facet.cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n\t return facetGroupProperties;\n\t}\n\tfunction getFacetGuideGroups(model) {\n\t var rootAxesGroups = [];\n\t if (model.has(channel_1.X)) {\n\t if (model.axis(channel_1.X)) {\n\t rootAxesGroups.push(getXAxesGroup(model));\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.ROW)) {\n\t rootAxesGroups.push.apply(rootAxesGroups, getRowGridGroups(model));\n\t }\n\t }\n\t if (model.has(channel_1.Y)) {\n\t if (model.axis(channel_1.Y)) {\n\t rootAxesGroups.push(getYAxesGroup(model));\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.COLUMN)) {\n\t rootAxesGroups.push.apply(rootAxesGroups, getColumnGridGroups(model));\n\t }\n\t }\n\t return rootAxesGroups;\n\t}\n\tfunction getXAxesGroup(model) {\n\t var hasCol = model.has(channel_1.COLUMN);\n\t var name = model.spec().name;\n\t return util_1.extend({\n\t name: (name ? name + '-' : '') + 'x-axes',\n\t type: 'group'\n\t }, hasCol ? {\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: [model.field(channel_1.COLUMN)],\n\t summarize: { '*': ['count'] }\n\t }]\n\t }\n\t } : {}, {\n\t properties: {\n\t update: {\n\t width: { field: { parent: 'cellWidth' } },\n\t height: {\n\t field: { group: 'height' }\n\t },\n\t x: hasCol ? {\n\t scale: model.scaleName(channel_1.COLUMN),\n\t field: model.field(channel_1.COLUMN),\n\t offset: model.scale(channel_1.COLUMN).padding / 2\n\t } : {\n\t value: model.config().facet.scale.padding / 2\n\t }\n\t }\n\t }\n\t }, model.axis(channel_1.X) ? {\n\t axes: [axis_1.compileAxis(channel_1.X, model)]\n\t } : {});\n\t}\n\tfunction getYAxesGroup(model) {\n\t var hasRow = model.has(channel_1.ROW);\n\t var name = model.spec().name;\n\t return util_1.extend({\n\t name: (name ? name + '-' : '') + 'y-axes',\n\t type: 'group'\n\t }, hasRow ? {\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{\n\t type: 'aggregate',\n\t groupby: [model.field(channel_1.ROW)],\n\t summarize: { '*': ['count'] }\n\t }]\n\t }\n\t } : {}, {\n\t properties: {\n\t update: {\n\t width: {\n\t field: { group: 'width' }\n\t },\n\t height: { field: { parent: 'cellHeight' } },\n\t y: hasRow ? {\n\t scale: model.scaleName(channel_1.ROW),\n\t field: model.field(channel_1.ROW),\n\t offset: model.scale(channel_1.ROW).padding / 2\n\t } : {\n\t value: model.config().facet.scale.padding / 2\n\t }\n\t }\n\t },\n\t }, model.axis(channel_1.Y) ? {\n\t axes: [axis_1.compileAxis(channel_1.Y, model)]\n\t } : {});\n\t}\n\tfunction getRowGridGroups(model) {\n\t var name = model.spec().name;\n\t var facetGridConfig = model.config().facet.grid;\n\t var rowGrid = {\n\t name: (name ? name + '-' : '') + 'row-grid',\n\t type: 'rule',\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{ type: 'facet', groupby: [model.field(channel_1.ROW)] }]\n\t },\n\t properties: {\n\t update: {\n\t y: {\n\t scale: model.scaleName(channel_1.ROW),\n\t field: model.field(channel_1.ROW)\n\t },\n\t x: { value: 0, offset: -facetGridConfig.offset },\n\t x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t };\n\t return [rowGrid, {\n\t name: (name ? name + '-' : '') + 'row-grid-end',\n\t type: 'rule',\n\t properties: {\n\t update: {\n\t y: { field: { group: 'height' } },\n\t x: { value: 0, offset: -facetGridConfig.offset },\n\t x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t }];\n\t}\n\tfunction getColumnGridGroups(model) {\n\t var name = model.spec().name;\n\t var facetGridConfig = model.config().facet.grid;\n\t var columnGrid = {\n\t name: (name ? name + '-' : '') + 'column-grid',\n\t type: 'rule',\n\t from: {\n\t data: model.dataTable(),\n\t transform: [{ type: 'facet', groupby: [model.field(channel_1.COLUMN)] }]\n\t },\n\t properties: {\n\t update: {\n\t x: {\n\t scale: model.scaleName(channel_1.COLUMN),\n\t field: model.field(channel_1.COLUMN)\n\t },\n\t y: { value: 0, offset: -facetGridConfig.offset },\n\t y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t };\n\t return [columnGrid, {\n\t name: (name ? name + '-' : '') + 'column-grid-end',\n\t type: 'rule',\n\t properties: {\n\t update: {\n\t x: { field: { group: 'width' } },\n\t y: { value: 0, offset: -facetGridConfig.offset },\n\t y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n\t stroke: { value: facetGridConfig.color },\n\t strokeOpacity: { value: facetGridConfig.opacity },\n\t strokeWidth: { value: 0.5 }\n\t }\n\t }\n\t }];\n\t}\n\t//# sourceMappingURL=facet.js.map\n\n/***/ },\n/* 194 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar mark_1 = __webpack_require__(183);\n\tvar util_1 = __webpack_require__(165);\n\tvar common_1 = __webpack_require__(186);\n\tvar type_1 = __webpack_require__(172);\n\tvar scale_1 = __webpack_require__(189);\n\tfunction compileLegends(model) {\n\t var defs = [];\n\t if (model.has(channel_1.COLOR) && model.legend(channel_1.COLOR)) {\n\t var fieldDef = model.fieldDef(channel_1.COLOR);\n\t var scale = model.scaleName(useColorLegendScale(fieldDef) ?\n\t scale_1.COLOR_LEGEND :\n\t channel_1.COLOR);\n\t var def = model.config().mark.filled ? { fill: scale } : { stroke: scale };\n\t defs.push(compileLegend(model, channel_1.COLOR, def));\n\t }\n\t if (model.has(channel_1.SIZE) && model.legend(channel_1.SIZE)) {\n\t defs.push(compileLegend(model, channel_1.SIZE, {\n\t size: model.scaleName(channel_1.SIZE)\n\t }));\n\t }\n\t if (model.has(channel_1.SHAPE) && model.legend(channel_1.SHAPE)) {\n\t defs.push(compileLegend(model, channel_1.SHAPE, {\n\t shape: model.scaleName(channel_1.SHAPE)\n\t }));\n\t }\n\t return defs;\n\t}\n\texports.compileLegends = compileLegends;\n\tfunction compileLegend(model, channel, def) {\n\t var fieldDef = model.fieldDef(channel);\n\t var legend = model.legend(channel);\n\t def.title = title(legend, fieldDef);\n\t util_1.extend(def, formatMixins(legend, model, channel));\n\t ['orient', 'values'].forEach(function (property) {\n\t var value = legend[property];\n\t if (value !== undefined) {\n\t def[property] = value;\n\t }\n\t });\n\t var props = (typeof legend !== 'boolean' && legend.properties) || {};\n\t ['title', 'symbols', 'legend', 'labels'].forEach(function (group) {\n\t var value = properties[group] ?\n\t properties[group](fieldDef, props[group], model, channel) :\n\t props[group];\n\t if (value !== undefined) {\n\t def.properties = def.properties || {};\n\t def.properties[group] = value;\n\t }\n\t });\n\t return def;\n\t}\n\texports.compileLegend = compileLegend;\n\tfunction title(legend, fieldDef) {\n\t if (typeof legend !== 'boolean' && legend.title) {\n\t return legend.title;\n\t }\n\t return fielddef_1.title(fieldDef);\n\t}\n\texports.title = title;\n\tfunction formatMixins(legend, model, channel) {\n\t var fieldDef = model.fieldDef(channel);\n\t if (fieldDef.bin) {\n\t return {};\n\t }\n\t return common_1.formatMixins(model, channel, typeof legend !== 'boolean' ? legend.format : undefined);\n\t}\n\texports.formatMixins = formatMixins;\n\tfunction useColorLegendScale(fieldDef) {\n\t return fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit;\n\t}\n\texports.useColorLegendScale = useColorLegendScale;\n\tvar properties;\n\t(function (properties) {\n\t function symbols(fieldDef, symbolsSpec, model, channel) {\n\t var symbols = {};\n\t var mark = model.mark();\n\t switch (mark) {\n\t case mark_1.BAR:\n\t case mark_1.TICK:\n\t case mark_1.TEXT:\n\t symbols.shape = { value: 'square' };\n\t break;\n\t case mark_1.CIRCLE:\n\t case mark_1.SQUARE:\n\t symbols.shape = { value: mark };\n\t break;\n\t case mark_1.POINT:\n\t case mark_1.LINE:\n\t case mark_1.AREA:\n\t break;\n\t }\n\t var filled = model.config().mark.filled;\n\t common_1.applyMarkConfig(symbols, model, util_1.without(common_1.FILL_STROKE_CONFIG, [filled ? 'fill' : 'stroke']));\n\t if (filled) {\n\t symbols.strokeWidth = { value: 0 };\n\t }\n\t var value;\n\t if (model.has(channel_1.COLOR) && channel === channel_1.COLOR) {\n\t if (useColorLegendScale(fieldDef)) {\n\t value = { scale: model.scaleName(channel_1.COLOR), field: 'data' };\n\t }\n\t }\n\t else if (model.fieldDef(channel_1.COLOR).value) {\n\t value = { value: model.fieldDef(channel_1.COLOR).value };\n\t }\n\t if (value !== undefined) {\n\t if (filled) {\n\t symbols.fill = value;\n\t }\n\t else {\n\t symbols.stroke = value;\n\t }\n\t }\n\t else if (channel !== channel_1.COLOR) {\n\t symbols[filled ? 'fill' : 'stroke'] = symbols[filled ? 'fill' : 'stroke'] ||\n\t { value: model.config().mark.color };\n\t }\n\t symbols = util_1.extend(symbols, symbolsSpec || {});\n\t return util_1.keys(symbols).length > 0 ? symbols : undefined;\n\t }\n\t properties.symbols = symbols;\n\t function labels(fieldDef, symbolsSpec, model, channel) {\n\t if (channel === channel_1.COLOR) {\n\t if (fieldDef.type === type_1.ORDINAL) {\n\t return {\n\t text: {\n\t scale: model.scaleName(scale_1.COLOR_LEGEND),\n\t field: 'data'\n\t }\n\t };\n\t }\n\t else if (fieldDef.bin) {\n\t return {\n\t text: {\n\t scale: model.scaleName(scale_1.COLOR_LEGEND_LABEL),\n\t field: 'data'\n\t }\n\t };\n\t }\n\t else if (fieldDef.timeUnit) {\n\t return {\n\t text: {\n\t template: '{{ datum.data | time:\\'' + common_1.timeFormat(model, channel) + '\\'}}'\n\t }\n\t };\n\t }\n\t }\n\t return undefined;\n\t }\n\t properties.labels = labels;\n\t})(properties || (properties = {}));\n\t//# sourceMappingURL=legend.js.map\n\n/***/ },\n/* 195 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar mark_1 = __webpack_require__(183);\n\tvar stack_1 = __webpack_require__(185);\n\tvar util_1 = __webpack_require__(165);\n\tvar area_1 = __webpack_require__(196);\n\tvar bar_1 = __webpack_require__(197);\n\tvar line_1 = __webpack_require__(198);\n\tvar point_1 = __webpack_require__(199);\n\tvar text_1 = __webpack_require__(200);\n\tvar tick_1 = __webpack_require__(201);\n\tvar common_1 = __webpack_require__(186);\n\tvar markCompiler = {\n\t area: area_1.area,\n\t bar: bar_1.bar,\n\t line: line_1.line,\n\t point: point_1.point,\n\t text: text_1.text,\n\t tick: tick_1.tick,\n\t circle: point_1.circle,\n\t square: point_1.square\n\t};\n\tfunction compileMark(model) {\n\t if (util_1.contains([mark_1.LINE, mark_1.AREA], model.mark())) {\n\t return compilePathMark(model);\n\t }\n\t else {\n\t return compileNonPathMark(model);\n\t }\n\t}\n\texports.compileMark = compileMark;\n\tfunction compilePathMark(model) {\n\t var mark = model.mark();\n\t var name = model.spec().name;\n\t var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n\t var dataFrom = { data: model.dataTable() };\n\t var details = detailFields(model);\n\t var pathMarks = [util_1.extend(name ? { name: name + '-marks' } : {}, {\n\t type: markCompiler[mark].markType(),\n\t from: util_1.extend(hasParentData || details.length > 0 ? {} : dataFrom, { transform: [{ type: 'sort', by: sortPathBy(model) }] }),\n\t properties: { update: markCompiler[mark].properties(model) }\n\t })];\n\t if (details.length > 0) {\n\t var facetTransform = { type: 'facet', groupby: details };\n\t var transform = mark === mark_1.AREA && model.stack() ?\n\t [stack_1.imputeTransform(model), stack_1.stackTransform(model), facetTransform] :\n\t [].concat(facetTransform, model.has(channel_1.ORDER) ? [{ type: 'sort', by: sortBy(model) }] : []);\n\t return [{\n\t name: (name ? name + '-' : '') + mark + '-facet',\n\t type: 'group',\n\t from: util_1.extend(hasParentData ? {} : dataFrom, { transform: transform }),\n\t properties: {\n\t update: {\n\t width: { field: { group: 'width' } },\n\t height: { field: { group: 'height' } }\n\t }\n\t },\n\t marks: pathMarks\n\t }];\n\t }\n\t else {\n\t return pathMarks;\n\t }\n\t}\n\tfunction compileNonPathMark(model) {\n\t var mark = model.mark();\n\t var name = model.spec().name;\n\t var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n\t var dataFrom = { data: model.dataTable() };\n\t var marks = [];\n\t if (mark === mark_1.TEXT &&\n\t model.has(channel_1.COLOR) &&\n\t model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n\t marks.push(util_1.extend(name ? { name: name + '-background' } : {}, { type: 'rect' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: text_1.text.background(model) } }));\n\t }\n\t marks.push(util_1.extend(name ? { name: name + '-marks' } : {}, { type: markCompiler[mark].markType() }, (!hasParentData || model.stack() || model.has(channel_1.ORDER)) ? {\n\t from: util_1.extend(hasParentData ? {} : dataFrom, model.stack() ?\n\t { transform: [stack_1.stackTransform(model)] } :\n\t model.has(channel_1.ORDER) ?\n\t { transform: [{ type: 'sort', by: sortBy(model) }] } :\n\t {})\n\t } : {}, { properties: { update: markCompiler[mark].properties(model) } }));\n\t if (model.has(channel_1.LABEL) && markCompiler[mark].labels) {\n\t var labelProperties = markCompiler[mark].labels(model);\n\t if (labelProperties !== undefined) {\n\t marks.push(util_1.extend(name ? { name: name + '-label' } : {}, { type: 'text' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: labelProperties } }));\n\t }\n\t }\n\t return marks;\n\t}\n\tfunction sortBy(model) {\n\t if (model.has(channel_1.ORDER)) {\n\t var channelDef = model.encoding().order;\n\t if (channelDef instanceof Array) {\n\t return channelDef.map(common_1.sortField);\n\t }\n\t else {\n\t return common_1.sortField(channelDef);\n\t }\n\t }\n\t return null;\n\t}\n\tfunction sortPathBy(model) {\n\t if (model.mark() === mark_1.LINE && model.has(channel_1.PATH)) {\n\t var channelDef = model.encoding().path;\n\t if (channelDef instanceof Array) {\n\t return channelDef.map(common_1.sortField);\n\t }\n\t else {\n\t return common_1.sortField(channelDef);\n\t }\n\t }\n\t else {\n\t return '-' + model.field(model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X);\n\t }\n\t}\n\tfunction detailFields(model) {\n\t return [channel_1.COLOR, channel_1.DETAIL, channel_1.SHAPE].reduce(function (details, channel) {\n\t if (model.has(channel) && !model.fieldDef(channel).aggregate) {\n\t details.push(model.field(channel));\n\t }\n\t return details;\n\t }, []);\n\t}\n\t//# sourceMappingURL=mark.js.map\n\n/***/ },\n/* 196 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar common_1 = __webpack_require__(186);\n\tvar area;\n\t(function (area) {\n\t function markType() {\n\t return 'area';\n\t }\n\t area.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t var orient = model.config().mark.orient;\n\t if (orient !== undefined) {\n\t p.orient = { value: orient };\n\t }\n\t var stack = model.stack();\n\t var xFieldDef = model.encoding().x;\n\t if (stack && channel_1.X === stack.fieldChannel) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_start' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(xFieldDef)) {\n\t p.x = { scale: model.scaleName(channel_1.X), field: model.field(channel_1.X) };\n\t }\n\t else if (fielddef_1.isDimension(xFieldDef)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t if (orient === 'horizontal') {\n\t if (stack && channel_1.X === stack.fieldChannel) {\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_end' })\n\t };\n\t }\n\t else {\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t value: 0\n\t };\n\t }\n\t }\n\t var yFieldDef = model.encoding().y;\n\t if (stack && channel_1.Y === stack.fieldChannel) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_start' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(yFieldDef)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t }\n\t else if (fielddef_1.isDimension(yFieldDef)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t if (orient !== 'horizontal') {\n\t if (stack && channel_1.Y === stack.fieldChannel) {\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_end' })\n\t };\n\t }\n\t else {\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t value: 0\n\t };\n\t }\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n\t return p;\n\t }\n\t area.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t area.labels = labels;\n\t})(area = exports.area || (exports.area = {}));\n\t//# sourceMappingURL=area.js.map\n\n/***/ },\n/* 197 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar fielddef_1 = __webpack_require__(174);\n\tvar common_1 = __webpack_require__(186);\n\tvar bar;\n\t(function (bar) {\n\t function markType() {\n\t return 'rect';\n\t }\n\t bar.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t var orient = model.config().mark.orient;\n\t var stack = model.stack();\n\t var xFieldDef = model.encoding().x;\n\t if (stack && channel_1.X === stack.fieldChannel) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_start' })\n\t };\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { suffix: '_end' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(xFieldDef)) {\n\t if (orient === 'horizontal') {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X)\n\t };\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t value: 0\n\t };\n\t }\n\t else {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X)\n\t };\n\t p.width = { value: sizeValue(model, channel_1.X) };\n\t }\n\t }\n\t else if (model.fieldDef(channel_1.X).bin) {\n\t if (model.has(channel_1.SIZE) && orient !== 'horizontal') {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t p.width = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_start' }),\n\t offset: 1\n\t };\n\t p.x2 = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_end' })\n\t };\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.X)) {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X)\n\t };\n\t }\n\t else {\n\t p.x = { value: 0, offset: 2 };\n\t }\n\t p.width = model.has(channel_1.SIZE) && orient !== 'horizontal' ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, (channel_1.X))\n\t };\n\t }\n\t var yFieldDef = model.encoding().y;\n\t if (stack && channel_1.Y === stack.fieldChannel) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_start' })\n\t };\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { suffix: '_end' })\n\t };\n\t }\n\t else if (fielddef_1.isMeasure(yFieldDef)) {\n\t if (orient !== 'horizontal') {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t value: 0\n\t };\n\t }\n\t else {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t p.height = { value: sizeValue(model, channel_1.Y) };\n\t }\n\t }\n\t else if (model.fieldDef(channel_1.Y).bin) {\n\t if (model.has(channel_1.SIZE) && orient === 'horizontal') {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t p.height = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_start' })\n\t };\n\t p.y2 = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_end' }),\n\t offset: 1\n\t };\n\t }\n\t }\n\t else {\n\t if (model.has(channel_1.Y)) {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y)\n\t };\n\t }\n\t else {\n\t p.y2 = {\n\t field: { group: 'height' },\n\t offset: -1\n\t };\n\t }\n\t p.height = model.has(channel_1.SIZE) && orient === 'horizontal' ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, channel_1.Y)\n\t };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t return p;\n\t }\n\t bar.properties = properties;\n\t function sizeValue(model, channel) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t var markConfig = model.config().mark;\n\t if (markConfig.barSize) {\n\t return markConfig.barSize;\n\t }\n\t return model.isOrdinalScale(channel) ?\n\t model.scale(channel).bandSize - 1 :\n\t !model.has(channel) ?\n\t model.config().scale.bandSize - 1 :\n\t markConfig.barThinSize;\n\t }\n\t function labels(model) {\n\t return undefined;\n\t }\n\t bar.labels = labels;\n\t})(bar = exports.bar || (exports.bar = {}));\n\t//# sourceMappingURL=bar.js.map\n\n/***/ },\n/* 198 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar line;\n\t(function (line) {\n\t function markType() {\n\t return 'line';\n\t }\n\t line.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t if (model.has(channel_1.X)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.x = { value: 0 };\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.y = { field: { group: 'height' } };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n\t return p;\n\t }\n\t line.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t line.labels = labels;\n\t})(line = exports.line || (exports.line = {}));\n\t//# sourceMappingURL=line.js.map\n\n/***/ },\n/* 199 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar point;\n\t(function (point) {\n\t function markType() {\n\t return 'symbol';\n\t }\n\t point.markType = markType;\n\t function properties(model, fixedShape) {\n\t var p = {};\n\t if (model.has(channel_1.X)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.x = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.y = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.SIZE)) {\n\t p.size = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.size = { value: sizeValue(model) };\n\t }\n\t if (fixedShape) {\n\t p.shape = { value: fixedShape };\n\t }\n\t else if (model.has(channel_1.SHAPE)) {\n\t p.shape = {\n\t scale: model.scaleName(channel_1.SHAPE),\n\t field: model.field(channel_1.SHAPE)\n\t };\n\t }\n\t else if (model.fieldDef(channel_1.SHAPE).value) {\n\t p.shape = { value: model.fieldDef(channel_1.SHAPE).value };\n\t }\n\t else if (model.config().mark.shape) {\n\t p.shape = { value: model.config().mark.shape };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t return p;\n\t }\n\t point.properties = properties;\n\t function sizeValue(model) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t return model.config().mark.size;\n\t }\n\t function labels(model) {\n\t }\n\t point.labels = labels;\n\t})(point = exports.point || (exports.point = {}));\n\tvar circle;\n\t(function (circle) {\n\t function markType() {\n\t return 'symbol';\n\t }\n\t circle.markType = markType;\n\t function properties(model) {\n\t return point.properties(model, 'circle');\n\t }\n\t circle.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t circle.labels = labels;\n\t})(circle = exports.circle || (exports.circle = {}));\n\tvar square;\n\t(function (square) {\n\t function markType() {\n\t return 'symbol';\n\t }\n\t square.markType = markType;\n\t function properties(model) {\n\t return point.properties(model, 'square');\n\t }\n\t square.properties = properties;\n\t function labels(model) {\n\t return undefined;\n\t }\n\t square.labels = labels;\n\t})(square = exports.square || (exports.square = {}));\n\t//# sourceMappingURL=point.js.map\n\n/***/ },\n/* 200 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar util_1 = __webpack_require__(165);\n\tvar type_1 = __webpack_require__(172);\n\tvar text;\n\t(function (text) {\n\t function markType() {\n\t return 'text';\n\t }\n\t text.markType = markType;\n\t function background(model) {\n\t return {\n\t x: { value: 0 },\n\t y: { value: 0 },\n\t width: { field: { group: 'width' } },\n\t height: { field: { group: 'height' } },\n\t fill: {\n\t scale: model.scaleName(channel_1.COLOR),\n\t field: model.field(channel_1.COLOR, model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n\t }\n\t };\n\t }\n\t text.background = background;\n\t function properties(model) {\n\t var p = {};\n\t common_1.applyMarkConfig(p, model, ['angle', 'align', 'baseline', 'dx', 'dy', 'font', 'fontWeight',\n\t 'fontStyle', 'radius', 'theta', 'text']);\n\t var fieldDef = model.fieldDef(channel_1.TEXT);\n\t if (model.has(channel_1.X)) {\n\t p.x = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t if (model.has(channel_1.TEXT) && model.fieldDef(channel_1.TEXT).type === type_1.QUANTITATIVE) {\n\t p.x = { field: { group: 'width' }, offset: -5 };\n\t }\n\t else {\n\t p.x = { value: model.config().scale.textBandWidth / 2 };\n\t }\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.y = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.y = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.SIZE)) {\n\t p.fontSize = {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t };\n\t }\n\t else {\n\t p.fontSize = { value: sizeValue(model) };\n\t }\n\t if (model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n\t p.fill = { value: 'black' };\n\t var opacity = model.config().mark.opacity;\n\t if (opacity) {\n\t p.opacity = { value: opacity };\n\t }\n\t ;\n\t }\n\t else {\n\t common_1.applyColorAndOpacity(p, model);\n\t }\n\t if (model.has(channel_1.TEXT)) {\n\t if (util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], model.fieldDef(channel_1.TEXT).type)) {\n\t var format = model.config().mark.format;\n\t util_1.extend(p, common_1.formatMixins(model, channel_1.TEXT, format));\n\t }\n\t else {\n\t p.text = { field: model.field(channel_1.TEXT) };\n\t }\n\t }\n\t else if (fieldDef.value) {\n\t p.text = { value: fieldDef.value };\n\t }\n\t return p;\n\t }\n\t text.properties = properties;\n\t function sizeValue(model) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t return model.config().mark.fontSize;\n\t }\n\t})(text = exports.text || (exports.text = {}));\n\t//# sourceMappingURL=text.js.map\n\n/***/ },\n/* 201 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar common_1 = __webpack_require__(186);\n\tvar tick;\n\t(function (tick) {\n\t function markType() {\n\t return 'rect';\n\t }\n\t tick.markType = markType;\n\t function properties(model) {\n\t var p = {};\n\t if (model.has(channel_1.X)) {\n\t p.xc = {\n\t scale: model.scaleName(channel_1.X),\n\t field: model.field(channel_1.X, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.xc = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.has(channel_1.Y)) {\n\t p.yc = {\n\t scale: model.scaleName(channel_1.Y),\n\t field: model.field(channel_1.Y, { binSuffix: '_mid' })\n\t };\n\t }\n\t else {\n\t p.yc = { value: model.config().scale.bandSize / 2 };\n\t }\n\t if (model.config().mark.orient === 'horizontal') {\n\t p.width = { value: model.config().mark.tickThickness };\n\t p.height = model.has(channel_1.SIZE) ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, channel_1.Y)\n\t };\n\t }\n\t else {\n\t p.width = model.has(channel_1.SIZE) ? {\n\t scale: model.scaleName(channel_1.SIZE),\n\t field: model.field(channel_1.SIZE)\n\t } : {\n\t value: sizeValue(model, channel_1.X)\n\t };\n\t p.height = { value: model.config().mark.tickThickness };\n\t }\n\t common_1.applyColorAndOpacity(p, model);\n\t return p;\n\t }\n\t tick.properties = properties;\n\t function sizeValue(model, channel) {\n\t var fieldDef = model.fieldDef(channel_1.SIZE);\n\t if (fieldDef && fieldDef.value !== undefined) {\n\t return fieldDef.value;\n\t }\n\t var scaleConfig = model.config().scale;\n\t var markConfig = model.config().mark;\n\t if (markConfig.tickSize) {\n\t return markConfig.tickSize;\n\t }\n\t var bandSize = model.has(channel) ?\n\t model.scale(channel).bandSize :\n\t scaleConfig.bandSize;\n\t return bandSize / 1.5;\n\t }\n\t function labels(model) {\n\t return undefined;\n\t }\n\t tick.labels = labels;\n\t})(tick = exports.tick || (exports.tick = {}));\n\t//# sourceMappingURL=tick.js.map\n\n/***/ },\n/* 202 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar aggregate_1 = __webpack_require__(175);\n\tvar timeunit_1 = __webpack_require__(176);\n\tvar type_1 = __webpack_require__(172);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar mark_1 = __webpack_require__(183);\n\texports.DELIM = '|';\n\texports.ASSIGN = '=';\n\texports.TYPE = ',';\n\texports.FUNC = '_';\n\tfunction shorten(spec) {\n\t return 'mark' + exports.ASSIGN + spec.mark +\n\t exports.DELIM + shortenEncoding(spec.encoding);\n\t}\n\texports.shorten = shorten;\n\tfunction parse(shorthand, data, config) {\n\t var split = shorthand.split(exports.DELIM), mark = split.shift().split(exports.ASSIGN)[1].trim(), encoding = parseEncoding(split.join(exports.DELIM));\n\t var spec = {\n\t mark: mark_1.Mark[mark],\n\t encoding: encoding\n\t };\n\t if (data !== undefined) {\n\t spec.data = data;\n\t }\n\t if (config !== undefined) {\n\t spec.config = config;\n\t }\n\t return spec;\n\t}\n\texports.parse = parse;\n\tfunction shortenEncoding(encoding) {\n\t return vlEncoding.map(encoding, function (fieldDef, channel) {\n\t return channel + exports.ASSIGN + shortenFieldDef(fieldDef);\n\t }).join(exports.DELIM);\n\t}\n\texports.shortenEncoding = shortenEncoding;\n\tfunction parseEncoding(encodingShorthand) {\n\t return encodingShorthand.split(exports.DELIM).reduce(function (m, e) {\n\t var split = e.split(exports.ASSIGN), enctype = split[0].trim(), fieldDefShorthand = split[1];\n\t m[enctype] = parseFieldDef(fieldDefShorthand);\n\t return m;\n\t }, {});\n\t}\n\texports.parseEncoding = parseEncoding;\n\tfunction shortenFieldDef(fieldDef) {\n\t return (fieldDef.aggregate ? fieldDef.aggregate + exports.FUNC : '') +\n\t (fieldDef.timeUnit ? fieldDef.timeUnit + exports.FUNC : '') +\n\t (fieldDef.bin ? 'bin' + exports.FUNC : '') +\n\t (fieldDef.field || '') + exports.TYPE + type_1.SHORT_TYPE[fieldDef.type];\n\t}\n\texports.shortenFieldDef = shortenFieldDef;\n\tfunction shortenFieldDefs(fieldDefs, delim) {\n\t if (delim === void 0) { delim = exports.DELIM; }\n\t return fieldDefs.map(shortenFieldDef).join(delim);\n\t}\n\texports.shortenFieldDefs = shortenFieldDefs;\n\tfunction parseFieldDef(fieldDefShorthand) {\n\t var split = fieldDefShorthand.split(exports.TYPE);\n\t var fieldDef = {\n\t field: split[0].trim(),\n\t type: type_1.TYPE_FROM_SHORT_TYPE[split[1].trim()]\n\t };\n\t for (var i = 0; i < aggregate_1.AGGREGATE_OPS.length; i++) {\n\t var a = aggregate_1.AGGREGATE_OPS[i];\n\t if (fieldDef.field.indexOf(a + '_') === 0) {\n\t fieldDef.field = fieldDef.field.substr(a.toString().length + 1);\n\t if (a === aggregate_1.AggregateOp.COUNT && fieldDef.field.length === 0) {\n\t fieldDef.field = '*';\n\t }\n\t fieldDef.aggregate = a;\n\t break;\n\t }\n\t }\n\t for (var i = 0; i < timeunit_1.TIMEUNITS.length; i++) {\n\t var tu = timeunit_1.TIMEUNITS[i];\n\t if (fieldDef.field && fieldDef.field.indexOf(tu + '_') === 0) {\n\t fieldDef.field = fieldDef.field.substr(fieldDef.field.length + 1);\n\t fieldDef.timeUnit = tu;\n\t break;\n\t }\n\t }\n\t if (fieldDef.field && fieldDef.field.indexOf('bin_') === 0) {\n\t fieldDef.field = fieldDef.field.substr(4);\n\t fieldDef.bin = true;\n\t }\n\t return fieldDef;\n\t}\n\texports.parseFieldDef = parseFieldDef;\n\t//# sourceMappingURL=shorthand.js.map\n\n/***/ },\n/* 203 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar channel_1 = __webpack_require__(164);\n\tvar vlEncoding = __webpack_require__(173);\n\tvar mark_1 = __webpack_require__(183);\n\tvar util_1 = __webpack_require__(165);\n\tfunction alwaysNoOcclusion(spec) {\n\t return vlEncoding.isAggregate(spec.encoding);\n\t}\n\texports.alwaysNoOcclusion = alwaysNoOcclusion;\n\tfunction fieldDefs(spec) {\n\t return vlEncoding.fieldDefs(spec.encoding);\n\t}\n\texports.fieldDefs = fieldDefs;\n\t;\n\tfunction getCleanSpec(spec) {\n\t return spec;\n\t}\n\texports.getCleanSpec = getCleanSpec;\n\tfunction isStack(spec) {\n\t return (vlEncoding.has(spec.encoding, channel_1.COLOR) || vlEncoding.has(spec.encoding, channel_1.SHAPE)) &&\n\t (spec.mark === mark_1.BAR || spec.mark === mark_1.AREA) &&\n\t (!spec.config || !spec.config.mark.stacked !== false) &&\n\t vlEncoding.isAggregate(spec.encoding);\n\t}\n\texports.isStack = isStack;\n\tfunction transpose(spec) {\n\t var oldenc = spec.encoding;\n\t var encoding = util_1.duplicate(spec.encoding);\n\t encoding.x = oldenc.y;\n\t encoding.y = oldenc.x;\n\t encoding.row = oldenc.column;\n\t encoding.column = oldenc.row;\n\t spec.encoding = encoding;\n\t return spec;\n\t}\n\texports.transpose = transpose;\n\t//# sourceMappingURL=spec.js.map\n\n/***/ },\n/* 204 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar util_1 = __webpack_require__(165);\n\tvar mark_1 = __webpack_require__(183);\n\texports.DEFAULT_REQUIRED_CHANNEL_MAP = {\n\t text: ['text'],\n\t line: ['x', 'y'],\n\t area: ['x', 'y']\n\t};\n\texports.DEFAULT_SUPPORTED_CHANNEL_TYPE = {\n\t bar: util_1.toMap(['row', 'column', 'x', 'y', 'size', 'color', 'detail']),\n\t line: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n\t area: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n\t tick: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n\t circle: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n\t square: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n\t point: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail', 'shape']),\n\t text: util_1.toMap(['row', 'column', 'size', 'color', 'text'])\n\t};\n\tfunction getEncodingMappingError(spec, requiredChannelMap, supportedChannelMap) {\n\t if (requiredChannelMap === void 0) { requiredChannelMap = exports.DEFAULT_REQUIRED_CHANNEL_MAP; }\n\t if (supportedChannelMap === void 0) { supportedChannelMap = exports.DEFAULT_SUPPORTED_CHANNEL_TYPE; }\n\t var mark = spec.mark;\n\t var encoding = spec.encoding;\n\t var requiredChannels = requiredChannelMap[mark];\n\t var supportedChannels = supportedChannelMap[mark];\n\t for (var i in requiredChannels) {\n\t if (!(requiredChannels[i] in encoding)) {\n\t return 'Missing encoding channel \\\"' + requiredChannels[i] +\n\t '\\\" for mark \\\"' + mark + '\\\"';\n\t }\n\t }\n\t for (var channel in encoding) {\n\t if (!supportedChannels[channel]) {\n\t return 'Encoding channel \\\"' + channel +\n\t '\\\" is not supported by mark type \\\"' + mark + '\\\"';\n\t }\n\t }\n\t if (mark === mark_1.BAR && !encoding.x && !encoding.y) {\n\t return 'Missing both x and y for bar';\n\t }\n\t return null;\n\t}\n\texports.getEncodingMappingError = getEncodingMappingError;\n\t//# sourceMappingURL=validate.js.map\n\n/***/ },\n/* 205 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar d3 = __webpack_require__(2),\n\t $ = __webpack_require__(3).util.mutator;\n\t\n\tmodule.exports = {\n\t init: function(el, param, spec) {\n\t return (rewrite(param, spec), handle(el, param));\n\t },\n\t bind: function(param, view) {\n\t param.dom.forEach(function(el) { el.__vega__ = view; });\n\t view.onSignal(param.dom[0].name, function(k, v) { param.set(v); });\n\t }\n\t};\n\t\n\t// spec re-write\n\t\n\tfunction rewrite(param, spec) {\n\t // add signal to top-level if not defined\n\t var sg = spec.signals || (spec.signals = []);\n\t for (var i=0; i>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return i;\n }\n }\n return -1;\n };\n}\n\nfunction javascriptIndex(selector, outputs) {\n // Return the index in the output array of the JS repr of this viz\n var index = outputs.findIndex(function(item, index, array) {\n if (item['metadata']['jupyter-vega']===selector &&\n item['data']['application/javascript']!==undefined) {\n return true;\n } else {\n return false;\n }\n });\n return index;\n}\n\nfunction imageIndex(selector, outputs) {\n // Return the index in the output array of the PNG repr of this viz\n var index = outputs.findIndex(function(item, index, array) {\n if (item['metadata']['jupyter-vega']===selector &&\n item['data']['image/png']!==undefined) {\n return true;\n } else {\n return false;\n }\n });\n return index;\n}\n\nfunction render(selector, spec, type, output_area) {\n if (type) {\n var embedSpec = {\n mode: type,\n spec: spec\n }\n\n // Find the indices of this visualizations JS and PNG\n // representation.\n var imgIndex = imageIndex(selector, output_area.outputs);\n var jsIndex = javascriptIndex(selector, output_area.outputs);\n \n // If we have already rendered a static image, don't render\n // the JS version or append a new PNG version\n if (imgIndex>-1 && jsIndex>-1 && imgIndex===(jsIndex+1)) {\n return;\n }\n\n // Never been rendered, so render JS and append the PNG to the \n // outputs for the cell\n var el = $.find(selector);\n embed(el[0], embedSpec, function(error, result) {\n var imageData = result.view.toImageURL();\n if (output_area!==undefined) {\n var output = {\n data: {\n \"image/png\": imageData.split(\",\")[1]\n },\n metadata: {'jupyter-vega': selector},\n output_type: \"display_data\"\n };\n // This appends the PNG output, but doesn't render it this time\n // as the JS version will be rendered already.\n output_area.outputs.push(output);\n }\n });\n }\n}\n\nexports.render = render;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/index.js\n ** module id = 0\n ** module chunks = 0\n **/","var d3 = require('d3'),\n vg = require('vega'),\n vl = require('vega-lite'),\n parameter = require('./parameter'),\n post = require('./post');\n\nvar config = {\n // URL for loading specs into editor\n editor_url: 'http://vega.github.io/vega-editor/',\n\n // HTML to inject within view source head element\n source_header: '',\n\n // HTML to inject before view source closing body tag\n source_footer: ''\n};\n\nvar MODES = {\n 'vega': 'vega',\n 'vega-lite': 'vega-lite'\n};\n\nvar PREPROCESSOR = {\n 'vega': function(vgjson) { return vgjson; },\n 'vega-lite': function(vljson) { return vl.compile(vljson).spec; }\n};\n\nfunction load(url, arg, el, callback) {\n vg.util.load({url: url}, function(err, data) {\n if (err || !data) {\n console.error(err || ('No data found at ' + url));\n } else {\n // marshal embedding spec and restart\n var opt = !arg ? JSON.parse(data) : vg.util.extend({source: data}, arg);\n embed(el, opt, callback);\n }\n });\n}\n\n// Embed a Vega visualization component in a web page.\n// el: DOM element in which to place component (DOM node or CSS selector)\n// opt: Embedding specification (parsed JSON or URL string)\n// callback: invoked with the generated Vega View instance\nfunction embed(el, opt, callback) {\n var cb = callback || function(){},\n params = [], source, spec, mode;\n\n try {\n if (vg.util.isString(opt)) {\n return load(opt, null, el, callback);\n } else if (opt.source) {\n source = opt.source;\n spec = JSON.parse(source);\n } else if (opt.spec) {\n spec = opt.spec;\n source = JSON.stringify(spec, null, 2);\n } else if (opt.url) {\n return load(opt.url, opt, el, callback);\n } else {\n spec = opt;\n source = JSON.stringify(spec, null, 2);\n opt = {spec: spec, actions: false};\n }\n mode = MODES[opt.mode] || MODES.vega;\n spec = PREPROCESSOR[mode](spec);\n\n // ensure container div has class 'vega-embed'\n var div = d3.select(el)\n .classed('vega-embed', true)\n .html(''); // clear container\n\n // handle parameters\n if (opt.parameters) {\n var elp = opt.parameter_el ? d3.select(opt.parameter_el) : div;\n var pdiv = elp.append('div')\n .attr('class', 'vega-params');\n params = opt.parameters.map(function(p) {\n return parameter.init(pdiv, p, spec);\n });\n }\n } catch (err) { cb(err); }\n\n vg.parse.spec(spec, function(error, chart) {\n if (error) { cb(error); return; }\n try {\n var renderer = opt.renderer || 'canvas',\n actions = opt.actions || {};\n\n var view = chart({\n el: el,\n data: opt.data || undefined,\n renderer: renderer\n });\n\n if (opt.actions !== false) {\n // add child div to house action links\n var ctrl = div.append('div')\n .attr('class', 'vega-actions');\n\n // add 'Export' action\n if (actions.export !== false) {\n var ext = (renderer==='canvas' ? 'png' : 'svg');\n ctrl.append('a')\n .text('Export as ' + ext.toUpperCase())\n .attr('href', '#')\n .attr('target', '_blank')\n .attr('download', (spec.name || 'vega') + '.' + ext)\n .on('mousedown', function() {\n this.href = view.toImageURL(ext);\n d3.event.preventDefault();\n });\n }\n\n // add 'View Source' action\n if (actions.source !== false) {\n ctrl.append('a')\n .text('View Source')\n .attr('href', '#')\n .on('click', function() {\n viewSource(source);\n d3.event.preventDefault();\n });\n }\n\n // add 'Open in Vega Editor' action\n if (actions.editor !== false) {\n ctrl.append('a')\n .text('Open in Vega Editor')\n .attr('href', '#')\n .on('click', function() {\n post(window, embed.config.editor_url, {spec: source, mode: mode});\n d3.event.preventDefault();\n });\n }\n }\n\n // bind all parameter elements\n params.forEach(function(p) { parameter.bind(p, view); });\n\n // initialize and return visualization\n view.update();\n cb(null, {view: view, spec: spec});\n } catch (err) { cb(err); }\n });\n}\n\nfunction viewSource(source) {\n var header = '' + config.source_header + '' + '
';\n  var footer = '
' + config.source_footer + '';\n var win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = 'Vega JSON Source';\n}\n\n// make config externally visible\nembed.config = config;\n\nmodule.exports = embed;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-embed/src/embed.js\n ** module id = 1\n ** module chunks = 0\n **/","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ 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 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/d3/d3.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = {\n version: '__VERSION__',\n dataflow: require('vega-dataflow'),\n parse: require('./src/parse/'),\n scene: {\n Bounder: require('./src/scene/Bounder'),\n Builder: require('./src/scene/Builder'),\n Encoder: require('./src/scene/Encoder'),\n GroupBuilder: require('./src/scene/GroupBuilder'),\n visit: require('./src/scene/visit')\n },\n transforms: require('./src/transforms'),\n Transform: require('./src/transforms/Transform'),\n BatchTransform: require('./src/transforms/BatchTransform'),\n Parameter: require('./src/transforms/Parameter'),\n schema: require('./src/core/schema'),\n config: require('./src/core/config'),\n util: require('./src/util'),\n logging: require('vega-logging'),\n debug: require('vega-logging').debug\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/index.js\n ** module id = 3\n ** module chunks = 0\n **/","module.exports = {\n ChangeSet: require('./ChangeSet'),\n Collector: require('./Collector'),\n DataSource: require('./DataSource'),\n Dependencies: require('./Dependencies'),\n Graph: require('./Graph'),\n Node: require('./Node'),\n Signal: require('./Signal'),\n Tuple: require('./Tuple'),\n debug: require('vega-logging').debug\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/index.js\n ** module id = 4\n ** module chunks = 0\n **/","var DEPS = require('./Dependencies').ALL;\n\nfunction create(cs, reflow) {\n var out = {};\n copy(cs, out);\n\n out.add = [];\n out.mod = [];\n out.rem = [];\n\n out.reflow = reflow;\n\n return out;\n}\n\nfunction copy(a, b) {\n b.stamp = a ? a.stamp : 0;\n b.sort = a ? a.sort : null;\n b.facet = a ? a.facet : null;\n b.trans = a ? a.trans : null;\n b.dirty = a ? a.dirty : [];\n b.request = a ? a.request : null;\n for (var d, i=0, n=DEPS.length; i0;) {\n idMap(arguments[i], ids);\n }\n return data.filter(function(x) { return !ids[x._id]; });\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Tuple.js\n ** module id = 9\n ** module chunks = 0\n **/","var DEPS = require('./Dependencies').ALL,\n nodeID = 0;\n\nfunction Node(graph) {\n if (graph) this.init(graph);\n}\n\nvar Flags = Node.Flags = {\n Router: 0x01, // Responsible for propagating tuples, cannot be skipped.\n Collector: 0x02, // Holds a materialized dataset, pulse node to reflow.\n Produces: 0x04, // Produces new tuples. \n Mutates: 0x08, // Sets properties of incoming tuples.\n Reflows: 0x10, // Forwards a reflow pulse.\n Batch: 0x20 // Performs batch data processing, needs collector.\n};\n\nvar prototype = Node.prototype;\n\nprototype.init = function(graph) {\n this._id = ++nodeID;\n this._graph = graph;\n this._rank = graph.rank(); // Topological sort by rank\n this._qrank = null; // Rank when enqueued for propagation\n this._stamp = 0; // Last stamp seen\n\n this._listeners = [];\n this._listeners._ids = {}; // To prevent duplicate listeners\n\n // Initialize dependencies.\n this._deps = {};\n for (var i=0, n=DEPS.length; i l._rank) {\n l.rerank();\n }\n\n return this;\n};\n\nprototype.removeListener = function(l) {\n if (!this._listeners._ids[l._id]) return false;\n \n var idx = this._listeners.indexOf(l),\n b = idx >= 0;\n\n if (b) {\n this._listeners.splice(idx, 1);\n this._listeners._ids[l._id] = null;\n }\n return b;\n};\n\nprototype.disconnect = function() {\n this._listeners = [];\n this._listeners._ids = {};\n};\n\n// Evaluate this dataflow node for the current pulse.\n// Subclasses should override to perform custom processing.\nprototype.evaluate = function(pulse) {\n return pulse;\n};\n\n// Should this node be re-evaluated for the current pulse?\n// Searches pulse to see if any dependencies have updated.\nprototype.reevaluate = function(pulse) {\n var prop, dep, i, n, j, m;\n\n for (i=0, n=DEPS.length; i 1 ?\n function(x, v) {\n for (var i=0; i y) return sign[i];\n }\n return 0;\n };\n};\n\nu.cmp = function(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else if (a >= b) {\n return 0;\n } else if (a === null) {\n return -1;\n } else if (b === null) {\n return 1;\n }\n return NaN;\n};\n\nu.numcmp = function(a, b) { return a - b; };\n\nu.stablesort = function(array, sortBy, keyFn) {\n var indices = array.reduce(function(idx, v, i) {\n return (idx[keyFn(v)] = i, idx);\n }, {});\n\n array.sort(function(a, b) {\n var sa = sortBy(a),\n sb = sortBy(b);\n return sa < sb ? -1 : sa > sb ? 1\n : (indices[keyFn(a)] - indices[keyFn(b)]);\n });\n\n return array;\n};\n\n\n// string functions\n\nu.pad = function(s, length, pos, padchar) {\n padchar = padchar || \" \";\n var d = length - s.length;\n if (d <= 0) return s;\n switch (pos) {\n case 'left':\n return strrep(d, padchar) + s;\n case 'middle':\n case 'center':\n return strrep(Math.floor(d/2), padchar) +\n s + strrep(Math.ceil(d/2), padchar);\n default:\n return s + strrep(d, padchar);\n }\n};\n\nfunction strrep(n, str) {\n var s = \"\", i;\n for (i=0; i \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n * on objects.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\nfunction typedArraySupport () {\n function Bar () {}\n try {\n var arr = new Uint8Array(1)\n arr.foo = function () { return 42 }\n arr.constructor = Bar\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Bar && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n this.length = 0\n this.parent = undefined\n }\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined') {\n if (object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n if (object instanceof ArrayBuffer) {\n return fromArrayBuffer(that, object)\n }\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n array.byteLength\n that = Buffer._augment(new Uint8Array(array))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromTypedArray(that, new Uint8Array(array))\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n} else {\n // pre-set for values that may exist in the future\n Buffer.prototype.length = undefined\n Buffer.prototype.parent = undefined\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` is deprecated\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` is deprecated\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; i--) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/index.js\n ** module id = 14\n ** module chunks = 0\n **/","var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/base64-js/lib/b64.js\n ** module id = 15\n ** module chunks = 0\n **/","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js\n ** module id = 16\n ** module chunks = 0\n **/","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/isarray/index.js\n ** module id = 17\n ** module chunks = 0\n **/","var util = require('../util');\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n// Validate and cleanup URL to ensure that it is allowed to be accessed\n// Returns cleaned up URL, or false if access is not allowed\nfunction sanitizeUrl(opt) {\n var url = opt.url;\n if (!url && opt.file) { return fileProtocol + opt.file; }\n\n // In case this is a relative url (has no host), prepend opt.baseURL\n if (opt.baseURL && !protocol_re.test(url)) {\n if (!startsWith(url, '/') && opt.baseURL[opt.baseURL.length-1] !== '/') {\n url = '/' + url; // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n }\n url = opt.baseURL + url;\n }\n // relative protocol, starts with '//'\n if (!load.useXHR && startsWith(url, '//')) {\n url = (opt.defaultProtocol || 'http') + ':' + url;\n }\n // If opt.domainWhiteList is set, only allows url, whose hostname\n // * Is the same as the origin (window.location.hostname)\n // * Equals one of the values in the whitelist\n // * Is a proper subdomain of one of the values in the whitelist\n if (opt.domainWhiteList) {\n var domain, origin;\n if (load.useXHR) {\n var a = document.createElement('a');\n a.href = url;\n // From http://stackoverflow.com/questions/736513/how-do-i-parse-a-url-into-hostname-and-path-in-javascript\n // IE doesn't populate all link properties when setting .href with a relative URL,\n // however .href will return an absolute URL which then can be used on itself\n // to populate these additional fields.\n if (a.host === '') {\n a.href = a.href;\n }\n domain = a.hostname.toLowerCase();\n origin = window.location.hostname;\n } else {\n // relative protocol is broken: https://github.com/defunctzombie/node-url/issues/5\n var parts = require('url').parse(url);\n domain = parts.hostname;\n origin = null;\n }\n\n if (origin !== domain) {\n var whiteListed = opt.domainWhiteList.some(function(d) {\n var idx = domain.length - d.length;\n return d === domain ||\n (idx > 1 && domain[idx-1] === '.' && domain.lastIndexOf(d) === idx);\n });\n if (!whiteListed) {\n throw 'URL is not whitelisted: ' + url;\n }\n }\n }\n return url;\n}\n\nfunction load(opt, callback) {\n return load.loader(opt, callback);\n}\n\nfunction loader(opt, callback) {\n var error = callback || function(e) { throw e; }, url;\n\n try {\n url = load.sanitizeUrl(opt); // enable override\n } catch (err) {\n error(err);\n return;\n }\n\n if (!url) {\n error('Invalid URL: ' + opt.url);\n } else if (load.useXHR) {\n // on client, use xhr\n return load.xhr(url, opt, callback);\n } else if (startsWith(url, fileProtocol)) {\n // on server, if url starts with 'file://', strip it and load from file\n return load.file(url.slice(fileProtocol.length), opt, callback);\n } else if (url.indexOf('://') < 0) { // TODO better protocol check?\n // on server, if no protocol assume file\n return load.file(url, opt, callback);\n } else {\n // for regular URLs on server\n return load.http(url, opt, callback);\n }\n}\n\nfunction xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== 'text' ?\n request.response : // null on error\n request.responseText; // '' on error\n}\n\nfunction xhr(url, opt, callback) {\n var async = !!callback;\n var request = new XMLHttpRequest();\n // If IE does not support CORS, use XDomainRequest (copied from d3.xhr)\n if (typeof XDomainRequest !== 'undefined' &&\n !('withCredentials' in request) &&\n /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n\n function respond() {\n var status = request.status;\n if (!status && xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n callback(null, request.responseText);\n } else {\n callback(request, null);\n }\n }\n\n if (async) {\n if ('onload' in request) {\n request.onload = request.onerror = respond;\n } else {\n request.onreadystatechange = function() {\n if (request.readyState > 3) respond();\n };\n }\n }\n\n request.open('GET', url, async);\n /* istanbul ignore else */\n if (request.setRequestHeader) {\n var headers = util.extend({}, load.headers, opt.headers);\n for (var name in headers) {\n request.setRequestHeader(name, headers[name]);\n }\n }\n request.send();\n\n if (!async && xhrHasResponse(request)) {\n return request.responseText;\n }\n}\n\nfunction file(filename, opt, callback) {\n var fs = require('fs');\n if (!callback) {\n return fs.readFileSync(filename, 'utf8');\n }\n fs.readFile(filename, callback);\n}\n\nfunction http(url, opt, callback) {\n var headers = util.extend({}, load.headers, opt.headers);\n\n if (!callback) {\n return require('sync-request')('GET', url, {headers: headers}).getBody();\n }\n\n var options = {url: url, encoding: null, gzip: true, headers: headers};\n require('request')(options, function(error, response, body) {\n if (!error && response.statusCode === 200) {\n callback(null, body);\n } else {\n error = error ||\n 'Load failed with response code ' + response.statusCode + '.';\n callback(error, null);\n }\n });\n}\n\nfunction startsWith(string, searchString) {\n return string == null ? false : string.lastIndexOf(searchString, 0) === 0;\n}\n\n// Allow these functions to be overriden by the user of the library\nload.loader = loader;\nload.sanitizeUrl = sanitizeUrl;\nload.xhr = xhr;\nload.file = file;\nload.http = http;\n\n// Default settings\nload.useXHR = (typeof XMLHttpRequest !== 'undefined');\nload.headers = {};\n\nmodule.exports = load;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/load.js\n ** module id = 18\n ** module chunks = 0\n **/","var util = require('../util'),\n type = require('./type'),\n formats = require('./formats'),\n timeF = require('../format').time;\n\nfunction read(data, format) {\n var type = (format && format.type) || 'json';\n data = formats[type](data, format);\n if (format && format.parse) parse(data, format.parse);\n return data;\n}\n\nfunction parse(data, types) {\n var cols, parsers, d, i, j, clen, len = data.length;\n\n types = (types==='auto') ? type.inferAll(data) : util.duplicate(types);\n cols = util.keys(types);\n parsers = cols.map(function(c) {\n var t = types[c];\n if (t && t.indexOf('date:') === 0) {\n var parts = t.split(':', 2),\n pattern = parts[1];\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n } else {\n throw Error('Format pattern must be quoted: ' + pattern);\n }\n pattern = timeF(pattern);\n return function(v) { return pattern.parse(v); };\n }\n if (!type.parsers[t]) {\n throw Error('Illegal format pattern: ' + c + ':' + t);\n }\n return type.parsers[t];\n });\n\n for (i=0, clen=cols.length; i= N) return EOF; // special case: end of file\n if (eol) return eol = false, EOL; // special case: end of line\n\n // special case: quotes\n var j = I, c;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, \"\\\"\");\n }\n\n // common case: find next delimiter or newline\n while (I < N) {\n var k = 1;\n c = text.charCodeAt(I++);\n if (c === 10) eol = true; // \\n\n else if (c === 13) { eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } // \\r|\\r\\n\n else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n\n // special case: last token before EOF\n return text.slice(j);\n }\n\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n\n return rows;\n }\n\n this.format = function(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n\n this.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return reFormat.test(text) ? \"\\\"\" + text.replace(/\\\"/g, \"\\\"\\\"\") + \"\\\"\" : text;\n }\n }\n\n dsv.prototype = Dsv.prototype;\n\n var csv = dsv(\",\");\n var tsv = dsv(\"\\t\");\n\n var version = \"0.1.14\";\n\n exports.version = version;\n exports.dsv = dsv;\n exports.csv = csv;\n exports.tsv = tsv;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-dsv/build/d3-dsv.js\n ** module id = 27\n ** module chunks = 0\n **/","var util = require('../../util');\n\nmodule.exports = function(data, format) {\n var d = util.isObject(data) && !util.isBuffer(data) ?\n data : JSON.parse(data);\n if (format && format.property) {\n d = util.accessor(format.property)(d);\n }\n return d;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/formats/json.js\n ** module id = 28\n ** module chunks = 0\n **/","var json = require('./json');\n\nvar reader = function(data, format) {\n var topojson = reader.topojson;\n if (topojson == null) { throw Error('TopoJSON library not loaded.'); }\n\n var t = json(data, format), obj;\n\n if (format && format.feature) {\n if ((obj = t.objects[format.feature])) {\n return topojson.feature(t, obj).features;\n } else {\n throw Error('Invalid TopoJSON object: ' + format.feature);\n }\n } else if (format && format.mesh) {\n if ((obj = t.objects[format.mesh])) {\n return [topojson.mesh(t, t.objects[format.mesh])];\n } else {\n throw Error('Invalid TopoJSON object: ' + format.mesh);\n }\n } else {\n throw Error('Missing TopoJSON feature or mesh parameter.');\n }\n};\n\nreader.topojson = require('topojson');\nmodule.exports = reader;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/formats/topojson.js\n ** module id = 29\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.topojson = global.topojson || {})));\n}(this, function (exports) { 'use strict';\n\n function noop() {}\n\n function transformAbsolute(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n point[0] = (x0 += point[0]) * kx + dx;\n point[1] = (y0 += point[1]) * ky + dy;\n };\n }\n\n function transformRelative(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n var x1 = Math.round((point[0] - dx) / kx),\n y1 = Math.round((point[1] - dy) / ky);\n point[0] = x1 - x0;\n point[1] = y1 - y0;\n x0 = x1;\n y0 = y1;\n };\n }\n\n function reverse(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n }\n\n function bisect(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function feature(topology, o) {\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function(o) { return feature$1(topology, o); })\n } : feature$1(topology, o);\n }\n\n function feature$1(topology, o) {\n var f = {\n type: \"Feature\",\n id: o.id,\n properties: o.properties || {},\n geometry: object(topology, o)\n };\n if (o.id == null) delete f.id;\n return f;\n }\n\n function object(topology, o) {\n var absolute = transformAbsolute(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n points.push(p = a[k].slice());\n absolute(p, k);\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n p = p.slice();\n absolute(p, 0);\n return p;\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0].slice());\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0].slice());\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var t = o.type;\n return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n : null;\n }\n\n var geometryType = {\n Point: function(o) { return point(o.coordinates); },\n MultiPoint: function(o) { return o.coordinates.map(point); },\n LineString: function(o) { return line(o.arcs); },\n MultiLineString: function(o) { return o.arcs.map(line); },\n Polygon: function(o) { return polygon(o.arcs); },\n MultiPolygon: function(o) { return o.arcs.map(polygon); }\n };\n\n return geometry(o);\n }\n\n function stitchArcs(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n }\n\n function mesh(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n }\n\n function meshArcs(topology, o, filter) {\n var arcs = [];\n\n function arc(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function line(arcs) {\n arcs.forEach(arc);\n }\n\n function polygon(arcs) {\n arcs.forEach(line);\n }\n\n function geometry(o) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n }\n\n if (arguments.length > 1) {\n var geomsByArc = [],\n geom;\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n };\n\n geometry(o);\n\n geomsByArc.forEach(arguments.length < 3\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n } else {\n for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n }\n\n return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n }\n\n function cartesianTriangleArea(triangle) {\n var a = triangle[0], b = triangle[1], c = triangle[2];\n return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n }\n\n function ring(ring) {\n var i = -1,\n n = ring.length,\n a,\n b = ring[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = ring[i];\n area += a[0] * b[1] - a[1] * b[0];\n }\n\n return area / 2;\n }\n\n function merge(topology) {\n return object(topology, mergeArcs.apply(this, arguments));\n }\n\n function mergeArcs(topology, objects) {\n var polygonsByArc = {},\n polygons = [],\n components = [];\n\n objects.forEach(function(o) {\n if (o.type === \"Polygon\") register(o.arcs);\n else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n });\n\n function register(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n });\n });\n polygons.push(polygon);\n }\n\n function area(ring$$) {\n return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n }\n\n polygons.forEach(function(polygon) {\n if (!polygon._) {\n var component = [],\n neighbors = [polygon];\n polygon._ = 1;\n components.push(component);\n while (polygon = neighbors.pop()) {\n component.push(polygon);\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n if (!polygon._) {\n polygon._ = 1;\n neighbors.push(polygon);\n }\n });\n });\n });\n }\n }\n });\n\n polygons.forEach(function(polygon) {\n delete polygon._;\n });\n\n return {\n type: \"MultiPolygon\",\n arcs: components.map(function(polygons) {\n var arcs = [], n;\n\n // Extract the exterior (unique) arcs.\n polygons.forEach(function(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n arcs.push(arc);\n }\n });\n });\n });\n\n // Stitch the arcs into one or more rings.\n arcs = stitchArcs(topology, arcs);\n\n // If more than one ring is returned,\n // at most one of these rings can be the exterior;\n // choose the one with the greatest absolute area.\n if ((n = arcs.length) > 1) {\n for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n if ((ki = area(arcs[i])) > k) {\n t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n }\n }\n }\n\n return arcs;\n })\n };\n }\n\n function neighbors(objects) {\n var indexesByArc = {}, // arc index -> array of object indexes\n neighbors = objects.map(function() { return []; });\n\n function line(arcs, i) {\n arcs.forEach(function(a) {\n if (a < 0) a = ~a;\n var o = indexesByArc[a];\n if (o) o.push(i);\n else indexesByArc[a] = [i];\n });\n }\n\n function polygon(arcs, i) {\n arcs.forEach(function(arc) { line(arc, i); });\n }\n\n function geometry(o, i) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n }\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n };\n\n objects.forEach(geometry);\n\n for (var i in indexesByArc) {\n for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n for (var k = j + 1; k < m; ++k) {\n var ij = indexes[j], ik = indexes[k], n;\n if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n }\n }\n }\n\n return neighbors;\n }\n\n function compareArea(a, b) {\n return a[1][2] - b[1][2];\n }\n\n function minAreaHeap() {\n var heap = {},\n array = [],\n size = 0;\n\n heap.push = function(object) {\n up(array[object._ = size] = object, size++);\n return size;\n };\n\n heap.pop = function() {\n if (size <= 0) return;\n var removed = array[0], object;\n if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n return removed;\n };\n\n heap.remove = function(removed) {\n var i = removed._, object;\n if (array[i] !== removed) return; // invalid request\n if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n return i;\n };\n\n function up(object, i) {\n while (i > 0) {\n var j = ((i + 1) >> 1) - 1,\n parent = array[j];\n if (compareArea(object, parent) >= 0) break;\n array[parent._ = i] = parent;\n array[object._ = i = j] = object;\n }\n }\n\n function down(object, i) {\n while (true) {\n var r = (i + 1) << 1,\n l = r - 1,\n j = i,\n child = array[j];\n if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n if (j === i) break;\n array[child._ = i] = child;\n array[object._ = i = j] = object;\n }\n }\n\n return heap;\n }\n\n function presimplify(topology, triangleArea) {\n var absolute = transformAbsolute(topology.transform),\n relative = transformRelative(topology.transform),\n heap = minAreaHeap();\n\n if (!triangleArea) triangleArea = cartesianTriangleArea;\n\n topology.arcs.forEach(function(arc) {\n var triangles = [],\n maxArea = 0,\n triangle,\n i,\n n,\n p;\n\n // To store each point’s effective area, we create a new array rather than\n // extending the passed-in point to workaround a Chrome/V8 bug (getting\n // stuck in smi mode). For midpoints, the initial effective area of\n // Infinity will be computed in the next step.\n for (i = 0, n = arc.length; i < n; ++i) {\n p = arc[i];\n absolute(arc[i] = [p[0], p[1], Infinity], i);\n }\n\n for (i = 1, n = arc.length - 1; i < n; ++i) {\n triangle = arc.slice(i - 1, i + 2);\n triangle[1][2] = triangleArea(triangle);\n triangles.push(triangle);\n heap.push(triangle);\n }\n\n for (i = 0, n = triangles.length; i < n; ++i) {\n triangle = triangles[i];\n triangle.previous = triangles[i - 1];\n triangle.next = triangles[i + 1];\n }\n\n while (triangle = heap.pop()) {\n var previous = triangle.previous,\n next = triangle.next;\n\n // If the area of the current point is less than that of the previous point\n // to be eliminated, use the latter's area instead. This ensures that the\n // current point cannot be eliminated without eliminating previously-\n // eliminated points.\n if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n else maxArea = triangle[1][2];\n\n if (previous) {\n previous.next = next;\n previous[2] = triangle[2];\n update(previous);\n }\n\n if (next) {\n next.previous = previous;\n next[0] = triangle[0];\n update(next);\n }\n }\n\n arc.forEach(relative);\n });\n\n function update(triangle) {\n heap.remove(triangle);\n triangle[1][2] = triangleArea(triangle);\n heap.push(triangle);\n }\n\n return topology;\n }\n\n var version = \"1.6.26\";\n\n exports.version = version;\n exports.mesh = mesh;\n exports.meshArcs = meshArcs;\n exports.merge = merge;\n exports.mergeArcs = mergeArcs;\n exports.feature = feature;\n exports.neighbors = neighbors;\n exports.presimplify = presimplify;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/topojson/build/topojson.js\n ** module id = 30\n ** module chunks = 0\n **/","var json = require('./json');\n\nmodule.exports = function(tree, format) {\n return toTable(json(tree, format), format);\n};\n\nfunction toTable(root, fields) {\n var childrenField = fields && fields.children || 'children',\n parentField = fields && fields.parent || 'parent',\n table = [];\n\n function visit(node, parent) {\n node[parentField] = parent;\n table.push(node);\n var children = node[childrenField];\n if (children) {\n for (var i=0; i 4 && 'locale' + (\n l[0].toUpperCase() + l[1].toLowerCase() +\n l[3].toUpperCase() + l[4].toLowerCase()\n );\n}\n\nfunction numberLocale(l) {\n var f = util.isString(l) ? d3_numberF[localeRef(l)] : d3_numberF.locale(l);\n if (f == null) throw Error('Unrecognized locale: ' + l);\n numberF = f;\n}\n\nfunction timeLocale(l) {\n var f = util.isString(l) ? d3_timeF[localeRef(l)] : d3_timeF.locale(l);\n if (f == null) throw Error('Unrecognized locale: ' + l);\n timeF = f;\n monthFull = monthAbbr = dayFull = dayAbbr = null;\n}\n\n// -- Number Formatting ----\n\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction linearRange(domain, count) {\n if (!domain.length) domain = [0];\n if (count == null) count = 10;\n\n var start = domain[0],\n stop = domain[domain.length - 1];\n\n if (stop < start) { error = stop; stop = start; start = error; }\n\n var span = (stop - start) || (count = 1, start || stop || 1),\n step = Math.pow(10, Math.floor(Math.log(span / count) / Math.LN10)),\n error = span / count / step;\n\n // Filter ticks to get closer to the desired count.\n if (error >= e10) step *= 10;\n else if (error >= e5) step *= 5;\n else if (error >= e2) step *= 2;\n\n // Round start and stop values to step interval.\n return [\n Math.ceil(start / step) * step,\n Math.floor(stop / step) * step + step / 2, // inclusive\n step\n ];\n}\n\nfunction trimZero(f, decimal) {\n return function(x) {\n var s = f(x),\n n = s.indexOf(decimal);\n if (n < 0) return s;\n\n var idx = rightmostDigit(s, n),\n end = idx < s.length ? s.slice(idx) : '';\n\n while (--idx > n) {\n if (s[idx] !== '0') { ++idx; break; }\n }\n return s.slice(0, idx) + end;\n };\n}\n\nfunction rightmostDigit(s, n) {\n var i = s.lastIndexOf('e'), c;\n if (i > 0) return i;\n for (i=s.length; --i > n;) {\n c = s.charCodeAt(i);\n if (c >= 48 && c <= 57) return i+1; // is digit\n }\n}\n\nfunction autoNumberFormat(f) {\n var decimal = numberF.format('.1f')(1)[1]; // get decimal char\n if (f == null) f = ',';\n f = d3_numberF.formatSpecifier(f);\n if (f.precision == null) f.precision = 12;\n switch (f.type) {\n case '%': f.precision -= 2; break;\n case 'e': f.precision -= 1; break;\n }\n return trimZero(numberF.format(f), decimal);\n}\n\nfunction linearNumberFormat(domain, count, f) {\n var range = linearRange(domain, count);\n\n if (f == null) f = ',f';\n\n switch (f = d3_numberF.formatSpecifier(f), f.type) {\n case 's': {\n var value = Math.max(Math.abs(range[0]), Math.abs(range[1]));\n if (f.precision == null) f.precision = d3_numberF.precisionPrefix(range[2], value);\n return numberF.formatPrefix(f, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r': {\n if (f.precision == null) f.precision = d3_numberF.precisionRound(range[2], Math.max(Math.abs(range[0]), Math.abs(range[1]))) - (f.type === 'e');\n break;\n }\n case 'f':\n case '%': {\n if (f.precision == null) f.precision = d3_numberF.precisionFixed(range[2]) - 2 * (f.type === '%');\n break;\n }\n }\n return numberF.format(f);\n}\n\n// -- Datetime Formatting ----\n\nfunction timeAutoFormat() {\n var f = timeF.format,\n formatMillisecond = f('.%L'),\n formatSecond = f(':%S'),\n formatMinute = f('%I:%M'),\n formatHour = f('%I %p'),\n formatDay = f('%a %d'),\n formatWeek = f('%b %d'),\n formatMonth = f('%B'),\n formatYear = f('%Y');\n\n return function(date) {\n var d = +date;\n return (d3_time.second(date) < d ? formatMillisecond\n : d3_time.minute(date) < d ? formatSecond\n : d3_time.hour(date) < d ? formatMinute\n : d3_time.day(date) < d ? formatHour\n : d3_time.month(date) < d ?\n (d3_time.week(date) < d ? formatDay : formatWeek)\n : d3_time.year(date) < d ? formatMonth\n : formatYear)(date);\n };\n}\n\nfunction utcAutoFormat() {\n var f = timeF.utcFormat,\n formatMillisecond = f('.%L'),\n formatSecond = f(':%S'),\n formatMinute = f('%I:%M'),\n formatHour = f('%I %p'),\n formatDay = f('%a %d'),\n formatWeek = f('%b %d'),\n formatMonth = f('%B'),\n formatYear = f('%Y');\n\n return function(date) {\n var d = +date;\n return (d3_time.utcSecond(date) < d ? formatMillisecond\n : d3_time.utcMinute(date) < d ? formatSecond\n : d3_time.utcHour(date) < d ? formatMinute\n : d3_time.utcDay(date) < d ? formatHour\n : d3_time.utcMonth(date) < d ?\n (d3_time.utcWeek(date) < d ? formatDay : formatWeek)\n : d3_time.utcYear(date) < d ? formatMonth\n : formatYear)(date);\n };\n}\n\nfunction monthFormat(month, abbreviate) {\n var f = abbreviate ?\n (monthAbbr || (monthAbbr = timeF.format('%b'))) :\n (monthFull || (monthFull = timeF.format('%B')));\n return (tmpDate.setMonth(month), f(tmpDate));\n}\n\nfunction dayFormat(day, abbreviate) {\n var f = abbreviate ?\n (dayAbbr || (dayAbbr = timeF.format('%a'))) :\n (dayFull || (dayFull = timeF.format('%A')));\n return (tmpDate.setMonth(0), tmpDate.setDate(2 + day), f(tmpDate));\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/format.js\n ** module id = 32\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('d3-time', ['exports'], factory) :\n factory((global.d3_time = {}));\n}(this, function (exports) { 'use strict';\n\n var t0 = new Date;\n var t1 = new Date;\n function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.round = function(date) {\n var d0 = new Date(+date),\n d1 = new Date(date - 1);\n floori(d0), floori(d1), offseti(d1, 1);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), date;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = new Date(start - 1);\n stop = new Date(+stop);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n offseti(start, 1), floori(start);\n if (start < stop) range.push(new Date(+start));\n while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n while (--step >= 0) while (offseti(date, 1), !test(date));\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n };\n\n var millisecond = newInterval(function() {\n // noop\n }, function(date, step) {\n date.setTime(+date + step);\n }, function(start, end) {\n return end - start;\n });\n\n // An optimized implementation for this simple case.\n millisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n };\n\n var second = newInterval(function(date) {\n date.setMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getSeconds();\n });\n\n var minute = newInterval(function(date) {\n date.setSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getMinutes();\n });\n\n var hour = newInterval(function(date) {\n date.setMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getHours();\n });\n\n var day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n }, function(date) {\n return date.getDate() - 1;\n });\n\n function weekday(i) {\n return newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n });\n }\n\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n\n var month = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(1);\n }, function(date, step) {\n date.setMonth(date.getMonth() + step);\n }, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function(date) {\n return date.getMonth();\n });\n\n var year = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setMonth(0, 1);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function(date) {\n return date.getFullYear();\n });\n\n var utcSecond = newInterval(function(date) {\n date.setUTCMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getUTCSeconds();\n });\n\n var utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getUTCMinutes();\n });\n\n var utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getUTCHours();\n });\n\n var utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function(start, end) {\n return (end - start) / 864e5;\n }, function(date) {\n return date.getUTCDate() - 1;\n });\n\n function utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / 6048e5;\n });\n }\n\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n\n var utcMonth = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(1);\n }, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function(date) {\n return date.getUTCMonth();\n });\n\n var utcYear = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCMonth(0, 1);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function(date) {\n return date.getUTCFullYear();\n });\n\n var milliseconds = millisecond.range;\n var seconds = second.range;\n var minutes = minute.range;\n var hours = hour.range;\n var days = day.range;\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n var weeks = sunday.range;\n var months = month.range;\n var years = year.range;\n\n var utcMillisecond = millisecond;\n var utcMilliseconds = milliseconds;\n var utcSeconds = utcSecond.range;\n var utcMinutes = utcMinute.range;\n var utcHours = utcHour.range;\n var utcDays = utcDay.range;\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n var utcWeeks = utcSunday.range;\n var utcMonths = utcMonth.range;\n var utcYears = utcYear.range;\n\n var version = \"0.1.1\";\n\n exports.version = version;\n exports.milliseconds = milliseconds;\n exports.seconds = seconds;\n exports.minutes = minutes;\n exports.hours = hours;\n exports.days = days;\n exports.sundays = sundays;\n exports.mondays = mondays;\n exports.tuesdays = tuesdays;\n exports.wednesdays = wednesdays;\n exports.thursdays = thursdays;\n exports.fridays = fridays;\n exports.saturdays = saturdays;\n exports.weeks = weeks;\n exports.months = months;\n exports.years = years;\n exports.utcMillisecond = utcMillisecond;\n exports.utcMilliseconds = utcMilliseconds;\n exports.utcSeconds = utcSeconds;\n exports.utcMinutes = utcMinutes;\n exports.utcHours = utcHours;\n exports.utcDays = utcDays;\n exports.utcSundays = utcSundays;\n exports.utcMondays = utcMondays;\n exports.utcTuesdays = utcTuesdays;\n exports.utcWednesdays = utcWednesdays;\n exports.utcThursdays = utcThursdays;\n exports.utcFridays = utcFridays;\n exports.utcSaturdays = utcSaturdays;\n exports.utcWeeks = utcWeeks;\n exports.utcMonths = utcMonths;\n exports.utcYears = utcYears;\n exports.millisecond = millisecond;\n exports.second = second;\n exports.minute = minute;\n exports.hour = hour;\n exports.day = day;\n exports.sunday = sunday;\n exports.monday = monday;\n exports.tuesday = tuesday;\n exports.wednesday = wednesday;\n exports.thursday = thursday;\n exports.friday = friday;\n exports.saturday = saturday;\n exports.week = sunday;\n exports.month = month;\n exports.year = year;\n exports.utcSecond = utcSecond;\n exports.utcMinute = utcMinute;\n exports.utcHour = utcHour;\n exports.utcDay = utcDay;\n exports.utcSunday = utcSunday;\n exports.utcMonday = utcMonday;\n exports.utcTuesday = utcTuesday;\n exports.utcWednesday = utcWednesday;\n exports.utcThursday = utcThursday;\n exports.utcFriday = utcFriday;\n exports.utcSaturday = utcSaturday;\n exports.utcWeek = utcSunday;\n exports.utcMonth = utcMonth;\n exports.utcYear = utcYear;\n exports.interval = newInterval;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-time/build/d3-time.js\n ** module id = 33\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :\n typeof define === 'function' && define.amd ? define('d3-time-format', ['exports', 'd3-time'], factory) :\n factory((global.d3_time_format = {}),global.d3_time);\n}(this, function (exports,d3Time) { 'use strict';\n\n function localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n }\n\n function utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n }\n\n function newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n }\n\n function locale$1(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.parse = newParse(specifier, localDate);\n f.toString = function() { return specifier; };\n return f;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.parse = newParse(specifier, utcDate);\n f.toString = function() { return specifier; };\n return f;\n }\n };\n };\n\n var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n var numberRe = /^\\s*\\d+/;\n var percentRe = /^%/;\n var requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n function pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n\n function requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n }\n\n function formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n }\n\n function formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n }\n\n function parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n\n function parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n }\n\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n }\n\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n\n function formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n }\n\n function formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n }\n\n function formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n }\n\n function formatDayOfYear(d, p) {\n return pad(1 + d3Time.day.count(d3Time.year(d), d), p, 3);\n }\n\n function formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n }\n\n function formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n }\n\n function formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n }\n\n function formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n }\n\n function formatWeekNumberSunday(d, p) {\n return pad(d3Time.sunday.count(d3Time.year(d), d), p, 2);\n }\n\n function formatWeekdayNumber(d) {\n return d.getDay();\n }\n\n function formatWeekNumberMonday(d, p) {\n return pad(d3Time.monday.count(d3Time.year(d), d), p, 2);\n }\n\n function formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n }\n\n function formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n }\n\n function formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n }\n\n function formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n }\n\n function formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n }\n\n function formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n }\n\n function formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n }\n\n function formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n }\n\n function formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n }\n\n function formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n }\n\n function formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n }\n\n function formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n }\n\n function formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n }\n\n function formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n }\n\n function formatUTCZone() {\n return \"+0000\";\n }\n\n function formatLiteralPercent() {\n return \"%\";\n }\n\n var locale = locale$1({\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n var caES = locale$1({\n dateTime: \"%A, %e de %B de %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"diumenge\", \"dilluns\", \"dimarts\", \"dimecres\", \"dijous\", \"divendres\", \"dissabte\"],\n shortDays: [\"dg.\", \"dl.\", \"dt.\", \"dc.\", \"dj.\", \"dv.\", \"ds.\"],\n months: [\"gener\", \"febrer\", \"març\", \"abril\", \"maig\", \"juny\", \"juliol\", \"agost\", \"setembre\", \"octubre\", \"novembre\", \"desembre\"],\n shortMonths: [\"gen.\", \"febr.\", \"març\", \"abr.\", \"maig\", \"juny\", \"jul.\", \"ag.\", \"set.\", \"oct.\", \"nov.\", \"des.\"]\n });\n\n var deCH = locale$1({\n dateTime: \"%A, der %e. %B %Y, %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n });\n\n var deDE = locale$1({\n dateTime: \"%A, der %e. %B %Y, %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mrz\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"]\n });\n\n var enCA = locale$1({\n dateTime: \"%a %b %e %X %Y\",\n date: \"%Y-%m-%d\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n var enGB = locale$1({\n dateTime: \"%a %e %b %X %Y\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n var esES = locale$1({\n dateTime: \"%A, %e de %B de %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"],\n shortDays: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\n months: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"],\n shortMonths: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\", \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"]\n });\n\n var fiFI = locale$1({\n dateTime: \"%A, %-d. %Bta %Y klo %X\",\n date: \"%-d.%-m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"a.m.\", \"p.m.\"],\n days: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"],\n shortDays: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n months: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n shortMonths: [\"Tammi\", \"Helmi\", \"Maalis\", \"Huhti\", \"Touko\", \"Kesä\", \"Heinä\", \"Elo\", \"Syys\", \"Loka\", \"Marras\", \"Joulu\"]\n });\n\n var frCA = locale$1({\n dateTime: \"%a %e %b %Y %X\",\n date: \"%Y-%m-%d\",\n time: \"%H:%M:%S\",\n periods: [\"\", \"\"],\n days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n shortDays: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n shortMonths: [\"jan\", \"fév\", \"mar\", \"avr\", \"mai\", \"jui\", \"jul\", \"aoû\", \"sep\", \"oct\", \"nov\", \"déc\"]\n });\n\n var frFR = locale$1({\n dateTime: \"%A, le %e %B %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n shortDays: [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"],\n months: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n shortMonths: [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"]\n });\n\n var heIL = locale$1({\n dateTime: \"%A, %e ב%B %Y %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\n shortDays: [\"א׳\", \"ב׳\", \"ג׳\", \"ד׳\", \"ה׳\", \"ו׳\", \"ש׳\"],\n months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n shortMonths: [\"ינו׳\", \"פבר׳\", \"מרץ\", \"אפר׳\", \"מאי\", \"יוני\", \"יולי\", \"אוג׳\", \"ספט׳\", \"אוק׳\", \"נוב׳\", \"דצמ׳\"]\n });\n\n var huHU = locale$1({\n dateTime: \"%Y. %B %-e., %A %X\",\n date: \"%Y. %m. %d.\",\n time: \"%H:%M:%S\",\n periods: [\"de.\", \"du.\"], // unused\n days: [\"vasárnap\", \"hétfő\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"],\n shortDays: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\"],\n months: [\"január\", \"február\", \"március\", \"április\", \"május\", \"június\", \"július\", \"augusztus\", \"szeptember\", \"október\", \"november\", \"december\"],\n shortMonths: [\"jan.\", \"feb.\", \"már.\", \"ápr.\", \"máj.\", \"jún.\", \"júl.\", \"aug.\", \"szept.\", \"okt.\", \"nov.\", \"dec.\"]\n });\n\n var itIT = locale$1({\n dateTime: \"%A %e %B %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n shortDays: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n months: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n shortMonths: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"]\n });\n\n var jaJP = locale$1({\n dateTime: \"%Y %b %e %a %X\",\n date: \"%Y/%m/%d\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\n shortDays: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n months: [\"睦月\", \"如月\", \"弥生\", \"卯月\", \"皐月\", \"水無月\", \"文月\", \"葉月\", \"長月\", \"神無月\", \"霜月\", \"師走\"],\n shortMonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"]\n });\n\n var koKR = locale$1({\n dateTime: \"%Y/%m/%d %a %X\",\n date: \"%Y/%m/%d\",\n time: \"%H:%M:%S\",\n periods: [\"오전\", \"오후\"],\n days: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n shortDays: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n months: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n shortMonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"]\n });\n\n var mkMK = locale$1({\n dateTime: \"%A, %e %B %Y г. %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"недела\", \"понеделник\", \"вторник\", \"среда\", \"четврток\", \"петок\", \"сабота\"],\n shortDays: [\"нед\", \"пон\", \"вто\", \"сре\", \"чет\", \"пет\", \"саб\"],\n months: [\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"август\", \"септември\", \"октомври\", \"ноември\", \"декември\"],\n shortMonths: [\"јан\", \"фев\", \"мар\", \"апр\", \"мај\", \"јун\", \"јул\", \"авг\", \"сеп\", \"окт\", \"ное\", \"дек\"]\n });\n\n var nlNL = locale$1({\n dateTime: \"%a %e %B %Y %T\",\n date: \"%d-%m-%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"],\n shortDays: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n shortMonths: [\"jan\", \"feb\", \"mrt\", \"apr\", \"mei\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n });\n\n var plPL = locale$1({\n dateTime: \"%A, %e %B %Y, %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"], // unused\n days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n shortDays: [\"Niedz.\", \"Pon.\", \"Wt.\", \"Śr.\", \"Czw.\", \"Pt.\", \"Sob.\"],\n months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n shortMonths: [\"Stycz.\", \"Luty\", \"Marz.\", \"Kwie.\", \"Maj\", \"Czerw.\", \"Lipc.\", \"Sierp.\", \"Wrz.\", \"Paźdz.\", \"Listop.\", \"Grudz.\"]/* In Polish language abbraviated months are not commonly used so there is a dispute about the proper abbraviations. */\n });\n\n var ptBR = locale$1({\n dateTime: \"%A, %e de %B de %Y. %X\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n shortDays: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n shortMonths: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"]\n });\n\n var ruRU = locale$1({\n dateTime: \"%A, %e %B %Y г. %X\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"воскресенье\", \"понедельник\", \"вторник\", \"среда\", \"четверг\", \"пятница\", \"суббота\"],\n shortDays: [\"вс\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"],\n months: [\"января\", \"февраля\", \"марта\", \"апреля\", \"мая\", \"июня\", \"июля\", \"августа\", \"сентября\", \"октября\", \"ноября\", \"декабря\"],\n shortMonths: [\"янв\", \"фев\", \"мар\", \"апр\", \"май\", \"июн\", \"июл\", \"авг\", \"сен\", \"окт\", \"ноя\", \"дек\"]\n });\n\n var svSE = locale$1({\n dateTime: \"%A den %d %B %Y %X\",\n date: \"%Y-%m-%d\",\n time: \"%H:%M:%S\",\n periods: [\"fm\", \"em\"],\n days: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\n shortDays: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"]\n });\n\n var zhCN = locale$1({\n dateTime: \"%a %b %e %X %Y\",\n date: \"%Y/%-m/%-d\",\n time: \"%H:%M:%S\",\n periods: [\"上午\", \"下午\"],\n days: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n shortDays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n shortMonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"]\n });\n\n var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\n function formatIsoNative(date) {\n return date.toISOString();\n }\n\n formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n\n formatIsoNative.toString = function() {\n return isoSpecifier;\n };\n\n var formatIso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\")\n ? formatIsoNative\n : locale.utcFormat(isoSpecifier);\n\n var format = locale.format;\n var utcFormat = locale.utcFormat;\n\n var version = \"0.2.1\";\n\n exports.version = version;\n exports.format = format;\n exports.utcFormat = utcFormat;\n exports.locale = locale$1;\n exports.localeCaEs = caES;\n exports.localeDeCh = deCH;\n exports.localeDeDe = deDE;\n exports.localeEnCa = enCA;\n exports.localeEnGb = enGB;\n exports.localeEnUs = locale;\n exports.localeEsEs = esES;\n exports.localeFiFi = fiFI;\n exports.localeFrCa = frCA;\n exports.localeFrFr = frFR;\n exports.localeHeIl = heIL;\n exports.localeHuHu = huHU;\n exports.localeItIt = itIT;\n exports.localeJaJp = jaJP;\n exports.localeKoKr = koKR;\n exports.localeMkMk = mkMK;\n exports.localeNlNl = nlNL;\n exports.localePlPl = plPL;\n exports.localePtBr = ptBR;\n exports.localeRuRu = ruRU;\n exports.localeSvSe = svSE;\n exports.localeZhCn = zhCN;\n exports.isoFormat = formatIso;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-time-format/build/d3-time-format.js\n ** module id = 34\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('d3-format', ['exports'], factory) :\n factory((global.d3_format = {}));\n}(this, function (exports) { 'use strict';\n\n // Computes the decimal coefficient and exponent of the specified number x with\n // significant digits p, where x is positive and p is in [1, 21] or undefined.\n // For example, formatDecimal(1.23) returns [\"123\", 0].\n function formatDecimal(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n };\n\n function exponent(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n };\n\n function formatGroup(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n };\n\n var prefixExponent;\n\n function formatPrefixAuto(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n };\n\n function formatRounded(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n };\n\n function formatDefault(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n };\n\n var formatTypes = {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n };\n\n // [[fill]align][sign][symbol][0][width][,][.precision][type]\n var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\n function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n };\n\n function FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n }\n\n FormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n };\n\n var prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n function identity(x) {\n return x;\n }\n\n function locale(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal;\n\n function format(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? \"%\" : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n return function(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Convert negative to positive, and compute the prefix.\n // Note that -0 is not less than 0, but 1 / -0 is!\n var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);\n\n // Perform the initial formatting.\n value = formatType(value, precision);\n\n // If the original value was negative, it may be rounded to zero during\n // formatting; treat this as (positive) zero.\n if (valueNegative) {\n var i = -1, n = value.length, c;\n valueNegative = false;\n while (++i < n) {\n if (c = value.charCodeAt(i), (48 < c && c < 58)\n || (type === \"x\" && 96 < c && c < 103)\n || (type === \"X\" && 64 < c && c < 71)) {\n valueNegative = true;\n break;\n }\n }\n }\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n var i = -1, n = value.length, c;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": return valuePrefix + value + valueSuffix + padding;\n case \"=\": return valuePrefix + padding + value + valueSuffix;\n case \"^\": return padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n }\n return padding + valuePrefix + value + valueSuffix;\n };\n }\n\n function formatPrefix(specifier, value) {\n var f = format((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: format,\n formatPrefix: formatPrefix\n };\n };\n\n var defaultLocale = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n });\n\n var caES = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var csCZ = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0Kč\"],\n });\n\n var deCH = locale({\n decimal: \",\",\n thousands: \"'\",\n grouping: [3],\n currency: [\"\", \"\\xa0CHF\"]\n });\n\n var deDE = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var enCA = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n });\n\n var enGB = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"£\", \"\"]\n });\n\n var esES = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var fiFI = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var frCA = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"$\"]\n });\n\n var frFR = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0€\"]\n });\n\n var heIL = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"₪\", \"\"]\n });\n\n var huHU = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0Ft\"]\n });\n\n var itIT = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"]\n });\n\n var jaJP = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"\", \"円\"]\n });\n\n var koKR = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"₩\", \"\"]\n });\n\n var mkMK = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"\\xa0ден.\"]\n });\n\n var nlNL = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\\xa0\", \"\"]\n });\n\n var plPL = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"\", \"zł\"]\n });\n\n var ptBR = locale({\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"R$\", \"\"]\n });\n\n var ruRU = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"\\xa0руб.\"]\n });\n\n var svSE = locale({\n decimal: \",\",\n thousands: \"\\xa0\",\n grouping: [3],\n currency: [\"\", \"SEK\"]\n });\n\n var zhCN = locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"¥\", \"\"]\n });\n\n function precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n };\n\n function precisionPrefix(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n };\n\n function precisionRound(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n };\n\n var format = defaultLocale.format;\n var formatPrefix = defaultLocale.formatPrefix;\n\n var version = \"0.4.2\";\n\n exports.version = version;\n exports.format = format;\n exports.formatPrefix = formatPrefix;\n exports.locale = locale;\n exports.localeCaEs = caES;\n exports.localeCsCz = csCZ;\n exports.localeDeCh = deCH;\n exports.localeDeDe = deDE;\n exports.localeEnCa = enCA;\n exports.localeEnGb = enGB;\n exports.localeEnUs = defaultLocale;\n exports.localeEsEs = esES;\n exports.localeFiFi = fiFI;\n exports.localeFrCa = frCA;\n exports.localeFrFr = frFR;\n exports.localeHeIl = heIL;\n exports.localeHuHu = huHU;\n exports.localeItIt = itIT;\n exports.localeJaJp = jaJP;\n exports.localeKoKr = koKR;\n exports.localeMkMk = mkMK;\n exports.localeNlNl = nlNL;\n exports.localePlPl = plPL;\n exports.localePtBr = ptBR;\n exports.localeRuRu = ruRU;\n exports.localeSvSe = svSE;\n exports.localeZhCn = zhCN;\n exports.formatSpecifier = formatSpecifier;\n exports.precisionFixed = precisionFixed;\n exports.precisionPrefix = precisionPrefix;\n exports.precisionRound = precisionRound;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/~/d3-format/build/d3-format.js\n ** module id = 35\n ** module chunks = 0\n **/","var util = require('../util'),\n Measures = require('./measures'),\n Collector = require('./collector');\n\nfunction Aggregator() {\n this._cells = {};\n this._aggr = [];\n this._stream = false;\n}\n\nvar Flags = Aggregator.Flags = {\n ADD_CELL: 1,\n MOD_CELL: 2\n};\n\nvar proto = Aggregator.prototype;\n\n// Parameters\n\nproto.stream = function(v) {\n if (v == null) return this._stream;\n this._stream = !!v;\n this._aggr = [];\n return this;\n};\n\n// key accessor to use for streaming removes\nproto.key = function(key) {\n if (key == null) return this._key;\n this._key = util.$(key);\n return this;\n};\n\n// Input: array of objects of the form\n// {name: string, get: function}\nproto.groupby = function(dims) {\n this._dims = util.array(dims).map(function(d, i) {\n d = util.isString(d) ? {name: d, get: util.$(d)}\n : util.isFunction(d) ? {name: util.name(d) || d.name || ('_' + i), get: d}\n : (d.name && util.isFunction(d.get)) ? d : null;\n if (d == null) throw 'Invalid groupby argument: ' + d;\n return d;\n });\n return this.clear();\n};\n\n// Input: array of objects of the form\n// {name: string, ops: [string, ...]}\nproto.summarize = function(fields) {\n fields = summarize_args(fields);\n this._count = true;\n var aggr = (this._aggr = []),\n m, f, i, j, op, as, get;\n\n for (i=0; i 0) {\n // consolidate collector values\n if (cell.collect) {\n cell.data.values();\n }\n // update tuple properties\n for (i=0; i 1 ? this.dev / (this.valid-1) : 0',\n req: ['mean'], idx: 1\n }),\n 'variancep': measure({\n name: 'variancep',\n set: 'this.valid > 1 ? this.dev / this.valid : 0',\n req: ['variance'], idx: 2\n }),\n 'stdev': measure({\n name: 'stdev',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : 0',\n req: ['variance'], idx: 2\n }),\n 'stdevp': measure({\n name: 'stdevp',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : 0',\n req: ['variance'], idx: 2\n }),\n 'median': measure({\n name: 'median',\n set: 'cell.data.q2(this.get)',\n req: ['values'], idx: 3\n }),\n 'q1': measure({\n name: 'q1',\n set: 'cell.data.q1(this.get)',\n req: ['values'], idx: 3\n }),\n 'q3': measure({\n name: 'q3',\n set: 'cell.data.q3(this.get)',\n req: ['values'], idx: 3\n }),\n 'distinct': measure({\n name: 'distinct',\n set: 'this.distinct(cell.data.values(), this.get)',\n req: ['values'], idx: 3\n }),\n 'argmin': measure({\n name: 'argmin',\n add: 'if (v < this.min) this.argmin = t;',\n rem: 'if (v <= this.min) this.argmin = null;',\n set: 'this.argmin = this.argmin || cell.data.argmin(this.get)',\n req: ['min'], str: ['values'], idx: 3\n }),\n 'argmax': measure({\n name: 'argmax',\n add: 'if (v > this.max) this.argmax = t;',\n rem: 'if (v >= this.max) this.argmax = null;',\n set: 'this.argmax = this.argmax || cell.data.argmax(this.get)',\n req: ['max'], str: ['values'], idx: 3\n }),\n 'min': measure({\n name: 'min',\n init: 'this.min = +Infinity;',\n add: 'if (v < this.min) this.min = v;',\n rem: 'if (v <= this.min) this.min = NaN;',\n set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n str: ['values'], idx: 4\n }),\n 'max': measure({\n name: 'max',\n init: 'this.max = -Infinity;',\n add: 'if (v > this.max) this.max = v;',\n rem: 'if (v >= this.max) this.max = NaN;',\n set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n str: ['values'], idx: 4\n }),\n 'modeskew': measure({\n name: 'modeskew',\n set: 'this.dev===0 ? 0 : (this.mean - cell.data.q2(this.get)) / Math.sqrt(this.dev/(this.valid-1))',\n req: ['mean', 'stdev', 'median'], idx: 5\n })\n};\n\nfunction measure(base) {\n return function(out) {\n var m = util.extend({init:'', add:'', rem:'', idx:0}, base);\n m.out = out || base.name;\n return m;\n };\n}\n\nfunction resolve(agg, stream) {\n function collect(m, a) {\n function helper(r) { if (!m[r]) collect(m, m[r] = types[r]()); }\n if (a.req) a.req.forEach(helper);\n if (stream && a.str) a.str.forEach(helper);\n return m;\n }\n var map = agg.reduce(\n collect,\n agg.reduce(function(m, a) { return (m[a.name] = a, m); }, {})\n );\n return util.vals(map).sort(function(a, b) { return a.idx - b.idx; });\n}\n\nfunction create(agg, stream, accessor, mutator) {\n var all = resolve(agg, stream),\n ctr = 'this.cell = cell; this.tuple = t; this.valid = 0; this.missing = 0;',\n add = 'if (v==null) this.missing++; if (!this.isValid(v)) return; ++this.valid;',\n rem = 'if (v==null) this.missing--; if (!this.isValid(v)) return; --this.valid;',\n set = 'var t = this.tuple; var cell = this.cell;';\n\n all.forEach(function(a) {\n if (a.idx < 0) {\n ctr = a.init + ctr;\n add = a.add + add;\n rem = a.rem + rem;\n } else {\n ctr += a.init;\n add += a.add;\n rem += a.rem;\n }\n });\n agg.slice()\n .sort(function(a, b) { return a.idx - b.idx; })\n .forEach(function(a) {\n set += 'this.assign(t,\\''+a.out+'\\','+a.set+');';\n });\n set += 'return t;';\n\n /* jshint evil: true */\n ctr = Function('cell', 't', ctr);\n ctr.prototype.assign = mutator;\n ctr.prototype.add = Function('t', 'var v = this.get(t);' + add);\n ctr.prototype.rem = Function('t', 'var v = this.get(t);' + rem);\n ctr.prototype.set = Function(set);\n ctr.prototype.get = accessor;\n ctr.prototype.distinct = require('../stats').count.distinct;\n ctr.prototype.isValid = util.isValid;\n ctr.fields = agg.map(util.$('out'));\n return ctr;\n}\n\ntypes.create = create;\nmodule.exports = types;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/aggregate/measures.js\n ** module id = 37\n ** module chunks = 0\n **/","var util = require('./util');\nvar type = require('./import/type');\nvar gen = require('./generate');\n\nvar stats = module.exports;\n\n// Collect unique values.\n// Output: an array of unique values, in first-observed order\nstats.unique = function(values, f, results) {\n f = util.$(f);\n results = results || [];\n var u = {}, v, i, n;\n for (i=0, n=values.length; i 0 ? Math.pow(mean, 1/c) : 0;\n return mean;\n};\n\n// Compute the harmonic mean of an array of numbers.\nstats.mean.harmonic = function(values, f) {\n f = util.$(f);\n var mean = 0, c, n, v, i;\n for (i=0, c=0, n=values.length; i b) b = v;\n }\n }\n return [a, b];\n};\n\n// Find the integer indices of the minimum and maximum values.\nstats.extent.index = function(values, f) {\n f = util.$(f);\n var x = -1, y = -1, a, b, v, i, n = values.length;\n for (i=0; i b) { b = v; y = i; }\n }\n }\n return [x, y];\n};\n\n// Compute the dot product of two arrays of numbers.\nstats.dot = function(values, a, b) {\n var sum = 0, i, v;\n if (!b) {\n if (values.length !== a.length) {\n throw Error('Array lengths must match.');\n }\n for (i=0; i -1 && p !== v) {\n mu = 1 + (i-1 + tie) / 2;\n for (; tie -1) {\n mu = 1 + (n-1 + tie) / 2;\n for (; tie max) max = x;\n delta = x - mean;\n mean = mean + delta / (++valid);\n M2 = M2 + delta * (x - mean);\n vals.push(x);\n }\n }\n M2 = M2 / (valid - 1);\n sd = Math.sqrt(M2);\n\n // sort values for median and iqr\n vals.sort(util.cmp);\n\n return {\n type: type(values, f),\n unique: u,\n count: values.length,\n valid: valid,\n missing: missing,\n distinct: distinct,\n min: min,\n max: max,\n mean: mean,\n stdev: sd,\n median: (v = stats.quantile(vals, 0.5)),\n q1: stats.quantile(vals, 0.25),\n q3: stats.quantile(vals, 0.75),\n modeskew: sd === 0 ? 0 : (mean - v) / sd\n };\n};\n\n// Compute profiles for all variables in a data set.\nstats.summary = function(data, fields) {\n fields = fields || util.keys(data[0]);\n var s = fields.map(function(f) {\n var p = stats.profile(data, util.$(f));\n return (p.field = f, p);\n });\n return (s.__summary__ = true, s);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/stats.js\n ** module id = 38\n ** module chunks = 0\n **/","var util = require('./util'),\n gen = module.exports;\n\ngen.repeat = function(val, n) {\n var a = Array(n), i;\n for (i=0; i stop) range.push(j);\n else while ((j = start + step * ++i) < stop) range.push(j);\n return range;\n};\n\ngen.random = {};\n\ngen.random.uniform = function(min, max) {\n if (max === undefined) {\n max = min === undefined ? 1 : min;\n min = 0;\n }\n var d = max - min;\n var f = function() {\n return min + d * Math.random();\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x >= min && x <= max) ? 1/d : 0;\n };\n f.cdf = function(x) {\n return x < min ? 0 : x > max ? 1 : (x - min) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? min + p*d : NaN;\n };\n return f;\n};\n\ngen.random.integer = function(a, b) {\n if (b === undefined) {\n b = a;\n a = 0;\n }\n var d = b - a;\n var f = function() {\n return a + Math.floor(d * Math.random());\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n };\n f.cdf = function(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n };\n return f;\n};\n\ngen.random.normal = function(mean, stdev) {\n mean = mean || 0;\n stdev = stdev || 1;\n var next;\n var f = function() {\n var x = 0, y = 0, rds, c;\n if (next !== undefined) {\n x = next;\n next = undefined;\n return x;\n }\n do {\n x = Math.random()*2-1;\n y = Math.random()*2-1;\n rds = x*x + y*y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n next = mean + y*c*stdev;\n return mean + x*c*stdev;\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n };\n f.cdf = function(x) {\n // Approximation from West (2009)\n // Better Approximations to Cumulative Normal Functions\n var cd,\n z = (x - mean) / stdev,\n Z = Math.abs(z);\n if (Z > 37) {\n cd = 0;\n } else {\n var sum, exp = Math.exp(-Z*Z/2);\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n };\n f.icdf = function(p) {\n // Approximation of Probit function using inverse error function.\n if (p <= 0 || p >= 1) return NaN;\n var x = 2*p - 1,\n v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n b = Math.log(1 - (x*x)) / v,\n s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n return mean + stdev * Math.SQRT2 * s;\n };\n return f;\n};\n\ngen.random.bootstrap = function(domain, smooth) {\n // Generates a bootstrap sample from a set of observations.\n // Smooth bootstrapping adds random zero-centered noise to the samples.\n var val = domain.filter(util.isValid),\n len = val.length,\n err = smooth ? gen.random.normal(0, smooth) : null;\n var f = function() {\n return val[~~(Math.random()*len)] + (err ? err() : 0);\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n return f;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/generate.js\n ** module id = 39\n ** module chunks = 0\n **/","var util = require('../util');\nvar stats = require('../stats');\n\nvar REM = '__dl_rem__';\n\nfunction Collector(key) {\n this._add = [];\n this._rem = [];\n this._key = key || null;\n this._last = null;\n}\n\nvar proto = Collector.prototype;\n\nproto.add = function(v) {\n this._add.push(v);\n};\n\nproto.rem = function(v) {\n this._rem.push(v);\n};\n\nproto.values = function() {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n\n var a = this._add,\n r = this._rem,\n k = this._key,\n x = Array(a.length - r.length),\n i, j, n, m;\n\n if (!util.isObject(r[0])) {\n // processing raw values\n m = stats.count.map(r);\n for (i=0, j=0, n=a.length; i 0) {\n m[a[i]] -= 1;\n } else {\n x[j++] = a[i];\n }\n }\n } else if (k) {\n // has unique key field, so use that\n m = util.toMap(r, k);\n for (i=0, j=0, n=a.length; i maxb) { step *= base; }\n\n // decrease step size if allowed\n for (i=0; i= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n eps = Math.pow(base, -precision - 1);\n min = Math.min(min, Math.floor(min / step + eps) * step);\n max = Math.ceil(max / step) * step;\n\n return {\n start: min,\n stop: max,\n step: step,\n unit: {precision: precision},\n value: value,\n index: index\n };\n}\n\nfunction bisect(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n else { hi = mid; }\n }\n return lo;\n}\n\nfunction value(v) {\n return this.step * Math.floor(v / this.step + EPSILON);\n}\n\nfunction index(v) {\n return Math.floor((v - this.start) / this.step + EPSILON);\n}\n\nfunction date_value(v) {\n return this.unit.date(value.call(this, v));\n}\n\nfunction date_index(v) {\n return index.call(this, this.unit.unit(v));\n}\n\nbins.date = function(opt) {\n if (!opt) { throw Error(\"Missing date binning options.\"); }\n\n // find time step, then bin\n var units = opt.utc ? time.utc : time,\n dmin = opt.min,\n dmax = opt.max,\n maxb = opt.maxbins || 20,\n minb = opt.minbins || 4,\n span = (+dmax) - (+dmin),\n unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n spec = bins({\n min: unit.min != null ? unit.min : unit.unit(dmin),\n max: unit.max != null ? unit.max : unit.unit(dmax),\n maxbins: maxb,\n minstep: unit.minstep,\n steps: unit.step\n });\n\n spec.unit = unit;\n spec.index = date_index;\n if (!opt.raw) spec.value = date_value;\n return spec;\n};\n\nmodule.exports = bins;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/bins/bins.js\n ** module id = 42\n ** module chunks = 0\n **/","var d3_time = require('d3-time');\n\nvar tempDate = new Date(),\n baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\nfunction date(d) {\n return (tempDate.setTime(+d), tempDate);\n}\n\n// create a time unit entry\nfunction entry(type, date, unit, step, min, max) {\n var e = {\n type: type,\n date: date,\n unit: unit\n };\n if (step) {\n e.step = step;\n } else {\n e.minstep = 1;\n }\n if (min != null) e.min = min;\n if (max != null) e.max = max;\n return e;\n}\n\nfunction create(type, unit, base, step, min, max) {\n return entry(type,\n function(d) { return unit.offset(base, d); },\n function(d) { return unit.count(base, d); },\n step, min, max);\n}\n\nvar locale = [\n create('second', d3_time.second, baseDate),\n create('minute', d3_time.minute, baseDate),\n create('hour', d3_time.hour, baseDate),\n create('day', d3_time.day, baseDate, [1, 7]),\n create('month', d3_time.month, baseDate, [1, 3, 6]),\n create('year', d3_time.year, baseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n function(d) { return date(d).getSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(1970, 0, 1, 0, d); },\n function(d) { return date(d).getMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(1970, 0, 1, d); },\n function(d) { return date(d).getHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(1970, 0, 4+d); },\n function(d) { return date(d).getDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(1970, 0, d); },\n function(d) { return date(d).getDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(1970, d % 12, 1); },\n function(d) { return date(d).getMonth(); },\n [1], 0, 11\n )\n];\n\nvar utc = [\n create('second', d3_time.utcSecond, utcBaseDate),\n create('minute', d3_time.utcMinute, utcBaseDate),\n create('hour', d3_time.utcHour, utcBaseDate),\n create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n create('year', d3_time.utcYear, utcBaseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n function(d) { return date(d).getUTCSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n function(d) { return date(d).getUTCMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n function(d) { return date(d).getUTCHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n function(d) { return date(d).getUTCDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(Date.UTC(1970, 0, d)); },\n function(d) { return date(d).getUTCDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n function(d) { return date(d).getUTCMonth(); },\n [1], 0, 11\n )\n];\n\nvar STEPS = [\n [31536e6, 5], // 1-year\n [7776e6, 4], // 3-month\n [2592e6, 4], // 1-month\n [12096e5, 3], // 2-week\n [6048e5, 3], // 1-week\n [1728e5, 3], // 2-day\n [864e5, 3], // 1-day\n [432e5, 2], // 12-hour\n [216e5, 2], // 6-hour\n [108e5, 2], // 3-hour\n [36e5, 2], // 1-hour\n [18e5, 1], // 30-minute\n [9e5, 1], // 15-minute\n [3e5, 1], // 5-minute\n [6e4, 1], // 1-minute\n [3e4, 0], // 30-second\n [15e3, 0], // 15-second\n [5e3, 0], // 5-second\n [1e3, 0] // 1-second\n];\n\nfunction find(units, span, minb, maxb) {\n var step = STEPS[0], i, n, bins;\n\n for (i=1, n=STEPS.length; i step[0]) {\n bins = span / step[0];\n if (bins > maxb) {\n return units[STEPS[i-1][1]];\n }\n if (bins >= minb) {\n return units[step[1]];\n }\n }\n }\n return units[STEPS[n-1][1]];\n}\n\nfunction toUnitMap(units) {\n var map = {}, i, n;\n for (i=0, n=units.length; i= h.length || !isFinite(j)) continue;\n h[j].count += 1;\n }\n }\n h.bins = b;\n return h;\n}\n\nfunction categorical(values, f, sort) {\n var u = stats.unique(values, f),\n c = stats.count.map(values, f);\n return u.map(function(k) { return {value: k, count: c[k]}; })\n .sort(util.comparator(sort ? '-count' : '+value'));\n}\n\nmodule.exports = {\n $bin: $bin,\n histogram: histogram\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/bins/histogram.js\n ** module id = 44\n ** module chunks = 0\n **/","var util = require('./util'),\n format = require('./format');\n\nvar context = {\n formats: [],\n format_map: {},\n truncate: util.truncate,\n pad: util.pad,\n day: format.day,\n month: format.month\n};\n\nfunction template(text) {\n var src = source(text, 'd');\n src = 'var __t; return ' + src + ';';\n\n /* jshint evil: true */\n return (new Function('d', src)).bind(context);\n}\n\ntemplate.source = source;\ntemplate.context = context;\ntemplate.format = get_format;\nmodule.exports = template;\n\n// Clear cache of format objects.\n// This can *break* prior template functions, so invoke with care!\ntemplate.clearFormatCache = function() {\n context.formats = [];\n context.format_map = {};\n};\n\n// Generate property access code for use within template source.\n// object: the name of the object (variable) containing template data\n// property: the property access string, verbatim from template tag\ntemplate.property = function(object, property) {\n var src = util.field(property).map(util.str).join('][');\n return object + '[' + src + ']';\n};\n\n// Generate source code for a template function.\n// text: the template text\n// variable: the name of the data object variable ('obj' by default)\n// properties: optional hash for collecting all accessed properties\nfunction source(text, variable, properties) {\n variable = variable || 'obj';\n var index = 0;\n var src = '\\'';\n var regex = template_re;\n\n // Compile the template source, escaping string literals appropriately.\n text.replace(regex, function(match, interpolate, offset) {\n src += text\n .slice(index, offset)\n .replace(template_escaper, template_escapeChar);\n index = offset + match.length;\n\n if (interpolate) {\n src += '\\'\\n+((__t=(' +\n template_var(interpolate, variable, properties) +\n '))==null?\\'\\':__t)+\\n\\'';\n }\n\n // Adobe VMs need the match returned to produce the correct offest.\n return match;\n });\n return src + '\\'';\n}\n\nfunction template_var(text, variable, properties) {\n var filters = text.match(filter_re);\n var prop = filters.shift().trim();\n var stringCast = true;\n\n function strcall(fn) {\n fn = fn || '';\n if (stringCast) {\n stringCast = false;\n src = 'String(' + src + ')' + fn;\n } else {\n src += fn;\n }\n return src;\n }\n\n function date() {\n return '(typeof ' + src + '===\"number\"?new Date('+src+'):'+src+')';\n }\n\n function formatter(type) {\n var pattern = args[0];\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n } else {\n throw Error('Format pattern must be quoted: ' + pattern);\n }\n a = template_format(pattern, type);\n stringCast = false;\n var arg = type === 'number' ? src : date();\n src = 'this.formats['+a+']('+arg+')';\n }\n\n if (properties) properties[prop] = 1;\n var src = template.property(variable, prop);\n\n for (var i=0; i 0) {\n f = f.slice(0, pidx);\n args = filters[i].slice(pidx+1)\n .match(args_re)\n .map(function(s) { return s.trim(); });\n }\n f = f.trim();\n\n switch (f) {\n case 'length':\n strcall('.length');\n break;\n case 'lower':\n strcall('.toLowerCase()');\n break;\n case 'upper':\n strcall('.toUpperCase()');\n break;\n case 'lower-locale':\n strcall('.toLocaleLowerCase()');\n break;\n case 'upper-locale':\n strcall('.toLocaleUpperCase()');\n break;\n case 'trim':\n strcall('.trim()');\n break;\n case 'left':\n a = util.number(args[0]);\n strcall('.slice(0,' + a + ')');\n break;\n case 'right':\n a = util.number(args[0]);\n strcall('.slice(-' + a +')');\n break;\n case 'mid':\n a = util.number(args[0]);\n b = a + util.number(args[1]);\n strcall('.slice(+'+a+','+b+')');\n break;\n case 'slice':\n a = util.number(args[0]);\n strcall('.slice('+ a +\n (args.length > 1 ? ',' + util.number(args[1]) : '') +\n ')');\n break;\n case 'truncate':\n a = util.number(args[0]);\n b = args[1];\n b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n src = 'this.truncate(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n break;\n case 'pad':\n a = util.number(args[0]);\n b = args[1];\n b = (b!=='left' && b!=='middle' && b!=='center') ? 'right' : b;\n src = 'this.pad(' + strcall() + ',' + a + ',\\'' + b + '\\')';\n break;\n case 'number':\n formatter('number');\n break;\n case 'time':\n formatter('time');\n break;\n case 'time-utc':\n formatter('utc');\n break;\n case 'month':\n src = 'this.month(' + src + ')';\n break;\n case 'month-abbrev':\n src = 'this.month(' + src + ',true)';\n break;\n case 'day':\n src = 'this.day(' + src + ')';\n break;\n case 'day-abbrev':\n src = 'this.day(' + src + ',true)';\n break;\n default:\n throw Error('Unrecognized template filter: ' + f);\n }\n }\n\n return src;\n}\n\nvar template_re = /\\{\\{(.+?)\\}\\}|$/g,\n filter_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^\\|\"]+|[^\\|\\']+)+/g,\n args_re = /(?:\"[^\"]*\"|\\'[^\\']*\\'|[^,\"]+|[^,\\']+)+/g;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar template_escapes = {\n '\\'': '\\'',\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar template_escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction template_escapeChar(match) {\n return '\\\\' + template_escapes[match];\n}\n\nfunction template_format(pattern, type) {\n var key = type + ':' + pattern;\n if (context.format_map[key] == null) {\n var f = format[type](pattern);\n var i = context.formats.length;\n context.formats.push(f);\n context.format_map[key] = i;\n return i;\n }\n return context.format_map[key];\n}\n\nfunction get_format(pattern, type) {\n return context.formats[template_format(pattern, type)];\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/template.js\n ** module id = 45\n ** module chunks = 0\n **/","var util = require('./util'),\n time = require('./time'),\n utc = time.utc;\n\nvar u = module.exports;\n\nu.$year = util.$func('year', time.year.unit);\nu.$month = util.$func('month', time.months.unit);\nu.$date = util.$func('date', time.dates.unit);\nu.$day = util.$func('day', time.weekdays.unit);\nu.$hour = util.$func('hour', time.hours.unit);\nu.$minute = util.$func('minute', time.minutes.unit);\nu.$second = util.$func('second', time.seconds.unit);\n\nu.$utcYear = util.$func('utcYear', utc.year.unit);\nu.$utcMonth = util.$func('utcMonth', utc.months.unit);\nu.$utcDate = util.$func('utcDate', utc.dates.unit);\nu.$utcDay = util.$func('utcDay', utc.weekdays.unit);\nu.$utcHour = util.$func('utcHour', utc.hours.unit);\nu.$utcMinute = util.$func('utcMinute', utc.minutes.unit);\nu.$utcSecond = util.$func('utcSecond', utc.seconds.unit);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/accessor.js\n ** module id = 46\n ** module chunks = 0\n **/","var util = require('../util');\nvar load = require('./load');\nvar read = require('./read');\n\nmodule.exports = util\n .keys(read.formats)\n .reduce(function(out, type) {\n out[type] = function(opt, format, callback) {\n // process arguments\n if (util.isString(opt)) { opt = {url: opt}; }\n if (arguments.length === 2 && util.isFunction(format)) {\n callback = format;\n format = undefined;\n }\n\n // set up read format\n format = util.extend({parse: 'auto'}, format);\n format.type = type;\n\n // load data\n var data = load(opt, callback ? function(error, data) {\n if (error) { callback(error, null); return; }\n try {\n // data loaded, now parse it (async)\n data = read(data, format);\n callback(null, data);\n } catch (e) {\n callback(e, null);\n }\n } : undefined);\n\n // data loaded, now parse it (sync)\n if (!callback) return read(data, format);\n };\n return out;\n }, {});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/datalib/src/import/readers.js\n ** module id = 47\n ** module chunks = 0\n **/","var util = require('./util'),\n type = require('./import/type'),\n stats = require('./stats'),\n template = require('./template');\n\nmodule.exports = {\n table: formatTable, // format a data table\n summary: formatSummary // format a data table summary\n};\n\nvar FMT = {\n 'date': '|time:\"%m/%d/%Y %H:%M:%S\"',\n 'number': '|number:\".4f\"',\n 'integer': '|number:\"d\"'\n};\n\nvar POS = {\n 'number': 'left',\n 'integer': 'left'\n};\n\nfunction formatTable(data, opt) {\n opt = util.extend({separator:' ', minwidth: 8, maxwidth: 15}, opt);\n var fields = opt.fields || util.keys(data[0]),\n types = type.all(data);\n\n if (opt.start || opt.limit) {\n var a = opt.start || 0,\n b = opt.limit ? a + opt.limit : data.length;\n data = data.slice(a, b);\n }\n\n // determine char width of fields\n var lens = fields.map(function(name) {\n var format = FMT[types[name]] || '',\n t = template('{{' + name + format + '}}'),\n l = stats.max(data, function(x) { return t(x).length; });\n l = Math.max(Math.min(name.length, opt.minwidth), l);\n return opt.maxwidth > 0 ? Math.min(l, opt.maxwidth) : l;\n });\n\n // print header row\n var head = fields.map(function(name, i) {\n return util.truncate(util.pad(name, lens[i], 'center'), lens[i]);\n }).join(opt.separator);\n\n // build template function for each row\n var tmpl = template(fields.map(function(name, i) {\n return '{{' +\n name +\n (FMT[types[name]] || '') +\n ('|pad:' + lens[i] + ',' + (POS[types[name]] || 'right')) +\n ('|truncate:' + lens[i]) +\n '}}';\n }).join(opt.separator));\n\n // print table\n return head + \"\\n\" + data.map(tmpl).join('\\n');\n}\n\nfunction formatSummary(s) {\n s = s ? s.__summary__ ? s : stats.summary(s) : this;\n var str = [], i, n;\n for (i=0, n=s.length; i 1) {\n for (var i=1, n=ref.length; i 0) {\n node = pq.peek();\n isSg = node instanceof Signal;\n pulse = pulses[node._id];\n\n if (node.rank() !== node.qrank()) {\n // A node's rank might change during a propagation. Re-queue if so.\n pq.replace(node.qrank(true));\n } else {\n // Evaluate node and propagate pulse.\n pq.pop();\n pulses[node._id] = null;\n listeners = node._listeners;\n\n if (!isSg || (isSg && !skipSignals)) {\n pulse = this.evaluate(pulse, node);\n }\n\n // Propagate the pulse.\n if (pulse !== this.doNotPropagate) {\n // Ensure reflow pulses always send reflow pulses even if skipped.\n if (!pulse.reflow && node.reflows()) {\n pulse = ChangeSet.create(pulse, true);\n }\n\n for (i=0, len=listeners.length; i 0) branch[i-1].addListener(node);\n }\n\n return branch;\n};\n\nprototype.disconnect = function(branch) {\n var collector, node, data, signals, i, n, j, m;\n\n for (i=0, n=branch.length; i= pulse.stamp,\n run = node.router() || pulse.add.length || pulse.rem.length;\n\n return run || !reflowed || node.reevaluate(pulse);\n};\n\nprototype.evaluate = function(pulse, node) {\n if (!this.reevaluate(pulse, node)) return pulse;\n pulse = node.evaluate(pulse);\n node.last(pulse.stamp);\n return pulse;\n};\n\nmodule.exports = Graph;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Graph.js\n ** module id = 49\n ** module chunks = 0\n **/","function Heap(comparator) {\n this.cmp = comparator;\n this.nodes = [];\n}\n\nvar prototype = Heap.prototype;\n\nprototype.size = function() {\n return this.nodes.length;\n};\n\nprototype.clear = function() {\n return (this.nodes = [], this);\n};\n\nprototype.peek = function() {\n return this.nodes[0];\n};\n\nprototype.push = function(x) {\n var array = this.nodes;\n array.push(x);\n return _siftdown(array, 0, array.length-1, this.cmp);\n};\n\nprototype.pop = function() {\n var array = this.nodes,\n last = array.pop(),\n item;\n\n if (array.length) {\n item = array[0];\n array[0] = last;\n _siftup(array, 0, this.cmp);\n } else {\n item = last;\n }\n return item;\n};\n\nprototype.replace = function(item) {\n var array = this.nodes,\n retval = array[0];\n array[0] = item;\n _siftup(array, 0, this.cmp);\n return retval;\n};\n\nprototype.pushpop = function(item) {\n var array = this.nodes, ref = array[0];\n if (array.length && this.cmp(ref, item) < 0) {\n array[0] = item;\n item = ref;\n _siftup(array, 0, this.cmp);\n }\n return item;\n};\n\nfunction _siftdown(array, start, idx, cmp) {\n var item, parent, pidx;\n\n item = array[idx];\n while (idx > start) {\n pidx = (idx - 1) >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return (array[idx] = item);\n}\n\nfunction _siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx],\n cidx = 2 * idx + 1, ridx;\n\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = 2 * idx + 1;\n }\n array[idx] = item;\n return _siftdown(array, start, idx, cmp);\n}\n\nmodule.exports = Heap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Heap.js\n ** module id = 50\n ** module chunks = 0\n **/","var ChangeSet = require('./ChangeSet'),\n Node = require('./Node'), // jshint ignore:line\n Base = Node.prototype;\n\nfunction Signal(graph, name, initialValue) {\n Base.init.call(this, graph);\n this._name = name;\n this._value = initialValue;\n this._verbose = false; // Verbose signals re-pulse the graph even if prev === val.\n this._handlers = [];\n return this;\n}\n\nvar prototype = (Signal.prototype = Object.create(Base));\nprototype.constructor = Signal;\n\nprototype.name = function() {\n return this._name;\n};\n\nprototype.value = function(val) {\n if (!arguments.length) return this._value;\n return (this._value = val, this);\n};\n\n// Alias to value, for shared API with DataSource\nprototype.values = prototype.value;\n\nprototype.verbose = function(v) {\n if (!arguments.length) return this._verbose;\n return (this._verbose = !!v, this);\n};\n\nprototype.evaluate = function(input) {\n return input.signals[this._name] ? input : this._graph.doNotPropagate;\n};\n\nprototype.fire = function(cs) {\n if (!cs) cs = ChangeSet.create(null, true);\n cs.signals[this._name] = 1;\n this._graph.propagate(cs, this);\n};\n\nprototype.on = function(handler) {\n var signal = this,\n node = new Node(this._graph);\n\n node.evaluate = function(input) {\n handler(signal.name(), signal.value());\n return input;\n };\n\n this._handlers.push({\n handler: handler,\n node: node\n });\n\n return this.addListener(node);\n};\n\nprototype.off = function(handler) {\n var h = this._handlers, i, x;\n\n for (i=h.length; --i>=0;) {\n if (!handler || h[i].handler === handler) {\n x = h.splice(i, 1)[0];\n this.removeListener(x.node);\n }\n }\n\n return this;\n};\n\nmodule.exports = Signal;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-dataflow/src/Signal.js\n ** module id = 51\n ** module chunks = 0\n **/","module.exports = {\n axes: require('./axes'),\n background: require('./background'),\n data: require('./data'),\n events: require('vega-event-selector'),\n expr: require('./expr'),\n legends: require('./legends'),\n mark: require('./mark'),\n marks: require('./marks'),\n modify: require('./modify'),\n padding: require('./padding'),\n predicates: require('./predicates'),\n properties: require('./properties'),\n signals: require('./signals'),\n spec: require('./spec'),\n streams: require('./streams'),\n transforms: require('./transforms')\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/index.js\n ** module id = 52\n ** module chunks = 0\n **/","var dl = require('datalib'),\n axs = require('../scene/axis');\n\nvar ORIENT = {\n \"x\": \"bottom\",\n \"y\": \"left\",\n \"top\": \"top\",\n \"bottom\": \"bottom\",\n \"left\": \"left\",\n \"right\": \"right\"\n};\n\nfunction parseAxes(model, spec, axes, group) {\n var config = model.config();\n (spec || []).forEach(function(def, index) {\n axes[index] = axes[index] || axs(model);\n parseAxis(config, def, index, axes[index], group);\n });\n}\n\nfunction parseAxis(config, def, index, axis, group) {\n // axis scale\n if (def.scale !== undefined) {\n axis.scale(group.scale(def.scale));\n }\n\n // axis orientation\n axis.orient(def.orient || ORIENT[def.type]);\n // axis offset\n axis.offset(def.offset || 0);\n // axis layer\n axis.layer(def.layer || \"front\");\n // axis grid lines\n axis.grid(def.grid || false);\n // axis title\n axis.title(def.title || null);\n // axis title offset\n axis.titleOffset(def.titleOffset != null ?\n def.titleOffset : config.axis.titleOffset);\n // axis values\n axis.tickValues(def.values || null);\n // axis label formatting\n axis.tickFormat(def.format || null);\n axis.tickFormatType(def.formatType || null);\n // axis tick subdivision\n axis.tickSubdivide(def.subdivide || 0);\n // axis tick padding\n axis.tickPadding(def.tickPadding || config.axis.padding);\n\n // axis tick size(s)\n var size = [];\n if (def.tickSize !== undefined) {\n for (var i=0; i<3; ++i) size.push(def.tickSize);\n } else {\n var ts = config.axis.tickSize;\n size = [ts, ts, ts];\n }\n if (def.tickSizeMajor != null) size[0] = def.tickSizeMajor;\n if (def.tickSizeMinor != null) size[1] = def.tickSizeMinor;\n if (def.tickSizeEnd != null) size[2] = def.tickSizeEnd;\n if (size.length) {\n axis.tickSize.apply(axis, size);\n }\n\n // axis tick count\n axis.tickCount(def.ticks || config.axis.ticks);\n\n // style properties\n var p = def.properties;\n if (p && p.ticks) {\n axis.majorTickProperties(p.majorTicks ?\n dl.extend({}, p.ticks, p.majorTicks) : p.ticks);\n axis.minorTickProperties(p.minorTicks ?\n dl.extend({}, p.ticks, p.minorTicks) : p.ticks);\n } else {\n axis.majorTickProperties(p && p.majorTicks || {});\n axis.minorTickProperties(p && p.minorTicks || {});\n }\n axis.tickLabelProperties(p && p.labels || {});\n axis.titleProperties(p && p.title || {});\n axis.gridLineProperties(p && p.grid || {});\n axis.domainProperties(p && p.axis || {});\n}\n\nmodule.exports = parseAxes;\n\nparseAxes.schema = {\n \"defs\": {\n \"axis\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"x\", \"y\"]},\n \"scale\": {\"type\": \"string\"},\n \"orient\": {\"enum\": [\"top\", \"bottom\", \"left\", \"right\"]},\n \"title\": {\"type\": \"string\"},\n \"titleOffset\": {\"type\": \"number\"},\n \"format\": {\"type\": \"string\"},\n \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n \"ticks\": {\"type\": \"number\"},\n \"values\": {\n \"type\": \"array\",\n \"items\": {\"type\": [\"string\", \"number\"]}\n },\n \"subdivide\": {\"type\": \"number\"},\n \"tickPadding\": {\"type\": \"number\"},\n \"tickSize\": {\"type\": \"number\"},\n \"tickSizeMajor\": {\"type\": \"number\"},\n \"tickSizeMinor\": {\"type\": \"number\"},\n \"tickSizeEnd\": {\"type\": \"number\"},\n \"offset\": {\n \"oneOf\": [{\"type\": \"number\"}, {\n \"type\": \"object\",\n \"properties\": {\n \"scale\": {\"type\": \"string\"},\n \"value\": {\"type\": [\"string\", \"number\"]}\n },\n \"required\": [\"scale\", \"value\"],\n \"additionalProperties\": false\n }]\n },\n \"layer\": {\"enum\": [\"front\", \"back\"], \"default\": \"front\"},\n \"grid\": {\"type\": \"boolean\"},\n \"properties\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticks\": {\"$ref\": \"#/defs/propset\"},\n \"majorTicks\": {\"$ref\": \"#/defs/propset\"},\n \"minorTicks\": {\"$ref\": \"#/defs/propset\"},\n \"labels\": {\"$ref\": \"#/defs/propset\"},\n \"title\": {\"$ref\": \"#/defs/propset\"},\n \"grid\": {\"$ref\": \"#/defs/propset\"},\n \"axis\": {\"$ref\": \"#/defs/propset\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"scale\"]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/axes.js\n ** module id = 53\n ** module chunks = 0\n **/","var dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n parseMark = require('../parse/mark'),\n util = require('../util');\n\nvar axisBounds = new (require('vega-scenegraph').Bounds)();\nvar ORDINAL = 'ordinal';\n\nfunction axs(model) {\n var scale,\n config = model.config().axis,\n orient = config.orient,\n offset = 0,\n titleOffset = config.titleOffset,\n axisDef = {},\n layer = 'front',\n grid = false,\n title = null,\n tickMajorSize = config.tickSize,\n tickMinorSize = config.tickSize,\n tickEndSize = config.tickSize,\n tickPadding = config.padding,\n tickValues = null,\n tickFormatString = null,\n tickFormatType = null,\n tickSubdivide = 0,\n tickCount = config.ticks,\n gridLineStyle = {},\n tickLabelStyle = {},\n majorTickStyle = {},\n minorTickStyle = {},\n titleStyle = {},\n domainStyle = {},\n m = { // Axis marks as references for updates\n gridLines: {},\n majorTicks: {},\n minorTicks: {},\n tickLabels: {},\n domain: {},\n title: {}\n };\n\n var axis = {};\n\n function reset() {\n axisDef.type = null;\n }\n\n function ingest(d) {\n return {data: d};\n }\n\n function getTicks(format) {\n var major = tickValues || (scale.ticks ? scale.ticks(tickCount) : scale.domain()),\n minor = axisSubdivide(scale, major, tickSubdivide).map(ingest);\n major = major.map(function(d) { return (d = ingest(d), d.label = format(d.data), d); });\n return [major, minor];\n }\n\n axis.def = function() {\n if (!axisDef.type) axis_def(scale);\n\n var format = util.getTickFormat(scale, tickCount, tickFormatType, tickFormatString),\n ticks = getTicks(format),\n tdata = title ? [title].map(ingest) : [];\n\n axisDef.marks[0].from = function() { return grid ? ticks[0] : []; };\n axisDef.marks[1].from = function() { return ticks[0]; };\n axisDef.marks[2].from = function() { return ticks[1]; };\n axisDef.marks[3].from = axisDef.marks[1].from;\n axisDef.marks[4].from = function() { return [1]; };\n axisDef.marks[5].from = function() { return tdata; };\n axisDef.offset = offset;\n axisDef.orient = orient;\n axisDef.layer = layer;\n if (titleOffset === 'auto') titleAutoOffset(axisDef);\n\n return axisDef;\n };\n\n function titleAutoOffset(axisDef) {\n var orient = axisDef.orient,\n update = axisDef.marks[5].properties.update,\n fn = update.encode,\n min = config.titleOffsetAutoMin,\n max = config.titleOffsetAutoMax,\n pad = config.titleOffsetAutoMargin;\n\n // Offset axis title using bounding box of axis domain and labels\n // Assumes other components are **encoded and bounded** beforehand\n update.encode = function(item, group, trans, db, signals, preds) {\n var dirty = fn.call(fn, item, group, trans, db, signals, preds),\n field = (orient==='bottom' || orient==='top') ? 'y' : 'x';\n if (titleStyle[field] != null) return dirty;\n\n axisBounds.clear()\n .union(group.items[3].bounds)\n .union(group.items[4].bounds);\n\n var o = trans ? {} : item,\n method = (orient==='left' || orient==='right') ? 'width' : 'height',\n sign = (orient==='top' || orient==='left') ? -1 : 1,\n off = ~~(axisBounds[method]() + item.fontSize/2 + pad);\n\n Tuple.set(o, field, sign * Math.min(Math.max(min, off), max));\n if (trans) trans.interpolate(item, o);\n return true;\n };\n }\n\n function axis_def(scale) {\n // setup scale mapping\n var newScale, oldScale, range;\n if (scale.type === ORDINAL) {\n newScale = {scale: scale.scaleName, offset: 0.5 + scale.rangeBand()/2};\n oldScale = newScale;\n } else {\n newScale = {scale: scale.scaleName, offset: 0.5};\n oldScale = {scale: scale.scaleName+':prev', offset: 0.5};\n }\n range = axisScaleRange(scale);\n\n // setup axis marks\n dl.extend(m.gridLines, axisTicks(config));\n dl.extend(m.majorTicks, axisTicks(config));\n dl.extend(m.minorTicks, axisTicks(config));\n dl.extend(m.tickLabels, axisTickLabels(config));\n dl.extend(m.domain, axisDomain(config));\n dl.extend(m.title, axisTitle(config));\n m.gridLines.properties.enter.stroke = {value: config.gridColor};\n m.gridLines.properties.enter.strokeOpacity = {value: config.gridOpacity};\n\n // extend axis marks based on axis orientation\n axisTicksExtend(orient, m.gridLines, oldScale, newScale, Infinity, offset);\n axisTicksExtend(orient, m.majorTicks, oldScale, newScale, tickMajorSize);\n axisTicksExtend(orient, m.minorTicks, oldScale, newScale, tickMinorSize);\n axisLabelExtend(orient, m.tickLabels, oldScale, newScale, tickMajorSize, tickPadding);\n\n axisDomainExtend(orient, m.domain, range, tickEndSize);\n axisTitleExtend(orient, m.title, range, +titleOffset || -1);\n\n // add / override custom style properties\n dl.extend(m.gridLines.properties.update, gridLineStyle);\n dl.extend(m.majorTicks.properties.update, majorTickStyle);\n dl.extend(m.minorTicks.properties.update, minorTickStyle);\n dl.extend(m.tickLabels.properties.update, tickLabelStyle);\n dl.extend(m.domain.properties.update, domainStyle);\n dl.extend(m.title.properties.update, titleStyle);\n\n var marks = [m.gridLines, m.majorTicks, m.minorTicks, m.tickLabels, m.domain, m.title];\n dl.extend(axisDef, {\n type: 'group',\n interactive: false,\n properties: {\n enter: {\n encode: axisUpdate,\n scales: [scale.scaleName],\n signals: [], data: []\n },\n update: {\n encode: axisUpdate,\n scales: [scale.scaleName],\n signals: [], data: []\n }\n }\n });\n\n axisDef.marks = marks.map(function(m) { return parseMark(model, m); });\n }\n\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n if (scale !== x) { scale = x; reset(); }\n return axis;\n };\n\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n if (orient !== x) {\n orient = x in axisOrients ? x + '' : config.orient;\n reset();\n }\n return axis;\n };\n\n axis.title = function(x) {\n if (!arguments.length) return title;\n if (title !== x) { title = x; reset(); }\n return axis;\n };\n\n axis.tickCount = function(x) {\n if (!arguments.length) return tickCount;\n tickCount = x;\n return axis;\n };\n\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormatString;\n if (tickFormatString !== x) {\n tickFormatString = x;\n reset();\n }\n return axis;\n };\n\n axis.tickFormatType = function(x) {\n if (!arguments.length) return tickFormatType;\n if (tickFormatType !== x) {\n tickFormatType = x;\n reset();\n }\n return axis;\n };\n\n axis.tickSize = function(x, y) {\n if (!arguments.length) return tickMajorSize;\n var n = arguments.length - 1,\n major = +x,\n minor = n > 1 ? +y : tickMajorSize,\n end = n > 0 ? +arguments[n] : tickMajorSize;\n\n if (tickMajorSize !== major ||\n tickMinorSize !== minor ||\n tickEndSize !== end) {\n reset();\n }\n\n tickMajorSize = major;\n tickMinorSize = minor;\n tickEndSize = end;\n return axis;\n };\n\n axis.tickSubdivide = function(x) {\n if (!arguments.length) return tickSubdivide;\n tickSubdivide = +x;\n return axis;\n };\n\n axis.offset = function(x) {\n if (!arguments.length) return offset;\n offset = dl.isObject(x) ? x : +x;\n return axis;\n };\n\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n if (tickPadding !== +x) { tickPadding = +x; reset(); }\n return axis;\n };\n\n axis.titleOffset = function(x) {\n if (!arguments.length) return titleOffset;\n if (titleOffset !== x) { titleOffset = x; reset(); }\n return axis;\n };\n\n axis.layer = function(x) {\n if (!arguments.length) return layer;\n if (layer !== x) { layer = x; reset(); }\n return axis;\n };\n\n axis.grid = function(x) {\n if (!arguments.length) return grid;\n if (grid !== x) { grid = x; reset(); }\n return axis;\n };\n\n axis.gridLineProperties = function(x) {\n if (!arguments.length) return gridLineStyle;\n if (gridLineStyle !== x) { gridLineStyle = x; }\n return axis;\n };\n\n axis.majorTickProperties = function(x) {\n if (!arguments.length) return majorTickStyle;\n if (majorTickStyle !== x) { majorTickStyle = x; }\n return axis;\n };\n\n axis.minorTickProperties = function(x) {\n if (!arguments.length) return minorTickStyle;\n if (minorTickStyle !== x) { minorTickStyle = x; }\n return axis;\n };\n\n axis.tickLabelProperties = function(x) {\n if (!arguments.length) return tickLabelStyle;\n if (tickLabelStyle !== x) { tickLabelStyle = x; }\n return axis;\n };\n\n axis.titleProperties = function(x) {\n if (!arguments.length) return titleStyle;\n if (titleStyle !== x) { titleStyle = x; }\n return axis;\n };\n\n axis.domainProperties = function(x) {\n if (!arguments.length) return domainStyle;\n if (domainStyle !== x) { domainStyle = x; }\n return axis;\n };\n\n axis.reset = function() {\n reset();\n return axis;\n };\n\n return axis;\n}\n\nvar axisOrients = {top: 1, right: 1, bottom: 1, left: 1};\n\nfunction axisSubdivide(scale, ticks, m) {\n var subticks = [];\n if (m && ticks.length > 1) {\n var extent = axisScaleExtent(scale.domain()),\n i = -1,\n n = ticks.length,\n d = (ticks[1] - ticks[0]) / ++m,\n j,\n v;\n while (++i < n) {\n for (j = m; --j > 0;) {\n if ((v = +ticks[i] - j * d) >= extent[0]) {\n subticks.push(v);\n }\n }\n }\n for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1];) {\n subticks.push(v);\n }\n }\n return subticks;\n}\n\nfunction axisScaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n}\n\nfunction axisScaleRange(scale) {\n return scale.rangeExtent ?\n scale.rangeExtent() :\n axisScaleExtent(scale.range());\n}\n\nvar axisAlign = {\n bottom: 'center',\n top: 'center',\n left: 'right',\n right: 'left'\n};\n\nvar axisBaseline = {\n bottom: 'top',\n top: 'bottom',\n left: 'middle',\n right: 'middle'\n};\n\nfunction axisLabelExtend(orient, labels, oldScale, newScale, size, pad) {\n size = Math.max(size, 0) + pad;\n if (orient === 'left' || orient === 'top') {\n size *= -1;\n }\n if (orient === 'top' || orient === 'bottom') {\n dl.extend(labels.properties.enter, {\n x: oldScale,\n y: {value: size},\n });\n dl.extend(labels.properties.update, {\n x: newScale,\n y: {value: size},\n align: {value: 'center'},\n baseline: {value: axisBaseline[orient]}\n });\n } else {\n dl.extend(labels.properties.enter, {\n x: {value: size},\n y: oldScale,\n });\n dl.extend(labels.properties.update, {\n x: {value: size},\n y: newScale,\n align: {value: axisAlign[orient]},\n baseline: {value: 'middle'}\n });\n }\n}\n\nfunction axisTicksExtend(orient, ticks, oldScale, newScale, size, offset) {\n var sign = (orient === 'left' || orient === 'top') ? -1 : 1;\n if (size === Infinity) {\n size = (orient === 'top' || orient === 'bottom') ?\n {field: {group: 'height', level: 2}, mult: -sign, offset: offset*-sign} :\n {field: {group: 'width', level: 2}, mult: -sign, offset: offset*-sign};\n } else {\n size = {value: sign * size, offset: offset};\n }\n if (orient === 'top' || orient === 'bottom') {\n dl.extend(ticks.properties.enter, {\n x: oldScale,\n y: {value: 0},\n y2: size\n });\n dl.extend(ticks.properties.update, {\n x: newScale,\n y: {value: 0},\n y2: size\n });\n dl.extend(ticks.properties.exit, {\n x: newScale,\n });\n } else {\n dl.extend(ticks.properties.enter, {\n x: {value: 0},\n x2: size,\n y: oldScale\n });\n dl.extend(ticks.properties.update, {\n x: {value: 0},\n x2: size,\n y: newScale\n });\n dl.extend(ticks.properties.exit, {\n y: newScale,\n });\n }\n}\n\nfunction axisTitleExtend(orient, title, range, offset) {\n var update = title.properties.update,\n mid = ~~((range[0] + range[1]) / 2),\n sign = (orient === 'top' || orient === 'left') ? -1 : 1;\n\n if (orient === 'bottom' || orient === 'top') {\n update.x = {value: mid};\n update.angle = {value: 0};\n if (offset >= 0) update.y = {value: sign * offset};\n } else {\n update.y = {value: mid};\n update.angle = {value: orient === 'left' ? -90 : 90};\n if (offset >= 0) update.x = {value: sign * offset};\n }\n}\n\nfunction axisDomainExtend(orient, domain, range, size) {\n var path;\n if (orient === 'top' || orient === 'left') {\n size = -1 * size;\n }\n if (orient === 'bottom' || orient === 'top') {\n path = 'M' + range[0] + ',' + size + 'V0H' + range[1] + 'V' + size;\n } else {\n path = 'M' + size + ',' + range[0] + 'H0V' + range[1] + 'H' + size;\n }\n domain.properties.update.path = {value: path};\n}\n\nfunction axisUpdate(item, group, trans) {\n var o = trans ? {} : item,\n offset = item.mark.def.offset,\n orient = item.mark.def.orient,\n width = group.width,\n height = group.height; // TODO fallback to global w,h?\n\n if (dl.isArray(offset)) {\n var ofx = offset[0],\n ofy = offset[1];\n\n switch (orient) {\n case 'left': { Tuple.set(o, 'x', -ofx); Tuple.set(o, 'y', ofy); break; }\n case 'right': { Tuple.set(o, 'x', width + ofx); Tuple.set(o, 'y', ofy); break; }\n case 'bottom': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', height + ofy); break; }\n case 'top': { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', -ofy); break; }\n default: { Tuple.set(o, 'x', ofx); Tuple.set(o, 'y', ofy); }\n }\n } else {\n if (dl.isObject(offset)) {\n offset = -group.scale(offset.scale)(offset.value);\n }\n\n switch (orient) {\n case 'left': { Tuple.set(o, 'x', -offset); Tuple.set(o, 'y', 0); break; }\n case 'right': { Tuple.set(o, 'x', width + offset); Tuple.set(o, 'y', 0); break; }\n case 'bottom': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', height + offset); break; }\n case 'top': { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', -offset); break; }\n default: { Tuple.set(o, 'x', 0); Tuple.set(o, 'y', 0); }\n }\n }\n\n if (trans) trans.interpolate(item, o);\n return true;\n}\n\nfunction axisTicks(config) {\n return {\n type: 'rule',\n interactive: false,\n key: 'data',\n properties: {\n enter: {\n stroke: {value: config.tickColor},\n strokeWidth: {value: config.tickWidth},\n opacity: {value: 1e-6}\n },\n exit: { opacity: {value: 1e-6} },\n update: { opacity: {value: 1} }\n }\n };\n}\n\nfunction axisTickLabels(config) {\n return {\n type: 'text',\n interactive: true,\n key: 'data',\n properties: {\n enter: {\n fill: {value: config.tickLabelColor},\n font: {value: config.tickLabelFont},\n fontSize: {value: config.tickLabelFontSize},\n opacity: {value: 1e-6},\n text: {field: 'label'}\n },\n exit: { opacity: {value: 1e-6} },\n update: { opacity: {value: 1} }\n }\n };\n}\n\nfunction axisTitle(config) {\n return {\n type: 'text',\n interactive: true,\n properties: {\n enter: {\n font: {value: config.titleFont},\n fontSize: {value: config.titleFontSize},\n fontWeight: {value: config.titleFontWeight},\n fill: {value: config.titleColor},\n align: {value: 'center'},\n baseline: {value: 'middle'},\n text: {field: 'data'}\n },\n update: {}\n }\n };\n}\n\nfunction axisDomain(config) {\n return {\n type: 'path',\n interactive: false,\n properties: {\n enter: {\n x: {value: 0.5},\n y: {value: 0.5},\n stroke: {value: config.axisColor},\n strokeWidth: {value: config.axisWidth}\n },\n update: {}\n }\n };\n}\n\nmodule.exports = axs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/scene/axis.js\n ** module id = 54\n ** module chunks = 0\n **/","var dl = require('datalib'),\n parseProperties = require('./properties');\n\nfunction parseMark(model, mark) {\n var props = mark.properties,\n group = mark.marks;\n\n // parse mark property definitions\n dl.keys(props).forEach(function(k) {\n props[k] = parseProperties(model, mark.type, props[k]);\n });\n\n // parse delay function\n if (mark.delay) {\n mark.delay = parseProperties(model, mark.type, {delay: mark.delay});\n }\n\n // recurse if group type\n if (group) {\n mark.marks = group.map(function(g) { return parseMark(model, g); });\n }\n\n return mark;\n}\n\nmodule.exports = parseMark;\n\nparseMark.schema = {\n \"defs\": {\n \"mark\": {\n \"type\": \"object\",\n\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"key\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"rect\", \"symbol\", \"path\", \"arc\",\n \"area\", \"line\", \"rule\", \"image\", \"text\", \"group\"]},\n\n \"from\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\"type\": \"string\"},\n \"mark\": {\"type\": \"string\"},\n \"transform\": {\"$ref\": \"#/defs/transform\"}\n },\n \"additionalProperties\": false\n },\n\n \"delay\": {\"$ref\": \"#/refs/numberValue\"},\n \"ease\": {\n \"enum\": [\"linear\", \"quad\", \"cubic\", \"sin\",\n \"exp\", \"circle\", \"bounce\"].reduce(function(acc, e) {\n [\"in\", \"out\", \"in-out\", \"out-in\"].forEach(function(m) {\n acc.push(e+\"-\"+m);\n });\n return acc;\n }, [])\n },\n\n \"interactive\": {\"type\": \"boolean\"},\n\n \"properties\": {\n \"type\": \"object\",\n \"properties\": {\n \"enter\": {\"$ref\": \"#/defs/propset\"},\n \"update\": {\"$ref\": \"#/defs/propset\"},\n \"exit\": {\"$ref\": \"#/defs/propset\"},\n \"hover\": {\"$ref\": \"#/defs/propset\"}\n },\n \"additionalProperties\": false,\n \"anyOf\": [{\"required\": [\"enter\"]}, {\"required\": [\"update\"]}]\n }\n },\n\n // \"additionalProperties\": false,\n \"required\": [\"type\"]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/mark.js\n ** module id = 55\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n log = require('vega-logging'),\n Tuple = require('vega-dataflow').Tuple;\n\nvar DEPS = [\"signals\", \"scales\", \"data\", \"fields\"];\n\nfunction properties(model, mark, spec) {\n var config = model.config(),\n code = \"\",\n names = dl.keys(spec),\n exprs = [], // parsed expressions injected in the generated code\n i, len, name, ref, vars = {},\n deps = {\n signals: {},\n scales: {},\n data: {},\n fields: {},\n nested: [],\n _nRefs: {}, // Temp stash to de-dupe nested refs.\n reflow: false\n };\n\n code += \"var o = trans ? {} : item, d=0, exprs=this.exprs, set=this.tpl.set, tmpl=signals||{}, t;\\n\" +\n // Stash for dl.template\n \"tmpl.datum = item.datum;\\n\" +\n \"tmpl.group = group;\\n\" +\n \"tmpl.parent = group.datum;\\n\";\n\n function handleDep(p) {\n if (ref[p] == null) return;\n var k = dl.array(ref[p]), i, n;\n for (i=0, n=k.length; i 0) ? \"\\n \" : \" \";\n if (ref.rule) {\n // a production rule valueref\n ref = rule(model, name, ref.rule, exprs);\n code += \"\\n \" + ref.code;\n } else if (dl.isArray(ref)) {\n // a production rule valueref as an array\n ref = rule(model, name, ref, exprs);\n code += \"\\n \" + ref.code;\n } else {\n // a simple valueref\n ref = valueRef(config, name, ref);\n code += \"d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n }\n\n vars[name] = true;\n DEPS.forEach(handleDep);\n deps.reflow = deps.reflow || ref.reflow;\n if (ref.nested.length) ref.nested.forEach(handleNestedRefs);\n }\n\n // If nested references are present, sort them based on their level\n // to speed up determination of whether encoders should be reeval'd.\n dl.keys(deps._nRefs).forEach(function(k) { deps.nested.push(deps._nRefs[k]); });\n deps.nested.sort(function(a, b) {\n a = a.level;\n b = b.level;\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n\n if (vars.x2) {\n if (vars.x) {\n code += \"\\n if (o.x > o.x2) { \" +\n \"\\n t = o.x;\" +\n \"\\n d += set(o, 'x', o.x2);\" +\n \"\\n d += set(o, 'x2', t); \" +\n \"\\n };\";\n code += \"\\n d += set(o, 'width', (o.x2 - o.x));\";\n } else if (vars.width) {\n code += \"\\n d += set(o, 'x', (o.x2 - o.width));\";\n } else {\n code += \"\\n d += set(o, 'x', o.x2);\";\n }\n }\n\n if (vars.xc) {\n if (vars.width) {\n code += \"\\n d += set(o, 'x', (o.xc - o.width/2));\" ;\n } else {\n code += \"\\n d += set(o, 'x', o.xc);\" ;\n }\n }\n\n if (vars.y2) {\n if (vars.y) {\n code += \"\\n if (o.y > o.y2) { \" +\n \"\\n t = o.y;\" +\n \"\\n d += set(o, 'y', o.y2);\" +\n \"\\n d += set(o, 'y2', t);\" +\n \"\\n };\";\n code += \"\\n d += set(o, 'height', (o.y2 - o.y));\";\n } else if (vars.height) {\n code += \"\\n d += set(o, 'y', (o.y2 - o.height));\";\n } else {\n code += \"\\n d += set(o, 'y', o.y2);\";\n }\n }\n\n if (vars.yc) {\n if (vars.height) {\n code += \"\\n d += set(o, 'y', (o.yc - o.height/2));\" ;\n } else {\n code += \"\\n d += set(o, 'y', o.yc);\" ;\n }\n }\n\n if (hasPath(mark, vars)) code += \"\\n d += (item.touch(), 1);\";\n code += \"\\n if (trans) trans.interpolate(item, o);\";\n code += \"\\n return d > 0;\";\n\n try {\n /* jshint evil:true */\n var encoder = Function('item', 'group', 'trans', 'db',\n 'signals', 'predicates', code);\n\n encoder.tpl = Tuple;\n encoder.exprs = exprs;\n encoder.util = dl;\n encoder.d3 = d3; // For color spaces\n dl.extend(encoder, dl.template.context);\n return {\n encode: encoder,\n signals: dl.keys(deps.signals),\n scales: dl.keys(deps.scales),\n data: dl.keys(deps.data),\n fields: dl.keys(deps.fields),\n nested: deps.nested,\n reflow: deps.reflow\n };\n } catch (e) {\n log.error(e);\n log.log(code);\n }\n}\n\nfunction dependencies(a, b) {\n if (!dl.isObject(a)) {\n a = {reflow: false, nested: []};\n DEPS.forEach(function(d) { a[d] = []; });\n }\n\n if (dl.isObject(b)) {\n a.reflow = a.reflow || b.reflow;\n a.nested.push.apply(a.nested, b.nested);\n DEPS.forEach(function(d) { a[d].push.apply(a[d], b[d]); });\n }\n\n return a;\n}\n\nfunction hasPath(mark, vars) {\n return vars.path ||\n ((mark==='area' || mark==='line') &&\n (vars.x || vars.x2 || vars.width ||\n vars.y || vars.y2 || vars.height ||\n vars.tension || vars.interpolate));\n}\n\nfunction rule(model, name, rules, exprs) {\n var config = model.config(),\n deps = dependencies(),\n inputs = [],\n code = '';\n\n (rules||[]).forEach(function(r, i) {\n var ref = valueRef(config, name, r);\n dependencies(deps, ref);\n\n if (r.test) {\n // rule uses an expression instead of a predicate.\n var exprFn = model.expr(r.test);\n deps.signals.push.apply(deps.signals, exprFn.globals);\n deps.data.push.apply(deps.data, exprFn.dataSources);\n\n code += \"if (exprs[\" + exprs.length + \"](item.datum, null)) {\" +\n \"\\n d += set(o, \"+dl.str(name)+\", \" +ref.val+\");\";\n code += rules[i+1] ? \"\\n } else \" : \" }\";\n\n exprs.push(exprFn.fn);\n } else {\n var def = r.predicate,\n predName = def && (def.name || def),\n pred = model.predicate(predName),\n p = 'predicates['+dl.str(predName)+']',\n input = [], args = name+'_arg'+i;\n\n if (dl.isObject(def)) {\n dl.keys(def).forEach(function(k) {\n if (k === 'name') return;\n var ref = valueRef(config, i, def[k], true);\n input.push(dl.str(k)+': '+ref.val);\n dependencies(deps, ref);\n });\n }\n\n if (predName) {\n // append the predicates dependencies to our dependencies\n deps.signals.push.apply(deps.signals, pred.signals);\n deps.data.push.apply(deps.data, pred.data);\n inputs.push(args+\" = {\\n \"+input.join(\",\\n \")+\"\\n }\");\n code += \"if (\"+p+\".call(\"+p+\",\"+args+\", db, signals, predicates)) {\" +\n \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\";\n code += rules[i+1] ? \"\\n } else \" : \" }\";\n } else {\n code += \"{\" +\n \"\\n d += set(o, \"+dl.str(name)+\", \"+ref.val+\");\"+\n \"\\n }\\n\";\n }\n }\n });\n\n if (inputs.length) code = \"var \" + inputs.join(\",\\n \") + \";\\n \" + code;\n return (deps.code = code, deps);\n}\n\nfunction valueRef(config, name, ref, predicateArg) {\n if (ref == null) return null;\n\n if (name==='fill' || name==='stroke') {\n if (ref.c) {\n return colorRef(config, 'hcl', ref.h, ref.c, ref.l);\n } else if (ref.h || ref.s) {\n return colorRef(config, 'hsl', ref.h, ref.s, ref.l);\n } else if (ref.l || ref.a) {\n return colorRef(config, 'lab', ref.l, ref.a, ref.b);\n } else if (ref.r || ref.g || ref.b) {\n return colorRef(config, 'rgb', ref.r, ref.g, ref.b);\n }\n }\n\n // initialize value\n var val = null, scale = null,\n deps = dependencies(),\n sgRef = null, fRef = null, sRef = null, tmpl = {};\n\n if (ref.template !== undefined) {\n val = dl.template.source(ref.template, 'tmpl', tmpl);\n dl.keys(tmpl).forEach(function(k) {\n var f = dl.field(k),\n a = f.shift();\n if (a === 'parent' || a === 'group') {\n deps.nested.push({\n parent: a === 'parent',\n group: a === 'group',\n level: 1\n });\n } else if (a === 'datum') {\n deps.fields.push(f[0]);\n } else {\n deps.signals.push(a);\n }\n });\n }\n\n if (ref.value !== undefined) {\n val = dl.str(ref.value);\n }\n\n if (ref.signal !== undefined) {\n sgRef = dl.field(ref.signal);\n val = 'signals['+sgRef.map(dl.str).join('][')+']';\n deps.signals.push(sgRef.shift());\n }\n\n if (ref.field !== undefined) {\n ref.field = dl.isString(ref.field) ? {datum: ref.field} : ref.field;\n fRef = fieldRef(ref.field);\n val = fRef.val;\n dependencies(deps, fRef);\n }\n\n if (ref.scale !== undefined) {\n sRef = scaleRef(ref.scale);\n scale = sRef.val;\n dependencies(deps, sRef);\n deps.scales.push(ref.scale.name || ref.scale);\n\n // run through scale function if val specified.\n // if no val, scale function is predicate arg.\n if (val !== null || ref.band || ref.mult || ref.offset || !predicateArg) {\n val = scale + (ref.band ? '.rangeBand()' :\n '('+(val !== null ? val : 'item.datum.data')+')');\n } else if (predicateArg) {\n val = scale;\n }\n }\n\n // multiply, offset, return value\n val = '(' + (ref.mult?(dl.number(ref.mult)+' * '):'') + val + ')' +\n (ref.offset ? ' + ' + dl.number(ref.offset) : '');\n\n // Collate dependencies\n return (deps.val = val, deps);\n}\n\nfunction colorRef(config, type, x, y, z) {\n var xx = x ? valueRef(config, '', x) : config.color[type][0],\n yy = y ? valueRef(config, '', y) : config.color[type][1],\n zz = z ? valueRef(config, '', z) : config.color[type][2],\n deps = dependencies();\n\n [xx, yy, zz].forEach(function(v) {\n if (dl.isArray) return;\n dependencies(deps, v);\n });\n\n var val = '(this.d3.' + type + '(' + [xx.val, yy.val, zz.val].join(',') + ') + \"\")';\n return (deps.val = val, deps);\n}\n\n// {field: {datum: \"foo\"} } -> item.datum.foo\n// {field: {group: \"foo\"} } -> group.foo\n// {field: {parent: \"foo\"} } -> group.datum.foo\nfunction fieldRef(ref) {\n if (dl.isString(ref)) {\n return {val: dl.field(ref).map(dl.str).join('][')};\n }\n\n // Resolve nesting/parent lookups\n var l = ref.level || 1,\n nested = (ref.group || ref.parent) && l,\n scope = nested ? Array(l).join('group.mark.') : '',\n r = fieldRef(ref.datum || ref.group || ref.parent || ref.signal),\n val = r.val,\n deps = dependencies(null, r);\n\n if (ref.datum) {\n val = 'item.datum['+val+']';\n deps.fields.push(ref.datum);\n } else if (ref.group) {\n val = scope+'group['+val+']';\n deps.nested.push({ level: l, group: true });\n } else if (ref.parent) {\n val = scope+'group.datum['+val+']';\n deps.nested.push({ level: l, parent: true });\n } else if (ref.signal) {\n val = 'signals['+val+']';\n deps.signals.push(dl.field(ref.signal)[0]);\n deps.reflow = true;\n }\n\n return (deps.val = val, deps);\n}\n\n// {scale: \"x\"}\n// {scale: {name: \"x\"}},\n// {scale: fieldRef}\nfunction scaleRef(ref) {\n var scale = null,\n fr = null,\n deps = dependencies();\n\n if (dl.isString(ref)) {\n scale = dl.str(ref);\n } else if (ref.name) {\n scale = dl.isString(ref.name) ? dl.str(ref.name) : (fr = fieldRef(ref.name)).val;\n } else {\n scale = (fr = fieldRef(ref)).val;\n }\n\n scale = '(item.mark._scaleRefs['+scale+'] = 1, group.scale('+scale+'))';\n if (ref.invert) scale += '.invert';\n\n // Mark scale refs as they're dealt with separately in mark._scaleRefs.\n if (fr) fr.nested.forEach(function(g) { g.scale = true; });\n return fr ? (fr.val = scale, fr) : (deps.val = scale, deps);\n}\n\nmodule.exports = properties;\n\nfunction valueSchema(type) {\n type = dl.isArray(type) ? {\"enum\": type} : {\"type\": type};\n var modType = type.type === \"number\" && type.type || \"string\";\n var valRef = {\n \"type\": \"object\",\n \"allOf\": [{\"$ref\": \"#/refs/\" + modType + \"Modifiers\"}, {\n \"oneOf\": [{\n \"$ref\": \"#/refs/signal\",\n \"required\": [\"signal\"]\n }, {\n \"properties\": {\"value\": type},\n \"required\": [\"value\"]\n }, {\n \"properties\": {\"field\": {\"$ref\": \"#/refs/field\"}},\n \"required\": [\"field\"]\n }, {\n \"properties\": {\"band\": {\"type\": \"boolean\"}},\n \"required\": [\"band\"]\n }]\n }]\n };\n\n if (type.type === \"string\") {\n valRef.allOf[1].oneOf.push({\n \"properties\": {\"template\": {\"type\": \"string\"}},\n \"required\": [\"template\"]\n });\n }\n\n return {\n \"oneOf\": [{\n \"type\": \"object\",\n \"properties\": {\n \"rule\": {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"rule\"]\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [{\"$ref\": \"#/defs/rule\"}, valRef]\n }\n },\n valRef]\n };\n}\n\nproperties.schema = {\n \"refs\": {\n \"field\": {\n \"title\": \"FieldRef\",\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"oneOf\": [\n {\"$ref\": \"#/refs/signal\"},\n {\n \"type\": \"object\",\n \"properties\": {\"datum\": {\"$ref\": \"#/refs/field\"}},\n \"required\": [\"datum\"],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"group\": {\"$ref\": \"#/refs/field\"},\n \"level\": {\"type\": \"number\"}\n },\n \"required\": [\"group\"],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"parent\": {\"$ref\": \"#/refs/field\"},\n \"level\": {\"type\": \"number\"}\n },\n \"required\": [\"parent\"],\n \"additionalProperties\": false\n }\n ]\n }\n ]\n },\n\n \"scale\": {\n \"title\": \"ScaleRef\",\n \"oneOf\": [\n {\"$ref\": \"#/refs/field\"},\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\"$ref\": \"#/refs/field\"},\n \"invert\": {\"type\": \"boolean\", \"default\": false}\n },\n \"required\": [\"name\"]\n }\n ]\n },\n\n \"stringModifiers\": {\n \"properties\": {\n \"scale\": {\"$ref\": \"#/refs/scale\"}\n }\n },\n\n \"numberModifiers\": {\n \"properties\": {\n \"mult\": {\"type\": \"number\"},\n \"offset\": {\"type\": \"number\"},\n \"scale\": {\"$ref\": \"#/refs/scale\"}\n }\n },\n\n \"value\": valueSchema({}, \"value\"),\n \"numberValue\": valueSchema(\"number\", \"numberValue\"),\n \"stringValue\": valueSchema(\"string\", \"stringValue\"),\n \"booleanValue\": valueSchema(\"boolean\", \"booleanValue\"),\n \"arrayValue\": valueSchema(\"array\", \"arrayValue\"),\n\n \"colorValue\": {\n \"title\": \"ColorRef\",\n \"oneOf\": [{\"$ref\": \"#/refs/stringValue\"}, {\n \"type\": \"object\",\n \"properties\": {\n \"r\": {\"$ref\": \"#/refs/numberValue\"},\n \"g\": {\"$ref\": \"#/refs/numberValue\"},\n \"b\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"r\", \"g\", \"b\"]\n }, {\n \"type\": \"object\",\n \"properties\": {\n \"h\": {\"$ref\": \"#/refs/numberValue\"},\n \"s\": {\"$ref\": \"#/refs/numberValue\"},\n \"l\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"h\", \"s\", \"l\"]\n }, {\n \"type\": \"object\",\n \"properties\": {\n \"l\": {\"$ref\": \"#/refs/numberValue\"},\n \"a\": {\"$ref\": \"#/refs/numberValue\"},\n \"b\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"l\", \"a\", \"b\"]\n }, {\n \"type\": \"object\",\n \"properties\": {\n \"h\": {\"$ref\": \"#/refs/numberValue\"},\n \"c\": {\"$ref\": \"#/refs/numberValue\"},\n \"l\": {\"$ref\": \"#/refs/numberValue\"}\n },\n \"required\": [\"h\", \"c\", \"l\"]\n }]\n }\n },\n\n \"defs\": {\n \"rule\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"predicate\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"type\": \"object\",\n \"properties\": {\"name\": { \"type\": \"string\" }},\n \"required\": [\"name\"]\n }\n ]\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\"test\": {\"type\": \"string\"}}\n }\n ]\n },\n \"propset\": {\n \"title\": \"Mark property set\",\n \"type\": \"object\",\n \"properties\": {\n // Common Properties\n \"x\": {\"$ref\": \"#/refs/numberValue\"},\n \"x2\": {\"$ref\": \"#/refs/numberValue\"},\n \"xc\": {\"$ref\": \"#/refs/numberValue\"},\n \"width\": {\"$ref\": \"#/refs/numberValue\"},\n \"y\": {\"$ref\": \"#/refs/numberValue\"},\n \"y2\": {\"$ref\": \"#/refs/numberValue\"},\n \"yc\": {\"$ref\": \"#/refs/numberValue\"},\n \"height\": {\"$ref\": \"#/refs/numberValue\"},\n \"opacity\": {\"$ref\": \"#/refs/numberValue\"},\n \"fill\": {\"$ref\": \"#/refs/colorValue\"},\n \"fillOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n \"stroke\": {\"$ref\": \"#/refs/colorValue\"},\n \"strokeWidth\": {\"$ref\": \"#/refs/numberValue\"},\n \"strokeOpacity\": {\"$ref\": \"#/refs/numberValue\"},\n \"strokeDash\": {\"$ref\": \"#/refs/arrayValue\"},\n \"strokeDashOffset\": {\"$ref\": \"#/refs/numberValue\"},\n \"cursor\": {\"$ref\": \"#/refs/stringValue\"},\n\n // Group-mark properties\n \"clip\": {\"$ref\": \"#/refs/booleanValue\"},\n\n // Symbol-mark properties\n \"size\": {\"$ref\": \"#/refs/numberValue\"},\n \"shape\": valueSchema([\"circle\", \"square\",\n \"cross\", \"diamond\", \"triangle-up\", \"triangle-down\"]),\n\n // Path-mark properties\n \"path\": {\"$ref\": \"#/refs/stringValue\"},\n\n // Arc-mark properties\n \"innerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n \"outerRadius\": {\"$ref\": \"#/refs/numberValue\"},\n \"startAngle\": {\"$ref\": \"#/refs/numberValue\"},\n \"endAngle\": {\"$ref\": \"#/refs/numberValue\"},\n\n // Area- and line-mark properties\n \"interpolate\": valueSchema([\"linear\", \"step-before\", \"step-after\",\n \"basis\", \"basis-open\", \"cardinal\", \"cardinal-open\", \"monotone\"]),\n \"tension\": {\"$ref\": \"#/refs/numberValue\"},\n \"orient\": valueSchema([\"horizontal\", \"vertical\"]),\n\n // Image-mark properties\n \"url\": {\"$ref\": \"#/refs/stringValue\"},\n \"align\": valueSchema([\"left\", \"right\", \"center\"]),\n \"baseline\": valueSchema([\"top\", \"middle\", \"bottom\", \"alphabetic\"]),\n\n // Text-mark properties\n \"text\": {\"$ref\": \"#/refs/stringValue\"},\n \"dx\": {\"$ref\": \"#/refs/numberValue\"},\n \"dy\": {\"$ref\": \"#/refs/numberValue\"},\n \"radius\":{\"$ref\": \"#/refs/numberValue\"},\n \"theta\": {\"$ref\": \"#/refs/numberValue\"},\n \"angle\": {\"$ref\": \"#/refs/numberValue\"},\n \"font\": {\"$ref\": \"#/refs/stringValue\"},\n \"fontSize\": {\"$ref\": \"#/refs/numberValue\"},\n \"fontWeight\": {\"$ref\": \"#/refs/stringValue\"},\n \"fontStyle\": {\"$ref\": \"#/refs/stringValue\"}\n },\n\n \"additionalProperties\": false\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/properties.js\n ** module id = 56\n ** module chunks = 0\n **/","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ 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 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/d3/d3.js\n ** module id = 57\n ** module chunks = 0\n **/","var dl = require('datalib'),\n u = {};\n\ndl.extend(u, require('./format'));\nmodule.exports = dl.extend(u, dl);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/util/index.js\n ** module id = 58\n ** module chunks = 0\n **/","var dl = require('datalib');\n\nvar TIME = 'time',\n UTC = 'utc',\n STRING = 'string',\n ORDINAL = 'ordinal',\n NUMBER = 'number';\n\nfunction getTickFormat(scale, tickCount, tickFormatType, tickFormatString) {\n var formatType = tickFormatType || inferFormatType(scale);\n return getFormatter(scale, tickCount, formatType, tickFormatString);\n}\n\nfunction inferFormatType(scale) {\n switch (scale.type) {\n case TIME: return TIME;\n case UTC: return UTC;\n case ORDINAL: return STRING;\n default: return NUMBER;\n }\n}\n\n// Adapted from d3 log scale\n// TODO customize? replace with range-size-aware filtering?\nfunction logFilter(scale, domain, count, f) {\n if (count == null) return f;\n var base = scale.base(),\n k = Math.min(base, scale.ticks().length / count),\n v = domain[0] > 0 ? (e = 1e-12, Math.ceil) : (e = -1e-12, Math.floor),\n e;\n function log(x) {\n return (domain[0] < 0 ?\n -Math.log(x > 0 ? 0 : -x) :\n Math.log(x < 0 ? 0 : x)) / Math.log(base);\n }\n function pow(x) {\n return domain[0] < 0 ? -Math.pow(base, -x) : Math.pow(base, x);\n }\n return function(d) {\n return pow(v(log(d) + e)) / d >= k ? f(d) : '';\n };\n}\n\nfunction getFormatter(scale, tickCount, formatType, str) {\n var fmt = dl.format,\n log = scale.type === 'log',\n domain;\n\n switch (formatType) {\n case NUMBER:\n domain = scale.domain();\n return log ?\n logFilter(scale, domain, tickCount, fmt.auto.number(str || null)) :\n fmt.auto.linear(domain, tickCount, str || null);\n case TIME: return (str ? fmt : fmt.auto).time(str);\n case UTC: return (str ? fmt : fmt.auto).utc(str);\n default: return String;\n }\n}\n\nmodule.exports = {\n getTickFormat: getTickFormat\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/util/format.js\n ** module id = 59\n ** module chunks = 0\n **/","module.exports = {\n path: require('./path'),\n render: require('./render'),\n Item: require('./util/Item'),\n bound: require('./util/bound'),\n Bounds: require('./util/Bounds'),\n canvas: require('./util/canvas'),\n Gradient: require('./util/Gradient'),\n toJSON: require('./util/scene').toJSON,\n fromJSON: require('./util/scene').fromJSON\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/index.js\n ** module id = 60\n ** module chunks = 0\n **/","module.exports = {\n parse: require('./parse'),\n render: require('./render')\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/path/index.js\n ** module id = 61\n ** module chunks = 0\n **/","// Path parsing and rendering code adapted from fabric.js -- Thanks!\nvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\nmodule.exports = function(pathstr) {\n var result = [],\n path,\n curr,\n chunks,\n parsed, param,\n cmd, len, i, j, n, m;\n\n // First, break path into command sequence\n path = pathstr\n .slice()\n .replace(regexp[0], '###$1')\n .split(regexp[1])\n .slice(1);\n\n // Next, parse each command in turn\n for (i=0, n=path.length; i len) {\n for (j=1, m=parsed.length; j 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = (-sin_th) / ry;\n var a11 = (cos_th) / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n\n var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\n var th0 = Math.atan2(y0-yc, x0-xc);\n var th1 = Math.atan2(y1-yc, x1-xc);\n\n var th_arc = th1-th0;\n if (th_arc < 0 && sweep === 1){\n th_arc += 2 * Math.PI;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= 2 * Math.PI;\n }\n\n var segs = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n var result = [];\n for (var i=0; i=0;) {\n if (h[i].type !== type) continue;\n if (!handler || h[i].handler === handler) h.splice(i, 1);\n }\n return this;\n};\n\nprototype.pickEvent = function(evt) {\n var rect = this._canvas.getBoundingClientRect(),\n pad = this._padding, x, y;\n return this.pick(this._scene,\n x = (evt.clientX - rect.left),\n y = (evt.clientY - rect.top),\n x - pad.left, y - pad.top);\n};\n\n// find the scenegraph item at the current mouse position\n// x, y -- the absolute x, y mouse coordinates on the canvas element\n// gx, gy -- the relative coordinates within the current group\nprototype.pick = function(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n};\n\nmodule.exports = CanvasHandler;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/CanvasHandler.js\n ** module id = 67\n ** module chunks = 0\n **/","// create a new DOM element\nfunction create(doc, tag, ns) {\n return ns ? doc.createElementNS(ns, tag) : doc.createElement(tag);\n}\n\n// remove element from DOM\n// recursively remove parent elements if empty\nfunction remove(el) {\n if (!el) return;\n var p = el.parentNode;\n if (p) {\n p.removeChild(el);\n if (!p.childNodes || !p.childNodes.length) remove(p);\n }\n}\n\nmodule.exports = {\n // find first child element with matching tag\n find: function(el, tag) {\n tag = tag.toLowerCase();\n for (var i=0, n=el.childNodes.length; i index) {\n el.removeChild(el.childNodes[--curr]);\n }\n return el;\n },\n remove: remove,\n // generate css class name for mark\n cssClass: function(mark) {\n return 'mark-' + mark.marktype + (mark.name ? ' '+mark.name : '');\n },\n // generate string for an opening xml tag\n // tag: the name of the xml tag\n // attr: hash of attribute name-value pairs to include\n // raw: additional raw string to include in tag markup\n openTag: function(tag, attr, raw) {\n var s = '<' + tag, key, val;\n if (attr) {\n for (key in attr) {\n val = attr[key];\n if (val != null) {\n s += ' ' + key + '=\"' + val + '\"';\n }\n }\n }\n if (raw) s += ' ' + raw;\n return s + '>';\n },\n // generate string for closing xml tag\n // tag: the name of the xml tag\n closeTag: function(tag) {\n return '';\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/dom.js\n ** module id = 68\n ** module chunks = 0\n **/","function Handler() {\n this._active = null;\n this._handlers = {};\n}\n\nvar prototype = Handler.prototype;\n\nprototype.initialize = function(el, pad, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.padding(pad);\n};\n\nprototype.element = function() {\n return this._el;\n};\n\nprototype.padding = function(pad) {\n this._padding = pad || {top:0, left:0, bottom:0, right:0};\n return this;\n};\n\nprototype.scene = function(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n};\n\n// add an event handler\n// subclasses should override\nprototype.on = function(/*type, handler*/) {};\n\n// remove an event handler\n// subclasses should override\nprototype.off = function(/*type, handler*/) {};\n\n// return an array with all registered event handlers\nprototype.handlers = function() {\n var h = this._handlers, a = [], k;\n for (k in h) { a.push.apply(a, h[k]); }\n return a;\n};\n\nprototype.eventName = function(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0,i);\n};\n\nmodule.exports = Handler;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/Handler.js\n ** module id = 69\n ** module chunks = 0\n **/","module.exports = {\n arc: require('./arc'),\n area: require('./area'),\n group: require('./group'),\n image: require('./image'),\n line: require('./line'),\n path: require('./path'),\n rect: require('./rect'),\n rule: require('./rule'),\n symbol: require('./symbol'),\n text: require('./text')\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/marks/index.js\n ** module id = 70\n ** module chunks = 0\n **/","var util = require('./util');\nvar halfpi = Math.PI / 2;\n\nfunction path(g, o) {\n var x = o.x || 0,\n y = o.y || 0,\n ir = o.innerRadius || 0,\n or = o.outerRadius || 0,\n sa = (o.startAngle || 0) - halfpi,\n ea = (o.endAngle || 0) - halfpi;\n g.beginPath();\n if (ir === 0) g.moveTo(x, y);\n else g.arc(x, y, ir, sa, ea, 0);\n g.arc(x, y, or, ea, sa, 1);\n g.closePath();\n}\n\nmodule.exports = {\n draw: util.drawAll(path),\n pick: util.pickPath(path)\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/marks/arc.js\n ** module id = 71\n ** module chunks = 0\n **/","function drawPathOne(path, g, o, items) {\n if (path(g, items)) return;\n\n var opac = o.opacity == null ? 1 : o.opacity;\n if (opac===0) return;\n\n if (o.fill && fill(g, o, opac)) { g.fill(); }\n if (o.stroke && stroke(g, o, opac)) { g.stroke(); }\n}\n\nfunction drawPathAll(path, g, scene, bounds) {\n var i, len, item;\n for (i=0, len=scene.items.length; i= 0;) {\n o = scene.items[i]; b = o.bounds;\n // first hit test against bounding box\n if ((b && !b.contains(gx, gy)) || !b) continue;\n // if in bounding box, perform more careful test\n if (test(g, o, x, y, gx, gy)) return o;\n }\n return null;\n };\n}\n\nfunction testPath(path, filled) {\n return function(g, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = (filled == null) ? item.fill : filled,\n stroke = item.stroke && g.isPointInStroke, lw, lc;\n\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n g.lineWidth = lw != null ? lw : 1;\n g.lineCap = lc != null ? lc : 'butt';\n }\n\n return path(g, o) ? false :\n (fill && g.isPointInPath(x, y)) ||\n (stroke && g.isPointInStroke(x, y));\n };\n}\n\nfunction pickPath(path) {\n return pick(testPath(path));\n}\n\nfunction fill(g, o, opacity) {\n opacity *= (o.fillOpacity==null ? 1 : o.fillOpacity);\n if (opacity > 0) {\n g.globalAlpha = opacity;\n g.fillStyle = color(g, o, o.fill);\n return true;\n } else {\n return false;\n }\n}\n\nfunction stroke(g, o, opacity) {\n var lw = (lw = o.strokeWidth) != null ? lw : 1, lc;\n if (lw <= 0) return false;\n\n opacity *= (o.strokeOpacity==null ? 1 : o.strokeOpacity);\n if (opacity > 0) {\n g.globalAlpha = opacity;\n g.strokeStyle = color(g, o, o.stroke);\n g.lineWidth = lw;\n g.lineCap = (lc = o.strokeCap) != null ? lc : 'butt';\n g.vgLineDash(o.strokeDash || null);\n g.vgLineDashOffset(o.strokeDashOffset || 0);\n return true;\n } else {\n return false;\n }\n}\n\nfunction color(g, o, value) {\n return (value.id) ?\n gradient(g, value, o.bounds) :\n value;\n}\n\nfunction gradient(g, p, b) {\n var w = b.width(),\n h = b.height(),\n x1 = b.x1 + p.x1 * w,\n y1 = b.y1 + p.y1 * h,\n x2 = b.x1 + p.x2 * w,\n y2 = b.y1 + p.y2 * h,\n grad = g.createLinearGradient(x1, y1, x2, y2),\n stop = p.stops,\n i, n;\n\n for (i=0, n=stop.length; i 0) {\n if (group.fill && util.fill(g, group, opac)) {\n g.fillRect(gx, gy, w, h);\n }\n if (group.stroke && util.stroke(g, group, opac)) {\n g.strokeRect(gx, gy, w, h);\n }\n }\n }\n\n // setup graphics context\n g.save();\n g.translate(gx, gy);\n if (group.clip) {\n g.beginPath();\n g.rect(0, 0, w, h);\n g.clip();\n }\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n for (j=0, m=axes.length; j=0;) {\n group = groups[i];\n\n // first hit test against bounding box\n // if a group is clipped, that should be handled by the bounds check.\n b = group.bounds;\n if (b && !b.contains(gx, gy)) continue;\n\n // passed bounds check, so test sub-groups\n axes = group.axisItems || EMPTY;\n items = group.items || EMPTY;\n legends = group.legendItems || EMPTY;\n dx = (group.x || 0);\n dy = (group.y || 0);\n\n g.save();\n g.translate(dx, dy);\n dx = gx - dx;\n dy = gy - dy;\n for (j=legends.length; --j>=0;) {\n subscene = legends[j];\n if (subscene.interactive !== false) {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n for (j=axes.length; --j>=0;) {\n subscene = axes[j];\n if (subscene.interactive !== false && subscene.layer !== 'back') {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n for (j=items.length; --j>=0;) {\n subscene = items[j];\n if (subscene.interactive !== false) {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n for (j=axes.length; --j>=0;) {\n subscene = axes[j];\n if (subscene.interative !== false && subscene.layer === 'back') {\n hits = this.pick(subscene, x, y, dx, dy);\n if (hits) { g.restore(); return hits; }\n }\n }\n g.restore();\n\n if (scene.interactive !== false && (group.fill || group.stroke) &&\n dx >= 0 && dx <= group.width && dy >= 0 && dy <= group.height) {\n return group;\n }\n }\n\n return null;\n}\n\nmodule.exports = {\n draw: draw,\n pick: pick\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/canvas/marks/group.js\n ** module id = 75\n ** module chunks = 0\n **/","var util = require('./util');\n\nfunction draw(g, scene, bounds) {\n if (!scene.items || !scene.items.length) return;\n\n var renderer = this,\n items = scene.items, o;\n\n for (var i=0, len=items.length; i this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n};\n\nprototype.expand = function(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n};\n\nprototype.round = function() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n};\n\nprototype.translate = function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n};\n\nprototype.rotate = function(angle, x, y) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x*cos + y*sin,\n cy = y - x*sin - y*cos,\n x1 = this.x1, x2 = this.x2,\n y1 = this.y1, y2 = this.y2;\n\n return this.clear()\n .add(cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy)\n .add(cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy)\n .add(cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy)\n .add(cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy);\n};\n\nprototype.union = function(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.encloses = function(b) {\n return b && (\n this.x1 <= b.x1 &&\n this.x2 >= b.x2 &&\n this.y1 <= b.y1 &&\n this.y2 >= b.y2\n );\n};\n\nprototype.alignsWith = function(b) {\n return b && (\n this.x1 == b.x1 ||\n this.x2 == b.x2 ||\n this.y1 == b.y1 ||\n this.y2 == b.y2\n );\n};\n\nprototype.intersects = function(b) {\n return b && !(\n this.x2 < b.x1 ||\n this.x1 > b.x2 ||\n this.y2 < b.y1 ||\n this.y1 > b.y2\n );\n};\n\nprototype.contains = function(x, y) {\n return !(\n x < this.x1 ||\n x > this.x2 ||\n y < this.y1 ||\n y > this.y2\n );\n};\n\nprototype.width = function() {\n return this.x2 - this.x1;\n};\n\nprototype.height = function() {\n return this.y2 - this.y1;\n};\n\nmodule.exports = Bounds;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/Bounds.js\n ** module id = 83\n ** module chunks = 0\n **/","var BoundsContext = require('./BoundsContext'),\n Bounds = require('./Bounds'),\n canvas = require('./canvas'),\n svg = require('./svg'),\n text = require('./text'),\n paths = require('../path'),\n parse = paths.parse,\n drawPath = paths.render,\n areaPath = svg.path.area,\n linePath = svg.path.line,\n halfpi = Math.PI / 2,\n sqrt3 = Math.sqrt(3),\n tan30 = Math.tan(30 * Math.PI / 180),\n g2D = null,\n bc = BoundsContext();\n\nfunction context() {\n return g2D || (g2D = canvas.instance(1,1).getContext('2d'));\n}\n\nfunction strokeBounds(o, bounds) {\n if (o.stroke && o.opacity !== 0 && o.stokeOpacity !== 0) {\n bounds.expand(o.strokeWidth != null ? o.strokeWidth : 1);\n }\n return bounds;\n}\n\nfunction pathBounds(o, path, bounds, x, y) {\n if (path == null) {\n bounds.set(0, 0, 0, 0);\n } else {\n drawPath(bc.bounds(bounds), path, x, y);\n strokeBounds(o, bounds);\n }\n return bounds;\n}\n\nfunction path(o, bounds) {\n var p = o.path ? o.pathCache || (o.pathCache = parse(o.path)) : null;\n return pathBounds(o, p, bounds, o.x, o.y);\n}\n\nfunction area(mark, bounds) {\n if (mark.items.length === 0) return bounds;\n var items = mark.items,\n item = items[0],\n p = item.pathCache || (item.pathCache = parse(areaPath(items)));\n return pathBounds(item, p, bounds);\n}\n\nfunction line(mark, bounds) {\n if (mark.items.length === 0) return bounds;\n var items = mark.items,\n item = items[0],\n p = item.pathCache || (item.pathCache = parse(linePath(items)));\n return pathBounds(item, p, bounds);\n}\n\nfunction rect(o, bounds) {\n var x, y;\n return strokeBounds(o, bounds.set(\n x = o.x || 0,\n y = o.y || 0,\n (x + o.width) || 0,\n (y + o.height) || 0\n ));\n}\n\nfunction image(o, bounds) {\n var x = o.x || 0,\n y = o.y || 0,\n w = o.width || 0,\n h = o.height || 0;\n x = x - (o.align === 'center' ? w/2 : (o.align === 'right' ? w : 0));\n y = y - (o.baseline === 'middle' ? h/2 : (o.baseline === 'bottom' ? h : 0));\n return bounds.set(x, y, x+w, y+h);\n}\n\nfunction rule(o, bounds) {\n var x1, y1;\n return strokeBounds(o, bounds.set(\n x1 = o.x || 0,\n y1 = o.y || 0,\n o.x2 != null ? o.x2 : x1,\n o.y2 != null ? o.y2 : y1\n ));\n}\n\nfunction arc(o, bounds) {\n var cx = o.x || 0,\n cy = o.y || 0,\n ir = o.innerRadius || 0,\n or = o.outerRadius || 0,\n sa = (o.startAngle || 0) - halfpi,\n ea = (o.endAngle || 0) - halfpi,\n xmin = Infinity, xmax = -Infinity,\n ymin = Infinity, ymax = -Infinity,\n a, i, n, x, y, ix, iy, ox, oy;\n\n var angles = [sa, ea],\n s = sa - (sa % halfpi);\n for (i=0; i<4 && s=0;) {\n if (h[i].type === type && !handler || h[i].handler === handler) {\n svg.removeEventListener(name, h[i].listener);\n h.splice(i, 1);\n }\n }\n return this;\n};\n\nmodule.exports = SVGHandler;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/svg/SVGHandler.js\n ** module id = 93\n ** module chunks = 0\n **/","var ImageLoader = require('../../util/ImageLoader'),\n Renderer = require('../Renderer'),\n text = require('../../util/text'),\n DOM = require('../../util/dom'),\n SVG = require('../../util/svg'),\n ns = SVG.metadata.xmlns,\n marks = require('./marks');\n\nfunction SVGRenderer(loadConfig) {\n Renderer.call(this);\n this._loader = new ImageLoader(loadConfig);\n this._dirtyID = 0;\n}\n\nvar base = Renderer.prototype;\nvar prototype = (SVGRenderer.prototype = Object.create(base));\nprototype.constructor = SVGRenderer;\n\nprototype.initialize = function(el, width, height, padding) {\n if (el) {\n this._svg = DOM.child(el, 0, 'svg', ns, 'marks');\n DOM.clear(el, 1);\n // set the svg root group\n this._root = DOM.child(this._svg, 0, 'g', ns);\n DOM.clear(this._svg, 1);\n }\n\n // create the svg definitions cache\n this._defs = {\n clip_id: 1,\n gradient: {},\n clipping: {}\n };\n\n // set background color if defined\n this.background(this._bgcolor);\n\n return base.initialize.call(this, el, width, height, padding);\n};\n\nprototype.background = function(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n};\n\nprototype.resize = function(width, height, padding) {\n base.resize.call(this, width, height, padding);\n \n if (this._svg) {\n var w = this._width,\n h = this._height,\n p = this._padding;\n \n this._svg.setAttribute('width', w + p.left + p.right);\n this._svg.setAttribute('height', h + p.top + p.bottom);\n \n this._root.setAttribute('transform', 'translate('+p.left+','+p.top+')');\n }\n\n return this;\n};\n\nprototype.svg = function() {\n if (!this._svg) return null;\n\n var attr = {\n 'class': 'marks',\n 'width': this._width + this._padding.left + this._padding.right,\n 'height': this._height + this._padding.top + this._padding.bottom,\n };\n for (var key in SVG.metadata) {\n attr[key] = SVG.metadata[key];\n }\n\n return DOM.openTag('svg', attr) + this._svg.innerHTML + DOM.closeTag('svg');\n};\n\nprototype.imageURL = function(url) {\n return this._loader.imageURL(url);\n};\n\n\n// -- Render entry point --\n\nprototype.render = function(scene, items) {\n if (this._dirtyCheck(items)) {\n if (this._dirtyAll) this._resetDefs();\n this.draw(this._root, scene, -1);\n DOM.clear(this._root, 1);\n }\n this.updateDefs();\n return this;\n};\n\nprototype.draw = function(el, scene, index) {\n this.drawMark(el, scene, index, marks[scene.marktype]);\n};\n\n\n// -- Manage SVG definitions ('defs') block --\n\nprototype.updateDefs = function() {\n var svg = this._svg,\n defs = this._defs,\n el = defs.el,\n index = 0, id;\n\n for (id in defs.gradient) {\n if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n updateGradient(el, defs.gradient[id], index++);\n }\n\n for (id in defs.clipping) {\n if (!el) el = (defs.el = DOM.child(svg, 0, 'defs', ns));\n updateClipping(el, defs.clipping[id], index++);\n }\n\n // clean-up\n if (el) {\n if (index === 0) {\n svg.removeChild(el);\n defs.el = null;\n } else {\n DOM.clear(el, index); \n }\n }\n};\n\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n\n el = DOM.child(el, index, 'linearGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('x1', grad.x1);\n el.setAttribute('x2', grad.x2);\n el.setAttribute('y1', grad.y1);\n el.setAttribute('y2', grad.y2);\n \n for (i=0, n=grad.stops.length; i 0) ? openTag('defs') + defs + closeTag('defs') : '';\n};\n\nprototype.imageURL = function(url) {\n return this._loader.imageURL(url);\n};\n\nvar object;\n\nfunction emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n}\n\nprototype.attributes = function(attr, item) {\n object = {};\n attr(emit, item, this);\n return object;\n};\n\nprototype.mark = function(scene) {\n var mdef = MARKS[scene.marktype],\n tag = mdef.tag,\n attr = mdef.attr,\n nest = mdef.nest || false,\n data = nest ?\n (scene.items && scene.items.length ? [scene.items[0]] : []) :\n (scene.items || []),\n defs = this._defs,\n str = '',\n style, i, item;\n\n if (tag !== 'g' && scene.interactive === false) {\n style = 'style=\"pointer-events: none;\"';\n }\n\n // render opening group tag\n str += openTag('g', {\n 'class': DOM.cssClass(scene)\n }, style);\n\n // render contained elements\n for (i=0; i/g, '>');\n}\n\nmodule.exports = SVGStringRenderer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/render/svg/SVGStringRenderer.js\n ** module id = 96\n ** module chunks = 0\n **/","function Item(mark) {\n this.mark = mark;\n}\n\nvar prototype = Item.prototype;\n\nprototype.hasPropertySet = function(name) {\n var props = this.mark.def.properties;\n return props && props[name] != null;\n};\n\nprototype.cousin = function(offset, index) {\n if (offset === 0) return this;\n offset = offset || -1;\n var mark = this.mark,\n group = mark.group,\n iidx = index==null ? mark.items.indexOf(this) : index,\n midx = group.items.indexOf(mark) + offset;\n return group.items[midx].items[iidx];\n};\n\nprototype.sibling = function(offset) {\n if (offset === 0) return this;\n offset = offset || -1;\n var mark = this.mark,\n iidx = mark.items.indexOf(this) + offset;\n return mark.items[iidx];\n};\n\nprototype.remove = function() {\n var item = this,\n list = item.mark.items,\n i = list.indexOf(item);\n if (i >= 0) {\n if (i===list.length-1) {\n list.pop();\n } else {\n list.splice(i, 1);\n }\n }\n return item;\n};\n\nprototype.touch = function() {\n if (this.pathCache) this.pathCache = null;\n};\n\nmodule.exports = Item;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/Item.js\n ** module id = 97\n ** module chunks = 0\n **/","var gradient_id = 0;\n\nfunction Gradient(type) {\n this.id = 'gradient_' + (gradient_id++);\n this.type = type || 'linear';\n this.stops = [];\n this.x1 = 0;\n this.x2 = 1;\n this.y1 = 0;\n this.y2 = 0;\n}\n\nvar prototype = Gradient.prototype;\n\nprototype.stop = function(offset, color) {\n this.stops.push({\n offset: offset,\n color: color\n });\n return this;\n};\n\nmodule.exports = Gradient;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-scenegraph/src/util/Gradient.js\n ** module id = 98\n ** module chunks = 0\n **/","var bound = require('../util/bound');\n\nvar sets = [\n 'items',\n 'axisItems',\n 'legendItems'\n];\n\nvar keys = [\n 'marktype', 'name', 'interactive', 'clip',\n 'items', 'axisItems', 'legendItems', 'layer',\n 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n 'fill', 'fillOpacity', 'opacity', // fill\n 'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n 'strokeDash', 'strokeDashOffset', // stroke dash\n 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n 'interpolate', 'tension', 'orient', // area, line\n 'url', // image\n 'path', // path\n 'x2', 'y2', // rule\n 'size', 'shape', // symbol\n 'text', 'angle', 'theta', 'radius', 'dx', 'dy', // text\n 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant' // font\n];\n\nfunction toJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\n\nfunction fromJSON(json) {\n var scene = (typeof json === 'string' ? JSON.parse(json) : json);\n return initialize(scene);\n}\n\nfunction initialize(scene) {\n var type = scene.marktype,\n i, n, s, m, items;\n\n for (s=0, m=sets.length; s 0) {\n try {\n model.data(d.name).values(dl.read(data, d.format));\n if (--count === 0) callback();\n } catch (err) {\n onError(err, d);\n }\n }\n };\n }\n\n // process each data set definition\n (spec || []).forEach(function(d) {\n if (d.url) {\n count += 1;\n dl.load(dl.extend({url: d.url}, config.load), onLoad(d));\n }\n try {\n parseData.datasource(model, d);\n } catch (err) {\n onError(err, d);\n }\n });\n\n if (count === 0) setTimeout(callback, 1);\n return spec;\n}\n\nparseData.datasource = function(model, d) {\n var transform = (d.transform || []).map(function(t) {\n return parseTransforms(model, t);\n }),\n mod = (d.modify || []).map(function(m) {\n return parseModify(model, m, d);\n }),\n ds = model.data(d.name, mod.concat(transform));\n\n if (d.values) {\n ds.values(dl.read(d.values, d.format));\n } else if (d.source) {\n // Derived ds will be pulsed by its src rather than the model.\n ds.source(d.source).addListener(ds);\n model.removeListener(ds.pipeline()[0]);\n }\n\n return ds;\n};\n\nmodule.exports = parseData;\n\nvar parseDef = {\n \"oneOf\": [\n {\"enum\": [\"auto\"]},\n {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"enum\": [\"number\", \"boolean\", \"date\", \"string\"]\n }\n }\n ]\n};\n\nparseData.schema = {\n \"defs\": {\n \"data\": {\n \"title\": \"Input data set definition\",\n \"type\": \"object\",\n\n \"allOf\": [{\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"transform\": {\"$ref\": \"#/defs/transform\"},\n \"modify\": {\"$ref\": \"#/defs/modify\"},\n \"format\": {\n \"type\": \"object\",\n \"oneOf\": [{\n \"properties\": {\n \"type\": {\"enum\": [\"json\"]},\n \"parse\": parseDef,\n \"property\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }, {\n \"properties\": {\n \"type\": {\"enum\": [\"csv\", \"tsv\"]},\n \"parse\": parseDef\n },\n \"additionalProperties\": false\n }, {\n \"oneOf\": [{\n \"properties\": {\n \"type\": {\"enum\": [\"topojson\"]},\n \"feature\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }, {\n \"properties\": {\n \"type\": {\"enum\": [\"topojson\"]},\n \"mesh\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }]\n }, {\n \"properties\": {\n \"type\": {\"enum\": [\"treejson\"]},\n \"children\": {\"type\": \"string\"},\n \"parse\": parseDef\n },\n \"additionalProperties\": false\n }]\n }\n },\n \"required\": [\"name\"]\n }, {\n \"anyOf\": [{\n \"required\": [\"name\", \"modify\"]\n }, {\n \"oneOf\": [{\n \"properties\": {\"source\": {\"type\": \"string\"}},\n \"required\": [\"source\"]\n }, {\n \"properties\": {\"values\": {\"type\": \"array\"}},\n \"required\": [\"values\"]\n }, {\n \"properties\": {\"url\": {\"type\": \"string\"}},\n \"required\": [\"url\"]\n }]\n }]\n }]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/data.js\n ** module id = 101\n ** module chunks = 0\n **/","var dl = require('datalib'),\n transforms = require('../transforms/index');\n\nfunction parseTransforms(model, def) {\n var transform = transforms[def.type],\n tx;\n\n if (!transform) throw new Error('\"' + def.type + '\" is not a valid transformation');\n\n tx = new transform(model);\n // We want to rename output fields before setting any other properties,\n // as subsequent properties may require output to be set (e.g. group by).\n if(def.output) tx.output(def.output);\n\n dl.keys(def).forEach(function(k) {\n if(k === 'type' || k === 'output') return;\n tx.param(k, def[k]);\n });\n\n return tx;\n}\n\nmodule.exports = parseTransforms;\n\nvar keys = dl.keys(transforms)\n .filter(function(k) { return transforms[k].schema; });\n\nvar defs = keys.reduce(function(acc, k) {\n return (acc[k+'Transform'] = transforms[k].schema, acc);\n}, {});\n\nparseTransforms.schema = {\n \"defs\": dl.extend(defs, {\n \"transform\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": keys.map(function(k) {\n return {\"$ref\": \"#/defs/\"+k+\"Transform\"};\n })\n }\n }\n })\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/transforms.js\n ** module id = 102\n ** module chunks = 0\n **/","module.exports = {\n aggregate: require('./Aggregate'),\n bin: require('./Bin'),\n cross: require('./Cross'),\n countpattern: require('./CountPattern'),\n linkpath: require('./LinkPath'),\n facet: require('./Facet'),\n filter: require('./Filter'),\n fold: require('./Fold'),\n force: require('./Force'),\n formula: require('./Formula'),\n geo: require('./Geo'),\n geopath: require('./GeoPath'),\n hierarchy: require('./Hierarchy'),\n impute: require('./Impute'),\n lookup: require('./Lookup'),\n pie: require('./Pie'),\n rank: require('./Rank'),\n sort: require('./Sort'),\n stack: require('./Stack'),\n treeify: require('./Treeify'),\n treemap: require('./Treemap'),\n voronoi: require('./Voronoi'),\n wordcloud: require('./Wordcloud')\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/index.js\n ** module id = 103\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n log = require('vega-logging'),\n ChangeSet = df.ChangeSet,\n Tuple = df.Tuple,\n Deps = df.Dependencies,\n Transform = require('./Transform'),\n Facetor = require('./Facetor');\n\nfunction Aggregate(graph) {\n Transform.prototype.init.call(this, graph);\n\n Transform.addParameters(this, {\n groupby: {type: 'array'},\n summarize: {\n type: 'custom',\n set: function(summarize) {\n var signalDeps = {},\n tx = this._transform,\n i, len, f, fields, name, ops;\n\n if (!dl.isArray(fields = summarize)) { // Object syntax from dl\n fields = [];\n for (name in summarize) {\n ops = dl.array(summarize[name]);\n fields.push({field: name, ops: ops});\n }\n }\n\n function sg(x) { if (x.signal) signalDeps[x.signal] = 1; }\n\n for (i=0, len=fields.length; i', default: [5, 2]}\n });\n\n this._output = {\n start: 'bin_start',\n end: 'bin_end',\n mid: 'bin_mid'\n };\n return this.mutates(true);\n}\n\nvar prototype = (Bin.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Bin;\n\nprototype.extent = function(data) {\n // TODO only recompute extent upon data or field change?\n var e = [this.param('min'), this.param('max')], d;\n if (e[0] == null || e[1] == null) {\n d = dl.extent(data, this.param('field').accessor);\n if (e[0] == null) e[0] = d[0];\n if (e[1] == null) e[1] = d[1];\n }\n return e;\n};\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['binning']);\n\n var extent = this.extent(data),\n output = this._output,\n step = this.param('step'),\n steps = this.param('steps'),\n minstep = this.param('minstep'),\n get = this.param('field').accessor,\n opt = {\n min: extent[0],\n max: extent[1],\n base: this.param('base'),\n maxbins: this.param('maxbins'),\n div: this.param('div')\n };\n\n if (step) opt.step = step;\n if (steps) opt.steps = steps;\n if (minstep) opt.minstep = minstep;\n var b = dl.bins(opt),\n s = b.step;\n\n function update(d) {\n var v = get(d);\n v = v == null ? null\n : b.start + s * ~~((v - b.start) / s);\n Tuple.set(d, output.start, v);\n Tuple.set(d, output.end, v + s);\n Tuple.set(d, output.mid, v + s/2);\n }\n input.add.forEach(update);\n input.mod.forEach(update);\n input.rem.forEach(update);\n\n input.fields[output.start] = 1;\n input.fields[output.end] = 1;\n input.fields[output.mid] = 1;\n return input;\n};\n\nmodule.exports = Bin;\n\nBin.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Bin transform\",\n \"description\": \"Bins values into quantitative bins (e.g., for a histogram).\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"bin\"]},\n \"field\": {\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The name of the field to bin values from.\"\n },\n \"min\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The minimum bin value to consider.\"\n },\n \"max\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The maximum bin value to consider.\"\n },\n \"base\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The number base to use for automatic bin determination.\",\n \"default\": 10\n },\n \"maxbins\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"The maximum number of allowable bins.\",\n \"default\": 20\n },\n \"step\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"An exact step size to use between bins. If provided, options such as maxbins will be ignored.\"\n },\n \"steps\": {\n \"description\": \"An array of allowable step sizes to choose from.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"type\": \"number\"}\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"minstep\": {\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"A minimum allowable step size (particularly useful for integer values).\"\n },\n \"div\": {\n \"description\": \"An array of scale factors indicating allowable subdivisions.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"type\": \"number\"},\n \"default\": [5, 2]\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"start\": {\"type\": \"string\", \"default\": \"bin_start\"},\n \"end\": {\"type\": \"string\", \"default\": \"bin_end\"},\n \"mid\": {\"type\": \"string\", \"default\": \"bin_mid\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"field\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Bin.js\n ** module id = 108\n ** module chunks = 0\n **/","var Base = require('./Transform').prototype;\n\nfunction BatchTransform() {\n // Nearest appropriate collector.\n // Set by the dataflow Graph during connection.\n this._collector = null;\n}\n\nvar prototype = (BatchTransform.prototype = Object.create(Base));\nprototype.constructor = BatchTransform;\n\nprototype.init = function(graph) {\n Base.init.call(this, graph);\n return this.batch(true);\n};\n\nprototype.transform = function(input, reset) {\n return this.batchTransform(input, this._collector.data(), reset);\n};\n\nprototype.batchTransform = function(/* input, data, reset */) {\n};\n\nmodule.exports = BatchTransform;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/BatchTransform.js\n ** module id = 109\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n ChangeSet = df.ChangeSet,\n Tuple = df.Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Cross(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n with: {type: 'data'},\n diagonal: {type: 'value', default: 'true'},\n filter: {type: 'expr'}\n });\n\n this._output = {'left': 'a', 'right': 'b'};\n this._lastWith = null; // Last time we crossed w/with-ds.\n this._cids = {};\n this._cache = {};\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (Cross.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Cross;\n\n// Each cached incoming tuple also has a flag to determine whether\n// any tuples were filtered.\nfunction _cache(x, t) {\n var c = this._cache,\n cross = c[x._id] || (c[x._id] = {c: [], f: false});\n cross.c.push(t);\n}\n\nfunction _cid(left, x, y) {\n return left ? x._id+'_'+y._id : y._id+'_'+x._id;\n}\n\nfunction add(output, left, data, diag, test, mids, x) {\n var as = this._output,\n cache = this._cache,\n cids = this._cids,\n oadd = output.add,\n fltrd = false,\n i = 0, len = data.length,\n t = {}, y, cid;\n\n for (; i=0; --i) {\n t = tpls[i];\n l = x === t[as.left]; // Cache has tpls w/x both on left & right.\n y = l ? t[as.right] : t[as.left];\n cid = _cid(l, x, y);\n\n // Lazy removal: y was previously rem'd, so clean up the cache.\n if (!cache[y._id]) {\n cids[cid] = false;\n tpls.splice(i, 1);\n continue;\n }\n\n if (!test || test(t)) {\n if (mids[t._id]) continue;\n omod.push(t);\n mids[t._id] = 1;\n } else {\n if (!rids[t._id]) orem.push.apply(orem, tpls.splice(i, 1));\n rids[t._id] = 1;\n cids[cid] = false;\n cross.f = true;\n }\n }\n }\n\n // If we have a filter param, call add to catch any tuples that may\n // have previously been filtered.\n if (test && fltrd) add.call(this, output, left, data, diag, test, mids, x);\n}\n\nfunction rem(output, left, rids, x) {\n var as = this._output,\n cross = this._cache[x._id],\n cids = this._cids,\n orem = output.rem,\n i, len, t, y, l;\n if (!cross) return;\n\n for (i=0, len=cross.c.length; i this._lastWith) {\n woutput.rem.forEach(rem.bind(this, output, false, rids));\n woutput.add.forEach(add.bind(this, output, false, data, diag, test, mids));\n woutput.mod.forEach(mod.bind(this, output, false, data, diag, test, mids, rids));\n this._lastWith = woutput.stamp;\n }\n\n // Mods need to come after all removals have been run.\n input.mod.forEach(mod.bind(this, output, true, wdata, diag, test, mids, rids));\n }\n\n output.fields[as.left] = 1;\n output.fields[as.right] = 1;\n return output;\n};\n\nmodule.exports = Cross;\n\nCross.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Cross transform\",\n \"description\": \"Compute the cross-product of two data sets.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"cross\"]},\n \"with\": {\n \"type\": \"string\",\n \"description\": \"The name of the secondary data set to cross with the primary data. \" +\n \"If unspecified, the primary data is crossed with itself.\"\n },\n \"diagonal\": {\n \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n \"description\": \"If false, items along the \\\"diagonal\\\" of the cross-product \" +\n \"(those elements with the same index in their respective array) \" +\n \"will not be included in the output.\",\n \"default\": true\n },\n \"filter\": {\n \"type\": \"string\",\n \"description\": \"A string containing an expression (in JavaScript syntax) \" +\n \"to filter the resulting data elements.\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"left\": {\"type\": \"string\", \"default\": \"a\"},\n \"right\": {\"type\": \"string\", \"default\": \"b\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Cross.js\n ** module id = 110\n ** module chunks = 0\n **/","var df = require('vega-dataflow'),\n Tuple = df.Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform');\n\nfunction CountPattern(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n field: {type: 'field', default: 'data'},\n pattern: {type: 'value', default: '[\\\\w\\']+'},\n case: {type: 'value', default: 'lower'},\n stopwords: {type: 'value', default: ''}\n });\n\n this._output = {text: 'text', count: 'count'};\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (CountPattern.prototype = Object.create(Transform.prototype));\nprototype.constructor = CountPattern;\n\nprototype.transform = function(input, reset) {\n log.debug(input, ['countpattern']);\n\n var get = this.param('field').accessor,\n pattern = this.param('pattern'),\n stop = this.param('stopwords'),\n rem = false;\n\n // update parameters\n if (this._stop !== stop) {\n this._stop = stop;\n this._stop_re = new RegExp('^' + stop + '$', 'i');\n reset = true;\n }\n\n if (this._pattern !== pattern) {\n this._pattern = pattern;\n this._match = new RegExp(this._pattern, 'g');\n reset = true;\n }\n\n if (reset) this._counts = {};\n\n function curr(t) { return (Tuple.prev_init(t), get(t)); }\n function prev(t) { return get(Tuple.prev(t)); }\n\n this._add(input.add, curr);\n if (!reset) this._rem(input.rem, prev);\n if (reset || (rem = input.fields[get.field])) {\n if (rem) this._rem(input.mod, prev);\n this._add(input.mod, curr);\n }\n\n // generate output tuples\n return this._changeset(input);\n};\n\nprototype._changeset = function(input) {\n var counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n change = df.ChangeSet.create(input),\n out = this._output, w, t, c;\n\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = (t = Tuple.ingest({}));\n t[out.text] = w;\n t[out.count] = c;\n change.add.push(t);\n } else if (c === 0) {\n if (t) change.rem.push(t);\n delete counts[w];\n delete tuples[w];\n } else if (t[out.count] !== c) {\n Tuple.set(t, out.count, c);\n change.mod.push(t);\n }\n }\n return change;\n};\n\nprototype._tokenize = function(text) {\n switch (this.param('case')) {\n case 'upper': text = text.toUpperCase(); break;\n case 'lower': text = text.toLowerCase(); break;\n }\n return text.match(this._match);\n};\n\nprototype._add = function(tuples, get) {\n var counts = this._counts,\n stop = this._stop_re,\n tok, i, j, t;\n\n for (j=0; j Math.PI ? ta <= sa : ta > sa;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n ' ' + (sr*tc) + ',' + (sr*ts) +\n 'L' + (tr*tc) + ',' + (tr*ts);\n}\n\nfunction diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + m + ',' + sy +\n ' ' + m + ',' + ty +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + sx + ',' + m +\n ' ' + tx + ',' + m +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'C' + (mr*sc) + ',' + (mr*ss) +\n ' ' + (mr*tc) + ',' + (mr*ts) +\n ' ' + (tr*tc) + ',' + (tr*ts);\n}\n\nvar shapes = {\n line: line,\n curve: curve,\n cornerX: cornerX,\n cornerY: cornerY,\n cornerR: cornerR,\n diagonalX: diagonalX,\n diagonalY: diagonalY,\n diagonalR: diagonalR\n};\n\nprototype.transform = function(input) {\n log.debug(input, ['linkpath']);\n\n var output = this._output,\n shape = shapes[this.param('shape')] || shapes.line,\n sourceX = this.param('sourceX').accessor,\n sourceY = this.param('sourceY').accessor,\n targetX = this.param('targetX').accessor,\n targetY = this.param('targetY').accessor,\n tension = this.param('tension');\n\n function set(t) {\n var path = shape(sourceX(t), sourceY(t), targetX(t), targetY(t), tension);\n Tuple.set(t, output.path, path);\n }\n\n input.add.forEach(set);\n if (this.reevaluate(input)) {\n input.mod.forEach(set);\n input.rem.forEach(set);\n }\n\n input.fields[output.path] = 1;\n return input;\n};\n\nmodule.exports = LinkPath;\n\nLinkPath.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"LinkPath transform\",\n \"description\": \"Computes a path definition for connecting nodes within a node-link network or tree diagram.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"linkpath\"]},\n \"sourceX\": {\n \"description\": \"The data field that references the source x-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_source\"\n },\n \"sourceY\": {\n \"description\": \"The data field that references the source y-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_source\"\n },\n \"targetX\": {\n \"description\": \"The data field that references the target x-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_target\"\n },\n \"targetY\": {\n \"description\": \"The data field that references the target y-coordinate for this link.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"_target\"\n },\n \"tension\": {\n \"description\": \"A tension parameter for the \\\"tightness\\\" of \\\"curve\\\"-shaped links.\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": 0.2\n },\n \"shape\": {\n \"description\": \"The path shape to use\",\n \"oneOf\": [\n {\"enum\": [\"line\", \"curve\", \"cornerX\", \"cornerY\", \"cornerR\", \"diagonalX\", \"diagonalY\", \"diagonalR\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"line\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/LinkPath.js\n ** module id = 112\n ** module chunks = 0\n **/","var Transform = require('./Transform'),\n Aggregate = require('./Aggregate');\n\nfunction Facet(graph) {\n Transform.addParameters(this, {\n transform: {\n type: \"custom\",\n set: function(pipeline) {\n return (this._transform._pipeline = pipeline, this._transform);\n },\n get: function() {\n var parse = require('../parse/transforms'),\n facet = this._transform;\n return facet._pipeline.map(function(t) {\n return parse(facet._graph, t);\n });\n }\n }\n });\n\n this._pipeline = [];\n return Aggregate.call(this, graph);\n}\n\nvar prototype = (Facet.prototype = Object.create(Aggregate.prototype));\nprototype.constructor = Facet;\n\nprototype.aggr = function() {\n return Aggregate.prototype.aggr.call(this).facet(this);\n};\n\nprototype.transform = function(input, reset) {\n var output = Aggregate.prototype.transform.call(this, input, reset);\n\n // New facet cells should trigger a re-ranking of the dataflow graph.\n // This ensures facet datasources are computed before scenegraph nodes.\n // We rerank the Facet's first listener, which is the next node in the\n // datasource's pipeline.\n if (input.add.length) {\n this.listeners()[0].rerank();\n }\n\n return output;\n};\n\nmodule.exports = Facet;\n\nvar dl = require('datalib');\n\nFacet.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Facet transform\",\n \"description\": \"A special aggregate transform that organizes a data set into groups or \\\"facets\\\".\",\n \"type\": \"object\",\n \"properties\": dl.extend({}, Aggregate.schema.properties, {\n \"type\": {\"enum\": [\"facet\"]},\n \"transform\": {\"$ref\": \"#/defs/transform\"}\n }),\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Facet.js\n ** module id = 113\n ** module chunks = 0\n **/","var df = require('vega-dataflow'),\n log = require('vega-logging'),\n Transform = require('./Transform');\n\nfunction Filter(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, {test: {type: 'expr'}});\n\n this._skip = {};\n return this.router(true);\n}\n\nvar prototype = (Filter.prototype = Object.create(Transform.prototype));\nprototype.constructor = Filter;\n\nprototype.transform = function(input) {\n log.debug(input, ['filtering']);\n\n var output = df.ChangeSet.create(input),\n skip = this._skip,\n test = this.param('test');\n\n input.rem.forEach(function(x) {\n if (skip[x._id] !== 1) output.rem.push(x);\n else skip[x._id] = 0;\n });\n\n input.add.forEach(function(x) {\n if (test(x)) output.add.push(x);\n else skip[x._id] = 1;\n });\n\n input.mod.forEach(function(x) {\n var b = test(x),\n s = (skip[x._id] === 1);\n if (b && s) {\n skip[x._id] = 0;\n output.add.push(x);\n } else if (b && !s) {\n output.mod.push(x);\n } else if (!b && s) {\n // do nothing, keep skip true\n } else { // !b && !s\n output.rem.push(x);\n skip[x._id] = 1;\n }\n });\n\n return output;\n};\n\nmodule.exports = Filter;\n\nFilter.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Filter transform\",\n \"description\": \"Filters elements from a data set to remove unwanted items.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"filter\"]},\n \"test\": {\n \"type\": \"string\",\n \"description\": \"A string containing an expression (in JavaScript syntax) for the filter predicate.\"\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"test\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Filter.js\n ** module id = 114\n ** module chunks = 0\n **/","var df = require('vega-dataflow'),\n Tuple = df.Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform');\n\nfunction Fold(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n fields: {type: 'array'}\n });\n\n this._output = {key: 'key', value: 'value'};\n this._cache = {};\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (Fold.prototype = Object.create(Transform.prototype));\nprototype.constructor = Fold;\n\nprototype._reset = function(input, output) {\n for (var id in this._cache) {\n output.rem.push.apply(output.rem, this._cache[id]);\n }\n this._cache = {};\n};\n\nprototype._tuple = function(x, i, len) {\n var list = this._cache[x._id] || (this._cache[x._id] = Array(len));\n return list[i] ? Tuple.rederive(x, list[i]) : (list[i] = Tuple.derive(x));\n};\n\nprototype._fn = function(data, on, out) {\n var i, j, n, m, d, t;\n for (i=0, n=data.length; i', default: require('./screen').size},\n bound: {type: 'value', default: true},\n links: {type: 'data'},\n\n // TODO: for now force these to be value params only (pun-intended)\n // Can update to include fields after Parameter refactoring.\n linkStrength: {type: 'value', default: 1},\n linkDistance: {type: 'value', default: 20},\n charge: {type: 'value', default: -30},\n\n chargeDistance: {type: 'value', default: Infinity},\n friction: {type: 'value', default: 0.9},\n theta: {type: 'value', default: 0.8},\n gravity: {type: 'value', default: 0.1},\n alpha: {type: 'value', default: 0.1},\n iterations: {type: 'value', default: 500},\n\n interactive: {type: 'value', default: this._interactive},\n active: {type: 'value', default: this._prev},\n fixed: {type: 'data'}\n });\n\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y'\n };\n\n return this.mutates(true);\n}\n\nvar prototype = (Force.prototype = Object.create(Transform.prototype));\nprototype.constructor = Force;\n\nprototype.transform = function(nodeInput, reset) {\n log.debug(nodeInput, ['force']);\n reset = reset - (nodeInput.signals.active ? 1 : 0);\n\n // get variables\n var interactive = this.param('interactive'),\n linkSource = this.param('links').source,\n linkInput = linkSource.last(),\n active = this.param('active'),\n output = this._output,\n layout = this._layout,\n nodes = this._nodes,\n links = this._links;\n\n // configure nodes, links and layout\n if (linkInput.stamp < nodeInput.stamp) linkInput = null;\n this.configure(nodeInput, linkInput, interactive, reset);\n\n // run batch layout\n if (!interactive) {\n var iterations = this.param('iterations');\n for (var i=0; i'},\n translate: {type: 'array', default: require('./screen').center},\n rotate: {type: 'array'},\n scale: {type: 'value'},\n precision: {type: 'value'},\n clipAngle: {type: 'value'},\n clipExtent: {type: 'value'}\n};\n\nGeo.d3Projection = function() {\n var p = this.param('projection'),\n param = Geo.Parameters,\n proj, name, value;\n\n if (p !== this._mode) {\n this._mode = p;\n this._projection = d3.geo[p]();\n }\n proj = this._projection;\n\n for (name in param) {\n if (name === 'projection' || !proj[name]) continue;\n value = this.param(name);\n if (value === undefined || (dl.isArray(value) && value.length === 0)) {\n continue;\n }\n if (value !== proj[name]()) {\n proj[name](value);\n }\n }\n\n return proj;\n};\n\nvar prototype = (Geo.prototype = Object.create(Transform.prototype));\nprototype.constructor = Geo;\n\nprototype.transform = function(input) {\n log.debug(input, ['geo']);\n\n var output = this._output,\n lon = this.param('lon').accessor,\n lat = this.param('lat').accessor,\n proj = Geo.d3Projection.call(this);\n\n function set(t) {\n var ll = [lon(t), lat(t)];\n var xy = proj(ll) || [null, null];\n Tuple.set(t, output.x, xy[0]);\n Tuple.set(t, output.y, xy[1]);\n }\n\n input.add.forEach(set);\n if (this.reevaluate(input)) {\n input.mod.forEach(set);\n input.rem.forEach(set);\n }\n\n input.fields[output.x] = 1;\n input.fields[output.y] = 1;\n return input;\n};\n\nmodule.exports = Geo;\n\nGeo.baseSchema = {\n \"projection\": {\n \"description\": \"The type of cartographic projection to use.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"mercator\"\n },\n \"center\": {\n \"description\": \"The center of the projection.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"translate\": {\n \"description\": \"The translation of the projection.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"rotate\": {\n \"description\": \"The rotation of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"scale\": {\n \"description\": \"The scale of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"precision\": {\n \"description\": \"The desired precision of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"clipAngle\": {\n \"description\": \"The clip angle of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"clipExtent\": {\n \"description\": \"The clip extent of the projection.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]\n }\n};\n\nGeo.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Geo transform\",\n \"description\": \"Performs a cartographic projection. Given longitude and latitude values, sets corresponding x and y properties for a mark.\",\n \"type\": \"object\",\n \"properties\": dl.extend({\n \"type\": {\"enum\": [\"geo\"]},\n \"lon\": {\n \"description\": \"The input longitude values.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"lat\": {\n \"description\": \"The input latitude values.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n \"y\": {\"type\": \"string\", \"default\": \"layout_y\"}\n },\n \"additionalProperties\": false\n }\n }, Geo.baseSchema),\n \"required\": [\"type\", \"lon\", \"lat\"],\n \"additionalProperties\": false\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Geo.js\n ** module id = 119\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Geo = require('./Geo'),\n Transform = require('./Transform');\n\nfunction GeoPath(graph) {\n Transform.prototype.init.call(this, graph);\n Transform.addParameters(this, Geo.Parameters);\n Transform.addParameters(this, {\n field: {type: 'field', default: null},\n });\n\n this._output = {\n 'path': 'layout_path'\n };\n return this.mutates(true);\n}\n\nvar prototype = (GeoPath.prototype = Object.create(Transform.prototype));\nprototype.constructor = GeoPath;\n\nprototype.transform = function(input) {\n log.debug(input, ['geopath']);\n\n var output = this._output,\n geojson = this.param('field').accessor || dl.identity,\n proj = Geo.d3Projection.call(this),\n path = d3.geo.path().projection(proj);\n\n function set(t) {\n Tuple.set(t, output.path, path(geojson(t)));\n }\n\n input.add.forEach(set);\n if (this.reevaluate(input)) {\n input.mod.forEach(set);\n input.rem.forEach(set);\n }\n\n input.fields[output.path] = 1;\n return input;\n};\n\nmodule.exports = GeoPath;\n\nGeoPath.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"GeoPath transform\",\n \"description\": \"Creates paths for geographic regions, such as countries, states and counties.\",\n \"type\": \"object\",\n \"properties\": dl.extend({\n \"type\": {\"enum\": [\"geopath\"]},\n \"field\": {\n \"description\": \"The data field containing GeoJSON Feature data.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"path\": {\"type\": \"string\", \"default\": \"layout_path\"}\n },\n \"additionalProperties\": false\n }\n }, Geo.baseSchema),\n \"required\": [\"type\"],\n \"additionalProperties\": false\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/GeoPath.js\n ** module id = 120\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Hierarchy(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n // hierarchy parameters\n sort: {type: 'array', default: null},\n children: {type: 'field', default: 'children'},\n parent: {type: 'field', default: 'parent'},\n field: {type: 'value', default: null},\n // layout parameters\n mode: {type: 'value', default: 'tidy'}, // tidy, cluster, partition\n size: {type: 'array', default: require('./screen').size},\n nodesize: {type: 'array', default: null},\n orient: {type: 'value', default: 'cartesian'}\n });\n\n this._mode = null;\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y',\n 'width': 'layout_width',\n 'height': 'layout_height',\n 'depth': 'layout_depth'\n };\n return this.mutates(true);\n}\n\nvar PARTITION = 'partition';\n\nvar SEPARATION = {\n cartesian: function(a, b) { return (a.parent === b.parent ? 1 : 2); },\n radial: function(a, b) { return (a.parent === b.parent ? 1 : 2) / a.depth; }\n};\n\nvar prototype = (Hierarchy.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Hierarchy;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['hierarchy layout']);\n\n // get variables\n var layout = this._layout,\n output = this._output,\n mode = this.param('mode'),\n sort = this.param('sort'),\n nodesz = this.param('nodesize'),\n parent = this.param('parent').accessor,\n root = data.filter(function(d) { return parent(d) === null; })[0];\n\n if (mode !== this._mode) {\n this._mode = mode;\n if (mode === 'tidy') mode = 'tree';\n layout = (this._layout = d3.layout[mode]());\n }\n\n input.fields[output.x] = 1;\n input.fields[output.y] = 1;\n input.fields[output.depth] = 1;\n if (mode === PARTITION) {\n input.fields[output.width] = 1;\n input.fields[output.height] = 1;\n layout.value(this.param('field').accessor);\n } else {\n layout.separation(SEPARATION[this.param('orient')]);\n }\n\n if (nodesz.length && mode !== PARTITION) {\n layout.nodeSize(nodesz);\n } else {\n layout.size(this.param('size'));\n }\n\n layout\n .sort(sort.field.length ? dl.comparator(sort.field) : null)\n .children(this.param('children').accessor)\n .nodes(root);\n\n // copy layout values to nodes\n data.forEach(function(n) {\n Tuple.set(n, output.x, n.x);\n Tuple.set(n, output.y, n.y);\n Tuple.set(n, output.depth, n.depth);\n if (mode === PARTITION) {\n Tuple.set(n, output.width, n.dx);\n Tuple.set(n, output.height, n.dy);\n }\n });\n\n // return changeset\n return input;\n};\n\nmodule.exports = Hierarchy;\n\nHierarchy.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Hierarchy transform\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"hierarchy\"]},\n \"sort\": {\n \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ]\n },\n \"children\": {\n \"description\": \"The data field for the children node array\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"children\"\n },\n \"parent\": {\n \"description\": \"The data field for the parent node\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"parent\"\n },\n \"field\": {\n \"description\": \"The value for the area of each leaf-level node for partition layouts.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"mode\": {\n \"description\": \"The layout algorithm mode to use.\",\n \"oneOf\": [\n {\"enum\": [\"tidy\", \"cluster\", \"partition\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"tidy\"\n },\n \"orient\": {\n \"description\": \"The layout orientation to use.\",\n \"oneOf\": [\n {\"enum\": [\"cartesian\", \"radial\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"cartesian\"\n },\n \"size\": {\n \"description\": \"The dimensions of the tree layout\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": [500, 500]\n },\n \"nodesize\": {\n \"description\": \"Sets a fixed x,y size for each node (overrides the size parameter)\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": null\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Hierarchy.js\n ** module id = 121\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n Tuple = require('vega-dataflow').Tuple,\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Impute(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n groupby: {type: 'array'},\n orderby: {type: 'array'},\n field: {type: 'field'},\n method: {type: 'value', default: 'value'},\n value: {type: 'value', default: 0}\n });\n\n return this.router(true).produces(true);\n}\n\nvar prototype = (Impute.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Impute;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['imputing']);\n\n var groupby = this.param('groupby'),\n orderby = this.param('orderby'),\n method = this.param('method'),\n value = this.param('value'),\n field = this.param('field'),\n get = field.accessor,\n name = field.field,\n prev = this._imputed || [], curr = [],\n groups = partition(data, groupby.accessor, orderby.accessor),\n domain = groups.domain,\n group, i, j, n, m, t;\n\n function getval(x) {\n return x == null ? null : get(x);\n }\n\n for (j=0, m=groups.length; j'},\n keys: {type: 'array', default: ['data']},\n default: {type: 'value'}\n });\n\n return this.mutates(true);\n}\n\nvar prototype = (Lookup.prototype = Object.create(Transform.prototype));\nprototype.constructor = Lookup;\n\nprototype.transform = function(input, reset) {\n log.debug(input, ['lookup']);\n\n var on = this.param('on'),\n onLast = on.source.last(),\n onData = on.source.values(),\n onKey = this.param('onKey'),\n onF = onKey.field,\n keys = this.param('keys'),\n get = keys.accessor,\n as = this.param('as'),\n defaultValue = this.param('default'),\n lut = this._lut,\n i, v;\n\n // build lookup table on init, withKey modified, or tuple add/rem\n if (lut == null || this._on !== onF || onF && onLast.fields[onF] ||\n onLast.add.length || onLast.rem.length)\n {\n if (onF) { // build hash from withKey field\n onKey = onKey.accessor;\n for (lut={}, i=0; i'} });\n this.router(true);\n}\n\nvar prototype = (Sort.prototype = Object.create(Transform.prototype));\nprototype.constructor = Sort;\n\nprototype.transform = function(input) {\n log.debug(input, ['sorting']);\n\n if (input.add.length || input.mod.length || input.rem.length) {\n input.sort = dl.comparator(this.param('by').field);\n }\n return input;\n};\n\nmodule.exports = Sort;\n\nSort.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Sort transform\",\n \"description\": \"Sorts the values of a data set.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"sort\"]},\n \"by\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n ],\n \"description\": \"A list of fields to use as sort criteria.\"\n }\n },\n \"required\": [\"type\", \"by\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Sort.js\n ** module id = 126\n ** module chunks = 0\n **/","var dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Stack(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n groupby: {type: 'array'},\n sortby: {type: 'array'},\n field: {type: 'field'},\n offset: {type: 'value', default: 'zero'}\n });\n\n this._output = {\n 'start': 'layout_start',\n 'end': 'layout_end',\n 'mid': 'layout_mid'\n };\n return this.mutates(true);\n}\n\nvar prototype = (Stack.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Stack;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['stacking']);\n\n var groupby = this.param('groupby').accessor,\n sortby = dl.comparator(this.param('sortby').field),\n field = this.param('field').accessor,\n offset = this.param('offset'),\n output = this._output;\n\n // partition, sum, and sort the stack groups\n var groups = partition(data, groupby, sortby, field);\n\n // compute stack layouts per group\n for (var i=0, max=groups.max; i max) max = s;\n if (sortby != null) g.sort(sortby);\n }\n groups.max = max;\n\n return groups;\n}\n\nmodule.exports = Stack;\n\nStack.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Stack transform\",\n \"description\": \"Computes layout values for stacked graphs, as in stacked bar charts or stream graphs.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"stack\"]},\n \"groupby\": {\n \"description\": \"A list of fields to split the data into groups (stacks).\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n },\n \"sortby\": {\n \"description\": \"A list of fields to determine the sort order of stacks.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n },\n \"field\": {\n \"description\": \"The data field that determines the thickness/height of stacks.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"offset\": {\n \"description\": \"The baseline offset\",\n \"oneOf\": [{\"enum\": [\"zero\", \"center\", \"normalize\"]}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"zero\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"start\": {\"type\": \"string\", \"default\": \"layout_start\"},\n \"end\": {\"type\": \"string\", \"default\": \"layout_end\"},\n \"mid\": {\"type\": \"string\", \"default\": \"layout_mid\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\", \"groupby\", \"field\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Stack.js\n ** module id = 127\n ** module chunks = 0\n **/","var dl = require('datalib'),\n Tuple = require('vega-dataflow').Tuple,\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Treeify(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n groupby: {type: 'array'}\n });\n\n this._output = {\n 'children': 'children',\n 'parent': 'parent'\n };\n return this.router(true).produces(true);\n}\n\nvar prototype = (Treeify.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Treeify;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['treeifying']);\n\n var fields = this.param('groupby').field,\n childField = this._output.children,\n parentField = this._output.parent,\n summary = [{name:'*', ops: ['values'], as: [childField]}],\n aggrs = fields.map(function(f) {\n return dl.groupby(f).summarize(summary);\n }),\n prev = this._internal || [], curr = [], i, n;\n\n function level(index, node, values) {\n var vals = aggrs[index].execute(values);\n\n node[childField] = vals;\n vals.forEach(function(n) {\n n[parentField] = node;\n curr.push(Tuple.ingest(n));\n if (index+1 < fields.length) level(index+1, n, n[childField]);\n else n[childField].forEach(function(c) { c[parentField] = n; });\n });\n }\n\n var root = Tuple.ingest({});\n root[parentField] = null;\n curr.push(root);\n level(0, root, data);\n\n // update changeset with internal nodes\n for (i=0, n=curr.length; i', default: ['-value']},\n children: {type: 'field', default: 'children'},\n parent: {type: 'field', default: 'parent'},\n field: {type: 'field', default: 'value'},\n // treemap parameters\n size: {type: 'array', default: require('./screen').size},\n round: {type: 'value', default: true},\n sticky: {type: 'value', default: false},\n ratio: {type: 'value', default: defaultRatio},\n padding: {type: 'value', default: null},\n mode: {type: 'value', default: 'squarify'}\n });\n\n this._layout = d3.layout.treemap();\n\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y',\n 'width': 'layout_width',\n 'height': 'layout_height',\n 'depth': 'layout_depth',\n };\n return this.mutates(true);\n}\n\nvar prototype = (Treemap.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Treemap;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['treemap']);\n\n // get variables\n var layout = this._layout,\n output = this._output,\n sticky = this.param('sticky'),\n parent = this.param('parent').accessor,\n root = data.filter(function(d) { return parent(d) === null; })[0];\n\n // layout.sticky resets state _regardless_ of input value\n // so, we perform out own check first\n if (layout.sticky() !== sticky) { layout.sticky(sticky); }\n\n // configure layout\n layout\n .sort(dl.comparator(this.param('sort').field))\n .children(this.param('children').accessor)\n .value(this.param('field').accessor)\n .size(this.param('size'))\n .round(this.param('round'))\n .ratio(this.param('ratio'))\n .padding(this.param('padding'))\n .mode(this.param('mode'))\n .nodes(root);\n\n // copy layout values to nodes\n data.forEach(function(n) {\n Tuple.set(n, output.x, n.x);\n Tuple.set(n, output.y, n.y);\n Tuple.set(n, output.width, n.dx);\n Tuple.set(n, output.height, n.dy);\n Tuple.set(n, output.depth, n.depth);\n });\n\n // return changeset\n input.fields[output.x] = 1;\n input.fields[output.y] = 1;\n input.fields[output.width] = 1;\n input.fields[output.height] = 1;\n input.fields[output.depth] = 1;\n return input;\n};\n\nmodule.exports = Treemap;\n\nTreemap.schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Treemap transform\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\"enum\": [\"treemap\"]},\n \"sort\": {\n \"description\": \"A list of fields to use as sort criteria for sibling nodes.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]}\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": [\"-value\"]\n },\n \"children\": {\n \"description\": \"The data field for the children node array\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"children\"\n },\n \"parent\": {\n \"description\": \"The data field for the parent node\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": \"parent\"\n },\n \"field\": {\n \"description\": \"The values to use to determine the area of each leaf-level treemap cell.\",\n \"oneOf\": [{\"type\": \"string\"}, {\"$ref\": \"#/refs/signal\"}]\n },\n \"mode\": {\n \"description\": \"The treemap layout algorithm to use.\",\n \"oneOf\": [\n {\"enum\": [\"squarify\", \"slice\", \"dice\", \"slice-dice\"]},\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": \"squarify\"\n },\n \"size\": {\n \"description\": \"The dimensions of the treemap layout\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 2,\n \"maxItems\": 2\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"default\": [500, 500]\n },\n \"round\": {\n \"description\": \"If true, treemap cell dimensions will be rounded to integer pixels.\",\n \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": true\n },\n \"sticky\": {\n \"description\": \"If true, repeated runs of the treemap will use cached partition boundaries.\",\n \"oneOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": false\n },\n \"ratio\": {\n \"description\": \"The target aspect ratio for the layout to optimize.\",\n \"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}],\n \"default\": defaultRatio\n },\n \"padding\": {\n \"oneOf\": [\n {\"type\": \"number\"},\n {\n \"type\": \"array\",\n \"items\": {\"oneOf\": [{\"type\": \"number\"}, {\"$ref\": \"#/refs/signal\"}]},\n \"minItems\": 4,\n \"maxItems\": 4\n },\n {\"$ref\": \"#/refs/signal\"}\n ],\n \"description\": \"he padding (in pixels) to provide around internal nodes in the treemap.\"\n },\n \"output\": {\n \"type\": \"object\",\n \"description\": \"Rename the output data fields\",\n \"properties\": {\n \"x\": {\"type\": \"string\", \"default\": \"layout_x\"},\n \"y\": {\"type\": \"string\", \"default\": \"layout_y\"},\n \"width\": {\"type\": \"string\", \"default\": \"layout_width\"},\n \"height\": {\"type\": \"string\", \"default\": \"layout_height\"},\n \"depth\": {\"type\": \"string\", \"default\": \"layout_depth\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"type\"]\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/transforms/Treemap.js\n ** module id = 129\n ** module chunks = 0\n **/","var d3 = require('d3'),\n Tuple = require('vega-dataflow/src/Tuple'),\n log = require('vega-logging'),\n Transform = require('./Transform'),\n BatchTransform = require('./BatchTransform');\n\nfunction Voronoi(graph) {\n BatchTransform.prototype.init.call(this, graph);\n Transform.addParameters(this, {\n clipExtent: {type: 'array', default: require('./screen').extent},\n x: {type: 'field', default: 'layout_x'},\n y: {type: 'field', default: 'layout_y'}\n });\n\n this._layout = d3.geom.voronoi();\n this._output = {'path': 'layout_path'};\n\n return this.mutates(true);\n}\n\nvar prototype = (Voronoi.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Voronoi;\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['voronoi']);\n\n // get variables\n var pathname = this._output.path;\n\n // configure layout\n var polygons = this._layout\n .clipExtent(this.param('clipExtent'))\n .x(this.param('x').accessor)\n .y(this.param('y').accessor)\n (data);\n\n // build and assign path strings\n for (var i=0; i', default: require('./screen').size},\n text: {type: 'field', default: 'data'},\n rotate: {type: 'field|value', default: 0},\n font: {type: 'field|value', default: {value: 'sans-serif'}},\n fontSize: {type: 'field|value', default: 14},\n fontStyle: {type: 'field|value', default: {value: 'normal'}},\n fontWeight: {type: 'field|value', default: {value: 'normal'}},\n fontScale: {type: 'array', default: [10, 50]},\n padding: {type: 'value', default: 1},\n spiral: {type: 'value', default: 'archimedean'}\n });\n\n this._layout = d3_cloud().canvas(canvas.instance);\n\n this._output = {\n 'x': 'layout_x',\n 'y': 'layout_y',\n 'font': 'layout_font',\n 'fontSize': 'layout_fontSize',\n 'fontStyle': 'layout_fontStyle',\n 'fontWeight': 'layout_fontWeight',\n 'rotate': 'layout_rotate',\n };\n\n return this.mutates(true);\n}\n\nvar prototype = (Wordcloud.prototype = Object.create(BatchTransform.prototype));\nprototype.constructor = Wordcloud;\n\nfunction get(p) {\n return (p && p.accessor) || p;\n}\n\nfunction wrap(tuple) {\n var x = Object.create(tuple);\n x._tuple = tuple;\n return x;\n}\n\nprototype.batchTransform = function(input, data) {\n log.debug(input, ['wordcloud']);\n\n // get variables\n var layout = this._layout,\n output = this._output,\n fontSize = this.param('fontSize'),\n range = fontSize.accessor && this.param('fontScale'),\n size, scale;\n fontSize = fontSize.accessor || d3.functor(fontSize);\n\n // create font size scaling function as needed\n if (range.length) {\n scale = d3.scale.sqrt()\n .domain(dl.extent(data, size=fontSize))\n .range(range);\n fontSize = function(x) { return scale(size(x)); };\n }\n\n // configure layout\n layout\n .size(this.param('size'))\n .text(get(this.param('text')))\n .padding(this.param('padding'))\n .spiral(this.param('spiral'))\n .rotate(get(this.param('rotate')))\n .font(get(this.param('font')))\n .fontStyle(get(this.param('fontStyle')))\n .fontWeight(get(this.param('fontWeight')))\n .fontSize(fontSize)\n .words(data.map(wrap)) // wrap to avoid tuple writes\n .on('end', function(words) {\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n w, t, i, len;\n\n for (i=0, len=words.length; i> 5,\n ch = 1 << 11;\n\nmodule.exports = function() {\n var size = [256, 256],\n text = cloudText,\n font = cloudFont,\n fontSize = cloudFontSize,\n fontStyle = cloudFontNormal,\n fontWeight = cloudFontNormal,\n rotate = cloudRotate,\n padding = cloudPadding,\n spiral = archimedeanSpiral,\n words = [],\n timeInterval = Infinity,\n event = dispatch(\"word\", \"end\"),\n timer = null,\n random = Math.random,\n cloud = {},\n canvas = cloudCanvas;\n\n cloud.canvas = function(_) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function() {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function(d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function(a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n var start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n var d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.word(d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.end(tags, bounds);\n }\n }\n }\n\n cloud.stop = function() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n var context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return {context: context, ratio: ratio};\n }\n\n function place(board, tag, bounds) {\n var perimeter = [{x: 0, y: 0}, {x: size[0], y: size[1]}],\n startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function(_) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function(_) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function(_) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function(_) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function(_) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function(_) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function(_) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function(_) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function(_) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function(_) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function(_) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function(_) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function() {\n var value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n};\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n var w = c.measureText(d.text + \"m\").width * ratio,\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n var w = d.width,\n w32 = w >> 5,\n h = d.y1 - d.y0;\n // Zero the buffer\n for (var i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (var j = 0; j < h; j++) {\n for (var i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function(t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function(t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function() { return d; };\n}\n\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/d3-cloud/index.js\n ** module id = 132\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.d3_dispatch = {})));\n}(this, function (exports) { 'use strict';\n\n function dispatch() {\n return new Dispatch(arguments);\n }\n\n function Dispatch(types) {\n var i = -1,\n n = types.length,\n callbacksByType = {},\n callbackByName = {},\n type,\n that = this;\n\n that.on = function(type, callback) {\n type = parseType(type);\n\n // Return the current callback, if any.\n if (arguments.length < 2) {\n return (callback = callbackByName[type.name]) && callback.value;\n }\n\n // If a type was specified…\n if (type.type) {\n var callbacks = callbacksByType[type.type],\n callback0 = callbackByName[type.name],\n i;\n\n // Remove the current callback, if any, using copy-on-remove.\n if (callback0) {\n callback0.value = null;\n i = callbacks.indexOf(callback0);\n callbacksByType[type.type] = callbacks = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n delete callbackByName[type.name];\n }\n\n // Add the new callback, if any.\n if (callback) {\n callback = {value: callback};\n callbackByName[type.name] = callback;\n callbacks.push(callback);\n }\n }\n\n // Otherwise, if a null callback was specified, remove all callbacks with the given name.\n else if (callback == null) {\n for (var otherType in callbacksByType) {\n if (callback = callbackByName[otherType + type.name]) {\n callback.value = null;\n callbacks = callbacksByType[otherType];\n i = callbacks.indexOf(callback);\n callbacksByType[otherType] = callbacks.slice(0, i).concat(callbacks.slice(i + 1));\n delete callbackByName[callback.name];\n }\n }\n }\n\n return that;\n };\n\n while (++i < n) {\n type = types[i] + \"\";\n if (!type || (type in that)) throw new Error(\"illegal or duplicate type: \" + type);\n callbacksByType[type] = [];\n that[type] = applier(type);\n }\n\n function parseType(type) {\n var i = (type += \"\").indexOf(\".\"), name = type;\n if (i >= 0) type = type.slice(0, i); else name += \".\";\n if (type && !callbacksByType.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n return {type: type, name: name};\n }\n\n function applier(type) {\n return function() {\n var callbacks = callbacksByType[type], // Defensive reference; copy-on-remove.\n callbackValue,\n i = -1,\n n = callbacks.length;\n\n while (++i < n) {\n if (callbackValue = callbacks[i].value) {\n callbackValue.apply(this, arguments);\n }\n }\n\n return that;\n };\n }\n }\n\n dispatch.prototype = Dispatch.prototype;\n\n var version = \"0.2.6\";\n\n exports.version = version;\n exports.dispatch = dispatch;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/d3-cloud/~/d3-dispatch/build/d3-dispatch.js\n ** module id = 133\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n df = require('vega-dataflow'),\n Node = df.Node, // jshint ignore:line\n Tuple = df.Tuple,\n Deps = df.Dependencies;\n\nvar Types = {\n INSERT: \"insert\",\n REMOVE: \"remove\",\n UPSERT: \"upsert\",\n TOGGLE: \"toggle\",\n CLEAR: \"clear\"\n};\n\nvar EMPTY = [];\n\nfunction filter(fields, value, src, dest) {\n var splice = true, len = fields.length, i, j, f, v;\n for (i = src.length - 1; i >= 0; --i) {\n for (j=0; j 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = \",\",\n peg$c1 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c2 = function(o, m) { return [o].concat(m); },\n peg$c3 = function(o) { return [o]; },\n peg$c4 = \"[\",\n peg$c5 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c6 = \"]\",\n peg$c7 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c8 = \">\",\n peg$c9 = { type: \"literal\", value: \">\", description: \"\\\">\\\"\" },\n peg$c10 = function(f1, f2, o) {\n return {\n start: f1, middle: o, end: f2,\n str: '['+f1.str+', '+f2.str+'] > '+o.str};\n },\n peg$c11 = function(s, f) {\n s.filters = f;\n s.str += f.map(function(x) { return '['+x+']'; }).join('');\n return s;\n },\n peg$c12 = function(s) { return s; },\n peg$c13 = \"(\",\n peg$c14 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c15 = \")\",\n peg$c16 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c17 = function(m) {\n return {\n stream: m,\n str: '('+m.map(function(m) { return m.str; }).join(', ')+')'\n };\n },\n peg$c18 = \"@\",\n peg$c19 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n peg$c20 = \":\",\n peg$c21 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c22 = function(n, e) { return {event: e, name: n, str: '@'+n+':'+e}; },\n peg$c23 = function(m, e) { return {event: e, mark: m, str: m+':'+e}; },\n peg$c24 = function(t, e) { return {event: e, target: t, str: t+':'+e}; },\n peg$c25 = function(e) { return {event: e, str: e}; },\n peg$c26 = function(s) { return {signal: s, str: s}; },\n peg$c27 = \"rect\",\n peg$c28 = { type: \"literal\", value: \"rect\", description: \"\\\"rect\\\"\" },\n peg$c29 = \"symbol\",\n peg$c30 = { type: \"literal\", value: \"symbol\", description: \"\\\"symbol\\\"\" },\n peg$c31 = \"path\",\n peg$c32 = { type: \"literal\", value: \"path\", description: \"\\\"path\\\"\" },\n peg$c33 = \"arc\",\n peg$c34 = { type: \"literal\", value: \"arc\", description: \"\\\"arc\\\"\" },\n peg$c35 = \"area\",\n peg$c36 = { type: \"literal\", value: \"area\", description: \"\\\"area\\\"\" },\n peg$c37 = \"line\",\n peg$c38 = { type: \"literal\", value: \"line\", description: \"\\\"line\\\"\" },\n peg$c39 = \"rule\",\n peg$c40 = { type: \"literal\", value: \"rule\", description: \"\\\"rule\\\"\" },\n peg$c41 = \"image\",\n peg$c42 = { type: \"literal\", value: \"image\", description: \"\\\"image\\\"\" },\n peg$c43 = \"text\",\n peg$c44 = { type: \"literal\", value: \"text\", description: \"\\\"text\\\"\" },\n peg$c45 = \"group\",\n peg$c46 = { type: \"literal\", value: \"group\", description: \"\\\"group\\\"\" },\n peg$c47 = \"mousedown\",\n peg$c48 = { type: \"literal\", value: \"mousedown\", description: \"\\\"mousedown\\\"\" },\n peg$c49 = \"mouseup\",\n peg$c50 = { type: \"literal\", value: \"mouseup\", description: \"\\\"mouseup\\\"\" },\n peg$c51 = \"click\",\n peg$c52 = { type: \"literal\", value: \"click\", description: \"\\\"click\\\"\" },\n peg$c53 = \"dblclick\",\n peg$c54 = { type: \"literal\", value: \"dblclick\", description: \"\\\"dblclick\\\"\" },\n peg$c55 = \"wheel\",\n peg$c56 = { type: \"literal\", value: \"wheel\", description: \"\\\"wheel\\\"\" },\n peg$c57 = \"keydown\",\n peg$c58 = { type: \"literal\", value: \"keydown\", description: \"\\\"keydown\\\"\" },\n peg$c59 = \"keypress\",\n peg$c60 = { type: \"literal\", value: \"keypress\", description: \"\\\"keypress\\\"\" },\n peg$c61 = \"keyup\",\n peg$c62 = { type: \"literal\", value: \"keyup\", description: \"\\\"keyup\\\"\" },\n peg$c63 = \"mousewheel\",\n peg$c64 = { type: \"literal\", value: \"mousewheel\", description: \"\\\"mousewheel\\\"\" },\n peg$c65 = \"mousemove\",\n peg$c66 = { type: \"literal\", value: \"mousemove\", description: \"\\\"mousemove\\\"\" },\n peg$c67 = \"mouseout\",\n peg$c68 = { type: \"literal\", value: \"mouseout\", description: \"\\\"mouseout\\\"\" },\n peg$c69 = \"mouseover\",\n peg$c70 = { type: \"literal\", value: \"mouseover\", description: \"\\\"mouseover\\\"\" },\n peg$c71 = \"mouseenter\",\n peg$c72 = { type: \"literal\", value: \"mouseenter\", description: \"\\\"mouseenter\\\"\" },\n peg$c73 = \"touchstart\",\n peg$c74 = { type: \"literal\", value: \"touchstart\", description: \"\\\"touchstart\\\"\" },\n peg$c75 = \"touchmove\",\n peg$c76 = { type: \"literal\", value: \"touchmove\", description: \"\\\"touchmove\\\"\" },\n peg$c77 = \"touchend\",\n peg$c78 = { type: \"literal\", value: \"touchend\", description: \"\\\"touchend\\\"\" },\n peg$c79 = \"dragenter\",\n peg$c80 = { type: \"literal\", value: \"dragenter\", description: \"\\\"dragenter\\\"\" },\n peg$c81 = \"dragover\",\n peg$c82 = { type: \"literal\", value: \"dragover\", description: \"\\\"dragover\\\"\" },\n peg$c83 = \"dragleave\",\n peg$c84 = { type: \"literal\", value: \"dragleave\", description: \"\\\"dragleave\\\"\" },\n peg$c85 = function(e) { return e; },\n peg$c86 = /^[a-zA-Z0-9_\\-]/,\n peg$c87 = { type: \"class\", value: \"[a-zA-Z0-9_-]\", description: \"[a-zA-Z0-9_-]\" },\n peg$c88 = function(n) { return n.join(''); },\n peg$c89 = /^[a-zA-Z0-9\\-_ #.>+~[\\]=|\\^$*]/,\n peg$c90 = { type: \"class\", value: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\", description: \"[a-zA-Z0-9-_ #\\\\.\\\\>\\\\+~\\\\[\\\\]=|\\\\^\\\\$\\\\*]\" },\n peg$c91 = function(c) { return c.join(''); },\n peg$c92 = /^['\"a-zA-Z0-9_().><=! \\t-&|~]/,\n peg$c93 = { type: \"class\", value: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\", description: \"['\\\"a-zA-Z0-9_\\\\(\\\\)\\\\.\\\\>\\\\<\\\\=\\\\! \\\\t-&|~]\" },\n peg$c94 = function(v) { return v.join(''); },\n peg$c95 = /^[ \\t\\r\\n]/,\n peg$c96 = { type: \"class\", value: \"[ \\\\t\\\\r\\\\n]\", description: \"[ \\\\t\\\\r\\\\n]\" },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemerged();\n\n return s0;\n }\n\n function peg$parsemerged() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseordered();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesep();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c0;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsesep();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemerged();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseordered();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseordered() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesep();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsefiltered();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsesep();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsesep();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsefiltered();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsesep();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s9 = peg$c6;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsesep();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s11 = peg$c8;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parsesep();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseordered();\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10(s3, s7, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsefiltered();\n }\n\n return s0;\n }\n\n function peg$parsefiltered() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsestream();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsefilter();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsefilter();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsestream();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c12(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsestream() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c13;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c14); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemerged();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s3 = peg$c15;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c17(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s1 = peg$c18;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsename();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c20;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseeventType();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsemarkType();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c20;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseeventType();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecss();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c20;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseeventType();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseeventType();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsename();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsemarkType() {\n var s0;\n\n if (input.substr(peg$currPos, 4) === peg$c27) {\n s0 = peg$c27;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c29) {\n s0 = peg$c29;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c31) {\n s0 = peg$c31;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c33) {\n s0 = peg$c33;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c35) {\n s0 = peg$c35;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c37) {\n s0 = peg$c37;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c39) {\n s0 = peg$c39;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c41) {\n s0 = peg$c41;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c43) {\n s0 = peg$c43;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c45) {\n s0 = peg$c45;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseeventType() {\n var s0;\n\n if (input.substr(peg$currPos, 9) === peg$c47) {\n s0 = peg$c47;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c49) {\n s0 = peg$c49;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c51) {\n s0 = peg$c51;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c53) {\n s0 = peg$c53;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c55) {\n s0 = peg$c55;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c56); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c57) {\n s0 = peg$c57;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c59) {\n s0 = peg$c59;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c61) {\n s0 = peg$c61;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c63) {\n s0 = peg$c63;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c64); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c65) {\n s0 = peg$c65;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c67) {\n s0 = peg$c67;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c69) {\n s0 = peg$c69;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c70); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c71) {\n s0 = peg$c71;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c73) {\n s0 = peg$c73;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c74); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c75) {\n s0 = peg$c75;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c77) {\n s0 = peg$c77;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c79) {\n s0 = peg$c79;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c81) {\n s0 = peg$c81;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c83) {\n s0 = peg$c83;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsefilter() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexpr();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c6;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c85(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsename() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c86.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c87); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c86.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c87); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c88(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecss() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c89.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c89.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c91(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseexpr() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c92.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c93); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c92.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c93); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c94(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsesep() {\n var s0, s1;\n\n s0 = [];\n if (peg$c95.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c95.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-event-selector/index.js\n ** module id = 135\n ** module chunks = 0\n **/","var dl = require('datalib'),\n template = dl.template,\n expr = require('vega-expression'),\n args = ['datum', 'event', 'signals'];\n\nvar compile = expr.compiler(args, {\n idWhiteList: args,\n fieldVar: args[0],\n globalVar: function(id) {\n return 'this.sig[' + dl.str(id) + ']._value';\n },\n functions: function(codegen) {\n var fn = expr.functions(codegen);\n fn.eventItem = 'event.vg.getItem';\n fn.eventGroup = 'event.vg.getGroup';\n fn.eventX = 'event.vg.getX';\n fn.eventY = 'event.vg.getY';\n fn.open = 'window.open';\n fn.scale = scaleGen(codegen, false);\n fn.iscale = scaleGen(codegen, true);\n fn.inrange = 'this.defs.inrange';\n fn.indata = indataGen(codegen);\n fn.format = 'this.defs.format';\n fn.timeFormat = 'this.defs.timeFormat';\n fn.utcFormat = 'this.defs.utcFormat';\n return fn;\n },\n functionDefs: function(/*codegen*/) {\n return {\n 'scale': scale,\n 'inrange': inrange,\n 'indata': indata,\n 'format': numberFormat,\n 'timeFormat': timeFormat,\n 'utcFormat': utcFormat\n };\n }\n});\n\nfunction scaleGen(codegen, invert) {\n return function(args) {\n args = args.map(codegen);\n var n = args.length;\n if (n < 2 || n > 3) {\n throw Error(\"scale takes exactly 2 or 3 arguments.\");\n }\n return 'this.defs.scale(this.model, ' + invert + ', ' +\n args[0] + ',' + args[1] + (n > 2 ? ',' + args[2] : '') + ')';\n };\n}\n\nfunction scale(model, invert, name, value, scope) {\n if (!scope || !scope.scale) {\n scope = (scope && scope.mark) ? scope.mark.group : model.scene().items[0];\n }\n // Verify scope is valid\n if (model.group(scope._id) !== scope) {\n throw Error('Scope for scale \"'+name+'\" is not a valid group item.');\n }\n var s = scope.scale(name);\n return !s ? value : (invert ? s.invert(value) : s(value));\n}\n\nfunction inrange(val, a, b, exclusive) {\n var min = a, max = b;\n if (a > b) { min = b; max = a; }\n return exclusive ?\n (min < val && max > val) :\n (min <= val && max >= val);\n}\n\nfunction indataGen(codegen) {\n return function(args, globals, fields, dataSources) {\n var data;\n if (args.length !== 3) {\n throw Error(\"indata takes 3 arguments.\");\n }\n if (args[0].type !== 'Literal') {\n throw Error(\"Data source name must be a literal for indata.\");\n }\n\n data = args[0].value;\n dataSources[data] = 1;\n if (args[2].type === 'Literal') {\n indataGen.model.requestIndex(data, args[2].value);\n }\n\n args = args.map(codegen);\n return 'this.defs.indata(this.model,' + \n args[0] + ',' + args[1] + ',' + args[2] + ')';\n };\n}\n\nfunction indata(model, dataname, val, field) {\n var data = model.data(dataname),\n index = data.getIndex(field);\n return index[val] > 0;\n}\n\nfunction numberFormat(specifier, v) {\n return template.format(specifier, 'number')(v);\n}\n\nfunction timeFormat(specifier, d) {\n return template.format(specifier, 'time')(d);\n}\n\nfunction utcFormat(specifier, d) {\n return template.format(specifier, 'utc')(d);\n}\n\nfunction wrap(model) {\n return function(str) {\n indataGen.model = model;\n var x = compile(str);\n x.model = model;\n x.sig = model ? model._signals : {};\n return x;\n };\n}\n\nwrap.scale = scale;\nwrap.codegen = compile.codegen;\nmodule.exports = wrap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/expr.js\n ** module id = 136\n ** module chunks = 0\n **/","var parser = require('./parser'),\n codegen = require('./codegen');\n\nvar expr = module.exports = {\n parse: function(input, opt) {\n return parser.parse('('+input+')', opt);\n },\n code: function(opt) {\n return codegen(opt);\n },\n compiler: function(args, opt) {\n args = args.slice();\n var generator = codegen(opt),\n len = args.length,\n compile = function(str) {\n var value = generator(expr.parse(str));\n args[len] = '\"use strict\"; return (' + value.code + ');';\n var fn = Function.apply(null, args);\n value.fn = (args.length > 8) ?\n function() { return fn.apply(value, arguments); } :\n function(a, b, c, d, e, f, g) {\n return fn.call(value, a, b, c, d, e, f, g);\n }; // call often faster than apply, use if args low enough\n return value;\n };\n compile.codegen = generator;\n return compile;\n },\n functions: require('./functions'),\n constants: require('./constants')\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/index.js\n ** module id = 137\n ** module chunks = 0\n **/","/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat \n Copyright (C) 2013 Thaddee Tyl \n Copyright (C) 2013 Mathias Bynens \n Copyright (C) 2012 Ariya Hidayat \n Copyright (C) 2012 Mathias Bynens \n Copyright (C) 2012 Joost-Wim Boekesteijn \n Copyright (C) 2012 Kris Kowal \n Copyright (C) 2012 Yusuke Suzuki \n Copyright (C) 2012 Arpad Borsos \n Copyright (C) 2011 Ariya Hidayat \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/* istanbul ignore next */\nmodule.exports = (function() {\n 'use strict';\n\n var Token,\n TokenName,\n Syntax,\n PropertyKind,\n Messages,\n Regex,\n source,\n strict,\n index,\n lineNumber,\n lineStart,\n length,\n lookahead,\n state,\n extra;\n\n Token = {\n BooleanLiteral: 1,\n EOF: 2,\n Identifier: 3,\n Keyword: 4,\n NullLiteral: 5,\n NumericLiteral: 6,\n Punctuator: 7,\n StringLiteral: 8,\n RegularExpression: 9\n };\n\n TokenName = {};\n TokenName[Token.BooleanLiteral] = 'Boolean';\n TokenName[Token.EOF] = '';\n TokenName[Token.Identifier] = 'Identifier';\n TokenName[Token.Keyword] = 'Keyword';\n TokenName[Token.NullLiteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Numeric';\n TokenName[Token.Punctuator] = 'Punctuator';\n TokenName[Token.StringLiteral] = 'String';\n TokenName[Token.RegularExpression] = 'RegularExpression';\n\n Syntax = {\n AssignmentExpression: 'AssignmentExpression',\n ArrayExpression: 'ArrayExpression',\n BinaryExpression: 'BinaryExpression',\n CallExpression: 'CallExpression',\n ConditionalExpression: 'ConditionalExpression',\n ExpressionStatement: 'ExpressionStatement',\n Identifier: 'Identifier',\n Literal: 'Literal',\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'MemberExpression',\n ObjectExpression: 'ObjectExpression',\n Program: 'Program',\n Property: 'Property',\n UnaryExpression: 'UnaryExpression'\n };\n\n PropertyKind = {\n Data: 1,\n Get: 2,\n Set: 4\n };\n\n // Error messages should be identical to V8.\n Messages = {\n UnexpectedToken: 'Unexpected token %0',\n UnexpectedNumber: 'Unexpected number',\n UnexpectedString: 'Unexpected string',\n UnexpectedIdentifier: 'Unexpected identifier',\n UnexpectedReserved: 'Unexpected reserved word',\n UnexpectedEOS: 'Unexpected end of input',\n NewlineAfterThrow: 'Illegal newline after throw',\n InvalidRegExp: 'Invalid regular expression',\n UnterminatedRegExp: 'Invalid regular expression: missing /',\n InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n NoCatchOrFinally: 'Missing catch or finally after try',\n UnknownLabel: 'Undefined label \\'%0\\'',\n Redeclaration: '%0 \\'%1\\' has already been declared',\n IllegalContinue: 'Illegal continue statement',\n IllegalBreak: 'Illegal break statement',\n IllegalReturn: 'Illegal return statement',\n StrictModeWith: 'Strict mode code may not include a with statement',\n StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode',\n AccessorDataProperty: 'Object literal may not have data and accessor property with the same name',\n AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name',\n StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n StrictReservedWord: 'Use of future reserved word in strict mode'\n };\n\n // See also tools/generate-unicode-regex.py.\n Regex = {\n NonAsciiIdentifierStart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]'),\n NonAsciiIdentifierPart: new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]')\n };\n\n // Ensure the condition is true, otherwise throw an error.\n // This is only to have a better contract semantic, i.e. another safety net\n // to catch a logic error. The condition shall be fulfilled in normal case.\n // Do NOT use this to enforce a certain condition on any user input.\n\n function assert(condition, message) {\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n }\n\n function isDecimalDigit(ch) {\n return (ch >= 0x30 && ch <= 0x39); // 0..9\n }\n\n function isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n }\n\n function isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n }\n\n // 7.2 White Space\n\n function isWhiteSpace(ch) {\n return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n }\n\n // 7.3 Line Terminators\n\n function isLineTerminator(ch) {\n return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n }\n\n // 7.6 Identifier Names and Identifiers\n\n function isIdentifierStart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n }\n\n function isIdentifierPart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch >= 0x30 && ch <= 0x39) || // 0..9\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n }\n\n // 7.6.1.2 Future Reserved Words\n\n function isFutureReservedWord(id) {\n switch (id) {\n case 'class':\n case 'enum':\n case 'export':\n case 'extends':\n case 'import':\n case 'super':\n return true;\n default:\n return false;\n }\n }\n\n function isStrictModeReservedWord(id) {\n switch (id) {\n case 'implements':\n case 'interface':\n case 'package':\n case 'private':\n case 'protected':\n case 'public':\n case 'static':\n case 'yield':\n case 'let':\n return true;\n default:\n return false;\n }\n }\n\n // 7.6.1.1 Keywords\n\n function isKeyword(id) {\n if (strict && isStrictModeReservedWord(id)) {\n return true;\n }\n\n // 'const' is specialized as Keyword in V8.\n // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next.\n // Some others are from future reserved words.\n\n switch (id.length) {\n case 2:\n return (id === 'if') || (id === 'in') || (id === 'do');\n case 3:\n return (id === 'var') || (id === 'for') || (id === 'new') ||\n (id === 'try') || (id === 'let');\n case 4:\n return (id === 'this') || (id === 'else') || (id === 'case') ||\n (id === 'void') || (id === 'with') || (id === 'enum');\n case 5:\n return (id === 'while') || (id === 'break') || (id === 'catch') ||\n (id === 'throw') || (id === 'const') || (id === 'yield') ||\n (id === 'class') || (id === 'super');\n case 6:\n return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n (id === 'switch') || (id === 'export') || (id === 'import');\n case 7:\n return (id === 'default') || (id === 'finally') || (id === 'extends');\n case 8:\n return (id === 'function') || (id === 'continue') || (id === 'debugger');\n case 10:\n return (id === 'instanceof');\n default:\n return false;\n }\n }\n\n function skipComment() {\n var ch, start;\n\n start = (index === 0);\n while (index < length) {\n ch = source.charCodeAt(index);\n\n if (isWhiteSpace(ch)) {\n ++index;\n } else if (isLineTerminator(ch)) {\n ++index;\n if (ch === 0x0D && source.charCodeAt(index) === 0x0A) {\n ++index;\n }\n ++lineNumber;\n lineStart = index;\n start = true;\n } else {\n break;\n }\n }\n }\n\n function scanHexEscape(prefix) {\n var i, len, ch, code = 0;\n\n len = (prefix === 'u') ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n return '';\n }\n }\n return String.fromCharCode(code);\n }\n\n function scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = ((code - 0x10000) >> 10) + 0xD800;\n cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n }\n\n function getEscapedIdentifier() {\n var ch, id;\n\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n id = ch;\n }\n\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n id += ch;\n }\n }\n\n return id;\n }\n\n function getIdentifier() {\n var start, ch;\n\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, index);\n }\n\n function scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = Token.Identifier;\n } else if (isKeyword(id)) {\n type = Token.Keyword;\n } else if (id === 'null') {\n type = Token.NullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = Token.BooleanLiteral;\n } else {\n type = Token.Identifier;\n }\n\n return {\n type: type,\n value: id,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 7.7 Punctuators\n\n function scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n\n switch (code) {\n\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E: // ~\n ++index;\n if (extra.tokenize) {\n if (code === 0x28) {\n extra.openParenToken = extra.tokens.length;\n } else if (code === 0x7B) {\n extra.openCurlyToken = extra.tokens.length;\n }\n }\n return {\n type: Token.Punctuator,\n value: String.fromCharCode(code),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A: // *\n index += 2;\n return {\n type: Token.Punctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n\n case 0x21: // !\n case 0x3D: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: Token.Punctuator,\n value: source.slice(start, index),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: Token.Punctuator,\n value: ch4,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: Token.Punctuator,\n value: ch3,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n\n if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n index += 2;\n return {\n type: Token.Punctuator,\n value: ch2,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: Token.Punctuator,\n value: ch1,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n // 7.8.3 Numeric Literals\n\n function scanHexLiteral(start) {\n var number = '';\n\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (number.length === 0) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseInt('0x' + number, 16),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n function scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n function scanNumericLiteral() {\n var number, start, ch;\n\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseFloat(number),\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n // 7.8.4 String Literals\n\n function scanStringLiteral() {\n var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart;\n startLineNumber = lineNumber;\n startLineStart = lineStart;\n\n quote = source[index];\n assert((quote === '\\'' || quote === '\"'),\n 'String literal must starts with a quote');\n\n start = index;\n ++index;\n\n while (index < length) {\n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n restore = index;\n unescaped = scanHexEscape(ch);\n if (unescaped) {\n str += unescaped;\n } else {\n index = restore;\n str += ch;\n }\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 &&\n index < length &&\n isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n ++lineNumber;\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n lineStart = index;\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.StringLiteral,\n value: str,\n octal: octal,\n startLineNumber: startLineNumber,\n startLineStart: startLineStart,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n function testRegExp(pattern, flags) {\n var tmp = pattern,\n value;\n\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp\n .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function ($0, $1) {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, Messages.InvalidRegExp);\n })\n .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n value = new RegExp(tmp);\n } catch (e) {\n throwError({}, Messages.InvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n }\n\n function scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, Messages.UnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, Messages.UnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n\n if (!terminated) {\n throwError({}, Messages.UnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n }\n\n function scanRegExpFlags() {\n var ch, str, flags, restore;\n\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n\n ++index;\n if (ch === '\\\\' && index < length) {\n ch = source[index];\n if (ch === 'u') {\n ++index;\n restore = index;\n ch = scanHexEscape('u');\n if (ch) {\n flags += ch;\n for (str += '\\\\u'; restore < index; ++restore) {\n str += source[restore];\n }\n } else {\n index = restore;\n flags += 'u';\n str += '\\\\u';\n }\n throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n } else {\n str += '\\\\';\n throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n } else {\n flags += ch;\n str += ch;\n }\n }\n\n return {\n value: flags,\n literal: str\n };\n }\n\n function scanRegExp() {\n var start, body, flags, value;\n\n lookahead = null;\n skipComment();\n start = index;\n\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n\n if (extra.tokenize) {\n return {\n type: Token.RegularExpression,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: start,\n end: index\n };\n }\n\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n }\n\n function collectRegex() {\n var pos, loc, regex, token;\n\n skipComment();\n\n pos = index;\n loc = {\n start: {\n line: lineNumber,\n column: index - lineStart\n }\n };\n\n regex = scanRegExp();\n\n loc.end = {\n line: lineNumber,\n column: index - lineStart\n };\n\n if (!extra.tokenize) {\n // Pop the previous token, which is likely '/' or '/='\n if (extra.tokens.length > 0) {\n token = extra.tokens[extra.tokens.length - 1];\n if (token.range[0] === pos && token.type === 'Punctuator') {\n if (token.value === '/' || token.value === '/=') {\n extra.tokens.pop();\n }\n }\n }\n\n extra.tokens.push({\n type: 'RegularExpression',\n value: regex.literal,\n regex: regex.regex,\n range: [pos, index],\n loc: loc\n });\n }\n\n return regex;\n }\n\n function isIdentifierName(token) {\n return token.type === Token.Identifier ||\n token.type === Token.Keyword ||\n token.type === Token.BooleanLiteral ||\n token.type === Token.NullLiteral;\n }\n\n function advanceSlash() {\n var prevToken,\n checkToken;\n // Using the following algorithm:\n // https://github.com/mozilla/sweet.js/wiki/design\n prevToken = extra.tokens[extra.tokens.length - 1];\n if (!prevToken) {\n // Nothing before that: it cannot be a division.\n return collectRegex();\n }\n if (prevToken.type === 'Punctuator') {\n if (prevToken.value === ']') {\n return scanPunctuator();\n }\n if (prevToken.value === ')') {\n checkToken = extra.tokens[extra.openParenToken - 1];\n if (checkToken &&\n checkToken.type === 'Keyword' &&\n (checkToken.value === 'if' ||\n checkToken.value === 'while' ||\n checkToken.value === 'for' ||\n checkToken.value === 'with')) {\n return collectRegex();\n }\n return scanPunctuator();\n }\n if (prevToken.value === '}') {\n // Dividing a function by anything makes little sense,\n // but we have to check for that.\n if (extra.tokens[extra.openCurlyToken - 3] &&\n extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') {\n // Anonymous function.\n checkToken = extra.tokens[extra.openCurlyToken - 4];\n if (!checkToken) {\n return scanPunctuator();\n }\n } else if (extra.tokens[extra.openCurlyToken - 4] &&\n extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') {\n // Named function.\n checkToken = extra.tokens[extra.openCurlyToken - 5];\n if (!checkToken) {\n return collectRegex();\n }\n } else {\n return scanPunctuator();\n }\n return scanPunctuator();\n }\n return collectRegex();\n }\n if (prevToken.type === 'Keyword' && prevToken.value !== 'this') {\n return collectRegex();\n }\n return scanPunctuator();\n }\n\n function advance() {\n var ch;\n\n skipComment();\n\n if (index >= length) {\n return {\n type: Token.EOF,\n lineNumber: lineNumber,\n lineStart: lineStart,\n start: index,\n end: index\n };\n }\n\n ch = source.charCodeAt(index);\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n // Slash (/) U+002F can also start a regex.\n if (extra.tokenize && ch === 0x2F) {\n return advanceSlash();\n }\n\n return scanPunctuator();\n }\n\n function collectToken() {\n var loc, token, value, entry;\n\n skipComment();\n loc = {\n start: {\n line: lineNumber,\n column: index - lineStart\n }\n };\n\n token = advance();\n loc.end = {\n line: lineNumber,\n column: index - lineStart\n };\n\n if (token.type !== Token.EOF) {\n value = source.slice(token.start, token.end);\n entry = {\n type: TokenName[token.type],\n value: value,\n range: [token.start, token.end],\n loc: loc\n };\n if (token.regex) {\n entry.regex = {\n pattern: token.regex.pattern,\n flags: token.regex.flags\n };\n }\n extra.tokens.push(entry);\n }\n\n return token;\n }\n\n function lex() {\n var token;\n\n token = lookahead;\n index = token.end;\n lineNumber = token.lineNumber;\n lineStart = token.lineStart;\n\n lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n\n index = token.end;\n lineNumber = token.lineNumber;\n lineStart = token.lineStart;\n\n return token;\n }\n\n function peek() {\n var pos, line, start;\n\n pos = index;\n line = lineNumber;\n start = lineStart;\n lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();\n index = pos;\n lineNumber = line;\n lineStart = start;\n }\n\n function Position() {\n this.line = lineNumber;\n this.column = index - lineStart;\n }\n\n function SourceLocation() {\n this.start = new Position();\n this.end = null;\n }\n\n function WrappingSourceLocation(startToken) {\n if (startToken.type === Token.StringLiteral) {\n this.start = {\n line: startToken.startLineNumber,\n column: startToken.start - startToken.startLineStart\n };\n } else {\n this.start = {\n line: startToken.lineNumber,\n column: startToken.start - startToken.lineStart\n };\n }\n this.end = null;\n }\n\n function Node() {\n // Skip comment.\n index = lookahead.start;\n if (lookahead.type === Token.StringLiteral) {\n lineNumber = lookahead.startLineNumber;\n lineStart = lookahead.startLineStart;\n } else {\n lineNumber = lookahead.lineNumber;\n lineStart = lookahead.lineStart;\n }\n if (extra.range) {\n this.range = [index, 0];\n }\n if (extra.loc) {\n this.loc = new SourceLocation();\n }\n }\n\n function WrappingNode(startToken) {\n if (extra.range) {\n this.range = [startToken.start, 0];\n }\n if (extra.loc) {\n this.loc = new WrappingSourceLocation(startToken);\n }\n }\n\n WrappingNode.prototype = Node.prototype = {\n\n finish: function () {\n if (extra.range) {\n this.range[1] = index;\n }\n if (extra.loc) {\n this.loc.end = new Position();\n if (extra.source) {\n this.loc.source = extra.source;\n }\n }\n },\n\n finishArrayExpression: function (elements) {\n this.type = Syntax.ArrayExpression;\n this.elements = elements;\n this.finish();\n return this;\n },\n\n finishAssignmentExpression: function (operator, left, right) {\n this.type = Syntax.AssignmentExpression;\n this.operator = operator;\n this.left = left;\n this.right = right;\n this.finish();\n return this;\n },\n\n finishBinaryExpression: function (operator, left, right) {\n this.type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : Syntax.BinaryExpression;\n this.operator = operator;\n this.left = left;\n this.right = right;\n this.finish();\n return this;\n },\n\n finishCallExpression: function (callee, args) {\n this.type = Syntax.CallExpression;\n this.callee = callee;\n this.arguments = args;\n this.finish();\n return this;\n },\n\n finishConditionalExpression: function (test, consequent, alternate) {\n this.type = Syntax.ConditionalExpression;\n this.test = test;\n this.consequent = consequent;\n this.alternate = alternate;\n this.finish();\n return this;\n },\n\n finishExpressionStatement: function (expression) {\n this.type = Syntax.ExpressionStatement;\n this.expression = expression;\n this.finish();\n return this;\n },\n\n finishIdentifier: function (name) {\n this.type = Syntax.Identifier;\n this.name = name;\n this.finish();\n return this;\n },\n\n finishLiteral: function (token) {\n this.type = Syntax.Literal;\n this.value = token.value;\n this.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (this.raw == '//') {\n this.raw = '/(?:)/';\n }\n this.regex = token.regex;\n }\n this.finish();\n return this;\n },\n\n finishMemberExpression: function (accessor, object, property) {\n this.type = Syntax.MemberExpression;\n this.computed = accessor === '[';\n this.object = object;\n this.property = property;\n this.finish();\n return this;\n },\n\n finishObjectExpression: function (properties) {\n this.type = Syntax.ObjectExpression;\n this.properties = properties;\n this.finish();\n return this;\n },\n\n finishProgram: function (body) {\n this.type = Syntax.Program;\n this.body = body;\n this.finish();\n return this;\n },\n\n finishProperty: function (kind, key, value) {\n this.type = Syntax.Property;\n this.key = key;\n this.value = value;\n this.kind = kind;\n this.finish();\n return this;\n },\n\n finishUnaryExpression: function (operator, argument) {\n this.type = Syntax.UnaryExpression;\n this.operator = operator;\n this.argument = argument;\n this.prefix = true;\n this.finish();\n return this;\n }\n };\n\n // Return true if there is a line terminator before the next token.\n\n function peekLineTerminator() {\n var pos, line, start, found;\n\n pos = index;\n line = lineNumber;\n start = lineStart;\n skipComment();\n found = lineNumber !== line;\n index = pos;\n lineNumber = line;\n lineStart = start;\n\n return found;\n }\n\n // Throw an exception\n\n function throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function (whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n if (typeof token.lineNumber === 'number') {\n error = new Error('Line ' + token.lineNumber + ': ' + msg);\n error.index = token.start;\n error.lineNumber = token.lineNumber;\n error.column = token.start - lineStart + 1;\n } else {\n error = new Error('Line ' + lineNumber + ': ' + msg);\n error.index = index;\n error.lineNumber = lineNumber;\n error.column = index - lineStart + 1;\n }\n\n error.description = msg;\n throw error;\n }\n\n function throwErrorTolerant() {\n try {\n throwError.apply(null, arguments);\n } catch (e) {\n if (extra.errors) {\n extra.errors.push(e);\n } else {\n throw e;\n }\n }\n }\n\n\n // Throw an exception because of the token.\n\n function throwUnexpected(token) {\n if (token.type === Token.EOF) {\n throwError(token, Messages.UnexpectedEOS);\n }\n\n if (token.type === Token.NumericLiteral) {\n throwError(token, Messages.UnexpectedNumber);\n }\n\n if (token.type === Token.StringLiteral) {\n throwError(token, Messages.UnexpectedString);\n }\n\n if (token.type === Token.Identifier) {\n throwError(token, Messages.UnexpectedIdentifier);\n }\n\n if (token.type === Token.Keyword) {\n if (isFutureReservedWord(token.value)) {\n throwError(token, Messages.UnexpectedReserved);\n } else if (strict && isStrictModeReservedWord(token.value)) {\n throwErrorTolerant(token, Messages.StrictReservedWord);\n return;\n }\n throwError(token, Messages.UnexpectedToken, token.value);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, Messages.UnexpectedToken, token.value);\n }\n\n // Expect the next token to match the specified punctuator.\n // If not, an exception will be thrown.\n\n function expect(value) {\n var token = lex();\n if (token.type !== Token.Punctuator || token.value !== value) {\n throwUnexpected(token);\n }\n }\n\n /**\n * @name expectTolerant\n * @description Quietly expect the given token value when in tolerant mode, otherwise delegates\n * to expect(value)\n * @param {String} value The value we are expecting the lookahead token to have\n * @since 2.0\n */\n function expectTolerant(value) {\n if (extra.errors) {\n var token = lookahead;\n if (token.type !== Token.Punctuator && token.value !== value) {\n throwErrorTolerant(token, Messages.UnexpectedToken, token.value);\n } else {\n lex();\n }\n } else {\n expect(value);\n }\n }\n\n // Return true if the next token matches the specified punctuator.\n\n function match(value) {\n return lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n // Return true if the next token matches the specified keyword\n\n function matchKeyword(keyword) {\n return lookahead.type === Token.Keyword && lookahead.value === keyword;\n }\n\n function consumeSemicolon() {\n var line;\n\n // Catch the very common case first: immediately a semicolon (U+003B).\n if (source.charCodeAt(index) === 0x3B || match(';')) {\n lex();\n return;\n }\n\n line = lineNumber;\n skipComment();\n if (lineNumber !== line) {\n return;\n }\n\n if (lookahead.type !== Token.EOF && !match('}')) {\n throwUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\n var elements = [], node = new Node();\n\n expect('[');\n\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseAssignmentExpression());\n\n if (!match(']')) {\n expect(',');\n }\n }\n }\n\n lex();\n\n return node.finishArrayExpression(elements);\n }\n\n // 11.1.5 Object Initialiser\n\n function parseObjectPropertyKey() {\n var token, node = new Node();\n\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {\n if (strict && token.octal) {\n throwErrorTolerant(token, Messages.StrictOctalLiteral);\n }\n return node.finishLiteral(token);\n }\n\n return node.finishIdentifier(token.value);\n }\n\n function parseObjectProperty() {\n var token, key, id, value, node = new Node();\n\n token = lookahead;\n\n if (token.type === Token.Identifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseAssignmentExpression();\n return node.finishProperty('init', id, value);\n }\n if (token.type === Token.EOF || token.type === Token.Punctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseAssignmentExpression();\n return node.finishProperty('init', key, value);\n }\n }\n\n function parseObjectInitialiser() {\n var properties = [], property, name, key, kind, map = {}, toString = String, node = new Node();\n\n expect('{');\n\n while (!match('}')) {\n property = parseObjectProperty();\n\n if (property.key.type === Syntax.Identifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;\n\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n if (map[key] === PropertyKind.Data) {\n if (strict && kind === PropertyKind.Data) {\n throwErrorTolerant({}, Messages.StrictDuplicateProperty);\n } else if (kind !== PropertyKind.Data) {\n throwErrorTolerant({}, Messages.AccessorDataProperty);\n }\n } else {\n if (kind === PropertyKind.Data) {\n throwErrorTolerant({}, Messages.AccessorDataProperty);\n } else if (map[key] & kind) {\n throwErrorTolerant({}, Messages.AccessorGetSet);\n }\n }\n map[key] |= kind;\n } else {\n map[key] = kind;\n }\n\n properties.push(property);\n\n if (!match('}')) {\n expectTolerant(',');\n }\n }\n\n expect('}');\n\n return node.finishObjectExpression(properties);\n }\n\n // 11.1.6 The Grouping Operator\n\n function parseGroupExpression() {\n var expr;\n\n expect('(');\n\n ++state.parenthesisCount;\n\n expr = parseExpression();\n\n expect(')');\n\n return expr;\n }\n\n\n // 11.1 Primary Expressions\n\n var legalKeywords = {\"if\":1, \"this\":1};\n\n function parsePrimaryExpression() {\n var type, token, expr, node;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n if (match('[')) {\n return parseArrayInitialiser();\n }\n\n if (match('{')) {\n return parseObjectInitialiser();\n }\n\n type = lookahead.type;\n node = new Node();\n\n if (type === Token.Identifier || legalKeywords[lookahead.value]) {\n expr = node.finishIdentifier(lex().value);\n } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {\n if (strict && lookahead.octal) {\n throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);\n }\n expr = node.finishLiteral(lex());\n } else if (type === Token.Keyword) {\n throw new Error(\"Disabled.\");\n } else if (type === Token.BooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = node.finishLiteral(token);\n } else if (type === Token.NullLiteral) {\n token = lex();\n token.value = null;\n expr = node.finishLiteral(token);\n } else if (match('/') || match('/=')) {\n if (typeof extra.tokens !== 'undefined') {\n expr = node.finishLiteral(collectRegex());\n } else {\n expr = node.finishLiteral(scanRegExp());\n }\n peek();\n } else {\n throwUnexpected(lex());\n }\n\n return expr;\n }\n\n // 11.2 Left-Hand-Side Expressions\n\n function parseArguments() {\n var args = [];\n\n expect('(');\n\n if (!match(')')) {\n while (index < length) {\n args.push(parseAssignmentExpression());\n if (match(')')) {\n break;\n }\n expectTolerant(',');\n }\n }\n\n expect(')');\n\n return args;\n }\n\n function parseNonComputedProperty() {\n var token, node = new Node();\n\n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return node.finishIdentifier(token.value);\n }\n\n function parseNonComputedMember() {\n expect('.');\n\n return parseNonComputedProperty();\n }\n\n function parseComputedMember() {\n var expr;\n\n expect('[');\n\n expr = parseExpression();\n\n expect(']');\n\n return expr;\n }\n\n function parseLeftHandSideExpressionAllowCall() {\n var expr, args, property, startToken, previousAllowIn = state.allowIn;\n\n startToken = lookahead;\n state.allowIn = true;\n expr = parsePrimaryExpression();\n\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = new WrappingNode(startToken).finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n state.allowIn = previousAllowIn;\n\n return expr;\n }\n\n // 11.3 Postfix Expressions\n\n function parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n\n if (lookahead.type === Token.Punctuator) {\n if ((match('++') || match('--')) && !peekLineTerminator()) {\n throw new Error(\"Disabled.\");\n }\n }\n\n return expr;\n }\n\n // 11.4 Unary Operators\n\n function parseUnaryExpression() {\n var token, expr, startToken;\n\n if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(\"Disabled.\");\n } else if (match('+') || match('-') || match('~') || match('!')) {\n startToken = lookahead;\n token = lex();\n expr = parseUnaryExpression();\n expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(\"Disabled.\");\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n }\n\n function binaryPrecedence(token, allowIn) {\n var prec = 0;\n\n if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n return 0;\n }\n\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n\n case '&&':\n prec = 2;\n break;\n\n case '|':\n prec = 3;\n break;\n\n case '^':\n prec = 4;\n break;\n\n case '&':\n prec = 5;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n prec = 7;\n break;\n\n case 'in':\n prec = allowIn ? 7 : 0;\n break;\n\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n\n default:\n break;\n }\n\n return prec;\n }\n\n // 11.5 Multiplicative Operators\n // 11.6 Additive Operators\n // 11.7 Bitwise Shift Operators\n // 11.8 Relational Operators\n // 11.9 Equality Operators\n // 11.10 Binary Bitwise Operators\n // 11.11 Binary Logical Operators\n\n function parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\n marker = lookahead;\n left = parseUnaryExpression();\n\n token = lookahead;\n prec = binaryPrecedence(token, state.allowIn);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = new WrappingNode(markers[markers.length - 1]).finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n expr = new WrappingNode(markers.pop()).finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n }\n\n // 11.12 Conditional Operator\n\n function parseConditionalExpression() {\n var expr, previousAllowIn, consequent, alternate, startToken;\n\n startToken = lookahead;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\n previousAllowIn = state.allowIn;\n state.allowIn = true;\n consequent = parseAssignmentExpression();\n state.allowIn = previousAllowIn;\n expect(':');\n alternate = parseAssignmentExpression();\n\n expr = new WrappingNode(startToken).finishConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n }\n\n // 11.13 Assignment Operators\n\n function parseAssignmentExpression() {\n var oldParenthesisCount, token, expr, startToken;\n\n oldParenthesisCount = state.parenthesisCount;\n\n startToken = lookahead;\n token = lookahead;\n\n expr = parseConditionalExpression();\n\n return expr;\n }\n\n // 11.14 Comma Operator\n\n function parseExpression() {\n var expr = parseAssignmentExpression();\n\n if (match(',')) {\n throw new Error(\"Disabled.\"); // no sequence expressions\n }\n\n return expr;\n }\n\n // 12.4 Expression Statement\n\n function parseExpressionStatement(node) {\n var expr = parseExpression();\n consumeSemicolon();\n return node.finishExpressionStatement(expr);\n }\n\n // 12 Statements\n\n function parseStatement() {\n var type = lookahead.type,\n expr,\n node;\n\n if (type === Token.EOF) {\n throwUnexpected(lookahead);\n }\n\n if (type === Token.Punctuator && lookahead.value === '{') {\n throw new Error(\"Disabled.\"); // block statement\n }\n\n node = new Node();\n\n if (type === Token.Punctuator) {\n switch (lookahead.value) {\n case ';':\n throw new Error(\"Disabled.\"); // empty statement\n case '(':\n return parseExpressionStatement(node);\n default:\n break;\n }\n } else if (type === Token.Keyword) {\n throw new Error(\"Disabled.\"); // keyword\n }\n\n expr = parseExpression();\n consumeSemicolon();\n return node.finishExpressionStatement(expr);\n }\n\n // 14 Program\n\n function parseSourceElement() {\n if (lookahead.type === Token.Keyword) {\n switch (lookahead.value) {\n case 'const':\n case 'let':\n throw new Error(\"Disabled.\");\n case 'function':\n throw new Error(\"Disabled.\");\n default:\n return parseStatement();\n }\n }\n\n if (lookahead.type !== Token.EOF) {\n return parseStatement();\n }\n }\n\n function parseSourceElements() {\n var sourceElement, sourceElements = [], token, directive, firstRestricted;\n\n while (index < length) {\n token = lookahead;\n if (token.type !== Token.StringLiteral) {\n break;\n }\n\n sourceElement = parseSourceElement();\n sourceElements.push(sourceElement);\n if (sourceElement.expression.type !== Syntax.Literal) {\n // this is not directive\n break;\n }\n directive = source.slice(token.start + 1, token.end - 1);\n if (directive === 'use strict') {\n strict = true;\n if (firstRestricted) {\n throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);\n }\n } else {\n if (!firstRestricted && token.octal) {\n firstRestricted = token;\n }\n }\n }\n\n while (index < length) {\n sourceElement = parseSourceElement();\n if (typeof sourceElement === 'undefined') {\n break;\n }\n sourceElements.push(sourceElement);\n }\n return sourceElements;\n }\n\n function parseProgram() {\n var body, node;\n\n skipComment();\n peek();\n node = new Node();\n strict = true; // assume strict\n\n body = parseSourceElements();\n return node.finishProgram(body);\n }\n\n function filterTokenLocation() {\n var i, entry, token, tokens = [];\n\n for (i = 0; i < extra.tokens.length; ++i) {\n entry = extra.tokens[i];\n token = {\n type: entry.type,\n value: entry.value\n };\n if (entry.regex) {\n token.regex = {\n pattern: entry.regex.pattern,\n flags: entry.regex.flags\n };\n }\n if (extra.range) {\n token.range = entry.range;\n }\n if (extra.loc) {\n token.loc = entry.loc;\n }\n tokens.push(token);\n }\n\n extra.tokens = tokens;\n }\n\n function tokenize(code, options) {\n var toString,\n tokens;\n\n toString = String;\n if (typeof code !== 'string' && !(code instanceof String)) {\n code = toString(code);\n }\n\n source = code;\n index = 0;\n lineNumber = (source.length > 0) ? 1 : 0;\n lineStart = 0;\n length = source.length;\n lookahead = null;\n state = {\n allowIn: true,\n labelSet: {},\n inFunctionBody: false,\n inIteration: false,\n inSwitch: false,\n lastCommentStart: -1\n };\n\n extra = {};\n\n // Options matching.\n options = options || {};\n\n // Of course we collect tokens here.\n options.tokens = true;\n extra.tokens = [];\n extra.tokenize = true;\n // The following two fields are necessary to compute the Regex tokens.\n extra.openParenToken = -1;\n extra.openCurlyToken = -1;\n\n extra.range = (typeof options.range === 'boolean') && options.range;\n extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\n if (typeof options.tolerant === 'boolean' && options.tolerant) {\n extra.errors = [];\n }\n\n try {\n peek();\n if (lookahead.type === Token.EOF) {\n return extra.tokens;\n }\n\n lex();\n while (lookahead.type !== Token.EOF) {\n try {\n lex();\n } catch (lexError) {\n if (extra.errors) {\n extra.errors.push(lexError);\n // We have to break on the first error\n // to avoid infinite loops.\n break;\n } else {\n throw lexError;\n }\n }\n }\n\n filterTokenLocation();\n tokens = extra.tokens;\n if (typeof extra.errors !== 'undefined') {\n tokens.errors = extra.errors;\n }\n } catch (e) {\n throw e;\n } finally {\n extra = {};\n }\n return tokens;\n }\n\n function parse(code, options) {\n var program, toString;\n\n toString = String;\n if (typeof code !== 'string' && !(code instanceof String)) {\n code = toString(code);\n }\n\n source = code;\n index = 0;\n lineNumber = (source.length > 0) ? 1 : 0;\n lineStart = 0;\n length = source.length;\n lookahead = null;\n state = {\n allowIn: true,\n labelSet: {},\n parenthesisCount: 0,\n inFunctionBody: false,\n inIteration: false,\n inSwitch: false,\n lastCommentStart: -1\n };\n\n extra = {};\n if (typeof options !== 'undefined') {\n extra.range = (typeof options.range === 'boolean') && options.range;\n extra.loc = (typeof options.loc === 'boolean') && options.loc;\n\n if (extra.loc && options.source !== null && options.source !== undefined) {\n extra.source = toString(options.source);\n }\n\n if (typeof options.tokens === 'boolean' && options.tokens) {\n extra.tokens = [];\n }\n if (typeof options.tolerant === 'boolean' && options.tolerant) {\n extra.errors = [];\n }\n }\n\n try {\n program = parseProgram();\n if (typeof extra.tokens !== 'undefined') {\n filterTokenLocation();\n program.tokens = extra.tokens;\n }\n if (typeof extra.errors !== 'undefined') {\n program.errors = extra.errors;\n }\n } catch (e) {\n throw e;\n } finally {\n extra = {};\n }\n\n return program;\n }\n\n return {\n tokenize: tokenize,\n parse: parse\n };\n\n})();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/parser.js\n ** module id = 138\n ** module chunks = 0\n **/","function toMap(list) {\n var map = {}, i, n;\n for (i=0, n=list.length; i 0) {\n return id;\n }\n if (constants.hasOwnProperty(id)) {\n return constants[id];\n }\n if (idWhiteList) {\n if (idWhiteList.hasOwnProperty(id)) {\n return id;\n } else {\n globals[id] = 1;\n return lookupGlobal(id);\n }\n }\n if (idBlackList && idBlackList.hasOwnProperty(id)) {\n throw new Error('Illegal identifier: ' + id);\n }\n return id;\n },\n 'Program': function(n) {\n return n.body.map(codegen).join('\\n');\n },\n 'MemberExpression': function(n) {\n var d = !n.computed;\n var o = codegen(n.object);\n if (d) memberDepth += 1;\n var p = codegen(n.property);\n if (o === FIELD_VAR) { fields[p] = 1; } // HACKish...\n if (d) memberDepth -= 1;\n return o + (d ? '.'+p : '['+p+']');\n },\n 'CallExpression': function(n) {\n if (n.callee.type !== 'Identifier') {\n throw new Error('Illegal callee type: ' + n.callee.type);\n }\n var callee = n.callee.name;\n var args = n.arguments;\n var fn = functions.hasOwnProperty(callee) && functions[callee];\n if (!fn) throw new Error('Unrecognized function: ' + callee);\n return fn instanceof Function ?\n fn(args, globals, fields, dataSources) :\n fn + '(' + args.map(codegen).join(',') + ')';\n },\n 'ArrayExpression': function(n) {\n return '[' + n.elements.map(codegen).join(',') + ']';\n },\n 'BinaryExpression': function(n) {\n return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n },\n 'UnaryExpression': function(n) {\n return '(' + n.operator + codegen(n.argument) + ')';\n },\n 'ConditionalExpression': function(n) {\n return '(' + codegen(n.test) +\n '?' + codegen(n.consequent) +\n ':' + codegen(n.alternate) +\n ')';\n },\n 'LogicalExpression': function(n) {\n return '(' + codegen(n.left) + n.operator + codegen(n.right) + ')';\n },\n 'ObjectExpression': function(n) {\n return '{' + n.properties.map(codegen).join(',') + '}';\n },\n 'Property': function(n) {\n memberDepth += 1;\n var k = codegen(n.key);\n memberDepth -= 1;\n return k + ':' + codegen(n.value);\n },\n 'ExpressionStatement': function(n) {\n return codegen(n.expression);\n }\n };\n\n codegen_wrap.functions = functions;\n codegen_wrap.functionDefs = functionDefs;\n codegen_wrap.constants = constants;\n return codegen_wrap;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/codegen.js\n ** module id = 139\n ** module chunks = 0\n **/","module.exports = {\n 'NaN': 'NaN',\n 'E': 'Math.E',\n 'LN2': 'Math.LN2',\n 'LN10': 'Math.LN10',\n 'LOG2E': 'Math.LOG2E',\n 'LOG10E': 'Math.LOG10E',\n 'PI': 'Math.PI',\n 'SQRT1_2': 'Math.SQRT1_2',\n 'SQRT2': 'Math.SQRT2'\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/constants.js\n ** module id = 140\n ** module chunks = 0\n **/","module.exports = function(codegen) {\n\n function fncall(name, args, cast, type) {\n var obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n '()' :\n '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n\n function fn(name, cast, type) {\n return function(args) {\n return fncall(name, args, cast, type);\n };\n }\n\n var DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n\n return {\n // MATH functions\n 'isNaN': 'isNaN',\n 'isFinite': 'isFinite',\n 'abs': 'Math.abs',\n 'acos': 'Math.acos',\n 'asin': 'Math.asin',\n 'atan': 'Math.atan',\n 'atan2': 'Math.atan2',\n 'ceil': 'Math.ceil',\n 'cos': 'Math.cos',\n 'exp': 'Math.exp',\n 'floor': 'Math.floor',\n 'log': 'Math.log',\n 'max': 'Math.max',\n 'min': 'Math.min',\n 'pow': 'Math.pow',\n 'random': 'Math.random',\n 'round': 'Math.round',\n 'sin': 'Math.sin',\n 'sqrt': 'Math.sqrt',\n 'tan': 'Math.tan',\n\n 'clamp': function(args) {\n if (args.length < 3)\n throw new Error('Missing arguments to clamp function.');\n if (args.length > 3)\n throw new Error('Too many arguments to clamp function.');\n var a = args.map(codegen);\n return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n },\n\n // DATE functions\n 'now': 'Date.now',\n 'utc': 'Date.UTC',\n 'datetime': DATE,\n 'date': fn('getDate', DATE, 0),\n 'day': fn('getDay', DATE, 0),\n 'year': fn('getFullYear', DATE, 0),\n 'month': fn('getMonth', DATE, 0),\n 'hours': fn('getHours', DATE, 0),\n 'minutes': fn('getMinutes', DATE, 0),\n 'seconds': fn('getSeconds', DATE, 0),\n 'milliseconds': fn('getMilliseconds', DATE, 0),\n 'time': fn('getTime', DATE, 0),\n 'timezoneoffset': fn('getTimezoneOffset', DATE, 0),\n 'utcdate': fn('getUTCDate', DATE, 0),\n 'utcday': fn('getUTCDay', DATE, 0),\n 'utcyear': fn('getUTCFullYear', DATE, 0),\n 'utcmonth': fn('getUTCMonth', DATE, 0),\n 'utchours': fn('getUTCHours', DATE, 0),\n 'utcminutes': fn('getUTCMinutes', DATE, 0),\n 'utcseconds': fn('getUTCSeconds', DATE, 0),\n 'utcmilliseconds': fn('getUTCMilliseconds', DATE, 0),\n\n // shared sequence functions\n 'length': fn('length', null, -1),\n 'indexof': fn('indexOf', null),\n 'lastindexof': fn('lastIndexOf', null),\n\n // STRING functions\n 'parseFloat': 'parseFloat',\n 'parseInt': 'parseInt',\n 'upper': fn('toUpperCase', STRING, 0),\n 'lower': fn('toLowerCase', STRING, 0),\n 'slice': fn('slice', STRING),\n 'substring': fn('substring', STRING),\n 'replace': fn('replace', STRING),\n\n // REGEXP functions\n 'regexp': REGEXP,\n 'test': fn('test', REGEXP),\n\n // Control Flow functions\n 'if': function(args) {\n if (args.length < 3)\n throw new Error('Missing arguments to if function.');\n if (args.length > 3)\n throw new Error('Too many arguments to if function.');\n var a = args.map(codegen);\n return a[0]+'?'+a[1]+':'+a[2];\n }\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/~/vega-expression/src/functions.js\n ** module id = 141\n ** module chunks = 0\n **/","var lgnd = require('../scene/legend');\n\nfunction parseLegends(model, spec, legends, group) {\n (spec || []).forEach(function(def, index) {\n legends[index] = legends[index] || lgnd(model);\n parseLegend(def, index, legends[index], group);\n });\n}\n\nfunction parseLegend(def, index, legend, group) {\n // legend scales\n legend.size (def.size ? group.scale(def.size) : null);\n legend.shape (def.shape ? group.scale(def.shape) : null);\n legend.fill (def.fill ? group.scale(def.fill) : null);\n legend.stroke(def.stroke ? group.scale(def.stroke) : null);\n\n // legend orientation\n if (def.orient) legend.orient(def.orient);\n\n // legend offset\n if (def.offset != null) legend.offset(def.offset);\n\n // legend title\n legend.title(def.title || null);\n\n // legend values\n legend.values(def.values || null);\n\n // legend label formatting\n legend.format(def.format !== undefined ? def.format : null);\n legend.formatType(def.formatType || null);\n\n // style properties\n var p = def.properties;\n legend.titleProperties(p && p.title || {});\n legend.labelProperties(p && p.labels || {});\n legend.legendProperties(p && p.legend || {});\n legend.symbolProperties(p && p.symbols || {});\n legend.gradientProperties(p && p.gradient || {});\n}\n\nmodule.exports = parseLegends;\n\nparseLegends.schema = {\n \"defs\": {\n \"legend\": {\n \"type\": \"object\",\n \"properties\": {\n \"size\": {\"type\": \"string\"},\n \"shape\": {\"type\": \"string\"},\n \"fill\": {\"type\": \"string\"},\n \"stroke\": {\"type\": \"string\"},\n \"orient\": {\"enum\": [\"left\", \"right\"], \"default\": \"right\"},\n \"offset\": {\"type\": \"number\"},\n \"title\": {\"type\": \"string\"},\n \"values\": {\"type\": \"array\"},\n \"format\": {\"type\": \"string\"},\n \"formatType\": {\"enum\": [\"time\", \"utc\", \"string\", \"number\"]},\n \"properties\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\"$ref\": \"#/defs/propset\"},\n \"labels\": {\"$ref\": \"#/defs/propset\"},\n \"legend\": {\"$ref\": \"#/defs/propset\"},\n \"symbols\": {\"$ref\": \"#/defs/propset\"},\n \"gradient\": {\"$ref\": \"#/defs/propset\"}\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false,\n \"anyOf\": [\n {\"required\": [\"size\"]},\n {\"required\": [\"shape\"]},\n {\"required\": [\"fill\"]},\n {\"required\": [\"stroke\"]}\n ]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/legends.js\n ** module id = 142\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n Gradient = require('vega-scenegraph').Gradient,\n parseProperties = require('../parse/properties'),\n parseMark = require('../parse/mark'),\n util = require('../util');\n\nfunction lgnd(model) {\n var size = null,\n shape = null,\n fill = null,\n stroke = null,\n spacing = null,\n values = null,\n formatString = null,\n formatType = null,\n title = null,\n config = model.config().legend,\n orient = config.orient,\n offset = config.offset,\n padding = config.padding,\n tickArguments = [5],\n legendStyle = {},\n symbolStyle = {},\n gradientStyle = {},\n titleStyle = {},\n labelStyle = {},\n m = { // Legend marks as references for updates\n titles: {},\n symbols: {},\n labels: {},\n gradient: {}\n };\n\n var legend = {},\n legendDef = {};\n\n function reset() { legendDef.type = null; }\n function ingest(d, i) { return {data: d, index: i}; }\n\n legend.def = function() {\n var scale = size || shape || fill || stroke;\n\n if (!legendDef.type) {\n legendDef = (scale===fill || scale===stroke) && !discrete(scale.type) ?\n quantDef(scale) : ordinalDef(scale);\n }\n legendDef.orient = orient;\n legendDef.offset = offset;\n legendDef.padding = padding;\n legendDef.margin = config.margin;\n return legendDef;\n };\n\n function discrete(type) {\n return type==='ordinal' || type==='quantize' ||\n type==='quantile' || type==='threshold';\n }\n\n function ordinalDef(scale) {\n var def = o_legend_def(size, shape, fill, stroke);\n\n // generate data\n var data = (values == null ?\n (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) :\n values).map(ingest);\n\n var fmt = util.getTickFormat(scale, data.length, formatType, formatString);\n\n // determine spacing between legend entries\n var fs, range, offset, pad=5, domain = d3.range(data.length);\n if (size) {\n range = data.map(function(x) { return Math.sqrt(size(x.data)); });\n offset = d3.max(range);\n range = range.reduce(function(a,b,i,z) {\n if (i > 0) a[i] = a[i-1] + z[i-1]/2 + pad;\n return (a[i] += b/2, a); }, [0]).map(Math.round);\n } else {\n offset = Math.round(Math.sqrt(config.symbolSize));\n range = spacing ||\n (fs = labelStyle.fontSize) && (fs.value + pad) ||\n (config.labelFontSize + pad);\n range = domain.map(function(d,i) {\n return Math.round(offset/2 + i*range);\n });\n }\n\n // account for padding and title size\n var sz = padding, ts;\n if (title) {\n ts = titleStyle.fontSize;\n sz += 5 + ((ts && ts.value) || config.titleFontSize);\n }\n for (var i=0, n=range.length; i': parseComparator,\n '>=': parseComparator,\n '<': parseComparator,\n '<=': parseComparator,\n 'and': parseLogical,\n '&&': parseLogical,\n 'or': parseLogical,\n '||': parseLogical,\n 'in': parseIn\n};\n\nvar nullScale = function() { return 0; };\nnullScale.invert = nullScale;\n\nfunction parsePredicates(model, spec) {\n (spec || []).forEach(function(s) {\n var parse = types[s.type](model, s);\n\n /* jshint evil:true */\n var pred = Function(\"args\", \"db\", \"signals\", \"predicates\", parse.code);\n pred.root = function() { return model.scene().items[0]; }; // For global scales\n pred.nullScale = nullScale;\n pred.isFunction = dl.isFunction;\n pred.signals = parse.signals;\n pred.data = parse.data;\n\n model.predicate(s.name, pred);\n });\n\n return spec;\n}\n\nfunction parseSignal(signal, signals) {\n var s = dl.field(signal),\n code = \"signals[\"+s.map(dl.str).join(\"][\")+\"]\";\n signals[s[0]] = 1;\n return code;\n}\n\nfunction parseOperands(model, operands) {\n var decl = [], defs = [],\n signals = {}, db = {};\n\n function setSignal(s) { signals[s] = 1; }\n function setData(d) { db[d] = 1; }\n\n dl.array(operands).forEach(function(o, i) {\n var name = \"o\" + i,\n def = \"\";\n\n if (o.value !== undefined) {\n def = dl.str(o.value);\n } else if (o.arg) {\n def = \"args[\"+dl.str(o.arg)+\"]\";\n } else if (o.signal) {\n def = parseSignal(o.signal, signals);\n } else if (o.predicate) {\n var ref = o.predicate,\n predName = ref && (ref.name || ref),\n pred = model.predicate(predName),\n p = \"predicates[\"+dl.str(predName)+\"]\";\n\n pred.signals.forEach(setSignal);\n pred.data.forEach(setData);\n\n if (dl.isObject(ref)) {\n dl.keys(ref).forEach(function(k) {\n if (k === \"name\") return;\n var i = ref[k];\n def += \"args[\"+dl.str(k)+\"] = \";\n if (i.signal) {\n def += parseSignal(i.signal, signals);\n } else if (i.arg) {\n def += \"args[\"+dl.str(i.arg)+\"]\";\n }\n def += \", \";\n });\n }\n\n def += p+\".call(\"+p+\", args, db, signals, predicates)\";\n }\n\n decl.push(name);\n defs.push(name+\"=(\"+def+\")\");\n });\n\n return {\n code: \"var \" + decl.join(\", \") + \";\\n\" + defs.join(\";\\n\") + \";\\n\",\n signals: dl.keys(signals),\n data: dl.keys(db)\n };\n}\n\nfunction parseComparator(model, spec) {\n var ops = parseOperands(model, spec.operands);\n if (spec.type === '=') spec.type = '==';\n\n ops.code += \"o0 = o0 instanceof Date ? o0.getTime() : o0;\\n\" +\n \"o1 = o1 instanceof Date ? o1.getTime() : o1;\\n\";\n\n return {\n code: ops.code + \"return \" + [\"o0\", \"o1\"].join(spec.type) + \";\",\n signals: ops.signals,\n data: ops.data\n };\n}\n\nfunction parseLogical(model, spec) {\n var ops = parseOperands(model, spec.operands),\n o = [], i = 0, len = spec.operands.length;\n\n while (o.push(\"o\"+i++) < len);\n if (spec.type === 'and') spec.type = '&&';\n else if (spec.type === 'or') spec.type = '||';\n\n return {\n code: ops.code + \"return \" + o.join(spec.type) + \";\",\n signals: ops.signals,\n data: ops.data\n };\n}\n\nfunction parseIn(model, spec) {\n var o = [spec.item], code = \"\";\n if (spec.range) o.push.apply(o, spec.range);\n if (spec.scale) {\n code = parseScale(spec.scale, o);\n }\n\n var ops = parseOperands(model, o);\n code = ops.code + code + \"\\n var ordSet = null;\\n\";\n\n if (spec.data) {\n var field = dl.field(spec.field).map(dl.str);\n code += \"var where = function(d) { return d[\"+field.join(\"][\")+\"] == o0 };\\n\";\n code += \"return db[\"+dl.str(spec.data)+\"].filter(where).length > 0;\";\n } else if (spec.range) {\n // TODO: inclusive/exclusive range?\n if (spec.scale) {\n code += \"if (scale.length == 2) {\\n\" + // inverting ordinal scales\n \" ordSet = scale(o1, o2);\\n\" +\n \"} else {\\n\" +\n \" o1 = scale(o1);\\no2 = scale(o2);\\n\" +\n \"}\";\n }\n\n code += \"return ordSet !== null ? ordSet.indexOf(o0) !== -1 :\\n\" +\n \" o1 < o2 ? o1 <= o0 && o0 <= o2 : o2 <= o0 && o0 <= o1;\";\n }\n\n return {\n code: code,\n signals: ops.signals,\n data: ops.data.concat(spec.data ? [spec.data] : [])\n };\n}\n\n// Populate ops such that ultimate scale/inversion function will be in `scale` var.\nfunction parseScale(spec, ops) {\n var code = \"var scale = \",\n idx = ops.length;\n\n if (dl.isString(spec)) {\n ops.push({ value: spec });\n code += \"this.root().scale(o\"+idx+\")\";\n } else if (spec.arg) { // Scale function is being passed as an arg\n ops.push(spec);\n code += \"o\"+idx;\n } else if (spec.name) { // Full scale parameter {name: ..}\n ops.push(dl.isString(spec.name) ? {value: spec.name} : spec.name);\n code += \"(this.isFunction(o\"+idx+\") ? o\"+idx+\" : \";\n if (spec.scope) {\n ops.push(spec.scope);\n code += \"((o\"+(idx+1)+\".scale || this.root().scale)(o\"+idx+\") || this.nullScale)\";\n } else {\n code += \"this.root().scale(o\"+idx+\")\";\n }\n code += \")\";\n }\n\n if (spec.invert === true) { // Allow spec.invert.arg?\n code += \".invert\";\n }\n\n return code+\";\\n\";\n}\n\nmodule.exports = parsePredicates;\nparsePredicates.schema = {\n \"refs\": {\n \"operand\": {\n \"type\": \"object\",\n \"oneOf\": [\n {\n \"properties\": {\"value\": {}},\n \"required\": [\"value\"]\n },\n {\n \"properties\": {\"arg\": {\"type\": \"string\"}},\n \"required\": [\"arg\"]\n },\n {\"$ref\": \"#/refs/signal\"},\n {\n \"properties\": {\n \"predicate\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"type\": \"object\",\n \"properties\": {\"name\": {\"type\": \"string\"}},\n \"required\": [\"name\"]\n }\n ]\n }\n },\n \"required\": [\"predicate\"]\n }\n ]\n }\n },\n\n \"defs\": {\n \"predicate\": {\n \"type\": \"object\",\n \"oneOf\": [{\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"==\", \"!=\", \">\", \"<\", \">=\", \"<=\"]},\n \"operands\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/refs/operand\"},\n \"minItems\": 2,\n \"maxItems\": 2\n }\n },\n \"required\": [\"name\", \"type\", \"operands\"]\n }, {\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"and\", \"&&\", \"or\", \"||\"]},\n \"operands\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/refs/operand\"},\n \"minItems\": 2\n }\n },\n \"required\": [\"name\", \"type\", \"operands\"]\n }, {\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"type\": {\"enum\": [\"in\"]},\n \"item\": {\"$ref\": \"#/refs/operand\"}\n },\n\n \"oneOf\": [\n {\n \"properties\": {\n \"range\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/refs/operand\"},\n \"minItems\": 2\n },\n \"scale\": {\"$ref\": \"#/refs/scopedScale\"}\n },\n \"required\": [\"range\"]\n },\n {\n \"properties\": {\n \"data\": {\"type\": \"string\"},\n \"field\": {\"type\": \"string\"}\n },\n \"required\": [\"data\", \"field\"]\n }\n ],\n\n \"required\": [\"name\", \"type\", \"item\"]\n }]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/predicates.js\n ** module id = 146\n ** module chunks = 0\n **/","var dl = require('datalib'),\n expr = require('./expr'),\n SIGNALS = require('vega-dataflow').Dependencies.SIGNALS;\n\nvar RESERVED = ['datum', 'event', 'signals', 'width', 'height', 'padding']\n .concat(dl.keys(expr.codegen.functions));\n\nfunction parseSignals(model, spec) {\n // process each signal definition\n (spec || []).forEach(function(s) {\n if (RESERVED.indexOf(s.name) !== -1) {\n throw Error('Signal name \"'+s.name+'\" is a '+\n 'reserved keyword ('+RESERVED.join(', ')+').');\n }\n\n var signal = model.signal(s.name, s.init)\n .verbose(s.verbose);\n\n if (s.init && s.init.expr) {\n s.init.expr = model.expr(s.init.expr);\n signal.value(exprVal(model, s.init));\n }\n\n if (s.expr) {\n s.expr = model.expr(s.expr);\n signal.evaluate = function(input) {\n var val = exprVal(model, s),\n sg = input.signals;\n if (val !== signal.value() || signal.verbose()) {\n signal.value(val);\n sg[s.name] = 1;\n }\n return sg[s.name] ? input : model.doNotPropagate;\n };\n signal.dependency(SIGNALS, s.expr.globals);\n s.expr.globals.forEach(function(dep) {\n model.signal(dep).addListener(signal);\n });\n }\n });\n\n return spec;\n}\n\nfunction exprVal(model, spec) {\n var e = spec.expr, v = e.fn();\n return spec.scale ? parseSignals.scale(model, spec, v) : v;\n}\n\nparseSignals.scale = function scale(model, spec, value, datum, evt) {\n var def = spec.scale,\n name = def.name || def.signal || def,\n scope = def.scope, e;\n\n if (scope) {\n if (scope.signal) {\n scope = model.signalRef(scope.signal);\n } else if (dl.isString(scope)) { // Scope is an expression\n e = def._expr = (def._expr || model.expr(scope));\n scope = e.fn(datum, evt);\n }\n }\n\n return expr.scale(model, def.invert, name, value, scope);\n};\n\nmodule.exports = parseSignals;\nparseSignals.schema = {\n \"refs\": {\n \"signal\": {\n \"title\": \"SignalRef\",\n \"type\": \"object\",\n \"properties\": {\"signal\": {\"type\": \"string\"}},\n \"required\": [\"signal\"]\n },\n\n \"scopedScale\": {\n \"oneOf\": [\n {\"type\": \"string\"},\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"oneOf\": [{\"$ref\": \"#/refs/signal\"}, {\"type\": \"string\"}]\n },\n \"scope\": {\n \"oneOf\": [\n {\"$ref\": \"#/refs/signal\"},\n {\"type\": \"string\"}\n ]\n },\n \"invert\": {\"type\": \"boolean\", \"default\": false}\n },\n\n \"additionalProperties\": false,\n \"required\": [\"name\"]\n }\n ]\n }\n },\n\n \"defs\": {\n \"signal\": {\n \"type\": \"object\",\n\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"not\": {\"enum\": RESERVED}\n },\n \"init\": {},\n \"verbose\": {\"type\": \"boolean\", \"default\": false},\n \"expr\": {\"type\": \"string\"},\n \"scale\": {\"$ref\": \"#/refs/scopedScale\"},\n \"streams\": {\"$ref\": \"#/defs/streams\"}\n },\n\n \"additionalProperties\": false,\n \"required\": [\"name\"]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/signals.js\n ** module id = 147\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n Model = require('../core/Model'),\n View = require('../core/View');\n\n/**\n * Parse graph specification\n * @param spec (object)\n * @param config (optional object)\n * @param viewFactory (optional function)\n * @param callback (error, model)\n */\n function parseSpec(spec /*, [config,] [viewFactory,] callback */) {\n // do not assign any values to callback, as it will change arguments\n var arglen = arguments.length,\n argidx = 2,\n cb = arguments[arglen-1],\n model = new Model(),\n viewFactory = View.factory;\n\n if (arglen > argidx && dl.isFunction(arguments[arglen - argidx])) {\n viewFactory = arguments[arglen - argidx];\n ++argidx;\n }\n if (arglen > argidx && dl.isObject(arguments[arglen - argidx])) {\n model.config(arguments[arglen - argidx]);\n }\n\n if (dl.isObject(spec)) {\n parse(spec);\n } else if (dl.isString(spec)) {\n var opts = dl.extend({url: spec}, model.config().load);\n dl.json(opts, function(err, spec) {\n if (err) done('SPECIFICATION LOAD FAILED: ' + err);\n else parse(spec);\n });\n } else {\n done('INVALID SPECIFICATION: Must be a valid JSON object or URL.');\n }\n\n function parse(spec) {\n try {\n // protect against subsequent spec modification\n spec = dl.duplicate(spec);\n\n var parsers = require('./'),\n width = spec.width || 500,\n height = spec.height || 500,\n padding = parsers.padding(spec.padding);\n\n // create signals for width, height, padding, and cursor\n model.signal('width', width);\n model.signal('height', height);\n model.signal('padding', padding);\n cursor(spec);\n\n // initialize model\n model.defs({\n width: width,\n height: height,\n padding: padding,\n viewport: spec.viewport || null,\n background: parsers.background(spec.background),\n signals: parsers.signals(model, spec.signals),\n predicates: parsers.predicates(model, spec.predicates),\n marks: parsers.marks(model, spec, width, height),\n data: parsers.data(model, spec.data, done)\n });\n } catch (err) { done(err); }\n }\n\n function cursor(spec) {\n var signals = spec.signals || (spec.signals=[]), def;\n signals.some(function(sg) {\n return (sg.name === 'cursor') ? (def=sg, true) : false;\n });\n\n if (!def) signals.push(def={name: 'cursor', streams: []});\n\n // Add a stream def at the head, so that custom defs can override it.\n def.init = def.init || {};\n def.streams.unshift({\n type: 'mousemove',\n expr: 'eventItem().cursor === cursor.default ? cursor : {default: eventItem().cursor}'\n });\n }\n\n function done(err) {\n var view;\n if (err) {\n log.error(err);\n } else {\n view = viewFactory(model.buildIndexes());\n }\n\n if (cb) {\n if (cb.length > 1) cb(err, view);\n else if (!err) cb(view);\n cb = null;\n }\n }\n}\n\nmodule.exports = parseSpec;\n\nparseSpec.schema = {\n \"defs\": {\n \"spec\": {\n \"title\": \"Vega visualization specification\",\n \"type\": \"object\",\n\n \"allOf\": [{\"$ref\": \"#/defs/container\"}, {\n \"properties\": {\n \"width\": {\"type\": \"number\"},\n \"height\": {\"type\": \"number\"},\n \"viewport\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"number\"},\n \"maxItems\": 2\n },\n\n \"background\": {\"$ref\": \"#/defs/background\"},\n \"padding\": {\"$ref\": \"#/defs/padding\"},\n\n \"signals\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/defs/signal\"}\n },\n\n \"predicates\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/defs/predicate\"}\n },\n\n \"data\": {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/defs/data\"}\n }\n }\n }]\n }\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/parse/spec.js\n ** module id = 148\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n ChangeSet = df.ChangeSet,\n Base = df.Graph.prototype,\n Node = df.Node, // jshint ignore:line\n GroupBuilder = require('../scene/GroupBuilder'),\n visit = require('../scene/visit'),\n compiler = require('../parse/expr'),\n config = require('./config');\n\nfunction Model(cfg) {\n this._defs = {};\n this._predicates = {};\n\n this._scene = null; // Root scenegraph node.\n this._groups = null; // Index of group items.\n\n this._node = null;\n this._builder = null; // Top-level scenegraph builder.\n\n this._reset = {axes: false, legends: false};\n\n this.config(cfg);\n this.expr = compiler(this);\n Base.init.call(this);\n}\n\nvar prototype = (Model.prototype = Object.create(Base));\nprototype.constructor = Model;\n\nprototype.defs = function(defs) {\n if (!arguments.length) return this._defs;\n this._defs = defs;\n return this;\n};\n\nprototype.config = function(cfg) {\n if (!arguments.length) return this._config;\n this._config = Object.create(config);\n for (var name in cfg) {\n var x = cfg[name], y = this._config[name];\n if (dl.isObject(x) && dl.isObject(y)) {\n this._config[name] = dl.extend({}, y, x);\n } else {\n this._config[name] = x;\n }\n }\n\n return this;\n};\n\nprototype.width = function(width) {\n if (this._defs) this._defs.width = width;\n if (this._defs && this._defs.marks) this._defs.marks.width = width;\n if (this._scene) {\n this._scene.items[0].width = width;\n this._scene.items[0]._dirty = true;\n }\n this._reset.axes = true;\n return this;\n};\n\nprototype.height = function(height) {\n if (this._defs) this._defs.height = height;\n if (this._defs && this._defs.marks) this._defs.marks.height = height;\n if (this._scene) {\n this._scene.items[0].height = height;\n this._scene.items[0]._dirty = true;\n }\n this._reset.axes = true;\n return this;\n};\n\nprototype.node = function() {\n return this._node || (this._node = new Node(this));\n};\n\nprototype.data = function() {\n var data = Base.data.apply(this, arguments);\n if (arguments.length > 1) { // new Datasource\n this.node().addListener(data.pipeline()[0]);\n }\n return data;\n};\n\nfunction predicates(name) {\n var m = this, pred = {};\n if (!dl.isArray(name)) return this._predicates[name];\n name.forEach(function(n) { pred[n] = m._predicates[n]; });\n return pred;\n}\n\nprototype.predicate = function(name, predicate) {\n if (arguments.length === 1) return predicates.call(this, name);\n return (this._predicates[name] = predicate);\n};\n\nprototype.predicates = function() { return this._predicates; };\n\nprototype.scene = function(renderer) {\n if (!arguments.length) return this._scene;\n\n if (this._builder) {\n this.node().removeListener(this._builder);\n this._builder._groupBuilder.disconnect();\n }\n\n var m = this,\n b = this._builder = new Node(this);\n\n b.evaluate = function(input) {\n if (b._groupBuilder) return input;\n\n var gb = b._groupBuilder = new GroupBuilder(m, m._defs.marks, m._scene={}),\n p = gb.pipeline();\n\n m._groups = {};\n this.addListener(gb.connect());\n p[p.length-1].addListener(renderer);\n return input;\n };\n\n this.addListener(b);\n return this;\n};\n\nprototype.group = function(id, item) {\n var groups = this._groups;\n if (arguments.length === 1) return groups[id];\n return (groups[id] = item, this);\n};\n\nprototype.reset = function() {\n if (this._scene && this._reset.axes) {\n visit(this._scene, function(item) {\n if (item.axes) item.axes.forEach(function(axis) { axis.reset(); });\n });\n this._reset.axes = false;\n }\n if (this._scene && this._reset.legends) {\n visit(this._scene, function(item) {\n if (item.legends) item.legends.forEach(function(l) { l.reset(); });\n });\n this._reset.legends = false;\n }\n return this;\n};\n\nprototype.addListener = function(l) {\n this.node().addListener(l);\n};\n\nprototype.removeListener = function(l) {\n this.node().removeListener(l);\n};\n\nprototype.fire = function(cs) {\n if (!cs) cs = ChangeSet.create();\n this.propagate(cs, this.node());\n};\n\nmodule.exports = Model;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/Model.js\n ** module id = 149\n ** module chunks = 0\n **/","var dl = require('datalib'),\n df = require('vega-dataflow'),\n Node = df.Node, // jshint ignore:line\n Deps = df.Dependencies,\n Tuple = df.Tuple,\n Collector = df.Collector,\n log = require('vega-logging'),\n Builder = require('./Builder'),\n Scale = require('./Scale'),\n parseAxes = require('../parse/axes'),\n parseLegends = require('../parse/legends');\n\nfunction GroupBuilder() {\n this._children = {};\n this._scaler = null;\n this._recursor = null;\n\n this._scales = {};\n this.scale = scale.bind(this);\n return arguments.length ? this.init.apply(this, arguments) : this;\n}\n\nvar Types = GroupBuilder.TYPES = {\n GROUP: \"group\",\n MARK: \"mark\",\n AXIS: \"axis\",\n LEGEND: \"legend\"\n};\n\nvar proto = (GroupBuilder.prototype = new Builder());\n\nproto.init = function(graph, def) {\n var builder = this, name;\n\n this._scaler = new Node(graph);\n\n (def.scales||[]).forEach(function(s) {\n s = builder.scale((name=s.name), new Scale(graph, s, builder));\n builder.scale(name+\":prev\", s);\n builder._scaler.addListener(s); // Scales should be computed after group is encoded\n });\n\n this._recursor = new Node(graph);\n this._recursor.evaluate = recurse.bind(this);\n\n var scales = (def.axes||[]).reduce(function(acc, x) {\n return (acc[x.scale] = 1, acc);\n }, {});\n\n scales = (def.legends||[]).reduce(function(acc, x) {\n return (acc[x.size || x.shape || x.fill || x.stroke], acc);\n }, scales);\n\n this._recursor.dependency(Deps.SCALES, dl.keys(scales));\n\n // We only need a collector for up-propagation of bounds calculation,\n // so only GroupBuilders, and not regular Builders, have collectors.\n this._collector = new Collector(graph);\n\n return Builder.prototype.init.apply(this, arguments);\n};\n\nproto.evaluate = function() {\n var output = Builder.prototype.evaluate.apply(this, arguments),\n model = this._graph,\n builder = this,\n scales = this._scales,\n items = this._mark.items;\n\n // If scales need to be reevaluated, we need to send all group items forward.\n if (output.mod.length < items.length) {\n var fullUpdate = dl.keys(scales).some(function(s) {\n return scales[s].reevaluate(output);\n });\n\n if (fullUpdate) {\n output.mod = output.mod.concat(Tuple.idFilter(items, output.mod));\n }\n }\n\n output.add.forEach(function(group) { buildGroup.call(builder, output, group); });\n output.rem.forEach(function(group) { model.group(group._id, null); });\n return output;\n};\n\nproto.pipeline = function() {\n return [this, this._scaler, this._recursor, this._collector, this._bounder];\n};\n\nproto.disconnect = function() {\n var builder = this;\n dl.keys(builder._children).forEach(function(group_id) {\n builder._children[group_id].forEach(function(c) {\n builder._recursor.removeListener(c.builder);\n c.builder.disconnect();\n });\n });\n\n builder._children = {};\n return Builder.prototype.disconnect.call(this);\n};\n\nproto.child = function(name, group_id) {\n var children = this._children[group_id],\n i = 0, len = children.length,\n child;\n\n for (; i 0,\n hasAxes = dl.array(this._def.axes).length > 0,\n hasLegends = dl.array(this._def.legends).length > 0,\n i, j, c, len, group, pipeline, def, inline = false;\n\n for (i=0, len=input.add.length; i=0; --i) {\n group = input.add[i];\n for (j=this._children[group._id].length-1; j>=0; --j) {\n c = this._children[group._id][j];\n c.builder.connect();\n pipeline = c.builder.pipeline();\n def = c.builder._def;\n\n // This new child needs to be built during this propagation cycle.\n // We could add its builder as a listener off the _recursor node,\n // but try to inline it if we can to minimize graph dispatches.\n inline = (def.type !== Types.GROUP);\n inline = inline && (this._graph.data(c.from) !== undefined);\n inline = inline && (pipeline[pipeline.length-1].listeners().length === 1); // Reactive geom source\n inline = inline && (def.from && !def.from.mark); // Reactive geom target\n c.inline = inline;\n\n if (inline) this._graph.evaluate(input, c.builder);\n else this._recursor.addListener(c.builder);\n }\n }\n\n function removeTemp(c) {\n if (c.type == Types.MARK && !c.inline &&\n builder._graph.data(c.from) !== undefined) {\n builder._recursor.removeListener(c.builder);\n }\n }\n\n function updateAxis(a) {\n var scale = a.scale();\n if (!input.scales[scale.scaleName]) return;\n a.reset().def();\n }\n\n function updateLegend(l) {\n var scale = l.size() || l.shape() || l.fill() || l.stroke();\n if (!input.scales[scale.scaleName]) return;\n l.reset().def();\n }\n\n for (i=0, len=input.mod.length; i this._stamp) {\n join.call(this, fcs, output, this._ds.values(), true, fullUpdate);\n } else if (fullUpdate) {\n output.mod = this._mark.items.slice();\n }\n } else {\n data = dl.isFunction(this._def.from) ? this._def.from() : [Sentinel];\n join.call(this, input, output, data);\n }\n\n // Stash output before Bounder for downstream reactive geometry.\n this._output = output = this._graph.evaluate(output, this._encoder);\n\n // Add any new scale references to the dependency list, and ensure\n // they're connected.\n if (update.nested && update.nested.length && this._status === CONNECTED) {\n dl.keys(this._mark._scaleRefs).forEach(function(s) {\n var scale = self._parent.scale(s);\n if (!scale) return;\n\n scale.addListener(self);\n self.dependency(Deps.SCALES, s);\n self._encoder.dependency(Deps.SCALES, s);\n });\n }\n\n // Supernodes calculate bounds too, but only on items marked dirty.\n if (this._isSuper) {\n output.mod = output.mod.filter(function(x) { return x._dirty; });\n output = this._graph.evaluate(output, this._bounder);\n }\n\n return output;\n};\n\nfunction newItem() {\n var item = Tuple.ingest(new Item(this._mark));\n\n // For the root node's item\n if (this._def.width) Tuple.set(item, 'width', this._def.width);\n if (this._def.height) Tuple.set(item, 'height', this._def.height);\n return item;\n}\n\nfunction join(input, output, data, ds, fullUpdate) {\n var keyf = keyFunction(this._def.key || (ds ? '_id' : null)),\n prev = this._mark.items || [],\n rem = ds ? input.rem : prev,\n mod = Tuple.idMap((!ds || fullUpdate) ? data : input.mod),\n next = [],\n i, key, len, item, datum, enter, diff;\n\n // Only mark rems as exiting. Due to keyf, there may be an add/mod\n // tuple that replaces it.\n for (i=0, len=rem.length; i0) s += '|';\n s += String(f[i](d));\n }\n return s;\n };\n}\n\nmodule.exports = Builder;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/scene/Builder.js\n ** module id = 151\n ** module chunks = 0\n **/","var dl = require('datalib'),\n log = require('vega-logging'),\n df = require('vega-dataflow'),\n Node = df.Node, // jshint ignore:line\n Deps = df.Dependencies,\n bound = require('vega-scenegraph').bound;\n\nvar EMPTY = {};\n\nfunction Encoder(graph, mark, builder) {\n var props = mark.def.properties || {},\n enter = props.enter,\n update = props.update,\n exit = props.exit;\n\n Node.prototype.init.call(this, graph);\n\n this._mark = mark;\n this._builder = builder;\n var s = this._scales = [];\n\n // Only scales used in the 'update' property set are set as\n // encoder depedencies to have targeted reevaluations. However,\n // we still want scales in 'enter' and 'exit' to be evaluated\n // before the encoder.\n if (enter) s.push.apply(s, enter.scales);\n\n if (update) {\n this.dependency(Deps.DATA, update.data);\n this.dependency(Deps.SIGNALS, update.signals);\n this.dependency(Deps.FIELDS, update.fields);\n this.dependency(Deps.SCALES, update.scales);\n s.push.apply(s, update.scales);\n }\n\n if (exit) s.push.apply(s, exit.scales);\n\n return this.mutates(true);\n}\n\nvar proto = (Encoder.prototype = new Node());\n\nproto.evaluate = function(input) {\n log.debug(input, ['encoding', this._mark.def.type]);\n var graph = this._graph,\n props = this._mark.def.properties || {},\n items = this._mark.items,\n enter = props.enter,\n update = props.update,\n exit = props.exit,\n dirty = input.dirty,\n preds = graph.predicates(),\n req = input.request,\n group = this._mark.group,\n guide = group && (group.mark.axis || group.mark.legend),\n db = EMPTY, sg = EMPTY, i, len, item, prop;\n\n if (req && !guide) {\n if ((prop = props[req]) && input.mod.length) {\n db = prop.data ? graph.values(Deps.DATA, prop.data) : null;\n sg = prop.signals ? graph.values(Deps.SIGNALS, prop.signals) : null;\n\n for (i=0, len=input.mod.length; i this._stamp) return true;\n }\n\n return false;\n}\n\n// Short-circuit encoder if user specifies items\nEncoder.update = function(graph, trans, request, items, dirty) {\n items = dl.array(items);\n var preds = graph.predicates(),\n db = graph.values(Deps.DATA),\n sg = graph.values(Deps.SIGNALS),\n i, len, item, props, prop;\n\n for (i=0, len=items.length; i 0,\n bounds = mark.bounds,\n rebound = !bounds || input.rem.length,\n i, ilen, j, jlen, group, legend;\n\n if (type === 'line' || type === 'area') {\n bound.mark(mark, null, isGrp && !hasLegends);\n } else {\n input.add.forEach(function(item) {\n bound.item(item);\n rebound = rebound || (bounds && !bounds.encloses(item.bounds));\n });\n\n input.mod.forEach(function(item) {\n rebound = rebound || (bounds && bounds.alignsWith(item.bounds));\n bound.item(item);\n });\n\n if (rebound) {\n bounds = mark.bounds && mark.bounds.clear() || (mark.bounds = new Bounds());\n for (i=0, ilen=items.length; i rng[1]) {\n start = rng[1] || 0;\n rng = [start + (bw * len + space), start];\n } else {\n start = rng[0] || 0;\n rng = [start, start + (bw * len + space)];\n }\n\n if (def.reverse) rng = rng.reverse();\n }\n\n str = typeof rng[0] === 'string';\n if (str || rng.length > 2 || rng.length===1 || dataDrivenRange) {\n scale.range(rng); // color or shape values\n spatial = false;\n } else if (points && round) {\n scale.rangeRoundPoints(rng, pad);\n } else if (points) {\n scale.rangePoints(rng, pad);\n } else if (round) {\n scale.rangeRoundBands(rng, pad, outer);\n } else {\n scale.rangeBands(rng, pad, outer);\n }\n\n prev.range = rng;\n this._updated = true;\n }\n\n if (!scale.invert && spatial) invertOrdinal(scale);\n}\n\n// \"Polyfill\" ordinal scale inversion. Currently, only ordinal scales\n// with ordered numeric ranges are supported.\nvar bisect = d3.bisector(dl.numcmp).right,\n findAsc = function(a, x) { return bisect(a,x) - 1; },\n findDsc = d3.bisector(function(a,b) { return -1 * dl.numcmp(a,b); }).left;\n\nfunction invertOrdinal(scale) {\n scale.invert = function(x, y) {\n var rng = scale.range(),\n asc = rng[0] < rng[1],\n find = asc ? findAsc : findDsc;\n\n if (arguments.length === 1) {\n if (!dl.isNumber(x)) {\n throw Error('Ordinal scale inversion is only supported for numeric input ('+x+').');\n }\n return scale.domain()[find(rng, x)];\n\n } else if (arguments.length === 2) { // Invert extents\n if (!dl.isNumber(x) || !dl.isNumber(y)) {\n throw Error('Extents to ordinal invert are not numbers ('+x+', '+y+').');\n }\n\n var domain = scale.domain(),\n a = find(rng, x),\n b = find(rng, y),\n n = rng.length - 1, r;\n if (b < a) { r = a; a = b; b = a; } // ensure a <= b\n if (a < 0) a = 0;\n if (b > n) b = n;\n\n return (asc ? dl.range(a, b+1) : dl.range(b, a-1, -1))\n .map(function(i) { return domain[i]; });\n }\n };\n}\n\nfunction quantitative(scale, rng, group) {\n var def = this._def,\n prev = scale._prev,\n round = signal.call(this, def.round),\n exponent = signal.call(this, def.exponent),\n clamp = signal.call(this, def.clamp),\n nice = signal.call(this, def.nice),\n domain, interval;\n\n // domain\n domain = (def.type === Types.QUANTILE) ?\n dataRef.call(this, DataRef.DOMAIN, def.domain, scale, group) :\n domainMinMax.call(this, scale, group);\n if (domain && !dl.equal(prev.domain, domain)) {\n scale.domain(domain);\n prev.domain = domain;\n this._updated = true;\n }\n\n // range\n // vertical scales should flip by default, so use XOR here\n if (signal.call(this, def.range) === 'height') rng = rng.reverse();\n if (rng && !dl.equal(prev.range, rng)) {\n scale[round && scale.rangeRound ? 'rangeRound' : 'range'](rng);\n prev.range = rng;\n this._updated = true;\n }\n\n if (exponent && def.type===Types.POWER) scale.exponent(exponent);\n if (clamp) scale.clamp(true);\n if (nice) {\n if (def.type === Types.TIME) {\n interval = d3.time[nice];\n if (!interval) log.error('Unrecognized interval: ' + interval);\n scale.nice(interval);\n } else {\n scale.nice();\n }\n }\n}\n\nfunction isUniques(scale) {\n return scale.type === Types.ORDINAL || scale.type === Types.QUANTILE;\n}\n\nfunction getRefs(def) {\n return def.fields || dl.array(def);\n}\n\nfunction inherits(refs) {\n return refs.some(function(r) {\n if (!r.data) return true;\n return r.data && dl.array(r.field).some(function(f) {\n return f.parent;\n });\n });\n}\n\nfunction getFields(ref, group) {\n return dl.array(ref.field).map(function(f) {\n return f.parent ?\n dl.accessor(f.parent)(group.datum) :\n f; // String or {'signal'}\n });\n}\n\n// Scale datarefs can be computed over multiple schema types.\n// This function determines the type of aggregator created, and\n// what data is sent to it: values, tuples, or multi-tuples that must\n// be standardized into a consistent schema.\nfunction aggrType(def, scale) {\n var refs = getRefs(def);\n\n // If we're operating over only a single domain, send full tuples\n // through for efficiency (fewer accessor creations/calls)\n if (refs.length == 1 && dl.array(refs[0].field).length == 1) {\n return Aggregate.TYPES.TUPLE;\n }\n\n // With quantitative scales, we only care about min/max.\n if (!isUniques(scale)) return Aggregate.TYPES.VALUE;\n\n // If we don't sort, then we can send values directly to aggrs as well\n if (!dl.isObject(def.sort)) return Aggregate.TYPES.VALUE;\n\n return Aggregate.TYPES.MULTI;\n}\n\nfunction getCache(which, def, scale, group) {\n var refs = getRefs(def),\n inherit = inherits(refs),\n atype = aggrType(def, scale),\n uniques = isUniques(scale),\n sort = def.sort,\n ck = '_'+which,\n fields = getFields(refs[0], group);\n\n if (scale[ck] || this[ck]) return scale[ck] || this[ck];\n\n var cache = new Aggregate(this._graph).type(atype),\n groupby, summarize;\n\n // If a scale's dataref doesn't inherit data from the group, we can\n // store the dataref aggregator at the Scale (dataflow node) level.\n if (inherit) {\n scale[ck] = cache;\n } else {\n this[ck] = cache;\n }\n\n if (uniques) {\n if (atype === Aggregate.TYPES.VALUE) {\n groupby = [{ name: DataRef.GROUPBY, get: dl.identity }];\n summarize = {'*': DataRef.COUNT};\n } else if (atype === Aggregate.TYPES.TUPLE) {\n groupby = [{ name: DataRef.GROUPBY, get: dl.$(fields[0]) }];\n summarize = dl.isObject(sort) ? [{\n field: DataRef.VALUE,\n get: dl.$(sort.field),\n ops: [sort.op]\n }] : {'*': DataRef.COUNT};\n } else { // atype === Aggregate.TYPES.MULTI\n groupby = DataRef.GROUPBY;\n summarize = [{ field: DataRef.VALUE, ops: [sort.op] }];\n }\n } else {\n groupby = [];\n summarize = [{\n field: DataRef.VALUE,\n get: (atype == Aggregate.TYPES.TUPLE) ? dl.$(fields[0]) : dl.identity,\n ops: [DataRef.MIN, DataRef.MAX],\n as: [DataRef.MIN, DataRef.MAX]\n }];\n }\n\n cache.param('groupby', groupby)\n .param('summarize', summarize);\n\n return (cache._lastUpdate = -1, cache);\n}\n\nfunction dataRef(which, def, scale, group) {\n if (def == null) { return []; }\n if (dl.isArray(def)) return def.map(signal.bind(this));\n\n var self = this, graph = this._graph,\n refs = getRefs(def),\n inherit = inherits(refs),\n atype = aggrType(def, scale),\n cache = getCache.apply(this, arguments),\n sort = def.sort,\n uniques = isUniques(scale),\n i, rlen, j, flen, ref, fields, field, data, from, cmp;\n\n function addDep(s) {\n self.dependency(Deps.SIGNALS, s);\n }\n\n if (inherit || (!inherit && cache._lastUpdate < this._stamp)) {\n for (i=0, rlen=refs.length; i this._width ? Math.ceil(+b.x2 - this._width) + inset : 0;\n b = b.y2 > this._height ? Math.ceil(+b.y2 - this._height) + inset : 0;\n pad = {left:l, top:t, right:r, bottom:b};\n\n if (this._strict) {\n this._autopad = 0;\n this._padding = pad;\n this._width = Math.max(0, this.__width - (l+r));\n this._height = Math.max(0, this.__height - (t+b));\n\n this._model.width(this._width).height(this._height).reset();\n setSignal.call(this, 'width', this._width);\n setSignal.call(this, 'height', this._height);\n setSignal.call(this, 'padding', pad);\n\n this.initialize().update({props:'enter'}).update({props:'update'});\n } else {\n this.padding(pad).update(opt);\n }\n return this;\n};\n\nprototype.viewport = function(size) {\n if (!arguments.length) return this._viewport;\n if (this._viewport !== size) {\n this._viewport = size;\n this.initialize();\n }\n return this;\n};\n\nprototype.renderer = function(type) {\n if (!arguments.length) return this._renderer;\n if (this._renderers[type]) type = this._renderers[type];\n else if (dl.isString(type)) throw new Error('Unknown renderer: ' + type);\n else if (!type) throw new Error('No renderer specified');\n\n if (this._io !== type) {\n this._io = type;\n this._renderer = null;\n this.initialize();\n if (this._build) this.render();\n }\n return this;\n};\n\nprototype.initialize = function(el) {\n var v = this, prevHandler,\n w = v._width, h = v._height, pad = v._padding, bg = v._bgcolor,\n config = this.model().config();\n\n if (!arguments.length || el === null) {\n el = this._el ? this._el.parentNode : null;\n if (!el) return this; // This View cannot init w/o an\n }\n\n // clear pre-existing container\n d3.select(el).select('div.vega').remove();\n\n // add div container\n this._el = el = d3.select(el)\n .append('div')\n .attr('class', 'vega')\n .style('position', 'relative')\n .node();\n if (v._viewport) {\n d3.select(el)\n .style('width', (v._viewport[0] || w)+'px')\n .style('height', (v._viewport[1] || h)+'px')\n .style('overflow', 'auto');\n }\n\n // renderer\n sg.canvas.Renderer.RETINA = config.render.retina;\n v._renderer = (v._renderer || new this._io.Renderer(config.load))\n .initialize(el, w, h, pad)\n .background(bg);\n\n // input handler\n prevHandler = v._handler;\n v._handler = new this._io.Handler()\n .initialize(el, pad, v);\n\n if (prevHandler) {\n prevHandler.handlers().forEach(function(h) {\n v._handler.on(h.type, h.handler);\n });\n } else {\n // Register event listeners for signal stream definitions.\n v._detach = parseStreams(this);\n }\n\n return (this._repaint = true, this);\n};\n\nprototype.destroy = function() {\n if (this._detach) this._detach();\n};\n\nfunction build() {\n var v = this;\n v._renderNode = new df.Node(v._model)\n .router(true);\n\n v._renderNode.evaluate = function(input) {\n log.debug(input, ['rendering']);\n\n var s = v._model.scene(),\n h = v._handler;\n\n if (h && h.scene) h.scene(s);\n\n if (input.trans) {\n input.trans.start(function(items) { v._renderer.render(s, items); });\n } else if (v._repaint) {\n v._renderer.render(s);\n } else if (input.dirty.length) {\n v._renderer.render(s, input.dirty);\n }\n\n if (input.dirty.length) {\n input.dirty.forEach(function(i) { i._dirty = false; });\n s.items[0]._dirty = false;\n }\n\n v._repaint = v._skipSignals = false;\n return input;\n };\n\n return (v._model.scene(v._renderNode), true);\n}\n\nprototype.update = function(opt) {\n opt = opt || {};\n var v = this,\n model = this._model,\n streamer = this._streamer,\n cs = this._changeset,\n trans = opt.duration ? new Transition(opt.duration, opt.ease) : null;\n\n if (trans) cs.trans = trans;\n if (opt.props !== undefined) {\n if (dl.keys(cs.data).length > 0) {\n throw Error(\n 'New data values are not reflected in the visualization.' +\n ' Please call view.update() before updating a specified property set.'\n );\n }\n\n cs.reflow = true;\n cs.request = opt.props;\n }\n\n var built = v._build;\n v._build = v._build || build.call(this);\n\n // If specific items are specified, short-circuit dataflow graph.\n // Else-If there are streaming updates, perform a targeted propagation.\n // Otherwise, re-evaluate the entire model (datasources + scene).\n if (opt.items && built) {\n Encoder.update(model, opt.trans, opt.props, opt.items, cs.dirty);\n v._renderNode.evaluate(cs);\n } else if (streamer.listeners().length && built) {\n // Include re-evaluation entire model when repaint flag is set\n if (this._repaint) streamer.addListener(model.node());\n model.propagate(cs, streamer, null, this._skipSignals);\n streamer.disconnect();\n } else {\n model.fire(cs);\n }\n\n v._changeset = df.ChangeSet.create();\n\n return v.autopad(opt);\n};\n\nprototype.toImageURL = function(type) {\n var v = this, Renderer;\n\n // lookup appropriate renderer\n switch (type || 'png') {\n case 'canvas':\n case 'png':\n Renderer = sg.canvas.Renderer; break;\n case 'svg':\n Renderer = sg.svg.string.Renderer; break;\n default: throw Error('Unrecognized renderer type: ' + type);\n }\n\n var retina = sg.canvas.Renderer.RETINA;\n sg.canvas.Renderer.RETINA = false; // ignore retina screen\n\n // render the scenegraph\n var ren = new Renderer(v._model.config.load)\n .initialize(null, v._width, v._height, v._padding)\n .background(v._bgcolor)\n .render(v._model.scene());\n\n sg.canvas.Renderer.RETINA = retina; // restore retina settings\n\n // return data url\n if (type === 'svg') {\n var blob = new Blob([ren.svg()], {type: 'image/svg+xml'});\n return window.URL.createObjectURL(blob);\n } else {\n return ren.canvas().toDataURL('image/png');\n }\n};\n\nprototype.render = function(items) {\n this._renderer.render(this._model.scene(), items);\n return this;\n};\n\nprototype.on = function() {\n this._handler.on.apply(this._handler, arguments);\n return this;\n};\n\nprototype.onSignal = function(name, handler) {\n var sg = this._model.signal(name);\n return (sg ?\n sg.on(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n};\n\nprototype.off = function() {\n this._handler.off.apply(this._handler, arguments);\n return this;\n};\n\nprototype.offSignal = function(name, handler) {\n var sg = this._model.signal(name);\n return (sg ?\n sg.off(handler) : log.error('Signal \"'+name+'\" is not defined.'), this);\n};\n\nView.factory = function(model) {\n var HeadlessView = require('./HeadlessView');\n return function(opt) {\n opt = opt || {};\n var defs = model.defs();\n var v = (opt.el ? new View() : new HeadlessView())\n .model(model)\n .renderer(opt.renderer || 'canvas')\n .width(defs.width)\n .height(defs.height)\n .background(defs.background)\n .padding(defs.padding)\n .viewport(defs.viewport)\n .initialize(opt.el);\n\n if (opt.data) v.data(opt.data);\n\n // Register handlers for the hover propset and cursors.\n if (opt.el) {\n if (opt.hover !== false) {\n v.on('mouseover', function(evt, item) {\n if (item && item.hasPropertySet('hover')) {\n this.update({props:'hover', items:item});\n }\n })\n .on('mouseout', function(evt, item) {\n if (item && item.hasPropertySet('hover')) {\n this.update({props:'update', items:item});\n }\n });\n }\n\n if (opt.cursor !== false) {\n // If value is a string, it is a custom value set by the user.\n // In this case, the user is responsible for maintaining the cursor state\n // and control only reverts back to this handler if set back to 'default'.\n v.onSignal('cursor', function(name, value) {\n var body = d3.select('body');\n if (dl.isString(value)) {\n v._cursor = value === 'default';\n body.style('cursor', value);\n } else if (dl.isObject(value) && v._cursor) {\n body.style('cursor', value.default);\n }\n });\n }\n }\n\n return v;\n };\n};\n\nmodule.exports = View;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/View.js\n ** module id = 157\n ** module chunks = 0\n **/","var d3 = require('d3'),\n dl = require('datalib'),\n df = require('vega-dataflow'),\n selector = require('vega-event-selector'),\n parseSignals = require('./signals');\n\nvar GATEKEEPER = '_vgGATEKEEPER',\n EVALUATOR = '_vgEVALUATOR';\n\nvar vgEvent = {\n getItem: function() { return this.item; },\n getGroup: function(name) { return name ? this.name[name] : this.group; },\n getXY: function(item) {\n var p = {x: this.x, y: this.y};\n if (typeof item === 'string') {\n item = this.name[item];\n }\n for (; item; item = item.mark && item.mark.group) {\n p.x -= item.x || 0;\n p.y -= item.y || 0;\n }\n return p;\n },\n getX: function(item) { return this.getXY(item).x; },\n getY: function(item) { return this.getXY(item).y; }\n};\n\nfunction parseStreams(view) {\n var model = view.model(),\n trueFn = model.expr('true'),\n falseFn = model.expr('false'),\n spec = model.defs().signals,\n registry = {handlers: {}, nodes: {}},\n internal = dl.duplicate(registry), // Internal event processing\n external = dl.duplicate(registry); // External event processing\n\n dl.array(spec).forEach(function(sig) {\n var signal = model.signal(sig.name);\n if (sig.expr) return; // Cannot have an expr and stream definition.\n\n dl.array(sig.streams).forEach(function(stream) {\n var sel = selector.parse(stream.type),\n exp = model.expr(stream.expr);\n mergedStream(signal, sel, exp, stream);\n });\n });\n\n // We register the event listeners all together so that if multiple\n // signals are registered on the same event, they will receive the\n // new value on the same pulse.\n dl.keys(internal.handlers).forEach(function(type) {\n view.on(type, function(evt, item) {\n evt.preventDefault(); // stop text selection\n extendEvent(evt, item);\n fire(internal, type, (item && item.datum) || {}, evt);\n });\n });\n\n // add external event listeners\n dl.keys(external.handlers).forEach(function(type) {\n if (typeof window === 'undefined') return; // No external support\n\n var h = external.handlers[type],\n t = type.split(':'), // --> no element pseudo-selectors\n elt = (t[0] === 'window') ? [window] :\n window.document.querySelectorAll(t[0]);\n\n function handler(evt) {\n extendEvent(evt);\n fire(external, type, d3.select(this).datum(), evt);\n }\n\n for (var i=0; i 1) f = 1;\n e = curr.ease(f);\n\n for (i=0, n=curr.length; i 0) { wait(); } else { callback(this.canvas()); }\n};\n\nprototype.svg = function() {\n return (this._type === 'svg') ? this._renderer.svg() : null;\n};\n\nprototype.initialize = function() {\n var w = this._width,\n h = this._height,\n bg = this._bgcolor,\n pad = this._padding,\n config = this.model().config();\n\n if (this._viewport) {\n w = this._viewport[0] - (pad ? pad.left + pad.right : 0);\n h = this._viewport[1] - (pad ? pad.top + pad.bottom : 0);\n }\n\n this._renderer = (this._renderer || new this._io.Renderer(config.load))\n .initialize(null, w, h, pad)\n .background(bg);\n\n return this;\n};\n\nmodule.exports = HeadlessView;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/HeadlessView.js\n ** module id = 160\n ** module chunks = 0\n **/","var dl = require('datalib'),\n parse = require('../parse'),\n Scale = require('../scene/Scale'),\n config = require('./config');\n\nfunction compile(module, opt, schema) {\n var s = module.schema;\n if (!s) return;\n if (s.refs) dl.extend(schema.refs, s.refs);\n if (s.defs) dl.extend(schema.defs, s.defs);\n}\n\nmodule.exports = function(opt) {\n var schema = null;\n opt = opt || {};\n\n // Compile if we're not loading the schema from a URL.\n // Load from a URL to extend the existing base schema.\n if (opt.url) {\n schema = dl.json(dl.extend({url: opt.url}, config.load));\n } else {\n schema = {\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"Vega Visualization Specification Language\",\n \"defs\": {},\n \"refs\": {},\n \"$ref\": \"#/defs/spec\"\n };\n\n dl.keys(parse).forEach(function(k) { compile(parse[k], opt, schema); });\n\n // Scales aren't in the parser, add schema manually\n compile(Scale, opt, schema);\n }\n\n // Extend schema to support custom mark properties or property sets.\n if (opt.properties) dl.keys(opt.properties).forEach(function(k) {\n schema.defs.propset.properties[k] = {\"$ref\": \"#/refs/\"+opt.properties[k]+\"Value\"};\n });\n\n if (opt.propertySets) dl.keys(opt.propertySets).forEach(function(k) {\n schema.defs.mark.properties.properties.properties[k] = {\"$ref\": \"#/defs/propset\"};\n });\n\n return schema;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega/src/core/schema.js\n ** module id = 161\n ** module chunks = 0\n **/","\"use strict\";\nvar vlBin = require('./bin');\nvar vlChannel = require('./channel');\nvar vlData = require('./data');\nvar vlEncoding = require('./encoding');\nvar vlFieldDef = require('./fielddef');\nvar vlCompile = require('./compile/compile');\nvar vlShorthand = require('./shorthand');\nvar vlSpec = require('./spec');\nvar vlTimeUnit = require('./timeunit');\nvar vlType = require('./type');\nvar vlValidate = require('./validate');\nvar vlUtil = require('./util');\nexports.bin = vlBin;\nexports.channel = vlChannel;\nexports.compile = vlCompile.compile;\nexports.data = vlData;\nexports.encoding = vlEncoding;\nexports.fieldDef = vlFieldDef;\nexports.shorthand = vlShorthand;\nexports.spec = vlSpec;\nexports.timeUnit = vlTimeUnit;\nexports.type = vlType;\nexports.util = vlUtil;\nexports.validate = vlValidate;\nexports.version = '__VERSION__';\n//# sourceMappingURL=vl.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/vl.js\n ** module id = 162\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('./channel');\nfunction autoMaxBins(channel) {\n switch (channel) {\n case channel_1.ROW:\n case channel_1.COLUMN:\n case channel_1.SIZE:\n case channel_1.SHAPE:\n return 6;\n default:\n return 10;\n }\n}\nexports.autoMaxBins = autoMaxBins;\n//# sourceMappingURL=bin.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/bin.js\n ** module id = 163\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('./util');\n(function (Channel) {\n Channel[Channel[\"X\"] = 'x'] = \"X\";\n Channel[Channel[\"Y\"] = 'y'] = \"Y\";\n Channel[Channel[\"ROW\"] = 'row'] = \"ROW\";\n Channel[Channel[\"COLUMN\"] = 'column'] = \"COLUMN\";\n Channel[Channel[\"SHAPE\"] = 'shape'] = \"SHAPE\";\n Channel[Channel[\"SIZE\"] = 'size'] = \"SIZE\";\n Channel[Channel[\"COLOR\"] = 'color'] = \"COLOR\";\n Channel[Channel[\"TEXT\"] = 'text'] = \"TEXT\";\n Channel[Channel[\"DETAIL\"] = 'detail'] = \"DETAIL\";\n Channel[Channel[\"LABEL\"] = 'label'] = \"LABEL\";\n Channel[Channel[\"PATH\"] = 'path'] = \"PATH\";\n Channel[Channel[\"ORDER\"] = 'order'] = \"ORDER\";\n})(exports.Channel || (exports.Channel = {}));\nvar Channel = exports.Channel;\nexports.X = Channel.X;\nexports.Y = Channel.Y;\nexports.ROW = Channel.ROW;\nexports.COLUMN = Channel.COLUMN;\nexports.SHAPE = Channel.SHAPE;\nexports.SIZE = Channel.SIZE;\nexports.COLOR = Channel.COLOR;\nexports.TEXT = Channel.TEXT;\nexports.DETAIL = Channel.DETAIL;\nexports.LABEL = Channel.LABEL;\nexports.PATH = Channel.PATH;\nexports.ORDER = Channel.ORDER;\nexports.CHANNELS = [exports.X, exports.Y, exports.ROW, exports.COLUMN, exports.SIZE, exports.SHAPE, exports.COLOR, exports.PATH, exports.ORDER, exports.TEXT, exports.DETAIL, exports.LABEL];\n;\nfunction supportMark(channel, mark) {\n return !!getSupportedMark(channel)[mark];\n}\nexports.supportMark = supportMark;\nfunction getSupportedMark(channel) {\n switch (channel) {\n case exports.X:\n case exports.Y:\n case exports.COLOR:\n case exports.DETAIL:\n case exports.ORDER:\n case exports.ROW:\n case exports.COLUMN:\n return {\n point: true, tick: true, circle: true, square: true,\n bar: true, line: true, area: true, text: true\n };\n case exports.SIZE:\n return {\n point: true, tick: true, circle: true, square: true,\n bar: true, text: true\n };\n case exports.SHAPE:\n return { point: true };\n case exports.TEXT:\n return { text: true };\n case exports.PATH:\n return { line: true };\n }\n return {};\n}\nexports.getSupportedMark = getSupportedMark;\n;\nfunction getSupportedRole(channel) {\n switch (channel) {\n case exports.X:\n case exports.Y:\n case exports.COLOR:\n case exports.LABEL:\n return {\n measure: true,\n dimension: true\n };\n case exports.ROW:\n case exports.COLUMN:\n case exports.SHAPE:\n case exports.DETAIL:\n return {\n measure: false,\n dimension: true\n };\n case exports.SIZE:\n case exports.TEXT:\n return {\n measure: true,\n dimension: false\n };\n case exports.PATH:\n return {\n measure: false,\n dimension: true\n };\n }\n throw new Error('Invalid encoding channel' + channel);\n}\nexports.getSupportedRole = getSupportedRole;\nfunction hasScale(channel) {\n return !util_1.contains([exports.DETAIL, exports.PATH, exports.TEXT, exports.LABEL, exports.ORDER], channel);\n}\nexports.hasScale = hasScale;\n//# sourceMappingURL=channel.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/channel.js\n ** module id = 164\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('datalib/src/util');\nexports.keys = util_1.keys;\nexports.extend = util_1.extend;\nexports.duplicate = util_1.duplicate;\nexports.isArray = util_1.isArray;\nexports.vals = util_1.vals;\nexports.truncate = util_1.truncate;\nexports.toMap = util_1.toMap;\nexports.isObject = util_1.isObject;\nvar generate_1 = require('datalib/src/generate');\nexports.range = generate_1.range;\nfunction contains(array, item) {\n return array.indexOf(item) > -1;\n}\nexports.contains = contains;\nfunction without(array, items) {\n return array.filter(function (item) {\n return !contains(items, item);\n });\n}\nexports.without = without;\nfunction forEach(obj, f, thisArg) {\n if (obj.forEach) {\n obj.forEach.call(thisArg, f);\n }\n else {\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n f.call(thisArg, obj[k], k, obj);\n }\n }\n }\n}\nexports.forEach = forEach;\nfunction reduce(obj, f, init, thisArg) {\n if (obj.reduce) {\n return obj.reduce.call(thisArg, f, init);\n }\n else {\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n init = f.call(thisArg, init, obj[k], k, obj);\n }\n }\n return init;\n }\n}\nexports.reduce = reduce;\nfunction map(obj, f, thisArg) {\n if (obj.map) {\n return obj.map.call(thisArg, f);\n }\n else {\n var output = [];\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n output.push(f.call(thisArg, obj[k], k, obj));\n }\n }\n return output;\n }\n}\nexports.map = map;\nfunction any(arr, f) {\n var i = 0;\n for (var k = 0; k < arr.length; k++) {\n if (f(arr[k], k, i++)) {\n return true;\n }\n }\n return false;\n}\nexports.any = any;\nfunction all(arr, f) {\n var i = 0;\n for (var k = 0; k < arr.length; k++) {\n if (!f(arr[k], k, i++)) {\n return false;\n }\n }\n return true;\n}\nexports.all = all;\nfunction mergeDeep(dest) {\n var src = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n src[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < src.length; i++) {\n dest = deepMerge_(dest, src[i]);\n }\n return dest;\n}\nexports.mergeDeep = mergeDeep;\n;\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (var p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(src[p].constructor === Array ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\nvar dlBin = require('datalib/src/bins/bins');\nfunction getbins(stats, maxbins) {\n return dlBin({\n min: stats.min,\n max: stats.max,\n maxbins: maxbins\n });\n}\nexports.getbins = getbins;\nfunction error(message) {\n console.error('[VL Error]', message);\n}\nexports.error = error;\n//# sourceMappingURL=util.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/util.js\n ** module id = 165\n ** module chunks = 0\n **/","var u = module.exports;\n\n// utility functions\n\nvar FNAME = '__name__';\n\nu.namedfunc = function(name, f) { return (f[FNAME] = name, f); };\n\nu.name = function(f) { return f==null ? null : f[FNAME]; };\n\nu.identity = function(x) { return x; };\n\nu.true = u.namedfunc('true', function() { return true; });\n\nu.false = u.namedfunc('false', function() { return false; });\n\nu.duplicate = function(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n\nu.equal = function(a, b) {\n return JSON.stringify(a) === JSON.stringify(b);\n};\n\nu.extend = function(obj) {\n for (var x, name, i=1, len=arguments.length; i 1 ?\n function(x, v) {\n for (var i=0; i y) return sign[i];\n }\n return 0;\n };\n};\n\nu.cmp = function(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else if (a >= b) {\n return 0;\n } else if (a === null) {\n return -1;\n } else if (b === null) {\n return 1;\n }\n return NaN;\n};\n\nu.numcmp = function(a, b) { return a - b; };\n\nu.stablesort = function(array, sortBy, keyFn) {\n var indices = array.reduce(function(idx, v, i) {\n return (idx[keyFn(v)] = i, idx);\n }, {});\n\n array.sort(function(a, b) {\n var sa = sortBy(a),\n sb = sortBy(b);\n return sa < sb ? -1 : sa > sb ? 1\n : (indices[keyFn(a)] - indices[keyFn(b)]);\n });\n\n return array;\n};\n\n\n// string functions\n\nu.pad = function(s, length, pos, padchar) {\n padchar = padchar || \" \";\n var d = length - s.length;\n if (d <= 0) return s;\n switch (pos) {\n case 'left':\n return strrep(d, padchar) + s;\n case 'middle':\n case 'center':\n return strrep(Math.floor(d/2), padchar) +\n s + strrep(Math.ceil(d/2), padchar);\n default:\n return s + strrep(d, padchar);\n }\n};\n\nfunction strrep(n, str) {\n var s = \"\", i;\n for (i=0; i stop) range.push(j);\n else while ((j = start + step * ++i) < stop) range.push(j);\n return range;\n};\n\ngen.random = {};\n\ngen.random.uniform = function(min, max) {\n if (max === undefined) {\n max = min === undefined ? 1 : min;\n min = 0;\n }\n var d = max - min;\n var f = function() {\n return min + d * Math.random();\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x >= min && x <= max) ? 1/d : 0;\n };\n f.cdf = function(x) {\n return x < min ? 0 : x > max ? 1 : (x - min) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? min + p*d : NaN;\n };\n return f;\n};\n\ngen.random.integer = function(a, b) {\n if (b === undefined) {\n b = a;\n a = 0;\n }\n var d = b - a;\n var f = function() {\n return a + Math.floor(d * Math.random());\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n return (x === Math.floor(x) && x >= a && x < b) ? 1/d : 0;\n };\n f.cdf = function(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n };\n f.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p*d) : NaN;\n };\n return f;\n};\n\ngen.random.normal = function(mean, stdev) {\n mean = mean || 0;\n stdev = stdev || 1;\n var next;\n var f = function() {\n var x = 0, y = 0, rds, c;\n if (next !== undefined) {\n x = next;\n next = undefined;\n return x;\n }\n do {\n x = Math.random()*2-1;\n y = Math.random()*2-1;\n rds = x*x + y*y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2*Math.log(rds)/rds); // Box-Muller transform\n next = mean + y*c*stdev;\n return mean + x*c*stdev;\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n f.pdf = function(x) {\n var exp = Math.exp(Math.pow(x-mean, 2) / (-2 * Math.pow(stdev, 2)));\n return (1 / (stdev * Math.sqrt(2*Math.PI))) * exp;\n };\n f.cdf = function(x) {\n // Approximation from West (2009)\n // Better Approximations to Cumulative Normal Functions\n var cd,\n z = (x - mean) / stdev,\n Z = Math.abs(z);\n if (Z > 37) {\n cd = 0;\n } else {\n var sum, exp = Math.exp(-Z*Z/2);\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n };\n f.icdf = function(p) {\n // Approximation of Probit function using inverse error function.\n if (p <= 0 || p >= 1) return NaN;\n var x = 2*p - 1,\n v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n b = Math.log(1 - (x*x)) / v,\n s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n return mean + stdev * Math.SQRT2 * s;\n };\n return f;\n};\n\ngen.random.bootstrap = function(domain, smooth) {\n // Generates a bootstrap sample from a set of observations.\n // Smooth bootstrapping adds random zero-centered noise to the samples.\n var val = domain.filter(util.isValid),\n len = val.length,\n err = smooth ? gen.random.normal(0, smooth) : null;\n var f = function() {\n return val[~~(Math.random()*len)] + (err ? err() : 0);\n };\n f.samples = function(n) {\n return gen.zeros(n).map(f);\n };\n return f;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/~/datalib/src/generate.js\n ** module id = 167\n ** module chunks = 0\n **/","var util = require('../util'),\n time = require('../time'),\n EPSILON = 1e-15;\n\nfunction bins(opt) {\n if (!opt) { throw Error(\"Missing binning options.\"); }\n\n // determine range\n var maxb = opt.maxbins || 15,\n base = opt.base || 10,\n logb = Math.log(base),\n div = opt.div || [5, 2],\n min = opt.min,\n max = opt.max,\n span = max - min,\n step, level, minstep, precision, v, i, eps;\n\n if (opt.step) {\n // if step size is explicitly given, use that\n step = opt.step;\n } else if (opt.steps) {\n // if provided, limit choice to acceptable step sizes\n step = opt.steps[Math.min(\n opt.steps.length - 1,\n bisect(opt.steps, span/maxb, 0, opt.steps.length)\n )];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = opt.minstep || 0;\n step = Math.max(\n minstep,\n Math.pow(base, Math.round(Math.log(span) / logb) - level)\n );\n\n // increase step size if too many bins\n while (Math.ceil(span/step) > maxb) { step *= base; }\n\n // decrease step size if allowed\n for (i=0; i= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n eps = Math.pow(base, -precision - 1);\n min = Math.min(min, Math.floor(min / step + eps) * step);\n max = Math.ceil(max / step) * step;\n\n return {\n start: min,\n stop: max,\n step: step,\n unit: {precision: precision},\n value: value,\n index: index\n };\n}\n\nfunction bisect(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (util.cmp(a[mid], x) < 0) { lo = mid + 1; }\n else { hi = mid; }\n }\n return lo;\n}\n\nfunction value(v) {\n return this.step * Math.floor(v / this.step + EPSILON);\n}\n\nfunction index(v) {\n return Math.floor((v - this.start) / this.step + EPSILON);\n}\n\nfunction date_value(v) {\n return this.unit.date(value.call(this, v));\n}\n\nfunction date_index(v) {\n return index.call(this, this.unit.unit(v));\n}\n\nbins.date = function(opt) {\n if (!opt) { throw Error(\"Missing date binning options.\"); }\n\n // find time step, then bin\n var units = opt.utc ? time.utc : time,\n dmin = opt.min,\n dmax = opt.max,\n maxb = opt.maxbins || 20,\n minb = opt.minbins || 4,\n span = (+dmax) - (+dmin),\n unit = opt.unit ? units[opt.unit] : units.find(span, minb, maxb),\n spec = bins({\n min: unit.min != null ? unit.min : unit.unit(dmin),\n max: unit.max != null ? unit.max : unit.unit(dmax),\n maxbins: maxb,\n minstep: unit.minstep,\n steps: unit.step\n });\n\n spec.unit = unit;\n spec.index = date_index;\n if (!opt.raw) spec.value = date_value;\n return spec;\n};\n\nmodule.exports = bins;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/~/datalib/src/bins/bins.js\n ** module id = 168\n ** module chunks = 0\n **/","var d3_time = require('d3-time');\n\nvar tempDate = new Date(),\n baseDate = new Date(0, 0, 1).setFullYear(0), // Jan 1, 0 AD\n utcBaseDate = new Date(Date.UTC(0, 0, 1)).setUTCFullYear(0);\n\nfunction date(d) {\n return (tempDate.setTime(+d), tempDate);\n}\n\n// create a time unit entry\nfunction entry(type, date, unit, step, min, max) {\n var e = {\n type: type,\n date: date,\n unit: unit\n };\n if (step) {\n e.step = step;\n } else {\n e.minstep = 1;\n }\n if (min != null) e.min = min;\n if (max != null) e.max = max;\n return e;\n}\n\nfunction create(type, unit, base, step, min, max) {\n return entry(type,\n function(d) { return unit.offset(base, d); },\n function(d) { return unit.count(base, d); },\n step, min, max);\n}\n\nvar locale = [\n create('second', d3_time.second, baseDate),\n create('minute', d3_time.minute, baseDate),\n create('hour', d3_time.hour, baseDate),\n create('day', d3_time.day, baseDate, [1, 7]),\n create('month', d3_time.month, baseDate, [1, 3, 6]),\n create('year', d3_time.year, baseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(1970, 0, 1, 0, 0, d); },\n function(d) { return date(d).getSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(1970, 0, 1, 0, d); },\n function(d) { return date(d).getMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(1970, 0, 1, d); },\n function(d) { return date(d).getHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(1970, 0, 4+d); },\n function(d) { return date(d).getDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(1970, 0, d); },\n function(d) { return date(d).getDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(1970, d % 12, 1); },\n function(d) { return date(d).getMonth(); },\n [1], 0, 11\n )\n];\n\nvar utc = [\n create('second', d3_time.utcSecond, utcBaseDate),\n create('minute', d3_time.utcMinute, utcBaseDate),\n create('hour', d3_time.utcHour, utcBaseDate),\n create('day', d3_time.utcDay, utcBaseDate, [1, 7]),\n create('month', d3_time.utcMonth, utcBaseDate, [1, 3, 6]),\n create('year', d3_time.utcYear, utcBaseDate),\n\n // periodic units\n entry('seconds',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, 0, d)); },\n function(d) { return date(d).getUTCSeconds(); },\n null, 0, 59\n ),\n entry('minutes',\n function(d) { return new Date(Date.UTC(1970, 0, 1, 0, d)); },\n function(d) { return date(d).getUTCMinutes(); },\n null, 0, 59\n ),\n entry('hours',\n function(d) { return new Date(Date.UTC(1970, 0, 1, d)); },\n function(d) { return date(d).getUTCHours(); },\n null, 0, 23\n ),\n entry('weekdays',\n function(d) { return new Date(Date.UTC(1970, 0, 4+d)); },\n function(d) { return date(d).getUTCDay(); },\n [1], 0, 6\n ),\n entry('dates',\n function(d) { return new Date(Date.UTC(1970, 0, d)); },\n function(d) { return date(d).getUTCDate(); },\n [1], 1, 31\n ),\n entry('months',\n function(d) { return new Date(Date.UTC(1970, d % 12, 1)); },\n function(d) { return date(d).getUTCMonth(); },\n [1], 0, 11\n )\n];\n\nvar STEPS = [\n [31536e6, 5], // 1-year\n [7776e6, 4], // 3-month\n [2592e6, 4], // 1-month\n [12096e5, 3], // 2-week\n [6048e5, 3], // 1-week\n [1728e5, 3], // 2-day\n [864e5, 3], // 1-day\n [432e5, 2], // 12-hour\n [216e5, 2], // 6-hour\n [108e5, 2], // 3-hour\n [36e5, 2], // 1-hour\n [18e5, 1], // 30-minute\n [9e5, 1], // 15-minute\n [3e5, 1], // 5-minute\n [6e4, 1], // 1-minute\n [3e4, 0], // 30-second\n [15e3, 0], // 15-second\n [5e3, 0], // 5-second\n [1e3, 0] // 1-second\n];\n\nfunction find(units, span, minb, maxb) {\n var step = STEPS[0], i, n, bins;\n\n for (i=1, n=STEPS.length; i step[0]) {\n bins = span / step[0];\n if (bins > maxb) {\n return units[STEPS[i-1][1]];\n }\n if (bins >= minb) {\n return units[step[1]];\n }\n }\n }\n return units[STEPS[n-1][1]];\n}\n\nfunction toUnitMap(units) {\n var map = {}, i, n;\n for (i=0, n=units.length; i 0)) return range; // also handles Invalid Date\n offseti(start, 1), floori(start);\n if (start < stop) range.push(new Date(+start));\n while (offseti(start, step), floori(start), start < stop) range.push(new Date(+start));\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n while (--step >= 0) while (offseti(date, 1), !test(date));\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n };\n\n var millisecond = newInterval(function() {\n // noop\n }, function(date, step) {\n date.setTime(+date + step);\n }, function(start, end) {\n return end - start;\n });\n\n // An optimized implementation for this simple case.\n millisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n };\n\n var second = newInterval(function(date) {\n date.setMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getSeconds();\n });\n\n var minute = newInterval(function(date) {\n date.setSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getMinutes();\n });\n\n var hour = newInterval(function(date) {\n date.setMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getHours();\n });\n\n var day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 864e5;\n }, function(date) {\n return date.getDate() - 1;\n });\n\n function weekday(i) {\n return newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * 6e4) / 6048e5;\n });\n }\n\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n\n var month = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setDate(1);\n }, function(date, step) {\n date.setMonth(date.getMonth() + step);\n }, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function(date) {\n return date.getMonth();\n });\n\n var year = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n date.setMonth(0, 1);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function(date) {\n return date.getFullYear();\n });\n\n var utcSecond = newInterval(function(date) {\n date.setUTCMilliseconds(0);\n }, function(date, step) {\n date.setTime(+date + step * 1e3);\n }, function(start, end) {\n return (end - start) / 1e3;\n }, function(date) {\n return date.getUTCSeconds();\n });\n\n var utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 6e4);\n }, function(start, end) {\n return (end - start) / 6e4;\n }, function(date) {\n return date.getUTCMinutes();\n });\n\n var utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * 36e5);\n }, function(start, end) {\n return (end - start) / 36e5;\n }, function(date) {\n return date.getUTCHours();\n });\n\n var utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function(start, end) {\n return (end - start) / 864e5;\n }, function(date) {\n return date.getUTCDate() - 1;\n });\n\n function utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / 6048e5;\n });\n }\n\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n\n var utcMonth = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCDate(1);\n }, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function(date) {\n return date.getUTCMonth();\n });\n\n var utcYear = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n date.setUTCMonth(0, 1);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function(date) {\n return date.getUTCFullYear();\n });\n\n var milliseconds = millisecond.range;\n var seconds = second.range;\n var minutes = minute.range;\n var hours = hour.range;\n var days = day.range;\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n var weeks = sunday.range;\n var months = month.range;\n var years = year.range;\n\n var utcMillisecond = millisecond;\n var utcMilliseconds = milliseconds;\n var utcSeconds = utcSecond.range;\n var utcMinutes = utcMinute.range;\n var utcHours = utcHour.range;\n var utcDays = utcDay.range;\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n var utcWeeks = utcSunday.range;\n var utcMonths = utcMonth.range;\n var utcYears = utcYear.range;\n\n var version = \"0.1.1\";\n\n exports.version = version;\n exports.milliseconds = milliseconds;\n exports.seconds = seconds;\n exports.minutes = minutes;\n exports.hours = hours;\n exports.days = days;\n exports.sundays = sundays;\n exports.mondays = mondays;\n exports.tuesdays = tuesdays;\n exports.wednesdays = wednesdays;\n exports.thursdays = thursdays;\n exports.fridays = fridays;\n exports.saturdays = saturdays;\n exports.weeks = weeks;\n exports.months = months;\n exports.years = years;\n exports.utcMillisecond = utcMillisecond;\n exports.utcMilliseconds = utcMilliseconds;\n exports.utcSeconds = utcSeconds;\n exports.utcMinutes = utcMinutes;\n exports.utcHours = utcHours;\n exports.utcDays = utcDays;\n exports.utcSundays = utcSundays;\n exports.utcMondays = utcMondays;\n exports.utcTuesdays = utcTuesdays;\n exports.utcWednesdays = utcWednesdays;\n exports.utcThursdays = utcThursdays;\n exports.utcFridays = utcFridays;\n exports.utcSaturdays = utcSaturdays;\n exports.utcWeeks = utcWeeks;\n exports.utcMonths = utcMonths;\n exports.utcYears = utcYears;\n exports.millisecond = millisecond;\n exports.second = second;\n exports.minute = minute;\n exports.hour = hour;\n exports.day = day;\n exports.sunday = sunday;\n exports.monday = monday;\n exports.tuesday = tuesday;\n exports.wednesday = wednesday;\n exports.thursday = thursday;\n exports.friday = friday;\n exports.saturday = saturday;\n exports.week = sunday;\n exports.month = month;\n exports.year = year;\n exports.utcSecond = utcSecond;\n exports.utcMinute = utcMinute;\n exports.utcHour = utcHour;\n exports.utcDay = utcDay;\n exports.utcSunday = utcSunday;\n exports.utcMonday = utcMonday;\n exports.utcTuesday = utcTuesday;\n exports.utcWednesday = utcWednesday;\n exports.utcThursday = utcThursday;\n exports.utcFriday = utcFriday;\n exports.utcSaturday = utcSaturday;\n exports.utcWeek = utcSunday;\n exports.utcMonth = utcMonth;\n exports.utcYear = utcYear;\n exports.interval = newInterval;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/~/datalib/~/d3-time/build/d3-time.js\n ** module id = 170\n ** module chunks = 0\n **/","\"use strict\";\nvar type_1 = require('./type');\n(function (DataFormat) {\n DataFormat[DataFormat[\"JSON\"] = 'json'] = \"JSON\";\n DataFormat[DataFormat[\"CSV\"] = 'csv'] = \"CSV\";\n DataFormat[DataFormat[\"TSV\"] = 'tsv'] = \"TSV\";\n})(exports.DataFormat || (exports.DataFormat = {}));\nvar DataFormat = exports.DataFormat;\nexports.SUMMARY = 'summary';\nexports.SOURCE = 'source';\nexports.STACKED_SCALE = 'stacked_scale';\nexports.LAYOUT = 'layout';\nexports.types = {\n 'boolean': type_1.Type.NOMINAL,\n 'number': type_1.Type.QUANTITATIVE,\n 'integer': type_1.Type.QUANTITATIVE,\n 'date': type_1.Type.TEMPORAL,\n 'string': type_1.Type.NOMINAL\n};\n//# sourceMappingURL=data.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/data.js\n ** module id = 171\n ** module chunks = 0\n **/","\"use strict\";\n(function (Type) {\n Type[Type[\"QUANTITATIVE\"] = 'quantitative'] = \"QUANTITATIVE\";\n Type[Type[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n Type[Type[\"TEMPORAL\"] = 'temporal'] = \"TEMPORAL\";\n Type[Type[\"NOMINAL\"] = 'nominal'] = \"NOMINAL\";\n})(exports.Type || (exports.Type = {}));\nvar Type = exports.Type;\nexports.QUANTITATIVE = Type.QUANTITATIVE;\nexports.ORDINAL = Type.ORDINAL;\nexports.TEMPORAL = Type.TEMPORAL;\nexports.NOMINAL = Type.NOMINAL;\nexports.SHORT_TYPE = {\n quantitative: 'Q',\n temporal: 'T',\n nominal: 'N',\n ordinal: 'O'\n};\nexports.TYPE_FROM_SHORT_TYPE = {\n Q: exports.QUANTITATIVE,\n T: exports.TEMPORAL,\n O: exports.ORDINAL,\n N: exports.NOMINAL\n};\nfunction getFullName(type) {\n var typeString = type;\n return exports.TYPE_FROM_SHORT_TYPE[typeString.toUpperCase()] ||\n typeString.toLowerCase();\n}\nexports.getFullName = getFullName;\n//# sourceMappingURL=type.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/type.js\n ** module id = 172\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('./channel');\nvar util_1 = require('./util');\nfunction countRetinal(encoding) {\n var count = 0;\n if (encoding.color) {\n count++;\n }\n if (encoding.size) {\n count++;\n }\n if (encoding.shape) {\n count++;\n }\n return count;\n}\nexports.countRetinal = countRetinal;\nfunction channels(encoding) {\n return channel_1.CHANNELS.filter(function (channel) {\n return has(encoding, channel);\n });\n}\nexports.channels = channels;\nfunction has(encoding, channel) {\n var channelEncoding = encoding && encoding[channel];\n return channelEncoding && (channelEncoding.field !== undefined ||\n (util_1.isArray(channelEncoding) && channelEncoding.length > 0));\n}\nexports.has = has;\nfunction isAggregate(encoding) {\n return util_1.any(channel_1.CHANNELS, function (channel) {\n if (has(encoding, channel) && encoding[channel].aggregate) {\n return true;\n }\n return false;\n });\n}\nexports.isAggregate = isAggregate;\nfunction fieldDefs(encoding) {\n var arr = [];\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n arr.push(fieldDef);\n });\n }\n else {\n arr.push(encoding[channel]);\n }\n }\n });\n return arr;\n}\nexports.fieldDefs = fieldDefs;\n;\nfunction forEach(encoding, f, thisArg) {\n var i = 0;\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n f.call(thisArg, fieldDef, channel, i++);\n });\n }\n else {\n f.call(thisArg, encoding[channel], channel, i++);\n }\n }\n });\n}\nexports.forEach = forEach;\nfunction map(encoding, f, thisArg) {\n var arr = [];\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n arr.push(f.call(thisArg, fieldDef, channel, encoding));\n });\n }\n else {\n arr.push(f.call(thisArg, encoding[channel], channel, encoding));\n }\n }\n });\n return arr;\n}\nexports.map = map;\nfunction reduce(encoding, f, init, thisArg) {\n var r = init;\n channel_1.CHANNELS.forEach(function (channel) {\n if (has(encoding, channel)) {\n if (util_1.isArray(encoding[channel])) {\n encoding[channel].forEach(function (fieldDef) {\n r = f.call(thisArg, r, fieldDef, channel, encoding);\n });\n }\n else {\n r = f.call(thisArg, r, encoding[channel], channel, encoding);\n }\n }\n });\n return r;\n}\nexports.reduce = reduce;\n//# sourceMappingURL=encoding.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/encoding.js\n ** module id = 173\n ** module chunks = 0\n **/","\"use strict\";\nvar aggregate_1 = require('./aggregate');\nvar timeunit_1 = require('./timeunit');\nvar type_1 = require('./type');\nvar util_1 = require('./util');\nexports.aggregate = {\n type: 'string',\n enum: aggregate_1.AGGREGATE_OPS,\n supportedEnums: {\n quantitative: aggregate_1.AGGREGATE_OPS,\n ordinal: ['median', 'min', 'max'],\n nominal: [],\n temporal: ['mean', 'median', 'min', 'max'],\n '': ['count']\n },\n supportedTypes: util_1.toMap([type_1.QUANTITATIVE, type_1.NOMINAL, type_1.ORDINAL, type_1.TEMPORAL, ''])\n};\nfunction field(fieldDef, opt) {\n if (opt === void 0) { opt = {}; }\n var prefix = (opt.datum ? 'datum.' : '') + (opt.prefn || '');\n var suffix = opt.suffix || '';\n var field = fieldDef.field;\n if (isCount(fieldDef)) {\n return prefix + 'count' + suffix;\n }\n else if (opt.fn) {\n return prefix + opt.fn + '_' + field + suffix;\n }\n else if (!opt.nofn && fieldDef.bin) {\n return prefix + 'bin_' + field + (opt.binSuffix || suffix || '_start');\n }\n else if (!opt.nofn && !opt.noAggregate && fieldDef.aggregate) {\n return prefix + fieldDef.aggregate + '_' + field + suffix;\n }\n else if (!opt.nofn && fieldDef.timeUnit) {\n return prefix + fieldDef.timeUnit + '_' + field + suffix;\n }\n else {\n return prefix + field;\n }\n}\nexports.field = field;\nfunction _isFieldDimension(fieldDef) {\n return util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) || !!fieldDef.bin ||\n (fieldDef.type === type_1.TEMPORAL && !!fieldDef.timeUnit);\n}\nfunction isDimension(fieldDef) {\n return fieldDef && fieldDef.field && _isFieldDimension(fieldDef);\n}\nexports.isDimension = isDimension;\nfunction isMeasure(fieldDef) {\n return fieldDef && fieldDef.field && !_isFieldDimension(fieldDef);\n}\nexports.isMeasure = isMeasure;\nexports.COUNT_DISPLAYNAME = 'Number of Records';\nfunction count() {\n return { field: '*', aggregate: aggregate_1.AggregateOp.COUNT, type: type_1.QUANTITATIVE, displayName: exports.COUNT_DISPLAYNAME };\n}\nexports.count = count;\nfunction isCount(fieldDef) {\n return fieldDef.aggregate === aggregate_1.AggregateOp.COUNT;\n}\nexports.isCount = isCount;\nfunction cardinality(fieldDef, stats, filterNull) {\n if (filterNull === void 0) { filterNull = {}; }\n var stat = stats[fieldDef.field], type = fieldDef.type;\n if (fieldDef.bin) {\n var bin_1 = fieldDef.bin;\n var maxbins = (typeof bin_1 === 'boolean') ? undefined : bin_1.maxbins;\n if (maxbins === undefined) {\n maxbins = 10;\n }\n var bins = util_1.getbins(stat, maxbins);\n return (bins.stop - bins.start) / bins.step;\n }\n if (type === type_1.TEMPORAL) {\n var timeUnit = fieldDef.timeUnit;\n switch (timeUnit) {\n case timeunit_1.TimeUnit.SECONDS: return 60;\n case timeunit_1.TimeUnit.MINUTES: return 60;\n case timeunit_1.TimeUnit.HOURS: return 24;\n case timeunit_1.TimeUnit.DAY: return 7;\n case timeunit_1.TimeUnit.DATE: return 31;\n case timeunit_1.TimeUnit.MONTH: return 12;\n case timeunit_1.TimeUnit.YEAR:\n var yearstat = stats['year_' + fieldDef.field];\n if (!yearstat) {\n return null;\n }\n return yearstat.distinct -\n (stat.missing > 0 && filterNull[type] ? 1 : 0);\n }\n }\n if (fieldDef.aggregate) {\n return 1;\n }\n return stat.distinct -\n (stat.missing > 0 && filterNull[type] ? 1 : 0);\n}\nexports.cardinality = cardinality;\nfunction title(fieldDef) {\n if (isCount(fieldDef)) {\n return exports.COUNT_DISPLAYNAME;\n }\n var fn = fieldDef.aggregate || fieldDef.timeUnit || (fieldDef.bin && 'bin');\n if (fn) {\n return fn.toString().toUpperCase() + '(' + fieldDef.field + ')';\n }\n else {\n return fieldDef.field;\n }\n}\nexports.title = title;\n//# sourceMappingURL=fielddef.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/fielddef.js\n ** module id = 174\n ** module chunks = 0\n **/","\"use strict\";\n(function (AggregateOp) {\n AggregateOp[AggregateOp[\"VALUES\"] = 'values'] = \"VALUES\";\n AggregateOp[AggregateOp[\"COUNT\"] = 'count'] = \"COUNT\";\n AggregateOp[AggregateOp[\"VALID\"] = 'valid'] = \"VALID\";\n AggregateOp[AggregateOp[\"MISSING\"] = 'missing'] = \"MISSING\";\n AggregateOp[AggregateOp[\"DISTINCT\"] = 'distinct'] = \"DISTINCT\";\n AggregateOp[AggregateOp[\"SUM\"] = 'sum'] = \"SUM\";\n AggregateOp[AggregateOp[\"MEAN\"] = 'mean'] = \"MEAN\";\n AggregateOp[AggregateOp[\"AVERAGE\"] = 'average'] = \"AVERAGE\";\n AggregateOp[AggregateOp[\"VARIANCE\"] = 'variance'] = \"VARIANCE\";\n AggregateOp[AggregateOp[\"VARIANCEP\"] = 'variancep'] = \"VARIANCEP\";\n AggregateOp[AggregateOp[\"STDEV\"] = 'stdev'] = \"STDEV\";\n AggregateOp[AggregateOp[\"STDEVP\"] = 'stdevp'] = \"STDEVP\";\n AggregateOp[AggregateOp[\"MEDIAN\"] = 'median'] = \"MEDIAN\";\n AggregateOp[AggregateOp[\"Q1\"] = 'q1'] = \"Q1\";\n AggregateOp[AggregateOp[\"Q3\"] = 'q3'] = \"Q3\";\n AggregateOp[AggregateOp[\"MODESKEW\"] = 'modeskew'] = \"MODESKEW\";\n AggregateOp[AggregateOp[\"MIN\"] = 'min'] = \"MIN\";\n AggregateOp[AggregateOp[\"MAX\"] = 'max'] = \"MAX\";\n AggregateOp[AggregateOp[\"ARGMIN\"] = 'argmin'] = \"ARGMIN\";\n AggregateOp[AggregateOp[\"ARGMAX\"] = 'argmax'] = \"ARGMAX\";\n})(exports.AggregateOp || (exports.AggregateOp = {}));\nvar AggregateOp = exports.AggregateOp;\nexports.AGGREGATE_OPS = [\n AggregateOp.VALUES,\n AggregateOp.COUNT,\n AggregateOp.VALID,\n AggregateOp.MISSING,\n AggregateOp.DISTINCT,\n AggregateOp.SUM,\n AggregateOp.MEAN,\n AggregateOp.AVERAGE,\n AggregateOp.VARIANCE,\n AggregateOp.VARIANCEP,\n AggregateOp.STDEV,\n AggregateOp.STDEVP,\n AggregateOp.MEDIAN,\n AggregateOp.Q1,\n AggregateOp.Q3,\n AggregateOp.MODESKEW,\n AggregateOp.MIN,\n AggregateOp.MAX,\n AggregateOp.ARGMIN,\n AggregateOp.ARGMAX,\n];\nexports.SHARED_DOMAIN_OPS = [\n AggregateOp.MEAN,\n AggregateOp.AVERAGE,\n AggregateOp.STDEV,\n AggregateOp.STDEVP,\n AggregateOp.MEDIAN,\n AggregateOp.Q1,\n AggregateOp.Q3,\n AggregateOp.MIN,\n AggregateOp.MAX,\n];\n//# sourceMappingURL=aggregate.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/aggregate.js\n ** module id = 175\n ** module chunks = 0\n **/","\"use strict\";\n(function (TimeUnit) {\n TimeUnit[TimeUnit[\"YEAR\"] = 'year'] = \"YEAR\";\n TimeUnit[TimeUnit[\"MONTH\"] = 'month'] = \"MONTH\";\n TimeUnit[TimeUnit[\"DAY\"] = 'day'] = \"DAY\";\n TimeUnit[TimeUnit[\"DATE\"] = 'date'] = \"DATE\";\n TimeUnit[TimeUnit[\"HOURS\"] = 'hours'] = \"HOURS\";\n TimeUnit[TimeUnit[\"MINUTES\"] = 'minutes'] = \"MINUTES\";\n TimeUnit[TimeUnit[\"SECONDS\"] = 'seconds'] = \"SECONDS\";\n TimeUnit[TimeUnit[\"MILLISECONDS\"] = 'milliseconds'] = \"MILLISECONDS\";\n TimeUnit[TimeUnit[\"YEARMONTH\"] = 'yearmonth'] = \"YEARMONTH\";\n TimeUnit[TimeUnit[\"YEARMONTHDAY\"] = 'yearmonthday'] = \"YEARMONTHDAY\";\n TimeUnit[TimeUnit[\"YEARMONTHDATE\"] = 'yearmonthdate'] = \"YEARMONTHDATE\";\n TimeUnit[TimeUnit[\"YEARDAY\"] = 'yearday'] = \"YEARDAY\";\n TimeUnit[TimeUnit[\"YEARDATE\"] = 'yeardate'] = \"YEARDATE\";\n TimeUnit[TimeUnit[\"YEARMONTHDAYHOURS\"] = 'yearmonthdayhours'] = \"YEARMONTHDAYHOURS\";\n TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTES\"] = 'yearmonthdayhoursminutes'] = \"YEARMONTHDAYHOURSMINUTES\";\n TimeUnit[TimeUnit[\"YEARMONTHDAYHOURSMINUTESSECONDS\"] = 'yearmonthdayhoursminutesseconds'] = \"YEARMONTHDAYHOURSMINUTESSECONDS\";\n TimeUnit[TimeUnit[\"HOURSMINUTES\"] = 'hoursminutes'] = \"HOURSMINUTES\";\n TimeUnit[TimeUnit[\"HOURSMINUTESSECONDS\"] = 'hoursminutesseconds'] = \"HOURSMINUTESSECONDS\";\n TimeUnit[TimeUnit[\"MINUTESSECONDS\"] = 'minutesseconds'] = \"MINUTESSECONDS\";\n TimeUnit[TimeUnit[\"SECONDSMILLISECONDS\"] = 'secondsmilliseconds'] = \"SECONDSMILLISECONDS\";\n})(exports.TimeUnit || (exports.TimeUnit = {}));\nvar TimeUnit = exports.TimeUnit;\nexports.TIMEUNITS = [\n TimeUnit.YEAR,\n TimeUnit.MONTH,\n TimeUnit.DAY,\n TimeUnit.DATE,\n TimeUnit.HOURS,\n TimeUnit.MINUTES,\n TimeUnit.SECONDS,\n TimeUnit.MILLISECONDS,\n TimeUnit.YEARMONTH,\n TimeUnit.YEARMONTHDAY,\n TimeUnit.YEARMONTHDATE,\n TimeUnit.YEARDAY,\n TimeUnit.YEARDATE,\n TimeUnit.YEARMONTHDAYHOURS,\n TimeUnit.YEARMONTHDAYHOURSMINUTES,\n TimeUnit.YEARMONTHDAYHOURSMINUTESSECONDS,\n TimeUnit.HOURSMINUTES,\n TimeUnit.HOURSMINUTESSECONDS,\n TimeUnit.MINUTESSECONDS,\n TimeUnit.SECONDSMILLISECONDS,\n];\n//# sourceMappingURL=timeunit.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/timeunit.js\n ** module id = 176\n ** module chunks = 0\n **/","\"use strict\";\nvar Model_1 = require('./Model');\nvar axis_1 = require('./axis');\nvar data_1 = require('./data');\nvar layout_1 = require('./layout');\nvar facet_1 = require('./facet');\nvar legend_1 = require('./legend');\nvar mark_1 = require('./mark/mark');\nvar scale_1 = require('./scale');\nvar common_1 = require('./common');\nvar util_1 = require('../util');\nvar data_2 = require('../data');\nvar channel_1 = require('../channel');\nvar Model_2 = require('./Model');\nexports.Model = Model_2.Model;\nfunction compile(spec) {\n var model = new Model_1.Model(spec);\n var config = model.config();\n var output = util_1.extend(spec.name ? { name: spec.name } : {}, {\n width: 1,\n height: 1,\n padding: 'auto'\n }, config.viewport ? { viewport: config.viewport } : {}, config.background ? { background: config.background } : {}, {\n data: data_1.compileData(model).concat([layout_1.compileLayoutData(model)]),\n marks: [compileRootGroup(model)]\n });\n return {\n spec: output\n };\n}\nexports.compile = compile;\nfunction compileRootGroup(model) {\n var spec = model.spec();\n var rootGroup = util_1.extend({\n name: spec.name ? spec.name + '-root' : 'root',\n type: 'group',\n }, spec.description ? { description: spec.description } : {}, {\n from: { data: data_2.LAYOUT },\n properties: {\n update: {\n width: { field: 'width' },\n height: { field: 'height' }\n }\n }\n });\n var marks = mark_1.compileMark(model);\n if (model.has(channel_1.ROW) || model.has(channel_1.COLUMN)) {\n util_1.extend(rootGroup, facet_1.facetMixins(model, marks));\n }\n else {\n common_1.applyConfig(rootGroup.properties.update, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n rootGroup.marks = marks;\n rootGroup.scales = scale_1.compileScales(model);\n var axes = (model.has(channel_1.X) && model.axis(channel_1.X) ? [axis_1.compileAxis(channel_1.X, model)] : [])\n .concat(model.has(channel_1.Y) && model.axis(channel_1.Y) ? [axis_1.compileAxis(channel_1.Y, model)] : []);\n if (axes.length > 0) {\n rootGroup.axes = axes;\n }\n }\n var legends = legend_1.compileLegends(model);\n if (legends.length > 0) {\n rootGroup.legends = legends;\n }\n return rootGroup;\n}\nexports.compileRootGroup = compileRootGroup;\n//# sourceMappingURL=compile.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/compile.js\n ** module id = 177\n ** module chunks = 0\n **/","\"use strict\";\nvar config_1 = require('../config');\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar fielddef_1 = require('../fielddef');\nvar vlEncoding = require('../encoding');\nvar mark_1 = require('../mark');\nvar type_1 = require('../type');\nvar util_1 = require('../util');\nvar config_2 = require('./config');\nvar stack_1 = require('./stack');\nvar scale_1 = require('./scale');\nvar scale_2 = require('../scale');\nvar aggregate_1 = require('../aggregate');\nvar channel_2 = require('../channel');\n;\nvar Model = (function () {\n function Model(spec) {\n var model = this;\n this._spec = spec;\n var mark = this._spec.mark;\n var encoding = this._spec.encoding = this._spec.encoding || {};\n var config = this._config = util_1.mergeDeep(util_1.duplicate(config_1.defaultConfig), spec.config);\n vlEncoding.forEach(this._spec.encoding, function (fieldDef, channel) {\n if (!channel_1.supportMark(channel, this._spec.mark)) {\n console.warn(channel, 'dropped as it is incompatible with', this._spec.mark);\n delete this._spec.encoding[channel].field;\n }\n if (fieldDef.type) {\n fieldDef.type = type_1.getFullName(fieldDef.type);\n }\n if ((channel === channel_1.PATH || channel === channel_1.ORDER) && !fieldDef.aggregate && fieldDef.type === type_1.QUANTITATIVE) {\n fieldDef.aggregate = aggregate_1.AggregateOp.MIN;\n }\n }, this);\n var scale = this._scale = [channel_1.X, channel_1.Y, channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE, channel_1.ROW, channel_1.COLUMN].reduce(function (_scale, channel) {\n if (vlEncoding.has(encoding, channel)) {\n var channelScale = encoding[channel].scale || {};\n var channelDef = encoding[channel];\n var _scaleType = scale_1.scaleType(channelScale, channelDef, channel, mark);\n if (util_1.contains([channel_1.ROW, channel_1.COLUMN], channel)) {\n _scale[channel] = util_1.extend({\n type: _scaleType,\n round: config.facet.scale.round,\n padding: (channel === channel_1.ROW && model.has(channel_1.Y)) || (channel === channel_1.COLUMN && model.has(channel_1.X)) ?\n config.facet.scale.padding : 0\n }, channelScale);\n }\n else {\n _scale[channel] = util_1.extend({\n type: _scaleType,\n round: config.scale.round,\n padding: config.scale.padding,\n includeRawDomain: config.scale.includeRawDomain,\n bandSize: channel === channel_1.X && _scaleType === scale_2.ScaleType.ORDINAL && mark === mark_1.TEXT ?\n config.scale.textBandWidth : config.scale.bandSize\n }, channelScale);\n }\n }\n return _scale;\n }, {});\n this._axis = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (_axis, channel) {\n if (vlEncoding.has(encoding, channel)) {\n var channelAxis = encoding[channel].axis;\n if (channelAxis !== false) {\n _axis[channel] = util_1.extend({}, channel === channel_1.X || channel === channel_1.Y ? config.axis : config.facet.axis, channelAxis === true ? {} : channelAxis || {});\n }\n }\n return _axis;\n }, {});\n this._legend = [channel_1.COLOR, channel_1.SHAPE, channel_1.SIZE].reduce(function (_legend, channel) {\n if (vlEncoding.has(encoding, channel)) {\n var channelLegend = encoding[channel].legend;\n if (channelLegend !== false) {\n _legend[channel] = util_1.extend({}, config.legend, channelLegend === true ? {} : channelLegend || {});\n }\n }\n return _legend;\n }, {});\n this._stack = stack_1.compileStackProperties(mark, encoding, scale, config);\n this._config.mark = config_2.compileMarkConfig(mark, encoding, config, this._stack);\n }\n Model.prototype.stack = function () {\n return this._stack;\n };\n Model.prototype.toSpec = function (excludeConfig, excludeData) {\n var encoding = util_1.duplicate(this._spec.encoding);\n var spec;\n spec = {\n mark: this._spec.mark,\n encoding: encoding\n };\n if (!excludeConfig) {\n spec.config = util_1.duplicate(this._spec.config);\n }\n if (!excludeData) {\n spec.data = util_1.duplicate(this._spec.data);\n }\n return spec;\n };\n Model.prototype.cellWidth = function () {\n return (this.isFacet() ? this.config().facet.cell.width : null) ||\n this.config().cell.width;\n };\n Model.prototype.cellHeight = function () {\n return (this.isFacet() ? this.config().facet.cell.height : null) ||\n this.config().cell.height;\n };\n Model.prototype.mark = function () {\n return this._spec.mark;\n };\n Model.prototype.spec = function () {\n return this._spec;\n };\n Model.prototype.has = function (channel) {\n return vlEncoding.has(this._spec.encoding, channel);\n };\n Model.prototype.encoding = function () {\n return this._spec.encoding;\n };\n Model.prototype.fieldDef = function (channel) {\n return this._spec.encoding[channel] || {};\n };\n Model.prototype.field = function (channel, opt) {\n if (opt === void 0) { opt = {}; }\n var fieldDef = this.fieldDef(channel);\n var scale = this.scale(channel);\n if (fieldDef.bin) {\n opt = util_1.extend({\n binSuffix: scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL ? '_range' : '_start'\n }, opt);\n }\n return fielddef_1.field(fieldDef, opt);\n };\n Model.prototype.channelWithScales = function () {\n var model = this;\n return channel_2.CHANNELS.filter(function (channel) {\n return !!model.scale(channel);\n });\n };\n Model.prototype.reduce = function (f, init, t) {\n return vlEncoding.reduce(this._spec.encoding, f, init, t);\n };\n Model.prototype.forEach = function (f, t) {\n vlEncoding.forEach(this._spec.encoding, f, t);\n };\n Model.prototype.isOrdinalScale = function (channel) {\n var fieldDef = this.fieldDef(channel);\n var scale = this.scale(channel);\n return this.has(channel) && scale_1.scaleType(scale, fieldDef, channel, this.mark()) === scale_2.ScaleType.ORDINAL;\n };\n Model.prototype.isFacet = function () {\n return this.has(channel_1.ROW) || this.has(channel_1.COLUMN);\n };\n Model.prototype.dataTable = function () {\n return vlEncoding.isAggregate(this._spec.encoding) ? data_1.SUMMARY : data_1.SOURCE;\n };\n Model.prototype.data = function () {\n return this._spec.data;\n };\n Model.prototype.transform = function () {\n return this._spec.transform || {};\n };\n Model.prototype.config = function () {\n return this._config;\n };\n Model.prototype.sort = function (channel) {\n return this._spec.encoding[channel].sort;\n };\n Model.prototype.scale = function (channel) {\n return this._scale[channel];\n };\n Model.prototype.axis = function (channel) {\n return this._axis[channel];\n };\n Model.prototype.legend = function (channel) {\n return this._legend[channel];\n };\n Model.prototype.scaleName = function (channel) {\n var name = this.spec().name;\n return (name ? name + '-' : '') + channel;\n };\n return Model;\n}());\nexports.Model = Model;\n//# sourceMappingURL=Model.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/Model.js\n ** module id = 178\n ** module chunks = 0\n **/","\"use strict\";\nvar scale_1 = require('./scale');\nvar axis_1 = require('./axis');\nvar legend_1 = require('./legend');\nexports.defaultCellConfig = {\n width: 200,\n height: 200\n};\nexports.defaultFacetCellConfig = {\n stroke: '#ccc',\n strokeWidth: 1\n};\nvar defaultFacetGridConfig = {\n color: '#000000',\n opacity: 0.4,\n offset: 0\n};\nexports.defaultFacetConfig = {\n scale: scale_1.defaultFacetScaleConfig,\n axis: axis_1.defaultFacetAxisConfig,\n grid: defaultFacetGridConfig,\n cell: exports.defaultFacetCellConfig\n};\n(function (FontWeight) {\n FontWeight[FontWeight[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n FontWeight[FontWeight[\"BOLD\"] = 'bold'] = \"BOLD\";\n})(exports.FontWeight || (exports.FontWeight = {}));\nvar FontWeight = exports.FontWeight;\n(function (Shape) {\n Shape[Shape[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n Shape[Shape[\"SQUARE\"] = 'square'] = \"SQUARE\";\n Shape[Shape[\"CROSS\"] = 'cross'] = \"CROSS\";\n Shape[Shape[\"DIAMOND\"] = 'diamond'] = \"DIAMOND\";\n Shape[Shape[\"TRIANGLEUP\"] = 'triangle-up'] = \"TRIANGLEUP\";\n Shape[Shape[\"TRIANGLEDOWN\"] = 'triangle-down'] = \"TRIANGLEDOWN\";\n})(exports.Shape || (exports.Shape = {}));\nvar Shape = exports.Shape;\n(function (HorizontalAlign) {\n HorizontalAlign[HorizontalAlign[\"LEFT\"] = 'left'] = \"LEFT\";\n HorizontalAlign[HorizontalAlign[\"RIGHT\"] = 'right'] = \"RIGHT\";\n HorizontalAlign[HorizontalAlign[\"CENTER\"] = 'center'] = \"CENTER\";\n})(exports.HorizontalAlign || (exports.HorizontalAlign = {}));\nvar HorizontalAlign = exports.HorizontalAlign;\n(function (VerticalAlign) {\n VerticalAlign[VerticalAlign[\"TOP\"] = 'top'] = \"TOP\";\n VerticalAlign[VerticalAlign[\"MIDDLE\"] = 'middle'] = \"MIDDLE\";\n VerticalAlign[VerticalAlign[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n})(exports.VerticalAlign || (exports.VerticalAlign = {}));\nvar VerticalAlign = exports.VerticalAlign;\n(function (FontStyle) {\n FontStyle[FontStyle[\"NORMAL\"] = 'normal'] = \"NORMAL\";\n FontStyle[FontStyle[\"ITALIC\"] = 'italic'] = \"ITALIC\";\n})(exports.FontStyle || (exports.FontStyle = {}));\nvar FontStyle = exports.FontStyle;\n(function (StackOffset) {\n StackOffset[StackOffset[\"ZERO\"] = 'zero'] = \"ZERO\";\n StackOffset[StackOffset[\"CENTER\"] = 'center'] = \"CENTER\";\n StackOffset[StackOffset[\"NORMALIZE\"] = 'normalize'] = \"NORMALIZE\";\n StackOffset[StackOffset[\"NONE\"] = 'none'] = \"NONE\";\n})(exports.StackOffset || (exports.StackOffset = {}));\nvar StackOffset = exports.StackOffset;\nexports.defaultMarkConfig = {\n color: '#4682b4',\n strokeWidth: 2,\n size: 30,\n barThinSize: 2,\n tickThickness: 1,\n fontSize: 10,\n baseline: VerticalAlign.MIDDLE,\n text: 'Abc',\n shortTimeLabels: false,\n applyColorToBackground: false\n};\nexports.defaultConfig = {\n numberFormat: 's',\n timeFormat: '%Y-%m-%d',\n cell: exports.defaultCellConfig,\n mark: exports.defaultMarkConfig,\n scale: scale_1.defaultScaleConfig,\n axis: axis_1.defaultAxisConfig,\n legend: legend_1.defaultLegendConfig,\n facet: exports.defaultFacetConfig,\n};\n//# sourceMappingURL=config.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/config.js\n ** module id = 179\n ** module chunks = 0\n **/","\"use strict\";\n(function (ScaleType) {\n ScaleType[ScaleType[\"LINEAR\"] = 'linear'] = \"LINEAR\";\n ScaleType[ScaleType[\"LOG\"] = 'log'] = \"LOG\";\n ScaleType[ScaleType[\"POW\"] = 'pow'] = \"POW\";\n ScaleType[ScaleType[\"SQRT\"] = 'sqrt'] = \"SQRT\";\n ScaleType[ScaleType[\"QUANTILE\"] = 'quantile'] = \"QUANTILE\";\n ScaleType[ScaleType[\"QUANTIZE\"] = 'quantize'] = \"QUANTIZE\";\n ScaleType[ScaleType[\"ORDINAL\"] = 'ordinal'] = \"ORDINAL\";\n ScaleType[ScaleType[\"TIME\"] = 'time'] = \"TIME\";\n ScaleType[ScaleType[\"UTC\"] = 'utc'] = \"UTC\";\n})(exports.ScaleType || (exports.ScaleType = {}));\nvar ScaleType = exports.ScaleType;\n(function (NiceTime) {\n NiceTime[NiceTime[\"SECOND\"] = 'second'] = \"SECOND\";\n NiceTime[NiceTime[\"MINUTE\"] = 'minute'] = \"MINUTE\";\n NiceTime[NiceTime[\"HOUR\"] = 'hour'] = \"HOUR\";\n NiceTime[NiceTime[\"DAY\"] = 'day'] = \"DAY\";\n NiceTime[NiceTime[\"WEEK\"] = 'week'] = \"WEEK\";\n NiceTime[NiceTime[\"MONTH\"] = 'month'] = \"MONTH\";\n NiceTime[NiceTime[\"YEAR\"] = 'year'] = \"YEAR\";\n})(exports.NiceTime || (exports.NiceTime = {}));\nvar NiceTime = exports.NiceTime;\nexports.defaultScaleConfig = {\n round: true,\n textBandWidth: 90,\n bandSize: 21,\n padding: 1,\n includeRawDomain: false,\n nominalColorRange: 'category10',\n sequentialColorRange: ['#AFC6A3', '#09622A'],\n shapeRange: 'shapes',\n fontSizeRange: [8, 40]\n};\nexports.defaultFacetScaleConfig = {\n round: true,\n padding: 16\n};\n//# sourceMappingURL=scale.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/scale.js\n ** module id = 180\n ** module chunks = 0\n **/","\"use strict\";\n(function (AxisOrient) {\n AxisOrient[AxisOrient[\"TOP\"] = 'top'] = \"TOP\";\n AxisOrient[AxisOrient[\"RIGHT\"] = 'right'] = \"RIGHT\";\n AxisOrient[AxisOrient[\"LEFT\"] = 'left'] = \"LEFT\";\n AxisOrient[AxisOrient[\"BOTTOM\"] = 'bottom'] = \"BOTTOM\";\n})(exports.AxisOrient || (exports.AxisOrient = {}));\nvar AxisOrient = exports.AxisOrient;\nexports.defaultAxisConfig = {\n offset: undefined,\n grid: undefined,\n labels: true,\n labelMaxLength: 25,\n tickSize: undefined,\n characterWidth: 6\n};\nexports.defaultFacetAxisConfig = {\n axisWidth: 0,\n labels: true,\n grid: false,\n tickSize: 0\n};\n//# sourceMappingURL=axis.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/axis.js\n ** module id = 181\n ** module chunks = 0\n **/","\"use strict\";\nexports.defaultLegendConfig = {\n orient: undefined,\n shortTimeLabels: false\n};\n//# sourceMappingURL=legend.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/legend.js\n ** module id = 182\n ** module chunks = 0\n **/","\"use strict\";\n(function (Mark) {\n Mark[Mark[\"AREA\"] = 'area'] = \"AREA\";\n Mark[Mark[\"BAR\"] = 'bar'] = \"BAR\";\n Mark[Mark[\"LINE\"] = 'line'] = \"LINE\";\n Mark[Mark[\"POINT\"] = 'point'] = \"POINT\";\n Mark[Mark[\"TEXT\"] = 'text'] = \"TEXT\";\n Mark[Mark[\"TICK\"] = 'tick'] = \"TICK\";\n Mark[Mark[\"CIRCLE\"] = 'circle'] = \"CIRCLE\";\n Mark[Mark[\"SQUARE\"] = 'square'] = \"SQUARE\";\n})(exports.Mark || (exports.Mark = {}));\nvar Mark = exports.Mark;\nexports.AREA = Mark.AREA;\nexports.BAR = Mark.BAR;\nexports.LINE = Mark.LINE;\nexports.POINT = Mark.POINT;\nexports.TEXT = Mark.TEXT;\nexports.TICK = Mark.TICK;\nexports.CIRCLE = Mark.CIRCLE;\nexports.SQUARE = Mark.SQUARE;\n//# sourceMappingURL=mark.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/mark.js\n ** module id = 183\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar encoding_1 = require('../encoding');\nvar fielddef_1 = require('../fielddef');\nvar mark_1 = require('../mark');\nvar util_1 = require('../util');\nfunction compileMarkConfig(mark, encoding, config, stack) {\n return util_1.extend(['filled', 'opacity', 'orient', 'align'].reduce(function (cfg, property) {\n var value = config.mark[property];\n switch (property) {\n case 'filled':\n if (value === undefined) {\n cfg[property] = mark !== mark_1.POINT && mark !== mark_1.LINE;\n }\n break;\n case 'opacity':\n if (value === undefined && util_1.contains([mark_1.POINT, mark_1.TICK, mark_1.CIRCLE, mark_1.SQUARE], mark)) {\n if (!encoding_1.isAggregate(encoding) || encoding_1.has(encoding, channel_1.DETAIL)) {\n cfg[property] = 0.7;\n }\n }\n break;\n case 'orient':\n if (stack) {\n cfg[property] = stack.groupbyChannel === channel_1.Y ? 'horizontal' : undefined;\n }\n if (value === undefined) {\n cfg[property] = fielddef_1.isMeasure(encoding[channel_1.X]) && !fielddef_1.isMeasure(encoding[channel_1.Y]) ?\n 'horizontal' :\n undefined;\n }\n break;\n case 'align':\n if (value === undefined) {\n cfg[property] = encoding_1.has(encoding, channel_1.X) ? 'center' : 'right';\n }\n }\n return cfg;\n }, {}), config.mark);\n}\nexports.compileMarkConfig = compileMarkConfig;\n//# sourceMappingURL=config.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/config.js\n ** module id = 184\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar scale_1 = require('../scale');\nvar config_1 = require('../config');\nvar mark_1 = require('../mark');\nvar fielddef_1 = require('../fielddef');\nvar encoding_1 = require('../encoding');\nvar util_1 = require('../util');\nvar common_1 = require('./common');\nvar scale_2 = require('./scale');\nfunction compileStackProperties(mark, encoding, scale, config) {\n var stackFields = getStackFields(mark, encoding, scale);\n if (stackFields.length > 0 &&\n util_1.contains([mark_1.BAR, mark_1.AREA], mark) &&\n config.mark.stacked !== config_1.StackOffset.NONE &&\n encoding_1.isAggregate(encoding)) {\n var isXMeasure = encoding_1.has(encoding, channel_1.X) && fielddef_1.isMeasure(encoding.x), isYMeasure = encoding_1.has(encoding, channel_1.Y) && fielddef_1.isMeasure(encoding.y);\n if (isXMeasure && !isYMeasure) {\n return {\n groupbyChannel: channel_1.Y,\n fieldChannel: channel_1.X,\n stackFields: stackFields,\n offset: config.mark.stacked\n };\n }\n else if (isYMeasure && !isXMeasure) {\n return {\n groupbyChannel: channel_1.X,\n fieldChannel: channel_1.Y,\n stackFields: stackFields,\n offset: config.mark.stacked\n };\n }\n }\n return null;\n}\nexports.compileStackProperties = compileStackProperties;\nfunction getStackFields(mark, encoding, scale) {\n return [channel_1.COLOR, channel_1.DETAIL].reduce(function (fields, channel) {\n var channelEncoding = encoding[channel];\n if (encoding_1.has(encoding, channel)) {\n if (util_1.isArray(channelEncoding)) {\n channelEncoding.forEach(function (fieldDef) {\n fields.push(fielddef_1.field(fieldDef));\n });\n }\n else {\n var fieldDef = channelEncoding;\n fields.push(fielddef_1.field(fieldDef, {\n binSuffix: scale_2.scaleType(scale[channel], fieldDef, channel, mark) === scale_1.ScaleType.ORDINAL ? '_range' : '_start'\n }));\n }\n }\n return fields;\n }, []);\n}\nfunction imputeTransform(model) {\n var stack = model.stack();\n return {\n type: 'impute',\n field: model.field(stack.fieldChannel),\n groupby: stack.stackFields,\n orderby: [model.field(stack.groupbyChannel)],\n method: 'value',\n value: 0\n };\n}\nexports.imputeTransform = imputeTransform;\nfunction stackTransform(model) {\n var stack = model.stack();\n var encoding = model.encoding();\n var sortby = model.has(channel_1.ORDER) ?\n (util_1.isArray(encoding[channel_1.ORDER]) ? encoding[channel_1.ORDER] : [encoding[channel_1.ORDER]]).map(common_1.sortField) :\n stack.stackFields.map(function (field) {\n return '-' + field;\n });\n var valName = model.field(stack.fieldChannel);\n var transform = {\n type: 'stack',\n groupby: [model.field(stack.groupbyChannel)],\n field: model.field(stack.fieldChannel),\n sortby: sortby,\n output: {\n start: valName + '_start',\n end: valName + '_end'\n }\n };\n if (stack.offset) {\n transform.offset = stack.offset;\n }\n return transform;\n}\nexports.stackTransform = stackTransform;\n//# sourceMappingURL=stack.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/stack.js\n ** module id = 185\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar sort_1 = require('../sort');\nvar type_1 = require('../type');\nvar time_1 = require('./time');\nvar util_1 = require('../util');\nexports.FILL_STROKE_CONFIG = ['fill', 'fillOpacity',\n 'stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity',\n 'opacity'];\nfunction applyColorAndOpacity(p, model) {\n var filled = model.config().mark.filled;\n var fieldDef = model.fieldDef(channel_1.COLOR);\n applyMarkConfig(p, model, exports.FILL_STROKE_CONFIG);\n var value;\n if (model.has(channel_1.COLOR)) {\n value = {\n scale: model.scaleName(channel_1.COLOR),\n field: model.field(channel_1.COLOR, fieldDef.type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n };\n }\n else if (fieldDef && fieldDef.value) {\n value = { value: fieldDef.value };\n }\n if (value !== undefined) {\n if (filled) {\n p.fill = value;\n }\n else {\n p.stroke = value;\n }\n }\n else {\n p[filled ? 'fill' : 'stroke'] = p[filled ? 'fill' : 'stroke'] ||\n { value: model.config().mark.color };\n }\n}\nexports.applyColorAndOpacity = applyColorAndOpacity;\nfunction applyConfig(properties, config, propsList) {\n propsList.forEach(function (property) {\n var value = config[property];\n if (value !== undefined) {\n properties[property] = { value: value };\n }\n });\n}\nexports.applyConfig = applyConfig;\nfunction applyMarkConfig(marksProperties, model, propsList) {\n applyConfig(marksProperties, model.config().mark, propsList);\n}\nexports.applyMarkConfig = applyMarkConfig;\nfunction formatMixins(model, channel, format) {\n var fieldDef = model.fieldDef(channel);\n if (!util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], fieldDef.type)) {\n return {};\n }\n var def = {};\n if (fieldDef.type === type_1.TEMPORAL) {\n def.formatType = 'time';\n }\n if (format !== undefined) {\n def.format = format;\n }\n else {\n switch (fieldDef.type) {\n case type_1.QUANTITATIVE:\n def.format = model.config().numberFormat;\n break;\n case type_1.TEMPORAL:\n def.format = timeFormat(model, channel) || model.config().timeFormat;\n break;\n }\n }\n if (channel === channel_1.TEXT) {\n var filter = (def.formatType || 'number') + (def.format ? ':\\'' + def.format + '\\'' : '');\n return {\n text: {\n template: '{{' + model.field(channel, { datum: true }) + ' | ' + filter + '}}'\n }\n };\n }\n return def;\n}\nexports.formatMixins = formatMixins;\nfunction isAbbreviated(model, channel, fieldDef) {\n switch (channel) {\n case channel_1.ROW:\n case channel_1.COLUMN:\n case channel_1.X:\n case channel_1.Y:\n return model.axis(channel).shortTimeLabels;\n case channel_1.COLOR:\n case channel_1.SHAPE:\n case channel_1.SIZE:\n return model.legend(channel).shortTimeLabels;\n case channel_1.TEXT:\n return model.config().mark.shortTimeLabels;\n case channel_1.LABEL:\n }\n return false;\n}\nfunction sortField(orderChannelDef) {\n return (orderChannelDef.sort === sort_1.SortOrder.DESCENDING ? '-' : '') + fielddef_1.field(orderChannelDef);\n}\nexports.sortField = sortField;\nfunction timeFormat(model, channel) {\n var fieldDef = model.fieldDef(channel);\n return time_1.format(fieldDef.timeUnit, isAbbreviated(model, channel, fieldDef));\n}\nexports.timeFormat = timeFormat;\n//# sourceMappingURL=common.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/common.js\n ** module id = 186\n ** module chunks = 0\n **/","\"use strict\";\n(function (SortOrder) {\n SortOrder[SortOrder[\"ASCENDING\"] = 'ascending'] = \"ASCENDING\";\n SortOrder[SortOrder[\"DESCENDING\"] = 'descending'] = \"DESCENDING\";\n SortOrder[SortOrder[\"NONE\"] = 'none'] = \"NONE\";\n})(exports.SortOrder || (exports.SortOrder = {}));\nvar SortOrder = exports.SortOrder;\n//# sourceMappingURL=sort.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/sort.js\n ** module id = 187\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('../util');\nvar channel_1 = require('../channel');\nvar timeunit_1 = require('../timeunit');\nfunction format(timeUnit, abbreviated) {\n if (abbreviated === void 0) { abbreviated = false; }\n if (!timeUnit) {\n return undefined;\n }\n var timeString = timeUnit.toString();\n var dateComponents = [];\n if (timeString.indexOf('year') > -1) {\n dateComponents.push(abbreviated ? '%y' : '%Y');\n }\n if (timeString.indexOf('month') > -1) {\n dateComponents.push(abbreviated ? '%b' : '%B');\n }\n if (timeString.indexOf('day') > -1) {\n dateComponents.push(abbreviated ? '%a' : '%A');\n }\n else if (timeString.indexOf('date') > -1) {\n dateComponents.push('%d');\n }\n var timeComponents = [];\n if (timeString.indexOf('hours') > -1) {\n timeComponents.push('%H');\n }\n if (timeString.indexOf('minutes') > -1) {\n timeComponents.push('%M');\n }\n if (timeString.indexOf('seconds') > -1) {\n timeComponents.push('%S');\n }\n if (timeString.indexOf('milliseconds') > -1) {\n timeComponents.push('%L');\n }\n var out = [];\n if (dateComponents.length > 0) {\n out.push(dateComponents.join('-'));\n }\n if (timeComponents.length > 0) {\n out.push(timeComponents.join(':'));\n }\n return out.length > 0 ? out.join(' ') : undefined;\n}\nexports.format = format;\nfunction smallestUnit(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n if (timeUnit.indexOf('second') > -1) {\n return 'second';\n }\n if (timeUnit.indexOf('minute') > -1) {\n return 'minute';\n }\n if (timeUnit.indexOf('hour') > -1) {\n return 'hour';\n }\n if (timeUnit.indexOf('day') > -1 || timeUnit.indexOf('date') > -1) {\n return 'day';\n }\n if (timeUnit.indexOf('month') > -1) {\n return 'month';\n }\n if (timeUnit.indexOf('year') > -1) {\n return 'year';\n }\n return undefined;\n}\nexports.smallestUnit = smallestUnit;\nfunction parseExpression(timeUnit, fieldRef, onlyRef) {\n if (onlyRef === void 0) { onlyRef = false; }\n var out = 'datetime(';\n var timeString = timeUnit.toString();\n function get(fun, addComma) {\n if (addComma === void 0) { addComma = true; }\n if (onlyRef) {\n return fieldRef + (addComma ? ', ' : '');\n }\n else {\n return fun + '(' + fieldRef + ')' + (addComma ? ', ' : '');\n }\n }\n if (timeString.indexOf('year') > -1) {\n out += get('year');\n }\n else {\n out += '2006, ';\n }\n if (timeString.indexOf('month') > -1) {\n out += get('month');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('day') > -1) {\n out += get('day', false) + '+1, ';\n }\n else if (timeString.indexOf('date') > -1) {\n out += get('date');\n }\n else {\n out += '1, ';\n }\n if (timeString.indexOf('hours') > -1) {\n out += get('hours');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('minutes') > -1) {\n out += get('minutes');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('seconds') > -1) {\n out += get('seconds');\n }\n else {\n out += '0, ';\n }\n if (timeString.indexOf('milliseconds') > -1) {\n out += get('milliseconds', false);\n }\n else {\n out += '0';\n }\n return out + ')';\n}\nexports.parseExpression = parseExpression;\nfunction rawDomain(timeUnit, channel) {\n if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE, channel_1.COLOR], channel)) {\n return null;\n }\n switch (timeUnit) {\n case timeunit_1.TimeUnit.SECONDS:\n return util_1.range(0, 60);\n case timeunit_1.TimeUnit.MINUTES:\n return util_1.range(0, 60);\n case timeunit_1.TimeUnit.HOURS:\n return util_1.range(0, 24);\n case timeunit_1.TimeUnit.DAY:\n return util_1.range(0, 7);\n case timeunit_1.TimeUnit.DATE:\n return util_1.range(1, 32);\n case timeunit_1.TimeUnit.MONTH:\n return util_1.range(0, 12);\n }\n return null;\n}\nexports.rawDomain = rawDomain;\n//# sourceMappingURL=time.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/time.js\n ** module id = 188\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('../util');\nvar aggregate_1 = require('../aggregate');\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar type_1 = require('../type');\nvar mark_1 = require('../mark');\nvar time_1 = require('./time');\nvar scale_1 = require('../scale');\nvar config_1 = require('../config');\nvar timeunit_1 = require('../timeunit');\nvar fielddef_1 = require('../fielddef');\nexports.COLOR_LEGEND = 'color_legend';\nexports.COLOR_LEGEND_LABEL = 'color_legend_label';\nfunction compileScales(model) {\n return model.channelWithScales().reduce(function (scales, channel) {\n var fieldDef = model.fieldDef(channel);\n if (channel === channel_1.COLOR && model.legend(channel_1.COLOR) && (fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit)) {\n scales.push(colorLegendScale(model, fieldDef));\n if (fieldDef.bin) {\n scales.push(binColorLegendLabel(model, fieldDef));\n }\n }\n scales.push(mainScale(model, fieldDef, channel));\n return scales;\n }, []);\n}\nexports.compileScales = compileScales;\nfunction mainScale(model, fieldDef, channel) {\n var scale = model.scale(channel);\n var sort = model.sort(channel);\n var scaleDef = {\n name: model.scaleName(channel),\n type: scaleType(scale, fieldDef, channel, model.mark()),\n };\n scaleDef.domain = domain(scale, model, channel, scaleDef.type);\n util_1.extend(scaleDef, rangeMixins(scale, model, channel, scaleDef.type));\n if (sort && (typeof sort === 'string' ? sort : sort.order) === 'descending') {\n scaleDef.reverse = true;\n }\n [\n 'round',\n 'clamp', 'nice',\n 'exponent', 'zero',\n 'padding', 'points'\n ].forEach(function (property) {\n var value = exports[property](scale[property], scaleDef.type, channel, fieldDef);\n if (value !== undefined) {\n scaleDef[property] = value;\n }\n });\n return scaleDef;\n}\nfunction colorLegendScale(model, fieldDef) {\n return {\n name: model.scaleName(exports.COLOR_LEGEND),\n type: 'ordinal',\n domain: {\n data: model.dataTable(),\n field: model.field(channel_1.COLOR, (fieldDef.bin || fieldDef.timeUnit) ? {} : { prefn: 'rank_' }), sort: true\n },\n range: { data: model.dataTable(), field: model.field(channel_1.COLOR), sort: true }\n };\n}\nfunction binColorLegendLabel(model, fieldDef) {\n return {\n name: model.scaleName(exports.COLOR_LEGEND_LABEL),\n type: 'ordinal',\n domain: {\n data: model.dataTable(),\n field: model.field(channel_1.COLOR, { prefn: 'rank_' }),\n sort: true\n },\n range: {\n data: model.dataTable(),\n field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n sort: {\n field: model.field(channel_1.COLOR, { binSuffix: '_start' }),\n op: 'min'\n }\n }\n };\n}\nfunction scaleType(scale, fieldDef, channel, mark) {\n if (!channel_1.hasScale(channel)) {\n return null;\n }\n if (util_1.contains([channel_1.ROW, channel_1.COLUMN, channel_1.SHAPE], channel)) {\n return scale_1.ScaleType.ORDINAL;\n }\n if (scale.type !== undefined) {\n return scale.type;\n }\n switch (fieldDef.type) {\n case type_1.NOMINAL:\n return scale_1.ScaleType.ORDINAL;\n case type_1.ORDINAL:\n if (channel === channel_1.COLOR) {\n return scale_1.ScaleType.LINEAR;\n }\n return scale_1.ScaleType.ORDINAL;\n case type_1.TEMPORAL:\n if (channel === channel_1.COLOR) {\n return scale_1.ScaleType.TIME;\n }\n if (fieldDef.timeUnit) {\n switch (fieldDef.timeUnit) {\n case timeunit_1.TimeUnit.HOURS:\n case timeunit_1.TimeUnit.DAY:\n case timeunit_1.TimeUnit.MONTH:\n return scale_1.ScaleType.ORDINAL;\n default:\n return scale_1.ScaleType.TIME;\n }\n }\n return scale_1.ScaleType.TIME;\n case type_1.QUANTITATIVE:\n if (fieldDef.bin) {\n return util_1.contains([channel_1.X, channel_1.Y, channel_1.COLOR], channel) ? scale_1.ScaleType.LINEAR : scale_1.ScaleType.ORDINAL;\n }\n return scale_1.ScaleType.LINEAR;\n }\n return null;\n}\nexports.scaleType = scaleType;\nfunction domain(scale, model, channel, scaleType) {\n var fieldDef = model.fieldDef(channel);\n if (scale.domain) {\n return scale.domain;\n }\n if (fieldDef.type === type_1.TEMPORAL) {\n if (time_1.rawDomain(fieldDef.timeUnit, channel)) {\n return {\n data: fieldDef.timeUnit,\n field: 'date'\n };\n }\n return {\n data: model.dataTable(),\n field: model.field(channel),\n sort: {\n field: model.field(channel),\n op: 'min'\n }\n };\n }\n var stack = model.stack();\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === config_1.StackOffset.NORMALIZE) {\n return [0, 1];\n }\n return {\n data: data_1.STACKED_SCALE,\n field: model.field(channel, { prefn: 'sum_' })\n };\n }\n var includeRawDomain = _includeRawDomain(scale, model, channel, scaleType), sort = domainSort(model, channel, scaleType);\n if (includeRawDomain) {\n return {\n data: data_1.SOURCE,\n field: model.field(channel, { noAggregate: true })\n };\n }\n else if (fieldDef.bin) {\n return scaleType === scale_1.ScaleType.ORDINAL ? {\n data: model.dataTable(),\n field: model.field(channel, { binSuffix: '_range' }),\n sort: {\n field: model.field(channel, { binSuffix: '_start' }),\n op: 'min'\n }\n } : channel === channel_1.COLOR ? {\n data: model.dataTable(),\n field: model.field(channel, { binSuffix: '_start' })\n } : {\n data: model.dataTable(),\n field: [\n model.field(channel, { binSuffix: '_start' }),\n model.field(channel, { binSuffix: '_end' })\n ]\n };\n }\n else if (sort) {\n return {\n data: sort.op ? data_1.SOURCE : model.dataTable(),\n field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n sort: sort\n };\n }\n else {\n return {\n data: model.dataTable(),\n field: (fieldDef.type === type_1.ORDINAL && channel === channel_1.COLOR) ? model.field(channel, { prefn: 'rank_' }) : model.field(channel),\n };\n }\n}\nexports.domain = domain;\nfunction domainSort(model, channel, scaleType) {\n if (scaleType !== scale_1.ScaleType.ORDINAL) {\n return undefined;\n }\n var sort = model.sort(channel);\n if (util_1.contains(['ascending', 'descending', undefined], sort)) {\n return true;\n }\n if (typeof sort !== 'string') {\n return {\n op: sort.op,\n field: sort.field\n };\n }\n return undefined;\n}\nexports.domainSort = domainSort;\nfunction _includeRawDomain(scale, model, channel, scaleType) {\n var fieldDef = model.fieldDef(channel);\n return scale.includeRawDomain &&\n fieldDef.aggregate &&\n aggregate_1.SHARED_DOMAIN_OPS.indexOf(fieldDef.aggregate) >= 0 &&\n ((fieldDef.type === type_1.QUANTITATIVE && !fieldDef.bin) ||\n (fieldDef.type === type_1.TEMPORAL && util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)));\n}\nfunction rangeMixins(scale, model, channel, scaleType) {\n var fieldDef = model.fieldDef(channel), scaleConfig = model.config().scale;\n if (scaleType === scale_1.ScaleType.ORDINAL && scale.bandSize && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n return { bandSize: scale.bandSize };\n }\n if (scale.range && !util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN], channel)) {\n return { range: scale.range };\n }\n switch (channel) {\n case channel_1.X:\n return {\n rangeMin: 0,\n rangeMax: model.cellWidth()\n };\n case channel_1.Y:\n return {\n rangeMin: model.cellHeight(),\n rangeMax: 0\n };\n case channel_1.SIZE:\n if (model.mark() === mark_1.BAR) {\n if (scaleConfig.barSizeRange !== undefined) {\n return { range: scaleConfig.barSizeRange };\n }\n var dimension = model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X;\n return { range: [model.config().mark.barThinSize, model.scale(dimension).bandSize] };\n }\n else if (model.mark() === mark_1.TEXT) {\n return { range: scaleConfig.fontSizeRange };\n }\n if (scaleConfig.pointSizeRange !== undefined) {\n return { range: scaleConfig.pointSizeRange };\n }\n var xIsMeasure = fielddef_1.isMeasure(model.encoding().x);\n var yIsMeasure = fielddef_1.isMeasure(model.encoding().y);\n var bandSize = xIsMeasure !== yIsMeasure ?\n model.scale(xIsMeasure ? channel_1.Y : channel_1.X).bandSize :\n Math.min(model.scale(channel_1.X).bandSize || scaleConfig.bandSize, model.scale(channel_1.Y).bandSize || scaleConfig.bandSize);\n return { range: [9, (bandSize - 2) * (bandSize - 2)] };\n case channel_1.SHAPE:\n return { range: scaleConfig.shapeRange };\n case channel_1.COLOR:\n if (fieldDef.type === type_1.NOMINAL) {\n return { range: scaleConfig.nominalColorRange };\n }\n return { range: scaleConfig.sequentialColorRange };\n case channel_1.ROW:\n return { range: 'height' };\n case channel_1.COLUMN:\n return { range: 'width' };\n }\n return {};\n}\nexports.rangeMixins = rangeMixins;\nfunction clamp(prop, scaleType) {\n if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT,\n scale_1.ScaleType.LOG, scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n return prop;\n }\n return undefined;\n}\nexports.clamp = clamp;\nfunction exponent(prop, scaleType) {\n if (scaleType === scale_1.ScaleType.POW) {\n return prop;\n }\n return undefined;\n}\nexports.exponent = exponent;\nfunction nice(prop, scaleType, channel, fieldDef) {\n if (util_1.contains([scale_1.ScaleType.LINEAR, scale_1.ScaleType.POW, scale_1.ScaleType.SQRT, scale_1.ScaleType.LOG,\n scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.QUANTIZE], scaleType)) {\n if (prop !== undefined) {\n return prop;\n }\n if (util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n return time_1.smallestUnit(fieldDef.timeUnit);\n }\n return util_1.contains([channel_1.X, channel_1.Y], channel);\n }\n return undefined;\n}\nexports.nice = nice;\nfunction padding(prop, scaleType, channel) {\n if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n return prop;\n }\n return undefined;\n}\nexports.padding = padding;\nfunction points(__, scaleType, channel) {\n if (scaleType === scale_1.ScaleType.ORDINAL && util_1.contains([channel_1.X, channel_1.Y], channel)) {\n return true;\n }\n return undefined;\n}\nexports.points = points;\nfunction round(prop, scaleType, channel) {\n if (util_1.contains([channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN, channel_1.SIZE], channel) && prop !== undefined) {\n return prop;\n }\n return undefined;\n}\nexports.round = round;\nfunction zero(prop, scaleType, channel, fieldDef) {\n if (!util_1.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC, scale_1.ScaleType.ORDINAL], scaleType)) {\n if (prop !== undefined) {\n return prop;\n }\n return !fieldDef.bin && util_1.contains([channel_1.X, channel_1.Y], channel);\n }\n return undefined;\n}\nexports.zero = zero;\n//# sourceMappingURL=scale.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/scale.js\n ** module id = 189\n ** module chunks = 0\n **/","\"use strict\";\nvar axis_1 = require('../axis');\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar type_1 = require('../type');\nvar util_1 = require('../util');\nvar common_1 = require('./common');\nfunction compileInnerAxis(channel, model) {\n var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n var def = {\n type: type,\n scale: model.scaleName(channel),\n grid: true,\n tickSize: 0,\n properties: {\n labels: {\n text: { value: '' }\n },\n axis: {\n stroke: { value: 'transparent' }\n }\n }\n };\n var axis = model.axis(channel);\n ['layer', 'ticks', 'values', 'subdivide'].forEach(function (property) {\n var method;\n var value = (method = exports[property]) ?\n method(model, channel, def) :\n axis[property];\n if (value !== undefined) {\n def[property] = value;\n }\n });\n return def;\n}\nexports.compileInnerAxis = compileInnerAxis;\nfunction compileAxis(channel, model) {\n var isCol = channel === channel_1.COLUMN, isRow = channel === channel_1.ROW, type = isCol ? 'x' : isRow ? 'y' : channel;\n var axis = model.axis(channel);\n var def = {\n type: type,\n scale: model.scaleName(channel)\n };\n util_1.extend(def, common_1.formatMixins(model, channel, model.axis(channel).format));\n [\n 'grid', 'layer', 'offset', 'orient', 'tickSize', 'ticks', 'title',\n 'tickPadding', 'tickSize', 'tickSizeMajor', 'tickSizeMinor', 'tickSizeEnd',\n 'titleOffset', 'values', 'subdivide'\n ].forEach(function (property) {\n var method;\n var value = (method = exports[property]) ?\n method(model, channel, def) :\n axis[property];\n if (value !== undefined) {\n def[property] = value;\n }\n });\n var props = model.axis(channel).properties || {};\n [\n 'axis', 'labels',\n 'grid', 'title', 'ticks', 'majorTicks', 'minorTicks'\n ].forEach(function (group) {\n var value = properties[group] ?\n properties[group](model, channel, props[group] || {}, def) :\n props[group];\n if (value !== undefined) {\n def.properties = def.properties || {};\n def.properties[group] = value;\n }\n });\n return def;\n}\nexports.compileAxis = compileAxis;\nfunction offset(model, channel) {\n return model.axis(channel).offset;\n}\nexports.offset = offset;\nfunction gridShow(model, channel) {\n var grid = model.axis(channel).grid;\n if (grid !== undefined) {\n return grid;\n }\n return !model.isOrdinalScale(channel) && !model.fieldDef(channel).bin;\n}\nexports.gridShow = gridShow;\nfunction grid(model, channel) {\n if (channel === channel_1.ROW || channel === channel_1.COLUMN) {\n return undefined;\n }\n return gridShow(model, channel) && ((channel === channel_1.Y || channel === channel_1.X) && !(model.has(channel_1.COLUMN) || model.has(channel_1.ROW)));\n}\nexports.grid = grid;\nfunction layer(model, channel, def) {\n var layer = model.axis(channel).layer;\n if (layer !== undefined) {\n return layer;\n }\n if (def.grid) {\n return 'back';\n }\n return undefined;\n}\nexports.layer = layer;\n;\nfunction orient(model, channel) {\n var orient = model.axis(channel).orient;\n if (orient) {\n return orient;\n }\n else if (channel === channel_1.COLUMN) {\n return axis_1.AxisOrient.TOP;\n }\n else if (channel === channel_1.ROW) {\n if (model.has(channel_1.Y) && model.axis(channel_1.Y).orient !== axis_1.AxisOrient.RIGHT) {\n return axis_1.AxisOrient.RIGHT;\n }\n }\n return undefined;\n}\nexports.orient = orient;\nfunction ticks(model, channel) {\n var ticks = model.axis(channel).ticks;\n if (ticks !== undefined) {\n return ticks;\n }\n if (channel === channel_1.X && !model.fieldDef(channel).bin) {\n return 5;\n }\n return undefined;\n}\nexports.ticks = ticks;\nfunction tickSize(model, channel) {\n var tickSize = model.axis(channel).tickSize;\n if (tickSize !== undefined) {\n return tickSize;\n }\n return undefined;\n}\nexports.tickSize = tickSize;\nfunction title(model, channel) {\n var axis = model.axis(channel);\n if (axis.title !== undefined) {\n return axis.title;\n }\n var fieldTitle = fielddef_1.title(model.fieldDef(channel));\n var maxLength;\n if (axis.titleMaxLength) {\n maxLength = axis.titleMaxLength;\n }\n else if (channel === channel_1.X && !model.isOrdinalScale(channel_1.X)) {\n maxLength = model.cellWidth() / model.axis(channel_1.X).characterWidth;\n }\n else if (channel === channel_1.Y && !model.isOrdinalScale(channel_1.Y)) {\n maxLength = model.cellHeight() / model.axis(channel_1.Y).characterWidth;\n }\n return maxLength ? util_1.truncate(fieldTitle, maxLength) : fieldTitle;\n}\nexports.title = title;\nvar properties;\n(function (properties) {\n function axis(model, channel, axisPropsSpec, def) {\n var axis = model.axis(channel);\n return util_1.extend(axis.axisWidth !== undefined ?\n { strokeWidth: { value: axis.axisWidth } } :\n {}, axisPropsSpec || {});\n }\n properties.axis = axis;\n function labels(model, channel, labelsSpec, def) {\n var fieldDef = model.fieldDef(channel);\n var axis = model.axis(channel);\n if (!axis.labels) {\n return util_1.extend({\n text: ''\n }, labelsSpec);\n }\n if (util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type) && axis.labelMaxLength) {\n labelsSpec = util_1.extend({\n text: {\n template: '{{ datum.data | truncate:' + axis.labelMaxLength + '}}'\n }\n }, labelsSpec || {});\n }\n if (axis.labelAngle !== undefined) {\n labelsSpec.angle = { value: axis.labelAngle };\n }\n else {\n if (channel === channel_1.X && (fielddef_1.isDimension(fieldDef) || fieldDef.type === type_1.TEMPORAL)) {\n labelsSpec.angle = { value: 270 };\n }\n else if (channel === channel_1.ROW && model.has(channel_1.X)) {\n labelsSpec.angle = { value: def.orient === 'left' ? 270 : 90 };\n }\n }\n if (axis.labelAlign !== undefined) {\n labelsSpec.align = { value: axis.labelAlign };\n }\n else {\n if (labelsSpec.angle) {\n if (labelsSpec.angle.value === 270) {\n labelsSpec.align = {\n value: def.orient === 'top' ? 'left' :\n def.type === 'x' ? 'right' :\n 'center'\n };\n }\n else if (labelsSpec.angle.value === 90) {\n labelsSpec.align = { value: 'center' };\n }\n }\n }\n if (axis.labelBaseline !== undefined) {\n labelsSpec.baseline = { value: axis.labelBaseline };\n }\n else {\n if (labelsSpec.angle) {\n if (labelsSpec.angle.value === 270) {\n labelsSpec.baseline = { value: def.type === 'x' ? 'middle' : 'bottom' };\n }\n else if (labelsSpec.angle.value === 90) {\n labelsSpec.baseline = { value: 'bottom' };\n }\n }\n }\n return labelsSpec || undefined;\n }\n properties.labels = labels;\n})(properties = exports.properties || (exports.properties = {}));\n//# sourceMappingURL=axis.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/axis.js\n ** module id = 190\n ** module chunks = 0\n **/","\"use strict\";\nvar vlFieldDef = require('../fielddef');\nvar util_1 = require('../util');\nvar scale_1 = require('../scale');\nvar bin_1 = require('../bin');\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar fielddef_1 = require('../fielddef');\nvar type_1 = require('../type');\nvar scale_2 = require('./scale');\nvar time_1 = require('./time');\nvar aggregate_1 = require('../aggregate');\nvar DEFAULT_NULL_FILTERS = {\n nominal: false,\n ordinal: false,\n quantitative: true,\n temporal: true\n};\nfunction compileData(model) {\n var def = [source.def(model)];\n var summaryDef = summary.def(model);\n if (summaryDef) {\n def.push(summaryDef);\n }\n rankTransform(def[def.length - 1], model);\n filterNonPositiveForLog(def[def.length - 1], model);\n var stackDef = model.stack();\n if (stackDef) {\n def.push(stack.def(model, stackDef));\n }\n return def.concat(dates.defs(model));\n}\nexports.compileData = compileData;\nvar source;\n(function (source_1) {\n function def(model) {\n var source = { name: data_1.SOURCE };\n var data = model.data();\n if (data) {\n if (data.values && data.values.length > 0) {\n source.values = model.data().values;\n source.format = { type: 'json' };\n }\n else if (data.url) {\n source.url = data.url;\n var defaultExtension = /(?:\\.([^.]+))?$/.exec(source.url)[1];\n if (!util_1.contains(['json', 'csv', 'tsv'], defaultExtension)) {\n defaultExtension = 'json';\n }\n source.format = { type: model.data().formatType || defaultExtension };\n }\n }\n var parse = formatParse(model);\n if (parse) {\n source.format = source.format || {};\n source.format.parse = parse;\n }\n source.transform = transform(model);\n return source;\n }\n source_1.def = def;\n function formatParse(model) {\n var calcFieldMap = (model.transform().calculate || []).reduce(function (fieldMap, formula) {\n fieldMap[formula.field] = true;\n return fieldMap;\n }, {});\n var parse;\n model.forEach(function (fieldDef) {\n if (fieldDef.type === type_1.TEMPORAL) {\n parse = parse || {};\n parse[fieldDef.field] = 'date';\n }\n else if (fieldDef.type === type_1.QUANTITATIVE) {\n if (vlFieldDef.isCount(fieldDef) || calcFieldMap[fieldDef.field]) {\n return;\n }\n parse = parse || {};\n parse[fieldDef.field] = 'number';\n }\n });\n return parse;\n }\n function transform(model) {\n return nullFilterTransform(model).concat(formulaTransform(model), filterTransform(model), binTransform(model), timeTransform(model));\n }\n source_1.transform = transform;\n function timeTransform(model) {\n return model.reduce(function (transform, fieldDef, channel) {\n var ref = fielddef_1.field(fieldDef, { nofn: true, datum: true });\n if (fieldDef.type === type_1.TEMPORAL && fieldDef.timeUnit) {\n transform.push({\n type: 'formula',\n field: fielddef_1.field(fieldDef),\n expr: time_1.parseExpression(fieldDef.timeUnit, ref)\n });\n }\n return transform;\n }, []);\n }\n source_1.timeTransform = timeTransform;\n function binTransform(model) {\n return model.reduce(function (transform, fieldDef, channel) {\n var bin = model.fieldDef(channel).bin;\n var scale = model.scale(channel);\n if (bin) {\n var binTrans = util_1.extend({\n type: 'bin',\n field: fieldDef.field,\n output: {\n start: fielddef_1.field(fieldDef, { binSuffix: '_start' }),\n mid: fielddef_1.field(fieldDef, { binSuffix: '_mid' }),\n end: fielddef_1.field(fieldDef, { binSuffix: '_end' })\n }\n }, typeof bin === 'boolean' ? {} : bin);\n if (!binTrans.maxbins && !binTrans.step) {\n binTrans.maxbins = bin_1.autoMaxBins(channel);\n }\n transform.push(binTrans);\n if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL || channel === channel_1.COLOR) {\n transform.push({\n type: 'formula',\n field: fielddef_1.field(fieldDef, { binSuffix: '_range' }),\n expr: fielddef_1.field(fieldDef, { datum: true, binSuffix: '_start' }) +\n ' + \\'-\\' + ' +\n fielddef_1.field(fieldDef, { datum: true, binSuffix: '_end' })\n });\n }\n }\n return transform;\n }, []);\n }\n source_1.binTransform = binTransform;\n function nullFilterTransform(model) {\n var filterNull = model.transform().filterNull;\n var filteredFields = util_1.keys(model.reduce(function (aggregator, fieldDef) {\n if (filterNull ||\n (filterNull === undefined && fieldDef.field && fieldDef.field !== '*' && DEFAULT_NULL_FILTERS[fieldDef.type])) {\n aggregator[fieldDef.field] = true;\n }\n return aggregator;\n }, {}));\n return filteredFields.length > 0 ?\n [{\n type: 'filter',\n test: filteredFields.map(function (fieldName) {\n return 'datum.' + fieldName + '!==null';\n }).join(' && ')\n }] : [];\n }\n source_1.nullFilterTransform = nullFilterTransform;\n function filterTransform(model) {\n var filter = model.transform().filter;\n return filter ? [{\n type: 'filter',\n test: filter\n }] : [];\n }\n source_1.filterTransform = filterTransform;\n function formulaTransform(model) {\n return (model.transform().calculate || []).reduce(function (transform, formula) {\n transform.push(util_1.extend({ type: 'formula' }, formula));\n return transform;\n }, []);\n }\n source_1.formulaTransform = formulaTransform;\n})(source = exports.source || (exports.source = {}));\nvar summary;\n(function (summary) {\n function def(model) {\n var dims = {};\n var meas = {};\n var hasAggregate = false;\n model.forEach(function (fieldDef, channel) {\n if (fieldDef.aggregate) {\n hasAggregate = true;\n if (fieldDef.aggregate === aggregate_1.AggregateOp.COUNT) {\n meas['*'] = meas['*'] || {};\n meas['*'].count = true;\n }\n else {\n meas[fieldDef.field] = meas[fieldDef.field] || {};\n meas[fieldDef.field][fieldDef.aggregate] = true;\n }\n }\n else {\n if (fieldDef.bin) {\n dims[fielddef_1.field(fieldDef, { binSuffix: '_start' })] = fielddef_1.field(fieldDef, { binSuffix: '_start' });\n dims[fielddef_1.field(fieldDef, { binSuffix: '_mid' })] = fielddef_1.field(fieldDef, { binSuffix: '_mid' });\n dims[fielddef_1.field(fieldDef, { binSuffix: '_end' })] = fielddef_1.field(fieldDef, { binSuffix: '_end' });\n var scale = model.scale(channel);\n if (scale_2.scaleType(scale, fieldDef, channel, model.mark()) === scale_1.ScaleType.ORDINAL) {\n dims[fielddef_1.field(fieldDef, { binSuffix: '_range' })] = fielddef_1.field(fieldDef, { binSuffix: '_range' });\n }\n }\n else {\n dims[fielddef_1.field(fieldDef)] = fielddef_1.field(fieldDef);\n }\n }\n });\n var groupby = util_1.vals(dims);\n var summarize = util_1.reduce(meas, function (aggregator, fnDictSet, field) {\n aggregator[field] = util_1.keys(fnDictSet);\n return aggregator;\n }, {});\n if (hasAggregate) {\n return {\n name: data_1.SUMMARY,\n source: data_1.SOURCE,\n transform: [{\n type: 'aggregate',\n groupby: groupby,\n summarize: summarize\n }]\n };\n }\n return null;\n }\n summary.def = def;\n ;\n})(summary = exports.summary || (exports.summary = {}));\nvar stack;\n(function (stack) {\n function def(model, stackProps) {\n var groupbyChannel = stackProps.groupbyChannel, fieldChannel = stackProps.fieldChannel, facetFields = (model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n .concat((model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : []));\n var stacked = {\n name: data_1.STACKED_SCALE,\n source: model.dataTable(),\n transform: [{\n type: 'aggregate',\n groupby: [model.field(groupbyChannel)].concat(facetFields),\n summarize: [{ ops: ['sum'], field: model.field(fieldChannel) }]\n }]\n };\n return stacked;\n }\n stack.def = def;\n ;\n})(stack = exports.stack || (exports.stack = {}));\nvar dates;\n(function (dates) {\n function defs(model) {\n var alreadyAdded = {};\n return model.reduce(function (aggregator, fieldDef, channel) {\n if (fieldDef.timeUnit) {\n var domain = time_1.rawDomain(fieldDef.timeUnit, channel);\n if (domain && !alreadyAdded[fieldDef.timeUnit]) {\n alreadyAdded[fieldDef.timeUnit] = true;\n aggregator.push({\n name: fieldDef.timeUnit,\n values: domain,\n transform: [{\n type: 'formula',\n field: 'date',\n expr: time_1.parseExpression(fieldDef.timeUnit, 'datum.data', true)\n }]\n });\n }\n }\n return aggregator;\n }, []);\n }\n dates.defs = defs;\n})(dates = exports.dates || (exports.dates = {}));\nfunction rankTransform(dataTable, model) {\n if (model.has(channel_1.COLOR) && model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL) {\n dataTable.transform = dataTable.transform.concat([{\n type: 'sort',\n by: model.field(channel_1.COLOR)\n }, {\n type: 'rank',\n field: model.field(channel_1.COLOR),\n output: {\n rank: model.field(channel_1.COLOR, { prefn: 'rank_' })\n }\n }]);\n }\n}\nexports.rankTransform = rankTransform;\nfunction filterNonPositiveForLog(dataTable, model) {\n model.forEach(function (_, channel) {\n var scale = model.scale(channel);\n if (scale && scale.type === scale_1.ScaleType.LOG) {\n dataTable.transform.push({\n type: 'filter',\n test: model.field(channel, { datum: true }) + ' > 0'\n });\n }\n });\n}\nexports.filterNonPositiveForLog = filterNonPositiveForLog;\n//# sourceMappingURL=data.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/data.js\n ** module id = 191\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar data_1 = require('../data');\nvar mark_1 = require('../mark');\nvar time_1 = require('./time');\nfunction compileLayoutData(model) {\n var distinctSummary = [channel_1.X, channel_1.Y, channel_1.ROW, channel_1.COLUMN].reduce(function (summary, channel) {\n if (model.has(channel) && model.isOrdinalScale(channel)) {\n var scale = model.scale(channel);\n if (!(scale.domain instanceof Array)) {\n summary.push({\n field: model.field(channel),\n ops: ['distinct']\n });\n }\n }\n return summary;\n }, []);\n var cellWidthFormula = scaleWidthFormula(model, channel_1.X, model.cellWidth());\n var cellHeightFormula = scaleWidthFormula(model, channel_1.Y, model.cellHeight());\n var isFacet = model.has(channel_1.COLUMN) || model.has(channel_1.ROW);\n var formulas = [{\n type: 'formula',\n field: 'cellWidth',\n expr: cellWidthFormula\n }, {\n type: 'formula',\n field: 'cellHeight',\n expr: cellHeightFormula\n }, {\n type: 'formula',\n field: 'width',\n expr: isFacet ?\n facetScaleWidthFormula(model, channel_1.COLUMN, 'datum.cellWidth') :\n cellWidthFormula\n }, {\n type: 'formula',\n field: 'height',\n expr: isFacet ?\n facetScaleWidthFormula(model, channel_1.ROW, 'datum.cellHeight') :\n cellHeightFormula\n }];\n return distinctSummary.length > 0 ? {\n name: data_1.LAYOUT,\n source: model.dataTable(),\n transform: [].concat([{\n type: 'aggregate',\n summarize: distinctSummary\n }], formulas)\n } : {\n name: data_1.LAYOUT,\n values: [{}],\n transform: formulas\n };\n}\nexports.compileLayoutData = compileLayoutData;\nfunction cardinalityFormula(model, channel) {\n var scale = model.scale(channel);\n if (scale.domain instanceof Array) {\n return scale.domain.length;\n }\n var timeUnit = model.fieldDef(channel).timeUnit;\n var timeUnitDomain = timeUnit ? time_1.rawDomain(timeUnit, channel) : null;\n return timeUnitDomain !== null ? timeUnitDomain.length :\n model.field(channel, { datum: true, prefn: 'distinct_' });\n}\nfunction scaleWidthFormula(model, channel, nonOrdinalSize) {\n if (model.has(channel)) {\n if (model.isOrdinalScale(channel)) {\n var scale = model.scale(channel);\n return '(' + cardinalityFormula(model, channel) +\n ' + ' + scale.padding +\n ') * ' + scale.bandSize;\n }\n else {\n return nonOrdinalSize + '';\n }\n }\n else {\n if (model.mark() === mark_1.TEXT && channel === channel_1.X) {\n return model.config().scale.textBandWidth + '';\n }\n return model.config().scale.bandSize + '';\n }\n}\nfunction facetScaleWidthFormula(model, channel, innerWidth) {\n var scale = model.scale(channel);\n if (model.has(channel)) {\n var cardinality = scale.domain instanceof Array ? scale.domain.length :\n model.field(channel, { datum: true, prefn: 'distinct_' });\n return '(' + innerWidth + ' + ' + scale.padding + ')' + ' * ' + cardinality;\n }\n else {\n return innerWidth + ' + ' + model.config().facet.scale.padding;\n }\n}\n//# sourceMappingURL=layout.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/layout.js\n ** module id = 192\n ** module chunks = 0\n **/","\"use strict\";\nvar util = require('../util');\nvar util_1 = require('../util');\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar axis_1 = require('./axis');\nvar scale_1 = require('./scale');\nvar common_1 = require('./common');\nfunction facetMixins(model, marks) {\n var hasRow = model.has(channel_1.ROW), hasCol = model.has(channel_1.COLUMN);\n if (model.has(channel_1.ROW) && !fielddef_1.isDimension(model.encoding().row)) {\n util.error('Row encoding should be ordinal.');\n }\n if (model.has(channel_1.COLUMN) && !fielddef_1.isDimension(model.encoding().column)) {\n util.error('Col encoding should be ordinal.');\n }\n return {\n marks: [].concat(getFacetGuideGroups(model), [getFacetGroup(model, marks)]),\n scales: scale_1.compileScales(model),\n axes: [].concat(hasRow && model.axis(channel_1.ROW) ? [axis_1.compileAxis(channel_1.ROW, model)] : [], hasCol && model.axis(channel_1.COLUMN) ? [axis_1.compileAxis(channel_1.COLUMN, model)] : [])\n };\n}\nexports.facetMixins = facetMixins;\nfunction getCellAxes(model) {\n var cellAxes = [];\n if (model.has(channel_1.X) && model.axis(channel_1.X) && axis_1.gridShow(model, channel_1.X)) {\n cellAxes.push(axis_1.compileInnerAxis(channel_1.X, model));\n }\n if (model.has(channel_1.Y) && model.axis(channel_1.Y) && axis_1.gridShow(model, channel_1.Y)) {\n cellAxes.push(axis_1.compileInnerAxis(channel_1.Y, model));\n }\n return cellAxes;\n}\nfunction getFacetGroup(model, marks) {\n var name = model.spec().name;\n var facetGroup = {\n name: (name ? name + '-' : '') + 'cell',\n type: 'group',\n from: {\n data: model.dataTable(),\n transform: [{\n type: 'facet',\n groupby: [].concat(model.has(channel_1.ROW) ? [model.field(channel_1.ROW)] : [], model.has(channel_1.COLUMN) ? [model.field(channel_1.COLUMN)] : [])\n }]\n },\n properties: {\n update: getFacetGroupProperties(model)\n },\n marks: marks\n };\n var cellAxes = getCellAxes(model);\n if (cellAxes.length > 0) {\n facetGroup.axes = cellAxes;\n }\n return facetGroup;\n}\nfunction getFacetGroupProperties(model) {\n var facetGroupProperties = {\n x: model.has(channel_1.COLUMN) ? {\n scale: model.scaleName(channel_1.COLUMN),\n field: model.field(channel_1.COLUMN),\n offset: model.scale(channel_1.COLUMN).padding / 2\n } : { value: model.config().facet.scale.padding / 2 },\n y: model.has(channel_1.ROW) ? {\n scale: model.scaleName(channel_1.ROW),\n field: model.field(channel_1.ROW),\n offset: model.scale(channel_1.ROW).padding / 2\n } : { value: model.config().facet.scale.padding / 2 },\n width: { field: { parent: 'cellWidth' } },\n height: { field: { parent: 'cellHeight' } }\n };\n common_1.applyConfig(facetGroupProperties, model.config().cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n common_1.applyConfig(facetGroupProperties, model.config().facet.cell, common_1.FILL_STROKE_CONFIG.concat(['clip']));\n return facetGroupProperties;\n}\nfunction getFacetGuideGroups(model) {\n var rootAxesGroups = [];\n if (model.has(channel_1.X)) {\n if (model.axis(channel_1.X)) {\n rootAxesGroups.push(getXAxesGroup(model));\n }\n }\n else {\n if (model.has(channel_1.ROW)) {\n rootAxesGroups.push.apply(rootAxesGroups, getRowGridGroups(model));\n }\n }\n if (model.has(channel_1.Y)) {\n if (model.axis(channel_1.Y)) {\n rootAxesGroups.push(getYAxesGroup(model));\n }\n }\n else {\n if (model.has(channel_1.COLUMN)) {\n rootAxesGroups.push.apply(rootAxesGroups, getColumnGridGroups(model));\n }\n }\n return rootAxesGroups;\n}\nfunction getXAxesGroup(model) {\n var hasCol = model.has(channel_1.COLUMN);\n var name = model.spec().name;\n return util_1.extend({\n name: (name ? name + '-' : '') + 'x-axes',\n type: 'group'\n }, hasCol ? {\n from: {\n data: model.dataTable(),\n transform: [{\n type: 'aggregate',\n groupby: [model.field(channel_1.COLUMN)],\n summarize: { '*': ['count'] }\n }]\n }\n } : {}, {\n properties: {\n update: {\n width: { field: { parent: 'cellWidth' } },\n height: {\n field: { group: 'height' }\n },\n x: hasCol ? {\n scale: model.scaleName(channel_1.COLUMN),\n field: model.field(channel_1.COLUMN),\n offset: model.scale(channel_1.COLUMN).padding / 2\n } : {\n value: model.config().facet.scale.padding / 2\n }\n }\n }\n }, model.axis(channel_1.X) ? {\n axes: [axis_1.compileAxis(channel_1.X, model)]\n } : {});\n}\nfunction getYAxesGroup(model) {\n var hasRow = model.has(channel_1.ROW);\n var name = model.spec().name;\n return util_1.extend({\n name: (name ? name + '-' : '') + 'y-axes',\n type: 'group'\n }, hasRow ? {\n from: {\n data: model.dataTable(),\n transform: [{\n type: 'aggregate',\n groupby: [model.field(channel_1.ROW)],\n summarize: { '*': ['count'] }\n }]\n }\n } : {}, {\n properties: {\n update: {\n width: {\n field: { group: 'width' }\n },\n height: { field: { parent: 'cellHeight' } },\n y: hasRow ? {\n scale: model.scaleName(channel_1.ROW),\n field: model.field(channel_1.ROW),\n offset: model.scale(channel_1.ROW).padding / 2\n } : {\n value: model.config().facet.scale.padding / 2\n }\n }\n },\n }, model.axis(channel_1.Y) ? {\n axes: [axis_1.compileAxis(channel_1.Y, model)]\n } : {});\n}\nfunction getRowGridGroups(model) {\n var name = model.spec().name;\n var facetGridConfig = model.config().facet.grid;\n var rowGrid = {\n name: (name ? name + '-' : '') + 'row-grid',\n type: 'rule',\n from: {\n data: model.dataTable(),\n transform: [{ type: 'facet', groupby: [model.field(channel_1.ROW)] }]\n },\n properties: {\n update: {\n y: {\n scale: model.scaleName(channel_1.ROW),\n field: model.field(channel_1.ROW)\n },\n x: { value: 0, offset: -facetGridConfig.offset },\n x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n };\n return [rowGrid, {\n name: (name ? name + '-' : '') + 'row-grid-end',\n type: 'rule',\n properties: {\n update: {\n y: { field: { group: 'height' } },\n x: { value: 0, offset: -facetGridConfig.offset },\n x2: { field: { group: 'width' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n }];\n}\nfunction getColumnGridGroups(model) {\n var name = model.spec().name;\n var facetGridConfig = model.config().facet.grid;\n var columnGrid = {\n name: (name ? name + '-' : '') + 'column-grid',\n type: 'rule',\n from: {\n data: model.dataTable(),\n transform: [{ type: 'facet', groupby: [model.field(channel_1.COLUMN)] }]\n },\n properties: {\n update: {\n x: {\n scale: model.scaleName(channel_1.COLUMN),\n field: model.field(channel_1.COLUMN)\n },\n y: { value: 0, offset: -facetGridConfig.offset },\n y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n };\n return [columnGrid, {\n name: (name ? name + '-' : '') + 'column-grid-end',\n type: 'rule',\n properties: {\n update: {\n x: { field: { group: 'width' } },\n y: { value: 0, offset: -facetGridConfig.offset },\n y2: { field: { group: 'height' }, offset: facetGridConfig.offset },\n stroke: { value: facetGridConfig.color },\n strokeOpacity: { value: facetGridConfig.opacity },\n strokeWidth: { value: 0.5 }\n }\n }\n }];\n}\n//# sourceMappingURL=facet.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/facet.js\n ** module id = 193\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../channel');\nvar fielddef_1 = require('../fielddef');\nvar mark_1 = require('../mark');\nvar util_1 = require('../util');\nvar common_1 = require('./common');\nvar type_1 = require('../type');\nvar scale_1 = require('./scale');\nfunction compileLegends(model) {\n var defs = [];\n if (model.has(channel_1.COLOR) && model.legend(channel_1.COLOR)) {\n var fieldDef = model.fieldDef(channel_1.COLOR);\n var scale = model.scaleName(useColorLegendScale(fieldDef) ?\n scale_1.COLOR_LEGEND :\n channel_1.COLOR);\n var def = model.config().mark.filled ? { fill: scale } : { stroke: scale };\n defs.push(compileLegend(model, channel_1.COLOR, def));\n }\n if (model.has(channel_1.SIZE) && model.legend(channel_1.SIZE)) {\n defs.push(compileLegend(model, channel_1.SIZE, {\n size: model.scaleName(channel_1.SIZE)\n }));\n }\n if (model.has(channel_1.SHAPE) && model.legend(channel_1.SHAPE)) {\n defs.push(compileLegend(model, channel_1.SHAPE, {\n shape: model.scaleName(channel_1.SHAPE)\n }));\n }\n return defs;\n}\nexports.compileLegends = compileLegends;\nfunction compileLegend(model, channel, def) {\n var fieldDef = model.fieldDef(channel);\n var legend = model.legend(channel);\n def.title = title(legend, fieldDef);\n util_1.extend(def, formatMixins(legend, model, channel));\n ['orient', 'values'].forEach(function (property) {\n var value = legend[property];\n if (value !== undefined) {\n def[property] = value;\n }\n });\n var props = (typeof legend !== 'boolean' && legend.properties) || {};\n ['title', 'symbols', 'legend', 'labels'].forEach(function (group) {\n var value = properties[group] ?\n properties[group](fieldDef, props[group], model, channel) :\n props[group];\n if (value !== undefined) {\n def.properties = def.properties || {};\n def.properties[group] = value;\n }\n });\n return def;\n}\nexports.compileLegend = compileLegend;\nfunction title(legend, fieldDef) {\n if (typeof legend !== 'boolean' && legend.title) {\n return legend.title;\n }\n return fielddef_1.title(fieldDef);\n}\nexports.title = title;\nfunction formatMixins(legend, model, channel) {\n var fieldDef = model.fieldDef(channel);\n if (fieldDef.bin) {\n return {};\n }\n return common_1.formatMixins(model, channel, typeof legend !== 'boolean' ? legend.format : undefined);\n}\nexports.formatMixins = formatMixins;\nfunction useColorLegendScale(fieldDef) {\n return fieldDef.type === type_1.ORDINAL || fieldDef.bin || fieldDef.timeUnit;\n}\nexports.useColorLegendScale = useColorLegendScale;\nvar properties;\n(function (properties) {\n function symbols(fieldDef, symbolsSpec, model, channel) {\n var symbols = {};\n var mark = model.mark();\n switch (mark) {\n case mark_1.BAR:\n case mark_1.TICK:\n case mark_1.TEXT:\n symbols.shape = { value: 'square' };\n break;\n case mark_1.CIRCLE:\n case mark_1.SQUARE:\n symbols.shape = { value: mark };\n break;\n case mark_1.POINT:\n case mark_1.LINE:\n case mark_1.AREA:\n break;\n }\n var filled = model.config().mark.filled;\n common_1.applyMarkConfig(symbols, model, util_1.without(common_1.FILL_STROKE_CONFIG, [filled ? 'fill' : 'stroke']));\n if (filled) {\n symbols.strokeWidth = { value: 0 };\n }\n var value;\n if (model.has(channel_1.COLOR) && channel === channel_1.COLOR) {\n if (useColorLegendScale(fieldDef)) {\n value = { scale: model.scaleName(channel_1.COLOR), field: 'data' };\n }\n }\n else if (model.fieldDef(channel_1.COLOR).value) {\n value = { value: model.fieldDef(channel_1.COLOR).value };\n }\n if (value !== undefined) {\n if (filled) {\n symbols.fill = value;\n }\n else {\n symbols.stroke = value;\n }\n }\n else if (channel !== channel_1.COLOR) {\n symbols[filled ? 'fill' : 'stroke'] = symbols[filled ? 'fill' : 'stroke'] ||\n { value: model.config().mark.color };\n }\n symbols = util_1.extend(symbols, symbolsSpec || {});\n return util_1.keys(symbols).length > 0 ? symbols : undefined;\n }\n properties.symbols = symbols;\n function labels(fieldDef, symbolsSpec, model, channel) {\n if (channel === channel_1.COLOR) {\n if (fieldDef.type === type_1.ORDINAL) {\n return {\n text: {\n scale: model.scaleName(scale_1.COLOR_LEGEND),\n field: 'data'\n }\n };\n }\n else if (fieldDef.bin) {\n return {\n text: {\n scale: model.scaleName(scale_1.COLOR_LEGEND_LABEL),\n field: 'data'\n }\n };\n }\n else if (fieldDef.timeUnit) {\n return {\n text: {\n template: '{{ datum.data | time:\\'' + common_1.timeFormat(model, channel) + '\\'}}'\n }\n };\n }\n }\n return undefined;\n }\n properties.labels = labels;\n})(properties || (properties = {}));\n//# sourceMappingURL=legend.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/legend.js\n ** module id = 194\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar mark_1 = require('../../mark');\nvar stack_1 = require('../stack');\nvar util_1 = require('../../util');\nvar area_1 = require('./area');\nvar bar_1 = require('./bar');\nvar line_1 = require('./line');\nvar point_1 = require('./point');\nvar text_1 = require('./text');\nvar tick_1 = require('./tick');\nvar common_1 = require('../common');\nvar markCompiler = {\n area: area_1.area,\n bar: bar_1.bar,\n line: line_1.line,\n point: point_1.point,\n text: text_1.text,\n tick: tick_1.tick,\n circle: point_1.circle,\n square: point_1.square\n};\nfunction compileMark(model) {\n if (util_1.contains([mark_1.LINE, mark_1.AREA], model.mark())) {\n return compilePathMark(model);\n }\n else {\n return compileNonPathMark(model);\n }\n}\nexports.compileMark = compileMark;\nfunction compilePathMark(model) {\n var mark = model.mark();\n var name = model.spec().name;\n var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n var dataFrom = { data: model.dataTable() };\n var details = detailFields(model);\n var pathMarks = [util_1.extend(name ? { name: name + '-marks' } : {}, {\n type: markCompiler[mark].markType(),\n from: util_1.extend(hasParentData || details.length > 0 ? {} : dataFrom, { transform: [{ type: 'sort', by: sortPathBy(model) }] }),\n properties: { update: markCompiler[mark].properties(model) }\n })];\n if (details.length > 0) {\n var facetTransform = { type: 'facet', groupby: details };\n var transform = mark === mark_1.AREA && model.stack() ?\n [stack_1.imputeTransform(model), stack_1.stackTransform(model), facetTransform] :\n [].concat(facetTransform, model.has(channel_1.ORDER) ? [{ type: 'sort', by: sortBy(model) }] : []);\n return [{\n name: (name ? name + '-' : '') + mark + '-facet',\n type: 'group',\n from: util_1.extend(hasParentData ? {} : dataFrom, { transform: transform }),\n properties: {\n update: {\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } }\n }\n },\n marks: pathMarks\n }];\n }\n else {\n return pathMarks;\n }\n}\nfunction compileNonPathMark(model) {\n var mark = model.mark();\n var name = model.spec().name;\n var hasParentData = model.has(channel_1.ROW) || model.has(channel_1.COLUMN);\n var dataFrom = { data: model.dataTable() };\n var marks = [];\n if (mark === mark_1.TEXT &&\n model.has(channel_1.COLOR) &&\n model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n marks.push(util_1.extend(name ? { name: name + '-background' } : {}, { type: 'rect' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: text_1.text.background(model) } }));\n }\n marks.push(util_1.extend(name ? { name: name + '-marks' } : {}, { type: markCompiler[mark].markType() }, (!hasParentData || model.stack() || model.has(channel_1.ORDER)) ? {\n from: util_1.extend(hasParentData ? {} : dataFrom, model.stack() ?\n { transform: [stack_1.stackTransform(model)] } :\n model.has(channel_1.ORDER) ?\n { transform: [{ type: 'sort', by: sortBy(model) }] } :\n {})\n } : {}, { properties: { update: markCompiler[mark].properties(model) } }));\n if (model.has(channel_1.LABEL) && markCompiler[mark].labels) {\n var labelProperties = markCompiler[mark].labels(model);\n if (labelProperties !== undefined) {\n marks.push(util_1.extend(name ? { name: name + '-label' } : {}, { type: 'text' }, hasParentData ? {} : { from: dataFrom }, { properties: { update: labelProperties } }));\n }\n }\n return marks;\n}\nfunction sortBy(model) {\n if (model.has(channel_1.ORDER)) {\n var channelDef = model.encoding().order;\n if (channelDef instanceof Array) {\n return channelDef.map(common_1.sortField);\n }\n else {\n return common_1.sortField(channelDef);\n }\n }\n return null;\n}\nfunction sortPathBy(model) {\n if (model.mark() === mark_1.LINE && model.has(channel_1.PATH)) {\n var channelDef = model.encoding().path;\n if (channelDef instanceof Array) {\n return channelDef.map(common_1.sortField);\n }\n else {\n return common_1.sortField(channelDef);\n }\n }\n else {\n return '-' + model.field(model.config().mark.orient === 'horizontal' ? channel_1.Y : channel_1.X);\n }\n}\nfunction detailFields(model) {\n return [channel_1.COLOR, channel_1.DETAIL, channel_1.SHAPE].reduce(function (details, channel) {\n if (model.has(channel) && !model.fieldDef(channel).aggregate) {\n details.push(model.field(channel));\n }\n return details;\n }, []);\n}\n//# sourceMappingURL=mark.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/mark.js\n ** module id = 195\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar fielddef_1 = require('../../fielddef');\nvar common_1 = require('../common');\nvar area;\n(function (area) {\n function markType() {\n return 'area';\n }\n area.markType = markType;\n function properties(model) {\n var p = {};\n var orient = model.config().mark.orient;\n if (orient !== undefined) {\n p.orient = { value: orient };\n }\n var stack = model.stack();\n var xFieldDef = model.encoding().x;\n if (stack && channel_1.X === stack.fieldChannel) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_start' })\n };\n }\n else if (fielddef_1.isMeasure(xFieldDef)) {\n p.x = { scale: model.scaleName(channel_1.X), field: model.field(channel_1.X) };\n }\n else if (fielddef_1.isDimension(xFieldDef)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n if (orient === 'horizontal') {\n if (stack && channel_1.X === stack.fieldChannel) {\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_end' })\n };\n }\n else {\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n value: 0\n };\n }\n }\n var yFieldDef = model.encoding().y;\n if (stack && channel_1.Y === stack.fieldChannel) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_start' })\n };\n }\n else if (fielddef_1.isMeasure(yFieldDef)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n }\n else if (fielddef_1.isDimension(yFieldDef)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n if (orient !== 'horizontal') {\n if (stack && channel_1.Y === stack.fieldChannel) {\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_end' })\n };\n }\n else {\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n value: 0\n };\n }\n }\n common_1.applyColorAndOpacity(p, model);\n common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n return p;\n }\n area.properties = properties;\n function labels(model) {\n return undefined;\n }\n area.labels = labels;\n})(area = exports.area || (exports.area = {}));\n//# sourceMappingURL=area.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/area.js\n ** module id = 196\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar fielddef_1 = require('../../fielddef');\nvar common_1 = require('../common');\nvar bar;\n(function (bar) {\n function markType() {\n return 'rect';\n }\n bar.markType = markType;\n function properties(model) {\n var p = {};\n var orient = model.config().mark.orient;\n var stack = model.stack();\n var xFieldDef = model.encoding().x;\n if (stack && channel_1.X === stack.fieldChannel) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_start' })\n };\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { suffix: '_end' })\n };\n }\n else if (fielddef_1.isMeasure(xFieldDef)) {\n if (orient === 'horizontal') {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X)\n };\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n value: 0\n };\n }\n else {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X)\n };\n p.width = { value: sizeValue(model, channel_1.X) };\n }\n }\n else if (model.fieldDef(channel_1.X).bin) {\n if (model.has(channel_1.SIZE) && orient !== 'horizontal') {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n p.width = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_start' }),\n offset: 1\n };\n p.x2 = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_end' })\n };\n }\n }\n else {\n if (model.has(channel_1.X)) {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X)\n };\n }\n else {\n p.x = { value: 0, offset: 2 };\n }\n p.width = model.has(channel_1.SIZE) && orient !== 'horizontal' ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, (channel_1.X))\n };\n }\n var yFieldDef = model.encoding().y;\n if (stack && channel_1.Y === stack.fieldChannel) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_start' })\n };\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { suffix: '_end' })\n };\n }\n else if (fielddef_1.isMeasure(yFieldDef)) {\n if (orient !== 'horizontal') {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n value: 0\n };\n }\n else {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n p.height = { value: sizeValue(model, channel_1.Y) };\n }\n }\n else if (model.fieldDef(channel_1.Y).bin) {\n if (model.has(channel_1.SIZE) && orient === 'horizontal') {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n p.height = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_start' })\n };\n p.y2 = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_end' }),\n offset: 1\n };\n }\n }\n else {\n if (model.has(channel_1.Y)) {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y)\n };\n }\n else {\n p.y2 = {\n field: { group: 'height' },\n offset: -1\n };\n }\n p.height = model.has(channel_1.SIZE) && orient === 'horizontal' ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, channel_1.Y)\n };\n }\n common_1.applyColorAndOpacity(p, model);\n return p;\n }\n bar.properties = properties;\n function sizeValue(model, channel) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n var markConfig = model.config().mark;\n if (markConfig.barSize) {\n return markConfig.barSize;\n }\n return model.isOrdinalScale(channel) ?\n model.scale(channel).bandSize - 1 :\n !model.has(channel) ?\n model.config().scale.bandSize - 1 :\n markConfig.barThinSize;\n }\n function labels(model) {\n return undefined;\n }\n bar.labels = labels;\n})(bar = exports.bar || (exports.bar = {}));\n//# sourceMappingURL=bar.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/bar.js\n ** module id = 197\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar line;\n(function (line) {\n function markType() {\n return 'line';\n }\n line.markType = markType;\n function properties(model) {\n var p = {};\n if (model.has(channel_1.X)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n p.x = { value: 0 };\n }\n if (model.has(channel_1.Y)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.y = { field: { group: 'height' } };\n }\n common_1.applyColorAndOpacity(p, model);\n common_1.applyMarkConfig(p, model, ['interpolate', 'tension']);\n return p;\n }\n line.properties = properties;\n function labels(model) {\n return undefined;\n }\n line.labels = labels;\n})(line = exports.line || (exports.line = {}));\n//# sourceMappingURL=line.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/line.js\n ** module id = 198\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar point;\n(function (point) {\n function markType() {\n return 'symbol';\n }\n point.markType = markType;\n function properties(model, fixedShape) {\n var p = {};\n if (model.has(channel_1.X)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n p.x = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.Y)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.y = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.SIZE)) {\n p.size = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.size = { value: sizeValue(model) };\n }\n if (fixedShape) {\n p.shape = { value: fixedShape };\n }\n else if (model.has(channel_1.SHAPE)) {\n p.shape = {\n scale: model.scaleName(channel_1.SHAPE),\n field: model.field(channel_1.SHAPE)\n };\n }\n else if (model.fieldDef(channel_1.SHAPE).value) {\n p.shape = { value: model.fieldDef(channel_1.SHAPE).value };\n }\n else if (model.config().mark.shape) {\n p.shape = { value: model.config().mark.shape };\n }\n common_1.applyColorAndOpacity(p, model);\n return p;\n }\n point.properties = properties;\n function sizeValue(model) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n return model.config().mark.size;\n }\n function labels(model) {\n }\n point.labels = labels;\n})(point = exports.point || (exports.point = {}));\nvar circle;\n(function (circle) {\n function markType() {\n return 'symbol';\n }\n circle.markType = markType;\n function properties(model) {\n return point.properties(model, 'circle');\n }\n circle.properties = properties;\n function labels(model) {\n return undefined;\n }\n circle.labels = labels;\n})(circle = exports.circle || (exports.circle = {}));\nvar square;\n(function (square) {\n function markType() {\n return 'symbol';\n }\n square.markType = markType;\n function properties(model) {\n return point.properties(model, 'square');\n }\n square.properties = properties;\n function labels(model) {\n return undefined;\n }\n square.labels = labels;\n})(square = exports.square || (exports.square = {}));\n//# sourceMappingURL=point.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/point.js\n ** module id = 199\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar util_1 = require('../../util');\nvar type_1 = require('../../type');\nvar text;\n(function (text) {\n function markType() {\n return 'text';\n }\n text.markType = markType;\n function background(model) {\n return {\n x: { value: 0 },\n y: { value: 0 },\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } },\n fill: {\n scale: model.scaleName(channel_1.COLOR),\n field: model.field(channel_1.COLOR, model.fieldDef(channel_1.COLOR).type === type_1.ORDINAL ? { prefn: 'rank_' } : {})\n }\n };\n }\n text.background = background;\n function properties(model) {\n var p = {};\n common_1.applyMarkConfig(p, model, ['angle', 'align', 'baseline', 'dx', 'dy', 'font', 'fontWeight',\n 'fontStyle', 'radius', 'theta', 'text']);\n var fieldDef = model.fieldDef(channel_1.TEXT);\n if (model.has(channel_1.X)) {\n p.x = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n if (model.has(channel_1.TEXT) && model.fieldDef(channel_1.TEXT).type === type_1.QUANTITATIVE) {\n p.x = { field: { group: 'width' }, offset: -5 };\n }\n else {\n p.x = { value: model.config().scale.textBandWidth / 2 };\n }\n }\n if (model.has(channel_1.Y)) {\n p.y = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.y = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.SIZE)) {\n p.fontSize = {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n };\n }\n else {\n p.fontSize = { value: sizeValue(model) };\n }\n if (model.config().mark.applyColorToBackground && !model.has(channel_1.X) && !model.has(channel_1.Y)) {\n p.fill = { value: 'black' };\n var opacity = model.config().mark.opacity;\n if (opacity) {\n p.opacity = { value: opacity };\n }\n ;\n }\n else {\n common_1.applyColorAndOpacity(p, model);\n }\n if (model.has(channel_1.TEXT)) {\n if (util_1.contains([type_1.QUANTITATIVE, type_1.TEMPORAL], model.fieldDef(channel_1.TEXT).type)) {\n var format = model.config().mark.format;\n util_1.extend(p, common_1.formatMixins(model, channel_1.TEXT, format));\n }\n else {\n p.text = { field: model.field(channel_1.TEXT) };\n }\n }\n else if (fieldDef.value) {\n p.text = { value: fieldDef.value };\n }\n return p;\n }\n text.properties = properties;\n function sizeValue(model) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n return model.config().mark.fontSize;\n }\n})(text = exports.text || (exports.text = {}));\n//# sourceMappingURL=text.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/text.js\n ** module id = 200\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('../../channel');\nvar common_1 = require('../common');\nvar tick;\n(function (tick) {\n function markType() {\n return 'rect';\n }\n tick.markType = markType;\n function properties(model) {\n var p = {};\n if (model.has(channel_1.X)) {\n p.xc = {\n scale: model.scaleName(channel_1.X),\n field: model.field(channel_1.X, { binSuffix: '_mid' })\n };\n }\n else {\n p.xc = { value: model.config().scale.bandSize / 2 };\n }\n if (model.has(channel_1.Y)) {\n p.yc = {\n scale: model.scaleName(channel_1.Y),\n field: model.field(channel_1.Y, { binSuffix: '_mid' })\n };\n }\n else {\n p.yc = { value: model.config().scale.bandSize / 2 };\n }\n if (model.config().mark.orient === 'horizontal') {\n p.width = { value: model.config().mark.tickThickness };\n p.height = model.has(channel_1.SIZE) ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, channel_1.Y)\n };\n }\n else {\n p.width = model.has(channel_1.SIZE) ? {\n scale: model.scaleName(channel_1.SIZE),\n field: model.field(channel_1.SIZE)\n } : {\n value: sizeValue(model, channel_1.X)\n };\n p.height = { value: model.config().mark.tickThickness };\n }\n common_1.applyColorAndOpacity(p, model);\n return p;\n }\n tick.properties = properties;\n function sizeValue(model, channel) {\n var fieldDef = model.fieldDef(channel_1.SIZE);\n if (fieldDef && fieldDef.value !== undefined) {\n return fieldDef.value;\n }\n var scaleConfig = model.config().scale;\n var markConfig = model.config().mark;\n if (markConfig.tickSize) {\n return markConfig.tickSize;\n }\n var bandSize = model.has(channel) ?\n model.scale(channel).bandSize :\n scaleConfig.bandSize;\n return bandSize / 1.5;\n }\n function labels(model) {\n return undefined;\n }\n tick.labels = labels;\n})(tick = exports.tick || (exports.tick = {}));\n//# sourceMappingURL=tick.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/compile/mark/tick.js\n ** module id = 201\n ** module chunks = 0\n **/","\"use strict\";\nvar aggregate_1 = require('./aggregate');\nvar timeunit_1 = require('./timeunit');\nvar type_1 = require('./type');\nvar vlEncoding = require('./encoding');\nvar mark_1 = require('./mark');\nexports.DELIM = '|';\nexports.ASSIGN = '=';\nexports.TYPE = ',';\nexports.FUNC = '_';\nfunction shorten(spec) {\n return 'mark' + exports.ASSIGN + spec.mark +\n exports.DELIM + shortenEncoding(spec.encoding);\n}\nexports.shorten = shorten;\nfunction parse(shorthand, data, config) {\n var split = shorthand.split(exports.DELIM), mark = split.shift().split(exports.ASSIGN)[1].trim(), encoding = parseEncoding(split.join(exports.DELIM));\n var spec = {\n mark: mark_1.Mark[mark],\n encoding: encoding\n };\n if (data !== undefined) {\n spec.data = data;\n }\n if (config !== undefined) {\n spec.config = config;\n }\n return spec;\n}\nexports.parse = parse;\nfunction shortenEncoding(encoding) {\n return vlEncoding.map(encoding, function (fieldDef, channel) {\n return channel + exports.ASSIGN + shortenFieldDef(fieldDef);\n }).join(exports.DELIM);\n}\nexports.shortenEncoding = shortenEncoding;\nfunction parseEncoding(encodingShorthand) {\n return encodingShorthand.split(exports.DELIM).reduce(function (m, e) {\n var split = e.split(exports.ASSIGN), enctype = split[0].trim(), fieldDefShorthand = split[1];\n m[enctype] = parseFieldDef(fieldDefShorthand);\n return m;\n }, {});\n}\nexports.parseEncoding = parseEncoding;\nfunction shortenFieldDef(fieldDef) {\n return (fieldDef.aggregate ? fieldDef.aggregate + exports.FUNC : '') +\n (fieldDef.timeUnit ? fieldDef.timeUnit + exports.FUNC : '') +\n (fieldDef.bin ? 'bin' + exports.FUNC : '') +\n (fieldDef.field || '') + exports.TYPE + type_1.SHORT_TYPE[fieldDef.type];\n}\nexports.shortenFieldDef = shortenFieldDef;\nfunction shortenFieldDefs(fieldDefs, delim) {\n if (delim === void 0) { delim = exports.DELIM; }\n return fieldDefs.map(shortenFieldDef).join(delim);\n}\nexports.shortenFieldDefs = shortenFieldDefs;\nfunction parseFieldDef(fieldDefShorthand) {\n var split = fieldDefShorthand.split(exports.TYPE);\n var fieldDef = {\n field: split[0].trim(),\n type: type_1.TYPE_FROM_SHORT_TYPE[split[1].trim()]\n };\n for (var i = 0; i < aggregate_1.AGGREGATE_OPS.length; i++) {\n var a = aggregate_1.AGGREGATE_OPS[i];\n if (fieldDef.field.indexOf(a + '_') === 0) {\n fieldDef.field = fieldDef.field.substr(a.toString().length + 1);\n if (a === aggregate_1.AggregateOp.COUNT && fieldDef.field.length === 0) {\n fieldDef.field = '*';\n }\n fieldDef.aggregate = a;\n break;\n }\n }\n for (var i = 0; i < timeunit_1.TIMEUNITS.length; i++) {\n var tu = timeunit_1.TIMEUNITS[i];\n if (fieldDef.field && fieldDef.field.indexOf(tu + '_') === 0) {\n fieldDef.field = fieldDef.field.substr(fieldDef.field.length + 1);\n fieldDef.timeUnit = tu;\n break;\n }\n }\n if (fieldDef.field && fieldDef.field.indexOf('bin_') === 0) {\n fieldDef.field = fieldDef.field.substr(4);\n fieldDef.bin = true;\n }\n return fieldDef;\n}\nexports.parseFieldDef = parseFieldDef;\n//# sourceMappingURL=shorthand.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/shorthand.js\n ** module id = 202\n ** module chunks = 0\n **/","\"use strict\";\nvar channel_1 = require('./channel');\nvar vlEncoding = require('./encoding');\nvar mark_1 = require('./mark');\nvar util_1 = require('./util');\nfunction alwaysNoOcclusion(spec) {\n return vlEncoding.isAggregate(spec.encoding);\n}\nexports.alwaysNoOcclusion = alwaysNoOcclusion;\nfunction fieldDefs(spec) {\n return vlEncoding.fieldDefs(spec.encoding);\n}\nexports.fieldDefs = fieldDefs;\n;\nfunction getCleanSpec(spec) {\n return spec;\n}\nexports.getCleanSpec = getCleanSpec;\nfunction isStack(spec) {\n return (vlEncoding.has(spec.encoding, channel_1.COLOR) || vlEncoding.has(spec.encoding, channel_1.SHAPE)) &&\n (spec.mark === mark_1.BAR || spec.mark === mark_1.AREA) &&\n (!spec.config || !spec.config.mark.stacked !== false) &&\n vlEncoding.isAggregate(spec.encoding);\n}\nexports.isStack = isStack;\nfunction transpose(spec) {\n var oldenc = spec.encoding;\n var encoding = util_1.duplicate(spec.encoding);\n encoding.x = oldenc.y;\n encoding.y = oldenc.x;\n encoding.row = oldenc.column;\n encoding.column = oldenc.row;\n spec.encoding = encoding;\n return spec;\n}\nexports.transpose = transpose;\n//# sourceMappingURL=spec.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/spec.js\n ** module id = 203\n ** module chunks = 0\n **/","\"use strict\";\nvar util_1 = require('./util');\nvar mark_1 = require('./mark');\nexports.DEFAULT_REQUIRED_CHANNEL_MAP = {\n text: ['text'],\n line: ['x', 'y'],\n area: ['x', 'y']\n};\nexports.DEFAULT_SUPPORTED_CHANNEL_TYPE = {\n bar: util_1.toMap(['row', 'column', 'x', 'y', 'size', 'color', 'detail']),\n line: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n area: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n tick: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'detail']),\n circle: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n square: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail']),\n point: util_1.toMap(['row', 'column', 'x', 'y', 'color', 'size', 'detail', 'shape']),\n text: util_1.toMap(['row', 'column', 'size', 'color', 'text'])\n};\nfunction getEncodingMappingError(spec, requiredChannelMap, supportedChannelMap) {\n if (requiredChannelMap === void 0) { requiredChannelMap = exports.DEFAULT_REQUIRED_CHANNEL_MAP; }\n if (supportedChannelMap === void 0) { supportedChannelMap = exports.DEFAULT_SUPPORTED_CHANNEL_TYPE; }\n var mark = spec.mark;\n var encoding = spec.encoding;\n var requiredChannels = requiredChannelMap[mark];\n var supportedChannels = supportedChannelMap[mark];\n for (var i in requiredChannels) {\n if (!(requiredChannels[i] in encoding)) {\n return 'Missing encoding channel \\\"' + requiredChannels[i] +\n '\\\" for mark \\\"' + mark + '\\\"';\n }\n }\n for (var channel in encoding) {\n if (!supportedChannels[channel]) {\n return 'Encoding channel \\\"' + channel +\n '\\\" is not supported by mark type \\\"' + mark + '\\\"';\n }\n }\n if (mark === mark_1.BAR && !encoding.x && !encoding.y) {\n return 'Missing both x and y for bar';\n }\n return null;\n}\nexports.getEncodingMappingError = getEncodingMappingError;\n//# sourceMappingURL=validate.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vega-lite/src/validate.js\n ** module id = 204\n ** module chunks = 0\n **/","var d3 = require('d3'),\n $ = require('vega').util.mutator;\n\nmodule.exports = {\n init: function(el, param, spec) {\n return (rewrite(param, spec), handle(el, param));\n },\n bind: function(param, view) {\n param.dom.forEach(function(el) { el.__vega__ = view; });\n view.onSignal(param.dom[0].name, function(k, v) { param.set(v); });\n }\n};\n\n// spec re-write\n\nfunction rewrite(param, spec) {\n // add signal to top-level if not defined\n var sg = spec.signals || (spec.signals = []);\n for (var i=0; i