{"version":3,"sources":["webpack:///common_d3.b4197edc2ba75db756fe.bundle.js","webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/d3/d3.js"],"names":["webpackJsonp","../../../node_modules/d3/d3.js","module","exports","__webpack_require__","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","d3_documentElement","node","ownerDocument","document","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_zipLength","d","d3_range_integerScale","k","d3_class","ctor","properties","key","Object","defineProperty","prototype","value","enumerable","d3_Map","this","_","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","source","method","apply","d3_vendorSymbol","object","name","charAt","toUpperCase","i","n","d3_vendorPrefixes","prefixName","d3_noop","d3_dispatch","d3_dispatch_event","dispatch","event","l","z","listeners","on","listenerByName","listener","get","indexOf","concat","remove","set","d3_eventPreventDefault","d3","preventDefault","d3_eventSource","s","e","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e1","e0","type","d3_selection","groups","d3_subclass","d3_selectionPrototype","d3_selection_selector","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","split","d3_selection_classed","classedConstant","classedFunction","map","d3_selection_classedName","re","c","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","createElementNS","createElement","createNS","d3_selectionRemove","parent","parentNode","removeChild","d3_selection_dataNode","data","__data__","d3_selection_filter","d3_selectMatches","d3_selection_sortComparator","comparator","d3_selection_each","callback","j","m","group","d3_selection_enter","selection","d3_selection_enterPrototype","d3_selection_enterInsertBefore","enter","i0","j0","update","d3_selection_on","capture","onRemove","removeEventListener","$","onAdd","wrap","d3_array","call","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","select","d3_event_dragSelect","suppressClick","off","setTimeout","d3_mousePoint","container","changedTouches","svg","ownerSVGElement","createSVGPoint","point","d3_mouse_bug44083","window","scrollX","scrollY","append","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","url","mimeType","d3_xhr","respond","result","status","request","d3_xhrHasResponse","xhr","error","load","headers","XMLHttpRequest","responseType","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","header","forEach","send","open","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","p","ceil","log","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","parse","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","cb","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","output","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","find","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","err","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","id","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","attr","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","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","zip","zips","transpose","matrix","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","classed","contains","getComputedStyle","getPropertyValue","text","html","innerHTML","appendChild","insertBefore","bind","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","origin","τε","SQRT2","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","zoom","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","location","view","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","row","typedResponse","formatRow","formatValue","reFormat","delimiterCode","parseRows","Function","stringify","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","mode","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","undefined","multi d3"],"mappings":"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","file":"common_d3.b4197edc2ba75db756fe.bundle.js","sourcesContent":["webpackJsonp([\"common_d3\"],{\n\n/***/ \"../../../node_modules/d3/d3.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n var d3 = {\n version: \"3.5.11\"\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.zip = function() {\n if (!(n = arguments.length)) return [];\n for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {\n for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {\n zip[j] = arguments[j][i];\n }\n }\n return zips;\n };\n function d3_zipLength(d) {\n return d.length;\n }\n d3.transpose = function(matrix) {\n return d3.zip.apply(d3, matrix);\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_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: \"http://www.w3.org/1999/xhtml\",\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 ? document.createElementNS(namespace, name) : document.createElement(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, 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 < 0) ^ 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 return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\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 (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__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}();\n\n/***/ }),\n\n/***/ \"multi d3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"../../../node_modules/d3/d3.js\");\n\n\n/***/ })\n\n},[\"multi d3\"]);\n\n\n// WEBPACK FOOTER //\n// common_d3.b4197edc2ba75db756fe.bundle.js","!function() {\n var d3 = {\n version: \"3.5.11\"\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.zip = function() {\n if (!(n = arguments.length)) return [];\n for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {\n for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {\n zip[j] = arguments[j][i];\n }\n }\n return zips;\n };\n function d3_zipLength(d) {\n return d.length;\n }\n d3.transpose = function(matrix) {\n return d3.zip.apply(d3, matrix);\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_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: \"http://www.w3.org/1999/xhtml\",\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 ? document.createElementNS(namespace, name) : document.createElement(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, 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 < 0) ^ 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 return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\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// /opt/gitlab/embedded/service/gitlab-rails/node_modules/d3/d3.js\n// module id = ../../../node_modules/d3/d3.js\n// module chunks = common_d3"],"sourceRoot":""}