AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 18.227.114.70
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/js/main/d3js/dist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/js/main/d3js/dist/d3js.bundle.js.map
{"version":3,"file":"d3js.bundle.js","sources":["../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/blur.js","../node_modules/d3-array/src/count.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/cumsum.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/fsum.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/group.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/sort.js","../node_modules/d3-array/src/groupSort.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/nice.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/bin.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/maxIndex.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/minIndex.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/greatest.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/mode.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/rank.js","../node_modules/d3-array/src/least.js","../node_modules/d3-array/src/leastIndex.js","../node_modules/d3-array/src/greatestIndex.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/every.js","../node_modules/d3-array/src/some.js","../node_modules/d3-array/src/filter.js","../node_modules/d3-array/src/map.js","../node_modules/d3-array/src/reduce.js","../node_modules/d3-array/src/reverse.js","../node_modules/d3-array/src/difference.js","../node_modules/d3-array/src/disjoint.js","../node_modules/d3-array/src/intersection.js","../node_modules/d3-array/src/superset.js","../node_modules/d3-array/src/subset.js","../node_modules/d3-array/src/union.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/pointer.js","../node_modules/d3-selection/src/pointers.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/discrete.js","../node_modules/d3-interpolate/src/hue.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-interpolate/src/quantize.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-timer/src/interval.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/active.js","../node_modules/d3-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-path/src/path.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/constant.js","../node_modules/d3-chord/src/ribbon.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-contour/src/ascending.js","../node_modules/d3-contour/src/area.js","../node_modules/d3-contour/src/constant.js","../node_modules/d3-contour/src/contains.js","../node_modules/d3-contour/src/noop.js","../node_modules/d3-contour/src/contours.js","../node_modules/d3-contour/src/density.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/delaunator/index.js","../node_modules/d3-delaunay/src/path.js","../node_modules/d3-delaunay/src/polygon.js","../node_modules/d3-delaunay/src/voronoi.js","../node_modules/d3-delaunay/src/delaunay.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../node_modules/d3-fetch/src/blob.js","../node_modules/d3-fetch/src/buffer.js","../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/dsv.js","../node_modules/d3-fetch/src/image.js","../node_modules/d3-fetch/src/json.js","../node_modules/d3-fetch/src/xml.js","../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/centroid.js","../node_modules/d3-geo/src/constant.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/d3-geo/src/graticule.js","../node_modules/d3-geo/src/interpolate.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/conicConformal.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/d3-geo/src/projection/conicEquidistant.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/gnomonic.js","../node_modules/d3-geo/src/projection/identity.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-geo/src/projection/stereographic.js","../node_modules/d3-geo/src/projection/transverseMercator.js","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/find.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/lcg.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-polygon/src/area.js","../node_modules/d3-polygon/src/centroid.js","../node_modules/d3-polygon/src/cross.js","../node_modules/d3-polygon/src/hull.js","../node_modules/d3-polygon/src/contains.js","../node_modules/d3-polygon/src/length.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/int.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3-random/src/pareto.js","../node_modules/d3-random/src/bernoulli.js","../node_modules/d3-random/src/geometric.js","../node_modules/d3-random/src/gamma.js","../node_modules/d3-random/src/beta.js","../node_modules/d3-random/src/binomial.js","../node_modules/d3-random/src/weibull.js","../node_modules/d3-random/src/cauchy.js","../node_modules/d3-random/src/logistic.js","../node_modules/d3-random/src/poisson.js","../node_modules/d3-random/src/lcg.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/radial.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/curve/bump.js","../node_modules/d3-shape/src/link.js","../node_modules/d3-shape/src/symbol/asterisk.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/diamond2.js","../node_modules/d3-shape/src/symbol/plus.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/square2.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/triangle2.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol/times.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function blur(values, r) {\n  if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n  let length = values.length;\n  if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n  if (!length || !r) return values;\n  const blur = blurf(r);\n  const temp = values.slice();\n  blur(values, temp, 0, length, 1);\n  blur(temp, values, 0, length, 1);\n  blur(values, temp, 0, length, 1);\n  return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n  return function(data, rx, ry = rx) {\n    if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n    if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n    let {data: values, width, height} = data;\n    if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n    if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n    if (!width || !height || (!rx && !ry)) return data;\n    const blurx = rx && blur(rx);\n    const blury = ry && blur(ry);\n    const temp = values.slice();\n    if (blurx && blury) {\n      blurh(blurx, temp, values, width, height);\n      blurh(blurx, values, temp, width, height);\n      blurh(blurx, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n      blurv(blury, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n    } else if (blurx) {\n      blurh(blurx, values, temp, width, height);\n      blurh(blurx, temp, values, width, height);\n      blurh(blurx, values, temp, width, height);\n    } else if (blury) {\n      blurv(blury, values, temp, width, height);\n      blurv(blury, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n    }\n    return data;\n  };\n}\n\nfunction blurh(blur, T, S, w, h) {\n  for (let y = 0, n = w * h; y < n;) {\n    blur(T, S, y, y += w, 1);\n  }\n}\n\nfunction blurv(blur, T, S, w, h) {\n  for (let x = 0, n = w * h; x < w; ++x) {\n    blur(T, S, x, x + n, w);\n  }\n}\n\nfunction blurfImage(radius) {\n  const blur = blurf(radius);\n  return (T, S, start, stop, step) => {\n    start <<= 2, stop <<= 2, step <<= 2;\n    blur(T, S, start + 0, stop + 0, step);\n    blur(T, S, start + 1, stop + 1, step);\n    blur(T, S, start + 2, stop + 2, step);\n    blur(T, S, start + 3, stop + 3, step);\n  };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n  const radius0 = Math.floor(radius);\n  if (radius0 === radius) return bluri(radius);\n  const t = radius - radius0;\n  const w = 2 * radius + 1;\n  return (T, S, start, stop, step) => { // stop must be aligned!\n    if (!((stop -= step) >= start)) return; // inclusive stop\n    let sum = radius0 * S[start];\n    const s0 = step * radius0;\n    const s1 = s0 + step;\n    for (let i = start, j = start + s0; i < j; i += step) {\n      sum += S[Math.min(stop, i)];\n    }\n    for (let i = start, j = stop; i <= j; i += step) {\n      sum += S[Math.min(stop, i + s0)];\n      T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n      sum -= S[Math.max(start, i - s0)];\n    }\n  };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n  const w = 2 * radius + 1;\n  return (T, S, start, stop, step) => { // stop must be aligned!\n    if (!((stop -= step) >= start)) return; // inclusive stop\n    let sum = radius * S[start];\n    const s = step * radius;\n    for (let i = start, j = start + s; i < j; i += step) {\n      sum += S[Math.min(stop, i)];\n    }\n    for (let i = start, j = stop; i <= j; i += step) {\n      sum += S[Math.min(stop, i + s)];\n      T[i] = sum / w;\n      sum -= S[Math.max(start, i - s)];\n    }\n  };\n}\n","export default function count(values, valueof) {\n  let count = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        ++count;\n      }\n    }\n  }\n  return count;\n}\n","function length(array) {\n  return array.length | 0;\n}\n\nfunction empty(length) {\n  return !(length > 0);\n}\n\nfunction arrayify(values) {\n  return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n  return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n  const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n  values = values.map(arrayify);\n  const lengths = values.map(length);\n  const j = values.length - 1;\n  const index = new Array(j + 1).fill(0);\n  const product = [];\n  if (j < 0 || lengths.some(empty)) return product;\n  while (true) {\n    product.push(index.map((j, i) => values[i][j]));\n    let i = j;\n    while (++index[i] === lengths[i]) {\n      if (i === 0) return reduce ? product.map(reduce) : product;\n      index[i--] = 0;\n    }\n  }\n}\n","export default function cumsum(values, valueof) {\n  var sum = 0, index = 0;\n  return Float64Array.from(values, valueof === undefined\n    ? v => (sum += +v || 0)\n    : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n  constructor() {\n    this._partials = new Float64Array(32);\n    this._n = 0;\n  }\n  add(x) {\n    const p = this._partials;\n    let i = 0;\n    for (let j = 0; j < this._n && j < 32; j++) {\n      const y = p[j],\n        hi = x + y,\n        lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n      if (lo) p[i++] = lo;\n      x = hi;\n    }\n    p[i] = x;\n    this._n = i + 1;\n    return this;\n  }\n  valueOf() {\n    const p = this._partials;\n    let n = this._n, x, y, lo, hi = 0;\n    if (n > 0) {\n      hi = p[--n];\n      while (n > 0) {\n        x = hi;\n        y = p[--n];\n        hi = x + y;\n        lo = y - (hi - x);\n        if (lo) break;\n      }\n      if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n        y = lo * 2;\n        x = hi + y;\n        if (y == x - hi) hi = x;\n      }\n    }\n    return hi;\n  }\n}\n\nexport function fsum(values, valueof) {\n  const adder = new Adder();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        adder.add(value);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        adder.add(value);\n      }\n    }\n  }\n  return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n  const adder = new Adder();\n  let index = -1;\n  return Float64Array.from(values, valueof === undefined\n      ? v => adder.add(+v || 0)\n      : v => adder.add(+valueof(v, ++index, values) || 0)\n  );\n}\n","export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n  return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n  return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n  return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n  for (let i = 1, n = keys.length; i < n; ++i) {\n    groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n  }\n  return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n  return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n  return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n  return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n  return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n  return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n  return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n  if (values.length !== 1) throw new Error(\"duplicate key\");\n  return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n  return (function regroup(values, i) {\n    if (i >= keys.length) return reduce(values);\n    const groups = new InternMap();\n    const keyof = keys[i++];\n    let index = -1;\n    for (const value of values) {\n      const key = keyof(value, ++index, values);\n      const group = groups.get(key);\n      if (group) group.push(value);\n      else groups.set(key, [value]);\n    }\n    for (const [key, values] of groups) {\n      groups.set(key, regroup(values, i));\n    }\n    return map(groups);\n  })(values, 0);\n}\n","export default function permute(source, keys) {\n  return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f && f.length !== 2) || F.length > 1) {\n    const index = Uint32Array.from(values, (d, i) => i);\n    if (F.length > 1) {\n      F = F.map(f => values.map(f));\n      index.sort((i, j) => {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) => ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) => {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n  return (reduce.length !== 2\n    ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n    : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n    .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n  return () => x;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n  let prestep;\n  while (true) {\n    const step = tickIncrement(start, stop, count);\n    if (step === prestep || step === 0 || !isFinite(step)) {\n      return [start, stop];\n    } else if (step > 0) {\n      start = Math.floor(start / step) * step;\n      stop = Math.ceil(stop / step) * step;\n    } else if (step < 0) {\n      start = Math.ceil(start * step) / step;\n      stop = Math.floor(stop * step) / step;\n    }\n    prestep = step;\n  }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n  return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    if (!Array.isArray(data)) data = Array.from(data);\n\n    var i,\n        n = data.length,\n        x,\n        step,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds, and nice the\n    // default domain accordingly.\n    if (!Array.isArray(tz)) {\n      const max = x1, tn = +tz;\n      if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n      tz = ticks(x0, x1, tn);\n\n      // If the domain is aligned with the first tick (which it will by\n      // default), then we can use quantization rather than bisection to bin\n      // values, which is substantially faster.\n      if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n      // If the last threshold is coincident with the domain’s upper bound, the\n      // last bin will be zero-width. If the default domain is used, and this\n      // last threshold is coincident with the maximum input value, we can\n      // extend the niced upper bound by one tick to ensure uniform bin widths;\n      // otherwise, we simply remove the last threshold. Note that we don’t\n      // coerce values or the domain to numbers, and thus must be careful to\n      // compare order (>=) rather than strict equality (===)!\n      if (tz[tz.length - 1] >= x1) {\n        if (max >= x1 && domain === extent) {\n          const step = tickIncrement(x0, x1, tn);\n          if (isFinite(step)) {\n            if (step > 0) {\n              x1 = (Math.floor(x1 / step) + 1) * step;\n            } else if (step < 0) {\n              x1 = (Math.ceil(x1 * -step) + 1) / -step;\n            }\n          }\n        } else {\n          tz.pop();\n        }\n      }\n    }\n\n    // Remove any thresholds outside the domain.\n    // Be careful not to mutate an array owned by the user!\n    var m = tz.length, a = 0, b = m;\n    while (tz[a] <= x0) ++a;\n    while (tz[b - 1] > x1) --b;\n    if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    if (isFinite(step)) {\n      if (step > 0) {\n        for (i = 0; i < n; ++i) {\n          if ((x = values[i]) != null && x0 <= x && x <= x1) {\n            bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n          }\n        }\n      } else if (step < 0) {\n        for (i = 0; i < n; ++i) {\n          if ((x = values[i]) != null && x0 <= x && x <= x1) {\n            const j = Math.floor((x0 - x) * step);\n            bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n          }\n        }\n      }\n    } else {\n      for (i = 0; i < n; ++i) {\n        if ((x = values[i]) != null && x0 <= x && x <= x1) {\n          bins[bisect(tz, x, 0, m)].push(data[i]);\n        }\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n  };\n\n  return histogram;\n}\n","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function maxIndex(values, valueof) {\n  let max;\n  let maxIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  }\n  return maxIndex;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","export default function minIndex(values, valueof) {\n  let min;\n  let minIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  }\n  return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left <= k && k <= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n  let max;\n  let defined = false;\n  if (compare.length === 1) {\n    let maxValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, maxValue) > 0\n          : ascending(value, value) === 0) {\n        max = element;\n        maxValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, max) > 0\n          : compare(value, value) === 0) {\n        max = value;\n        defined = true;\n      }\n    }\n  }\n  return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n  if (isNaN(p = +p)) return;\n  numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n  if (p <= 0) return minIndex(numbers);\n  if (p >= 1) return maxIndex(numbers);\n  var numbers,\n      index = Uint32Array.from(values, (_, i) => i),\n      j = numbers.length - 1,\n      i = Math.floor(j * p);\n  quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n  i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n  return i >= 0 ? i : -1;\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n  const c = count(values), d = quantile(values, 0.75) - quantile(values, 0.25);\n  return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n  const c = count(values), d = deviation(values);\n  return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n","export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n  return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n  const counts = new InternMap();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && value >= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && value >= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  }\n  let modeValue;\n  let modeCount = 0;\n  for (const [value, count] of counts) {\n    if (count > modeCount) {\n      modeCount = count;\n      modeValue = value;\n    }\n  }\n  return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n  const pairs = [];\n  let previous;\n  let first = false;\n  for (const value of values) {\n    if (first) pairs.push(pairof(previous, value));\n    previous = value;\n    first = true;\n  }\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n","export default function range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","import ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  let V = Array.from(values);\n  const R = new Float64Array(V.length);\n  if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n  const compareIndex = (i, j) => valueof(V[i], V[j]);\n  let k, r;\n  values = Uint32Array.from(V, (_, i) => i);\n  // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123\n  values.sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex));\n  values.forEach((j, i) => {\n      const c = compareIndex(j, k === undefined ? j : k);\n      if (c >= 0) {\n        if (k === undefined || c > 0) k = j, r = i;\n        R[j] = r;\n      } else {\n        R[j] = NaN;\n      }\n    });\n  return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n  let min;\n  let defined = false;\n  if (compare.length === 1) {\n    let minValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, minValue) < 0\n          : ascending(value, value) === 0) {\n        min = element;\n        minValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, min) < 0\n          : compare(value, value) === 0) {\n        min = value;\n        defined = true;\n      }\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n  if (compare.length === 1) return minIndex(values, compare);\n  let minValue;\n  let min = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (min < 0\n        ? compare(value, value) === 0\n        : compare(value, minValue) < 0) {\n      minValue = value;\n      min = index;\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n  if (compare.length === 1) return maxIndex(values, compare);\n  let maxValue;\n  let max = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (max < 0\n        ? compare(value, value) === 0\n        : compare(value, maxValue) > 0) {\n      maxValue = value;\n      max = index;\n    }\n  }\n  return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n  const index = leastIndex(values, compare);\n  return index < 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n  return function shuffle(array, i0 = 0, i1 = array.length) {\n    let m = i1 - (i0 = +i0);\n    while (m) {\n      const i = random() * m-- | 0, t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n    return array;\n  };\n}\n","export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n  return transpose(arguments);\n}\n","export default function every(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  let index = -1;\n  for (const value of values) {\n    if (!test(value, ++index, values)) {\n      return false;\n    }\n  }\n  return true;\n}\n","export default function some(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  let index = -1;\n  for (const value of values) {\n    if (test(value, ++index, values)) {\n      return true;\n    }\n  }\n  return false;\n}\n","export default function filter(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  const array = [];\n  let index = -1;\n  for (const value of values) {\n    if (test(value, ++index, values)) {\n      array.push(value);\n    }\n  }\n  return array;\n}\n","export default function map(values, mapper) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n  return Array.from(values, (value, index) => mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n  if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n  const iterator = values[Symbol.iterator]();\n  let done, next, index = -1;\n  if (arguments.length < 3) {\n    ({done, value} = iterator.next());\n    if (done) return;\n    ++index;\n  }\n  while (({done, value: next} = iterator.next()), !done) {\n    value = reducer(value, next, ++index, values);\n  }\n  return value;\n}\n","export default function reverse(values) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n  values = new InternSet(values);\n  for (const other of others) {\n    for (const value of other) {\n      values.delete(value);\n    }\n  }\n  return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n  const iterator = other[Symbol.iterator](), set = new InternSet();\n  for (const v of values) {\n    if (set.has(v)) return false;\n    let value, done;\n    while (({value, done} = iterator.next())) {\n      if (done) break;\n      if (Object.is(v, value)) return false;\n      set.add(value);\n    }\n  }\n  return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n  values = new InternSet(values);\n  others = others.map(set);\n  out: for (const value of values) {\n    for (const other of others) {\n      if (!other.has(value)) {\n        values.delete(value);\n        continue out;\n      }\n    }\n  }\n  return values;\n}\n\nfunction set(values) {\n  return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n  const iterator = values[Symbol.iterator](), set = new Set();\n  for (const o of other) {\n    const io = intern(o);\n    if (set.has(io)) continue;\n    let value, done;\n    while (({value, done} = iterator.next())) {\n      if (done) return false;\n      const ivalue = intern(value);\n      set.add(ivalue);\n      if (Object.is(io, ivalue)) break;\n    }\n  }\n  return true;\n}\n\nfunction intern(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n  return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n  const set = new InternSet();\n  for (const other of others) {\n    for (const o of other) {\n      set.add(o);\n    }\n  }\n  return set;\n}\n","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: 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","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, 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.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function*() {\n  for (var groups = this._groups, 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]) yield node;\n    }\n  }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n  if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n    events = sourceEvent(events);\n    if (node === undefined) node = events.currentTarget;\n    events = events.touches || [events];\n  }\n  return Array.from(events, event => pointer(event, node));\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([array(selector)], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, nonpassivecapture);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n  sourceEvent,\n  subject,\n  target,\n  identifier,\n  active,\n  x, y, dx, dy,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    subject: {value: subject, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    identifier: {value: identifier, enumerable: true, configurable: true},\n    active: {value: active, enumerable: true, configurable: true},\n    x: {value: x, enumerable: true, configurable: true},\n    y: {value: y, enumerable: true, configurable: true},\n    dx: {value: dx, enumerable: true, configurable: true},\n    dy: {value: dy, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n  return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved, nonpassive)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned(event, d) {\n    if (touchending || !filter.call(this, event, d)) return;\n    var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n    if (!gesture) return;\n    select(event.view)\n      .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n      .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n    nodrag(event.view);\n    nopropagation(event);\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\", event);\n  }\n\n  function mousemoved(event) {\n    noevent(event);\n    if (!mousemoving) {\n      var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy > clickDistance2;\n    }\n    gestures.mouse(\"drag\", event);\n  }\n\n  function mouseupped(event) {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent(event);\n    gestures.mouse(\"end\", event);\n  }\n\n  function touchstarted(event, d) {\n    if (!filter.call(this, event, d)) return;\n    var touches = event.changedTouches,\n        c = container.call(this, event, d),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n        nopropagation(event);\n        gesture(\"start\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchmoved(event) {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent(event);\n        gesture(\"drag\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchended(event) {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation(event);\n        gesture(\"end\", event, touches[i]);\n      }\n    }\n  }\n\n  function beforestart(that, container, event, d, identifier, touch) {\n    var dispatch = listeners.copy(),\n        p = pointer(touch || event, container), dx, dy,\n        s;\n\n    if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n        sourceEvent: event,\n        target: drag,\n        identifier,\n        active,\n        x: p[0],\n        y: p[1],\n        dx: 0,\n        dy: 0,\n        dispatch\n      }), d)) == null) return;\n\n    dx = s.x - p[0] || 0;\n    dy = s.y - p[1] || 0;\n\n    return function gesture(type, event, touch) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[identifier] = gesture, n = active++; break;\n        case \"end\": delete gestures[identifier], --active; // falls through\n        case \"drag\": p = pointer(touch || event, container), n = active; break;\n      }\n      dispatch.call(\n        type,\n        that,\n        new DragEvent(type, {\n          sourceEvent: event,\n          subject: s,\n          target: drag,\n          identifier,\n          active: n,\n          x: p[0] + dx,\n          y: p[1] + dy,\n          dx: p[0] - p0[0],\n          dy: p[1] - p0[1],\n          dispatch\n        }),\n        d\n      );\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(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","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\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}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 в‰… u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\n    delay = +delay, time = time == null ? now() : +time;\n    t._restart(function tick(elapsed) {\n      elapsed += total;\n      t._restart(tick, total += delay, time);\n      callback(elapsed);\n    }, delay, time);\n  }\n  t.restart(callback, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export const linear = t => +t;\n","export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n  return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n  return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n  return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return (t = +t) * t * (s * (t - 1) + t);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((t + 1) * s + t) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * tpmt(-t) * Math.sin((s - t) / p)\n        : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n","export default x => () => x;\n","export default function BrushEvent(type, {\n  sourceEvent,\n  target,\n  selection,\n  mode,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    selection: {value: selection, enumerable: true, configurable: true},\n    mode: {value: mode, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\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\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n  return Array.from({length: j - i}, (_, k) => i + k);\n}\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nexport default function() {\n  return chord(false, false);\n}\n\nexport function chordTranspose() {\n  return chord(false, true);\n}\n\nexport function chordDirected() {\n  return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = new Array(n),\n        groupIndex = range(0, n),\n        chords = new Array(n * n),\n        groups = new Array(n),\n        k = 0, dx;\n\n    matrix = Float64Array.from({length: n * n}, transpose\n        ? (_, i) => matrix[i % n][i / n | 0]\n        : (_, i) => matrix[i / n | 0][i % n]);\n\n    // Compute the scaling factor from value to angle in [0, 2pi].\n    for (let i = 0; i < n; ++i) {\n      let x = 0;\n      for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n      k += groupSums[i] = x;\n    }\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the angles for each group and constituent chord.\n    {\n      let x = 0;\n      if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n      for (const i of groupIndex) {\n        const x0 = x;\n        if (directed) {\n          const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            if (j < 0) {\n              const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n            } else {\n              const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        } else {\n          const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            let chord;\n            if (i < j) {\n              chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            } else {\n              chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n              if (i === j) chord.source = chord.target;\n            }\n            if (chord.source && chord.target && chord.source.value < chord.target.value) {\n              const source = chord.source;\n              chord.source = chord.target;\n              chord.target = source;\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        }\n        x += dx;\n      }\n    }\n\n    // Remove empty chords.\n    chords = Object.values(chords);\n    chords.groups = groups;\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n  };\n\n  return chord;\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n  return d.source;\n}\n\nfunction defaultTarget(d) {\n  return d.target;\n}\n\nfunction defaultRadius(d) {\n  return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n  return 0;\n}\n\nfunction defaultArrowheadRadius() {\n  return 10;\n}\n\nfunction ribbon(headRadius) {\n  var source = defaultSource,\n      target = defaultTarget,\n      sourceRadius = defaultRadius,\n      targetRadius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      padAngle = defaultPadAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        s = source.apply(this, arguments),\n        t = target.apply(this, arguments),\n        ap = padAngle.apply(this, arguments) / 2,\n        argv = slice.call(arguments),\n        sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi,\n        sa1 = endAngle.apply(this, argv) - halfPi,\n        tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n        ta0 = startAngle.apply(this, argv) - halfPi,\n        ta1 = endAngle.apply(this, argv) - halfPi;\n\n    if (!context) context = buffer = path();\n\n    if (ap > epsilon) {\n      if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n      else sa0 = sa1 = (sa0 + sa1) / 2;\n      if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n      else ta0 = ta1 = (ta0 + ta1) / 2;\n    }\n\n    context.moveTo(sr * cos(sa0), sr * sin(sa0));\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) {\n      if (headRadius) {\n        var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n        context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n        context.lineTo(tr * cos(ta2), tr * sin(ta2));\n        context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n      } else {\n        context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n        context.arc(0, 0, tr, ta0, ta1);\n      }\n    }\n    context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  if (headRadius) ribbon.headRadius = function(_) {\n    return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n  };\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.sourceRadius = function(_) {\n    return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.targetRadius = function(_) {\n    return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n  };\n\n  ribbon.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n  };\n\n  ribbon.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n  };\n\n  ribbon.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n  };\n\n  ribbon.source = function(_) {\n    return arguments.length ? (source = _, ribbon) : source;\n  };\n\n  ribbon.target = function(_) {\n    return arguments.length ? (target = _, ribbon) : target;\n  };\n\n  ribbon.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n  };\n\n  return ribbon;\n}\n\nexport default function() {\n  return ribbon();\n}\n\nexport function ribbonArrow() {\n  return ribbon(defaultArrowheadRadius);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n  return a - b;\n}\n","export default function(ring) {\n  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n  var i = -1, n = hole.length, c;\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0], y = point[1], contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n  }\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, nice, thresholdSturges, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n  [],\n  [[[1.0, 1.5], [0.5, 1.0]]],\n  [[[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [0.5, 1.0]]],\n  [[[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 0.5], [1.0, 1.5]]],\n  [[[1.0, 0.5], [0.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 0.5]]],\n  [[[1.0, 1.5], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.5, 1.0]]],\n  [[[1.0, 1.5], [1.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 1.5]]],\n  []\n];\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      threshold = thresholdSturges,\n      smooth = smoothLinear;\n\n  function contours(values) {\n    var tz = threshold(values);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      const e = extent(values, finite);\n      tz = ticks(...nice(e[0], e[1], tz), tz);\n      while (tz[tz.length - 1] >= e[1]) tz.pop();\n      while (tz[1] < e[0]) tz.shift();\n    } else {\n      tz = tz.slice().sort(ascending);\n    }\n\n    return tz.map(value => contour(values, value));\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    const v = value == null ? NaN : +value;\n    if (isNaN(v)) throw new Error(`invalid value: ${value}`);\n\n    var polygons = [],\n        holes = [];\n\n    isorings(values, v, function(ring) {\n      smooth(ring, values, v);\n      if (area(ring) > 0) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n\n    return {\n      type: \"MultiPolygon\",\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array,\n        fragmentByEnd = new Array,\n        x, y, t0, t1, t2, t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = above(values[0], value);\n    cases[t1 << 1].forEach(stitch);\n    while (++x < dx - 1) {\n      t0 = t1, t1 = above(values[x + 1], value);\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n    cases[t1 << 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = above(values[y * dx + dx], value);\n      t2 = above(values[y * dx], value);\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n      while (++x < dx - 1) {\n        t0 = t1, t1 = above(values[y * dx + dx + x + 1], value);\n        t3 = t2, t2 = above(values[y * dx + x + 1], value);\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n      cases[t1 | t2 << 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n    while (++x < dx - 1) {\n      t3 = t2, t2 = above(values[y * dx + x + 1], value);\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f, g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(function(point) {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v1 = valid(values[yt * dx + xt]);\n      if (x > 0 && x < dx && xt === x) {\n        point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value);\n      }\n      if (y > 0 && y < dy && yt === y) {\n        point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value);\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n    if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n  };\n\n  contours.smooth = function(_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n\n// When computing the extent, ignore infinite values (as well as invalid ones).\nfunction finite(x) {\n  return isFinite(x) ? x : NaN;\n}\n\n// Is the (possibly invalid) x greater than or equal to the (known valid) value?\n// Treat any invalid value as below negative infinity.\nfunction above(x, value) {\n  return x == null ? false : +x >= value;\n}\n\n// During smoothing, treat any invalid value as negative infinity.\nfunction valid(v) {\n  return v == null || isNaN(v = +v) ? -Infinity : v;\n}\n\nfunction smooth1(x, v0, v1, value) {\n  const a = value - v0;\n  const b = v1 - v0;\n  const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b);\n  return isNaN(d) ? x : x + d - 0.5;\n}\n","import {blur2, max, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport Contours from \"./contours.js\";\n\nfunction defaultX(d) {\n  return d[0];\n}\n\nfunction defaultY(d) {\n  return d[1];\n}\n\nfunction defaultWeight() {\n  return 1;\n}\n\nexport default function() {\n  var x = defaultX,\n      y = defaultY,\n      weight = defaultWeight,\n      dx = 960,\n      dy = 500,\n      r = 20, // blur radius\n      k = 2, // log2(grid cell size)\n      o = r * 3, // grid offset, to pad for blur\n      n = (dx + o * 2) >> k, // grid width\n      m = (dy + o * 2) >> k, // grid height\n      threshold = constant(20);\n\n  function grid(data) {\n    var values = new Float32Array(n * m),\n        pow2k = Math.pow(2, -k),\n        i = -1;\n\n    for (const d of data) {\n      var xi = (x(d, ++i, data) + o) * pow2k,\n          yi = (y(d, i, data) + o) * pow2k,\n          wi = +weight(d, i, data);\n      if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        var x0 = Math.floor(xi),\n            y0 = Math.floor(yi),\n            xt = xi - x0 - 0.5,\n            yt = yi - y0 - 0.5;\n        values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n        values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n        values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n        values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n      }\n    }\n\n    blur2({data: values, width: n, height: m}, r * pow2k);\n    return values;\n  }\n\n  function density(data) {\n    var values = grid(data),\n        tz = threshold(values),\n        pow4k = Math.pow(2, 2 * k);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = ticks(Number.MIN_VALUE, max(values) / pow4k, tz);\n    }\n\n    return Contours()\n        .size([n, m])\n        .thresholds(tz.map(d => d * pow4k))\n      (values)\n        .map((c, i) => (c.value = +tz[i], transform(c)));\n  }\n\n  density.contours = function(data) {\n    var values = grid(data),\n        contours = Contours().size([n, m]),\n        pow4k = Math.pow(2, 2 * k),\n        contour = value => {\n          value = +value;\n          var c = transform(contours.contour(values, value * pow4k));\n          c.value = value; // preserve exact threshold value\n          return c;\n        };\n    Object.defineProperty(contour, \"max\", {get: () => max(values) / pow4k});\n    return contour;\n  };\n\n  function transform(geometry) {\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  }\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    coordinates.forEach(transformPoint);\n  }\n\n  // TODO Optimize.\n  function transformPoint(coordinates) {\n    coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n    coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n  }\n\n  function resize() {\n    o = r * 3;\n    n = (dx + o * 2) >> k;\n    m = (dy + o * 2) >> k;\n    return density;\n  }\n\n  density.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n  };\n\n  density.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n  };\n\n  density.weight = function(_) {\n    return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n  };\n\n  density.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = +_[0], _1 = +_[1];\n    if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, resize();\n  };\n\n  density.cellSize = function(_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n    return k = Math.floor(Math.log(_) / Math.LN2), resize();\n  };\n\n  density.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n  };\n\n  density.bandwidth = function(_) {\n    if (!arguments.length) return Math.sqrt(r * (r + 1));\n    if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n    return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize();\n  };\n\n  return density;\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n    let Q, Qnew, hh, bvirt;\n    let enow = e[0];\n    let fnow = f[0];\n    let eindex = 0;\n    let findex = 0;\n    if ((fnow > enow) === (fnow > -enow)) {\n        Q = enow;\n        enow = e[++eindex];\n    } else {\n        Q = fnow;\n        fnow = f[++findex];\n    }\n    let hindex = 0;\n    if (eindex < elen && findex < flen) {\n        if ((fnow > enow) === (fnow > -enow)) {\n            Qnew = enow + Q;\n            hh = Q - (Qnew - enow);\n            enow = e[++eindex];\n        } else {\n            Qnew = fnow + Q;\n            hh = Q - (Qnew - fnow);\n            fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n            if ((fnow > enow) === (fnow > -enow)) {\n                Qnew = Q + enow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (enow - bvirt);\n                enow = e[++eindex];\n            } else {\n                Qnew = Q + fnow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n                fnow = f[++findex];\n            }\n            Q = Qnew;\n            if (hh !== 0) {\n                h[hindex++] = hh;\n            }\n        }\n    }\n    while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n    return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n    let Q, sum, hh, product1, product0;\n    let bvirt, c, ahi, alo, bhi, blo;\n\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    let enow = e[0];\n    Q = enow * b;\n    c = splitter * enow;\n    ahi = c - (c - enow);\n    alo = enow - ahi;\n    hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n    let hindex = 0;\n    if (hh !== 0) {\n        h[hindex++] = hh;\n    }\n    for (let i = 1; i < elen; i++) {\n        enow = e[i];\n        product1 = enow * b;\n        c = splitter * enow;\n        ahi = c - (c - enow);\n        alo = enow - ahi;\n        product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n        sum = Q + product0;\n        bvirt = sum - Q;\n        hh = Q - (sum - bvirt) + (product0 - bvirt);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        Q = product1 + sum;\n        hh = sum - (Q - product1);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function negate(elen, e) {\n    for (let i = 0; i < elen; i++) e[i] = -e[i];\n    return elen;\n}\n\nexport function estimate(elen, e) {\n    let Q = e[0];\n    for (let i = 1; i < elen; i++) Q += e[i];\n    return Q;\n}\n\nexport function vec(n) {\n    return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n    let acxtail, acytail, bcxtail, bcytail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const acx = ax - cx;\n    const bcx = bx - cx;\n    const acy = ay - cy;\n    const bcy = by - cy;\n\n    s1 = acx * bcy;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcx;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    B[3] = u3;\n\n    let det = estimate(4, B);\n    let errbound = ccwerrboundB * detsum;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - acx;\n    acxtail = ax - (acx + bvirt) + (bvirt - cx);\n    bvirt = bx - bcx;\n    bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n    bvirt = ay - acy;\n    acytail = ay - (acy + bvirt) + (bvirt - cy);\n    bvirt = by - bcy;\n    bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n    if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n    }\n\n    errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n    det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n    if (det >= errbound || -det >= errbound) return det;\n\n    s1 = acxtail * bcy;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcx;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C1len = sum(4, B, 4, u, C1);\n\n    s1 = acx * bcytail;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcxtail;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C2len = sum(C1len, C1, 4, u, C2);\n\n    s1 = acxtail * bcytail;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcxtail;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const Dlen = sum(C2len, C2, 4, u, D);\n\n    return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n    const detleft = (ay - cy) * (bx - cx);\n    const detright = (ax - cx) * (by - cy);\n    const det = detleft - detright;\n\n    const detsum = Math.abs(detleft + detright);\n    if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n    return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n    return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i < n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i < n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let minDist = Infinity;\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0; i < n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (let i = 0; i < n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist && d > 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i < n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r < minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i < n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i < n; i++) {\n                const id = this._ids[i];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i < n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k < this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left <= 20) {\n        for (let i = left + 1; i <= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) >> 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] < tempDist);\n            do j--; while (dists[ids[j]] > tempDist);\n            if (j < i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 >= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r < 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(x, y, w, h) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n  }\n  value() {\n    return this._ || null;\n  }\n}\n","export default class Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n    let bx, by; // lazily computed barycenter of the hull\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (Math.abs(ab) < 1e-9) {\n        // For a degenerate triangle, the circumcenter is at the infinity, in a\n        // direction orthogonal to the halfedge and away from the “center” of\n        // the diagram <bx, by>, defined as the hull’s barycenter.\n        if (bx === undefined) {\n          bx = by = 0;\n          for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n          bx /= hull.length, by /= hull.length;\n        }\n        const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n        x = (x1 + x3) / 2 - a * ey;\n        y = (y1 + y3) / 2 + a * ex;\n      } else {\n        const d = 1 / ab;\n        const bl = dx * dx + dy * dy;\n        const cl = ex * ex + ey * ey;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i < hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length <= 1) return null;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i < hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer && buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer && buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n    for (let i = 2; i < n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i < n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new Polygon;\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 && c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n          if (ci[ai] === cj[aj]\n              && ci[ai + 1] === cj[aj + 1]\n              && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n              && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 && e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 && this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return this._simplify(V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points));\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1 = 0;\n    for (let j = 0; j < n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 && c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    // for more robustness, always consider the segment in the same order\n    const flip = c0 < c1;\n    if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n    while (true) {\n      if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n      if (c0 & c1) return null;\n      let x, y, c = c0 || c1;\n      if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n      // undefined, the conditional statement will be executed.\n      if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy < 0) { // top\n      if (y0 <= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy > 0) { // bottom\n      if (y0 >= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx > 0) { // right\n      if (x0 >= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx < 0) { // left\n      if (x0 <= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x < this.xmin ? 0b0001\n        : x > this.xmax ? 0b0010 : 0b0000)\n        | (y < this.ymin ? 0b0100\n        : y > this.ymax ? 0b1000 : 0b0000);\n  }\n  _simplify(P) {\n    if (P && P.length > 4) {\n      for (let i = 0; i < P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n          P.splice(j, 2), i -= 2;\n        }\n      }\n      if (!P.length) P = null;\n    }\n    return P;\n  }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i < triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross > 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new Delaunator(points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n        .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i < n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new Delaunator(points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e < n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i < n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) {\n        inedges[hull[1]] = 0;\n        this.triangles[1] = hull[1];\n        this.triangles[2] = hull[1];\n      }\n    }\n  }\n  voronoi(bounds) {\n    return new Voronoi(this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l > 0) yield collinear[l - 1];\n      if (l < collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt < dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer && buffer.value();\n  }\n  renderPoints(context, r) {\n    if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n    r = r == undefined ? 2 : +r;\n    const buffer = context == null ? context = new Path : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i < n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer && buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i < n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new Polygon;\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new Polygon;\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i < n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\n}\n","var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","function responseBlob(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.blob();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.text();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n  return function(input, init, row) {\n    if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n    return text(input, init).then(function(response) {\n      return parse(response, row);\n    });\n  };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n  if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n  var format = dsvFormat(delimiter);\n  return text(input, init).then(function(response) {\n    return format.parse(response, row);\n  });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n  return new Promise(function(resolve, reject) {\n    var image = new Image;\n    for (var key in init) image[key] = init[key];\n    image.onerror = reject;\n    image.onload = function() { resolve(image); };\n    image.src = input;\n  });\n}\n","function responseJson(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  if (response.status === 204 || response.status === 205) return;\n  return response.json();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n  return (input, init) => text(input, init)\n    .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n  var nodes, strength = 1;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n}\n","export default function(d) {\n  const x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0 || 1,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(random), l += x * x;\n            if (y === 0) y = jiggle(random), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"node not found: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      random,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle(random);\n        y = target.y + target.vy - source.y - source.vy || jiggle(random);\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = new Map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.forEach(function(force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes, random);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(random), l += x * x;\n        if (y === 0) y = jiggle(random), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(random), l += x * x;\n      if (y === 0) y = jiggle(random), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n  var nodes,\n      strength = constant(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, В±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum = new Adder();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum = new Adder();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function 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\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new Adder();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\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\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(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  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = hypot(cx, cy, cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new Adder();\n  Y2 = new Adder();\n  Z2 = new Adder();\n  stream(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = hypot(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = hypot(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\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\n  return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n  return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    lambda += deltaLambda;\n    if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n    return [lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0В°, 0В°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      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","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new Adder();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\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 = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 вЁЇ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\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\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\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\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\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(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          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum = new Adder();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = distance(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = distance(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = 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\n  graticule.extentMinor = 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\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new Adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new Adder();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n  constructor(digits) {\n    this._append = digits == null ? append : appendRound(digits);\n    this._radius = 4.5;\n    this._ = \"\";\n  }\n  pointRadius(_) {\n    this._radius = +_;\n    return this;\n  }\n  polygonStart() {\n    this._line = 0;\n  }\n  polygonEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line === 0) this._ += \"Z\";\n    this._point = NaN;\n  }\n  point(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._append`M${x},${y}`;\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._append`L${x},${y}`;\n        break;\n      }\n      default: {\n        this._append`M${x},${y}`;\n        if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n          const r = this._radius;\n          const s = this._;\n          this._ = \"\"; // stash the old string so we can cache the circle path fragment\n          this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n          cacheRadius = r;\n          cacheAppend = this._append;\n          cacheCircle = this._;\n          this._ = s;\n        }\n        this._ += cacheCircle;\n        break;\n      }\n    }\n  }\n  result() {\n    const result = this._;\n    this._ = \"\";\n    return result.length ? result : null;\n  }\n}\n\nfunction append(strings) {\n  let i = 1;\n  this._ += strings[0];\n  for (const j = strings.length; i < j; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  const d = Math.floor(digits);\n  if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  if (d !== cacheDigits) {\n    const k = 10 ** d;\n    cacheDigits = d;\n    cacheAppend = function append(strings) {\n      let i = 1;\n      this._ += strings[0];\n      for (const j = strings.length; i < j; ++i) {\n        this._ += Math.round(arguments[i] * k) / k + strings[i];\n      }\n    };\n  }\n  return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  let digits = 3,\n      pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    if (!arguments.length) return projection;\n    projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n    return path;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  path.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) digits = null;\n    else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    if (context === null) contextStream = new PathString(digits);\n    return path;\n  };\n\n  return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960Г—500. The projection also works quite well at 960Г—600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i >= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i < n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\n}\n","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n","export default function*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i < n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = childs[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  find: node_find,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy,\n  [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","export default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n  let m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n","import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n  return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n  var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n  if (!(n = (circles = array(circles)).length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packSiblingsRandom(circles, lcg());\n  return circles;\n}\n","import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    const random = lcg();\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildrenRandom(padding, 0.5, random))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildrenRandom(constantZero, 1, random))\n          .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packSiblingsRandom(children, random);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n    ambiguous = {},\n    imputed = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId,\n      path;\n\n  function stratify(data) {\n    var nodes = Array.from(data),\n        currentId = id,\n        currentParentId = parentId,\n        n,\n        d,\n        i,\n        root,\n        parent,\n        node,\n        nodeId,\n        nodeKey,\n        nodeByKey = new Map;\n\n    if (path != null) {\n      const I = nodes.map((d, i) => normalize(path(d, i, data)));\n      const P = I.map(parentof);\n      const S = new Set(I).add(\"\");\n      for (const i of P) {\n        if (!S.has(i)) {\n          S.add(i);\n          I.push(i);\n          P.push(parentof(i));\n          nodes.push(imputed);\n        }\n      }\n      currentId = (_, i) => I[i];\n      currentParentId = (_, i) => P[i];\n    }\n\n    for (i = 0, n = nodes.length; i < n; ++i) {\n      d = nodes[i], node = nodes[i] = new Node(d);\n      if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = node.id = nodeId;\n        nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n      }\n      if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n        node.parent = nodeId;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i];\n      if (nodeId = node.parent) {\n        parent = nodeByKey.get(nodeId);\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      } else {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n\n    // When imputing internal nodes, only introduce roots if needed.\n    // Then replace the imputed marker data with null.\n    if (path != null) {\n      while (root.data === imputed && root.children.length === 1) {\n        root = root.children[0], --n;\n      }\n      for (let i = nodes.length - 1; i >= 0; --i) {\n        node = nodes[i];\n        if (node.data !== imputed) break;\n        node.data = null;\n      }\n    }\n\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = optional(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = optional(x), stratify) : parentId;\n  };\n\n  stratify.path = function(x) {\n    return arguments.length ? (path = optional(x), stratify) : path;\n  };\n\n  return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n  path = `${path}`;\n  let i = path.length;\n  if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n  return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n  let i = path.length;\n  if (i < 2) return \"\";\n  while (--i > 1) if (slash(path, i)) break;\n  return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n  if (path[i] === \"/\") {\n    let k = 0;\n    while (i > 0 && path[--i] === \"\\\\\") ++k;\n    if ((k & 1) === 0) return true;\n  }\n  return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(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\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      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\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(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 s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(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\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(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 && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n        else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      x = 0,\n      y = 0,\n      a,\n      b = polygon[n - 1],\n      c,\n      k = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    k += 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\n  return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n  return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n  const n = points.length,\n      indexes = [0, 1];\n  let size = 2, i;\n\n  for (i = 2; i < n; ++i) {\n    while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n    indexes[size++] = i;\n  }\n\n  return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n  if ((n = points.length) < 3) return null;\n\n  var i,\n      n,\n      sortedPoints = new Array(n),\n      flippedPoints = new Array(n);\n\n  for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n  sortedPoints.sort(lexicographicOrder);\n  for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n  var upperIndexes = computeUpperHullIndexes(sortedPoints),\n      lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n  // Construct the hull polygon, removing possible duplicate endpoints.\n  var skipLeft = lowerIndexes[0] === upperIndexes[0],\n      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n      hull = [];\n\n  // Add upper hull in right-to-l order.\n  // Then add lower hull in left-to-right order.\n  for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n  for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n  return hull;\n}\n","export default function(polygon, point) {\n  var n = polygon.length,\n      p = polygon[n - 1],\n      x = point[0], y = point[1],\n      x0 = p[0], y0 = p[1],\n      x1, y1,\n      inside = false;\n\n  for (var i = 0; i < n; ++i) {\n    p = polygon[i], x1 = p[0], y1 = p[1];\n    if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n    x0 = x1, y0 = y1;\n  }\n\n  return inside;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i < n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.hypot(xa, ya);\n  }\n\n  return perimeter;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomInt(source) {\n  function randomInt(min, max) {\n    if (arguments.length < 2) max = min, min = 0;\n    min = Math.floor(min);\n    max = Math.floor(max) - min;\n    return function() {\n      return Math.floor(source() * max + min);\n    };\n  }\n\n  randomInt.source = sourceRandomInt;\n\n  return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n  var N = normal.source(source);\n\n  function randomLogNormal() {\n    var randomNormal = N.apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    if ((n = +n) <= 0) return () => 0;\n    return function() {\n      for (var sum = 0, i = n; i > 1; --i) sum += source();\n      return sum + i * source();\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n  var I = irwinHall.source(source);\n\n  function randomBates(n) {\n    // use limiting distribution at n === 0\n    if ((n = +n) === 0) return source;\n    var randomIrwinHall = I(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log1p(-source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n  function randomPareto(alpha) {\n    if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n    alpha = 1 / -alpha;\n    return function() {\n      return Math.pow(1 - source(), alpha);\n    };\n  }\n\n  randomPareto.source = sourceRandomPareto;\n\n  return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n  function randomBernoulli(p) {\n    if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n    return function() {\n      return Math.floor(source() + p);\n    };\n  }\n\n  randomBernoulli.source = sourceRandomBernoulli;\n\n  return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n  function randomGeometric(p) {\n    if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n    if (p === 0) return () => Infinity;\n    if (p === 1) return () => 1;\n    p = Math.log1p(-p);\n    return function() {\n      return 1 + Math.floor(Math.log1p(-source()) / p);\n    };\n  }\n\n  randomGeometric.source = sourceRandomGeometric;\n\n  return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n  var randomNormal = normal.source(source)();\n\n  function randomGamma(k, theta) {\n    if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n    // degenerate distribution if k === 0\n    if (k === 0) return () => 0;\n    theta = theta == null ? 1 : +theta;\n    // exponential distribution if k === 1\n    if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n    var d = (k < 1 ? k + 1 : k) - 1 / 3,\n        c = 1 / (3 * Math.sqrt(d)),\n        multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n    return function() {\n      do {\n        do {\n          var x = randomNormal(),\n              v = 1 + c * x;\n        } while (v <= 0);\n        v *= v * v;\n        var u = 1 - source();\n      } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n      return d * v * multiplier() * theta;\n    };\n  }\n\n  randomGamma.source = sourceRandomGamma;\n\n  return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n  var G = gamma.source(source);\n\n  function randomBeta(alpha, beta) {\n    var X = G(alpha),\n        Y = G(beta);\n    return function() {\n      var x = X();\n      return x === 0 ? 0 : x / (x + Y());\n    };\n  }\n\n  randomBeta.source = sourceRandomBeta;\n\n  return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n  var G = geometric.source(source),\n      B = beta.source(source);\n\n  function randomBinomial(n, p) {\n    n = +n;\n    if ((p = +p) >= 1) return () => n;\n    if (p <= 0) return () => 0;\n    return function() {\n      var acc = 0, nn = n, pp = p;\n      while (nn * pp > 16 && nn * (1 - pp) > 16) {\n        var i = Math.floor((nn + 1) * pp),\n            y = B(i, nn - i + 1)();\n        if (y <= pp) {\n          acc += i;\n          nn -= i;\n          pp = (pp - y) / (1 - y);\n        } else {\n          nn = i - 1;\n          pp /= y;\n        }\n      }\n      var sign = pp < 0.5,\n          pFinal = sign ? pp : 1 - pp,\n          g = G(pFinal);\n      for (var s = g(), k = 0; s <= nn; ++k) s += g();\n      return acc + (sign ? k : nn - k);\n    };\n  }\n\n  randomBinomial.source = sourceRandomBinomial;\n\n  return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n  function randomWeibull(k, a, b) {\n    var outerFunc;\n    if ((k = +k) === 0) {\n      outerFunc = x => -Math.log(x);\n    } else {\n      k = 1 / k;\n      outerFunc = x => Math.pow(x, k);\n    }\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * outerFunc(-Math.log1p(-source()));\n    };\n  }\n\n  randomWeibull.source = sourceRandomWeibull;\n\n  return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n  function randomCauchy(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * Math.tan(Math.PI * source());\n    };\n  }\n\n  randomCauchy.source = sourceRandomCauchy;\n\n  return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n  function randomLogistic(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      var u = source();\n      return a + b * Math.log(u / (1 - u));\n    };\n  }\n\n  randomLogistic.source = sourceRandomLogistic;\n\n  return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n  var G = gamma.source(source),\n      B = binomial.source(source);\n\n  function randomPoisson(lambda) {\n    return function() {\n      var acc = 0, l = lambda;\n      while (l > 16) {\n        var n = Math.floor(0.875 * l),\n            t = G(n)();\n        if (t > l) return acc + B(n - 1, l / t)();\n        acc += n;\n        l -= t;\n      }\n      for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n      return acc + k;\n    };\n  }\n\n  randomPoisson.source = sourceRandomPoisson;\n\n  return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n  let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n  return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n  var squared = continuous(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) => {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) => {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\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\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n  var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n  while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n  return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"d8b365f5f5f55ab4ac\",\n  \"a6611adfc27d80cdc1018571\",\n  \"a6611adfc27df5f5f580cdc1018571\",\n  \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n  \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n  \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n  \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n  \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n  \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"af8dc3f7f7f77fbf7b\",\n  \"7b3294c2a5cfa6dba0008837\",\n  \"7b3294c2a5cff7f7f7a6dba0008837\",\n  \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n  \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n  \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n  \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n  \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n  \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e9a3c9f7f7f7a1d76a\",\n  \"d01c8bf1b6dab8e1864dac26\",\n  \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n  \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n  \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n  \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n  \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n  \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n  \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"998ec3f7f7f7f1a340\",\n  \"5e3c99b2abd2fdb863e66101\",\n  \"5e3c99b2abd2f7f7f7fdb863e66101\",\n  \"542788998ec3d8daebfee0b6f1a340b35806\",\n  \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n  \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n  \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n  \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n  \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62f7f7f767a9cf\",\n  \"ca0020f4a58292c5de0571b0\",\n  \"ca0020f4a582f7f7f792c5de0571b0\",\n  \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n  \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n  \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n  \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n  \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n  \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62ffffff999999\",\n  \"ca0020f4a582bababa404040\",\n  \"ca0020f4a582ffffffbababa404040\",\n  \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n  \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n  \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n  \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n  \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n  \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91bfdb\",\n  \"d7191cfdae61abd9e92c7bb6\",\n  \"d7191cfdae61ffffbfabd9e92c7bb6\",\n  \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n  \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n  \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n  \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n  \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n  \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91cf60\",\n  \"d7191cfdae61a6d96a1a9641\",\n  \"d7191cfdae61ffffbfa6d96a1a9641\",\n  \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n  \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n  \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n  \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n  \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n  \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf99d594\",\n  \"d7191cfdae61abdda42b83ba\",\n  \"d7191cfdae61ffffbfabdda42b83ba\",\n  \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n  \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n  \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n  \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n  \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n  \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5f999d8c92ca25f\",\n  \"edf8fbb2e2e266c2a4238b45\",\n  \"edf8fbb2e2e266c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0ecf49ebcda8856a7\",\n  \"edf8fbb3cde38c96c688419d\",\n  \"edf8fbb3cde38c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0f3dba8ddb543a2ca\",\n  \"f0f9e8bae4bc7bccc42b8cbe\",\n  \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee8c8fdbb84e34a33\",\n  \"fef0d9fdcc8afc8d59d7301f\",\n  \"fef0d9fdcc8afc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece2f0a6bddb1c9099\",\n  \"f6eff7bdc9e167a9cf02818a\",\n  \"f6eff7bdc9e167a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece7f2a6bddb2b8cbe\",\n  \"f1eef6bdc9e174a9cf0570b0\",\n  \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e7e1efc994c7dd1c77\",\n  \"f1eef6d7b5d8df65b0ce1256\",\n  \"f1eef6d7b5d8df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fde0ddfa9fb5c51b8a\",\n  \"feebe2fbb4b9f768a1ae017e\",\n  \"feebe2fbb4b9f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"edf8b17fcdbb2c7fb8\",\n  \"ffffcca1dab441b6c4225ea8\",\n  \"ffffcca1dab441b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f7fcb9addd8e31a354\",\n  \"ffffccc2e69978c679238443\",\n  \"ffffccc2e69978c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fff7bcfec44fd95f0e\",\n  \"ffffd4fed98efe9929cc4c02\",\n  \"ffffd4fed98efe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ffeda0feb24cf03b20\",\n  \"ffffb2fecc5cfd8d3ce31a1c\",\n  \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"deebf79ecae13182bd\",\n  \"eff3ffbdd7e76baed62171b5\",\n  \"eff3ffbdd7e76baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5e0a1d99b31a354\",\n  \"edf8e9bae4b374c476238b45\",\n  \"edf8e9bae4b374c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f0f0f0bdbdbd636363\",\n  \"f7f7f7cccccc969696525252\",\n  \"f7f7f7cccccc969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"efedf5bcbddc756bb1\",\n  \"f2f0f7cbc9e29e9ac86a51a3\",\n  \"f2f0f7cbc9e29e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee0d2fc9272de2d26\",\n  \"fee5d9fcae91fb6a4acb181d\",\n  \"fee5d9fcae91fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee6cefdae6be6550d\",\n  \"feeddefdbe85fd8d3cd94701\",\n  \"feeddefdbe85fd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n      + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n  if (t < 0 || t > 1) t -= Math.floor(t);\n  var ts = Math.abs(t - 0.5);\n  c.h = 360 * t - 100;\n  c.s = 1.5 - 1.5 * ts;\n  c.l = 0.8 - 0.9 * ts;\n  return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n    pi_1_3 = Math.PI / 3,\n    pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n  var x;\n  t = (0.5 - t) * Math.PI;\n  c.r = 255 * (x = Math.sin(t)) * x;\n  c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n  c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n  return c + \"\";\n}\n","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n      + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null,\n      path = withPath(arc);\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle. If this\n        // intersection fails, it’s probably because the arc is too small, so\n        // disable the corner radius entirely.\n        if (da < pi) {\n          if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n            var ax = x01 - oc[0],\n                ay = y01 - oc[1],\n                bx = x11 - oc[0],\n                by = y11 - oc[1],\n                kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n                lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n            rc0 = min(rc, (r0 - lc) / (kc - 1));\n            rc1 = min(rc, (r1 - lc) / (kc + 1));\n          } else {\n            rc0 = rc1 = 0;\n          }\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n  return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n  var value = identity,\n      sortValues = descending,\n      sort = null,\n      startAngle = constant(0),\n      endAngle = constant(tau),\n      padAngle = constant(0);\n\n  function pie(data) {\n    var i,\n        n = (data = array(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n","export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nclass BumpRadial {\n  constructor(context) {\n    this._context = context;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {}\n  point(x, y) {\n    x = +x, y = +y;\n    if (this._point === 0) {\n      this._point = 1;\n    } else {\n      const p0 = pointRadial(this._x0, this._y0);\n      const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n      const p2 = pointRadial(x, this._y0);\n      const p3 = pointRadial(x, y);\n      this._context.moveTo(...p0);\n      this._context.bezierCurveTo(...p1, ...p2, ...p3);\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nexport function bumpX(context) {\n  return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n  return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n  return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nexport function link(curve) {\n  let source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null,\n      output = null,\n      path = withPath(link);\n\n  function link() {\n    let buffer;\n    const argv = slice.call(arguments);\n    const s = source.apply(this, argv);\n    const t = target.apply(this, argv);\n    if (context == null) output = curve(buffer = path());\n    output.lineStart();\n    argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    output.lineEnd();\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n  };\n\n  return link;\n}\n\nexport function linkHorizontal() {\n  return link(bumpX);\n}\n\nexport function linkVertical() {\n  return link(bumpY);\n}\n\nexport function linkRadial() {\n  const l = link(bumpRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.62625;\n    context.moveTo(0, -r);\n    context.lineTo(r, 0);\n    context.lineTo(0, r);\n    context.lineTo(-r, 0);\n    context.closePath();\n  }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n    context.moveTo(-r, 0);\n    context.lineTo(r, 0);\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.4431;\n    context.moveTo(r, r);\n    context.lineTo(r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, r);\n    context.closePath();\n  }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i < 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n    context.moveTo(-r, -r);\n    context.lineTo(r, r);\n    context.moveTo(-r, r);\n    context.lineTo(r, -r);\n  }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // falls through\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n","function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic BГ©zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n","function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n","export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n","export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = array(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n","export default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[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\n  return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n  sourceEvent,\n  target,\n  transform,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    transform: {value: transform, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\n          .start()\n          .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n          .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p, event) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p, event);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = pointer(event);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent(event);\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n    noevent(event);\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n"],"names":["ascending","a","b","NaN","descending","bisector","f","compare1","compare2","delta","length","d","x","zero","left","lo","hi","mid","right","center","i","numbers","number","values","valueof","undefined","value","index","ascendingBisect","bisectRight","bisectLeft","bisectCenter","blur","r","RangeError","Math","floor","blurf","temp","slice","blur2","Blur2","blurImage","blurfImage","data","rx","ry","width","height","blurx","blury","blurh","blurv","T","S","w","h","y","n","radius","start","stop","step","radius0","bluri","t","sum","s0","s1","j","min","max","s","count","array","empty","arrayify","Array","from","reducer","reduce","cross","pop","map","lengths","fill","product","some","push","cumsum","Float64Array","v","variance","mean","deviation","sqrt","extent","Adder","_partials","_n","p","abs","fsum","adder","add","fcumsum","InternMap","entries","key","keyof","Object","defineProperties","_intern","Map","_key","set","intern_get","intern_set","intern_delete","InternSet","Set","has","get","valueOf","identity","group","keys","nest","groups","flatten","flatMap","g","flatGroup","flatRollup","rollups","rollup","unique","indexes","Error","regroup","permute","source","sort","F","Symbol","iterator","TypeError","Uint32Array","c","ascendingDefined","compareDefined","compare","groupSort","ak","av","bk","bv","prototype","constant","e10","e5","e2","tickSpec","power","log10","error","pow","factor","i1","i2","inc","round","ticks","reverse","tickIncrement","tickStep","nice","prestep","isFinite","ceil","thresholdSturges","log","LN2","bin","domain","threshold","sturges","histogram","isArray","xz","x0","x1","tz","tn","m","bins","bisect","_","arguments","thresholds","call","maxIndex","minIndex","quickselect","k","Infinity","z","exp","sd","newLeft","newRight","swap","greatest","defined","maxValue","element","quantile","isNaN","i0","value0","subarray","value1","quantileSorted","quantileIndex","thresholdFreedmanDiaconis","thresholdScott","cbrt","median","medianIndex","arrays","merge","mode","counts","modeValue","modeCount","pairs","pairof","pair","previous","first","range","rank","V","R","compareIndex","forEach","least","minValue","leastIndex","greatestIndex","scan","shuffler","random","shuffle","transpose","matrix","row","zip","every","test","filter","mapper","done","next","difference","others","other","disjoint","is","intersection","out","superset","o","io","intern","ivalue","subset","union","top","bottom","epsilon","translateX","translateY","scale","offset","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","transform","context","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","insert","transition","getAttribute","parentNode","remove","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Dispatch","parseTypenames","typenames","types","trim","split","name","indexOf","hasOwnProperty","type","constructor","on","typename","callback","that","args","concat","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","_groups","subgroups","subgroup","node","subnode","__data__","Selection","_parents","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","childrenFilter","matcher","update","_enter","sparse","EnterNode","parent","datum","_next","_parent","appendChild","child","insertBefore","bindIndex","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","bind","arraylike","enterGroup","updateGroup","exitGroup","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","size","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","getAttributeNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","join","splice","contains","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","event","onRemove","__on","removeEventListener","options","onAdd","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","selection_selection","selection_select","selection_selectAll","selectChild","selection_selectChild","selectChildren","selection_selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","nodes","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","classed","selection_classed","selection_text","html","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","selection_iterator","nextId","Local","toString","id","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","clientTop","pageX","pageY","events","target","touches","pointer","nonpassive","passive","nonpassivecapture","capture","nopropagation","stopImmediatePropagation","preventDefault","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","DragEvent","subject","identifier","active","dx","dy","enumerable","configurable","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","container","touchable","gestures","listeners","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","nodrag","mouse","changedTouches","clearTimeout","touch","p0","clickDistance","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","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","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","define","color","channels","assign","displayable","rgb","hex","color_formatHex","formatHex","formatHex8","color_formatHex8","formatHsl","color_formatHsl","formatRgb","color_formatRgb","hslConvert","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","clamp","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","Hsl","hsl","m2","hsl2rgb","clamph","clampt","radians","PI","degrees","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","lch","hcl","cos","sin","A","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","basis","v0","v1","v2","v3","linear","exponential","hue","gamma","nogamma","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","numberArray","genericArray","nb","na","Date","setTime","reA","reB","one","bi","lastIndex","am","bm","bs","q","date","object","rotate","skewX","scaleX","scaleY","e","atan","svgNode","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","baseVal","consolidate","interpolateTransform","parse","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","epsilon2","tanh","zoomRho","rho","rho2","rho4","zoom","p1","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","u","duration","SQRT2","_1","_2","_4","colorHsl","hslLong","colorLab","colorHcl","hclLong","cubehelixGamma","colorCubehelix","cubehelixLong","piecewise","interpolate","I","interpolator","samples","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","restart","delay","time","sleep","timerFlush","wake","nap","poke","clearInterval","setInterval","elapsed","total","_restart","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","tween","ease","state","init","schedule","self","interrupt","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolateNumber","interpolateRgb","interpolateString","string00","string1","interpolate0","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_easeVarying","transition_end","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","exponent","polyIn","custom","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b2","b3","b4","b5","b6","b7","b8","b9","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","tau","amplitude","period","elasticIn","asin","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","selection_interrupt","selection_transition","BrushEvent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","X","handles","input","output","xy","Y","XY","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultExtent","hasAttribute","viewBox","__brush","brushSelection","dim","brushX","brush","brushY","handleSize","initialize","handle","redraw","started","move","emitter","emit","selection0","selection1","clear","clean","Emitter","starting","metaKey","altKey","signX","signY","W","N","n0","n1","e0","e1","moving","shifting","shiftKey","lockX","lockY","points","point0","pts","moved","ended","keydowned","keyupped","dragDisable","cur","dragEnable","keyCode","keyModifiers","compareValue","chord","chordTranspose","chordDirected","directed","padAngle","sortGroups","sortSubgroups","sortChords","groupSums","groupIndex","chords","subgroupIndex","startAngle","endAngle","tauEpsilon","strings","appendRound","digits","Path","_x0","_y0","_x1","_y1","_append","y1","x2","y2","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","a0","a1","ccw","cw","da","pathRound","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","sourceRadius","targetRadius","buffer","ap","argv","sr","sa0","sa1","tr","ta0","ta1","moveTo","arc","hr","tr2","ta2","quadraticCurveTo","lineTo","closePath","ribbonArrow","ring","area","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","cases","smooth","smoothLinear","contours","finite","shift","contour","polygons","holes","isorings","polygon","coordinates","fragmentByStart","fragmentByEnd","above","stitch","startIndex","endIndex","unshift","xt","yt","valid","smooth1","_0","sign","defaultX","defaultY","defaultWeight","weight","grid","Float32Array","pow2k","wi","density","pow4k","Number","MIN_VALUE","Contours","defineProperty","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","splitter","resulterrbound","elen","flen","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","C1","C2","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","EPSILON","EDGE_STACK","Delaunator","getX","defaultGetX","getY","defaultGetY","coords","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","d0","triangles","halfedges","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","_legalize","pseudoAngle","ar","al","pr","pl","illegal","inCircle","hbl","_link","br","px","py","ex","ey","fx","fy","bp","cp","cl","ids","dists","tempDist","arr","tmp","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","x3","y3","ab","inedges","ti","tj","_renderSegment","h0","h1","_project","_clip","cell","cellPolygon","renderCell","c0","_regioncode","c1","_clipSegment","_step","ci","neighbors","cj","ai","li","aj","lj","_cell","_simplify","_clipInfinite","_clipFinite","P","sx0","sy0","sx1","sy1","_edgecode","_edge","flip","vx0","vy0","vxn","vyn","vx","vy","flatIterable","pointX","pointY","jitter","Delaunay","flatArray","_delaunator","_hullIndex","bounds","hypot","hullIndex","dc","dt","renderHull","trianglePolygon","renderTriangle","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","JSON","stringify","customConverter","inferColumns","rows","columnSet","column","pad","formatYear","year","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","delimiter","reFormat","DELIMITER","charCodeAt","convert","parseRows","eof","eol","token","replace","preformatBody","formatValue","formatBody","formatRows","formatRow","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","fixtz","getHours","responseBlob","response","ok","status","statusText","blob","fetch","then","responseArrayBuffer","arrayBuffer","responseText","dsvParse","dsvFormat","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","strength","force","sx","sy","_x","_y","cover","tree","_root","leaf","xm","ym","addAll","yz","visit","quads","Quad","retainer","removeAll","quadtree","Quadtree","leaf_copy","treeProto","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","visitAfter","tree_visitAfter","tree_x","tree_y","radii","iterations","ri","ri2","prepare","quad","rj","jiggle","_nodes","_random","nodeById","nodeId","links","defaultStrength","strengths","distance","distances","bias","link","alpha","initializeStrength","initializeDistance","initialRadius","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","lcg","initializeNodes","angle","initializeForce","randomSource","closest","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","toLocaleString","formatDecimalParts","toExponential","coefficient","grouping","thousands","substring","numerals","re","formatSpecifier","specifier","FormatSpecifier","align","symbol","comma","precision","prefixExponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","formatPrefix","defaultLocale","formatLocale","quarterPi","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","areaRingSum","areaSum","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","phi0","lambda1","phi1","lambda2","deltaSum","ranges","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","equatorial","inflection","lambdai","phii","antimeridian","rangeCompare","rangeContains","feature","merged","deltaMax","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","circle","lines","rejoin","result","Intersection","entry","segments","compareIntersection","startInside","clip","segment","pointEqual","current","isSubject","longitude","winding","sinPhi1","cosPhi1","point1","absDelta","phiArc","pointVisible","clipLine","sink","ringBuffer","clipBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","clipRejoin","pointLine","ringSegments","validSegment","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","to","cr","smallRadius","notHemisphere","visible","v00","point2","code","intersect","two","pa","pb","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","meridian","q1","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","clipStream","polygonInside","cleanInside","cache","cacheStream","lengthSum","lengthStream","lengthLineStart","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","sinDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMinor","extentMajor","stepMinor","stepMajor","graticule10","cy0","cy1","kx0","ky0","kx1","ky1","x00","y00","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","projection","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","methods","transformer","TransformStream","fit","fitBounds","clipExtent","geoStream","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","project","delta2","resample","resampleNone","resampleLineTo","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","scaleTranslateRotate","cosAlpha","sinAlpha","fi","projectionMutator","projectAt","preclip","clipAntimeridian","postclip","projectResample","projectTransform","projectRotateTransform","reset","clipAngle","clipCircle","recenter","reflectX","reflectY","conicProjection","parallels","cylindricalEqualAreaRaw","conicEqualAreaRaw","r0y","conicEqualArea","multiplex","streams","lower48","albers","lower48Point","alaska","alaskaPoint","hawaii","hawaiiPoint","pointStream","albersUsa","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","fpy","gnomonicRaw","tx","ty","sa","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanX","meanXReduce","maxYReduce","leafLeft","leafRight","separation","nodeSize","cluster","previousNode","eachAfter","eachBefore","ancestor","leastCommonAncestor","aNodes","ancestors","bNodes","leaves","hierarchy","mapChildren","objectChildren","Node","childs","computeHeight","node_copy","copyData","node_count","node_each","node_eachAfter","node_eachBefore","node_find","node_sum","node_sort","node_path","node_ancestors","descendants","node_descendants","node_leaves","node_links","node_iterator","optional","required","constantZero","circles","packEncloseRandom","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","c3","d3","place","intersects","score","packSiblingsRandom","aa","sj","sk","pack","radiusLeaf","packChildrenRandom","translateChild","partition","positionNode","roundNode","treemapDice","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","currentId","currentParentId","nodeKey","nodeByKey","normalize","parentof","slash","nextLeft","nextRight","moveSubtree","wm","wp","change","executeShifts","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","squarifyRatio","ratio","nodeValue","sumValue","newRatio","minRatio","beta","dice","treemapSlice","squarify","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","resquarify","_squarify","lexicographicOrder","computeUpperHullIndexes","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","inside","perimeter","sourceRandomUniform","randomUniform","sourceRandomInt","randomInt","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","irwinHall","randomBates","sourceRandomExponential","randomExponential","log1p","sourceRandomPareto","randomPareto","sourceRandomBernoulli","randomBernoulli","sourceRandomGeometric","randomGeometric","sourceRandomGamma","randomGamma","multiplier","sourceRandomBeta","G","randomBeta","sourceRandomBinomial","geometric","randomBinomial","acc","nn","pp","pFinal","sourceRandomWeibull","randomWeibull","outerFunc","sourceRandomCauchy","randomCauchy","sourceRandomLogistic","randomLogistic","sourceRandomPoisson","binomial","randomPoisson","mul","eps","seed","initRange","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","rescale","sequence","rangeRound","pointish","constants","unit","clamper","bimap","polymap","interpolateValue","untransform","interpolateRound","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","maxIter","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","base","logp","log2","reflect","loggish","logs","pows","transformSymlog","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","unsquare","radial","squared","invertExtent","quantiles","quantize","timeInterval","floori","offseti","field","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","getMilliseconds","timeMinute","getSeconds","getMinutes","timeMinutes","utcMinute","setUTCSeconds","utcMinutes","timeHour","timeHours","utcHour","setUTCMinutes","utcHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","timeDays","utcDay","setUTCHours","setUTCDate","utcDays","unixDay","unixDays","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","setMonth","getMonth","getFullYear","timeMonths","utcMonth","setUTCMonth","utcMonths","timeYear","setFullYear","timeYears","utcYear","setUTCFullYear","utcYears","ticker","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pads","charAt","newParse","Z","parseSpecifier","U","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","dISO","dow","UTCdISO","timeFormat","timeParse","isoSpecifier","formatIsoNative","toISOString","formatIso","parseIsoNative","parseIso","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","withPath","shape","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","cx0","cx1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a10","da0","da1","rp","rc0","rc1","oc","kc","lc","Linear","areaStart","areaEnd","curve","curveLinear","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","sortValues","pie","arcs","curveRadialLinear","curveRadial","Radial","_curve","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","Bump","bezierCurveTo","BumpRadial","pointRadial","p2","p3","bumpX","bumpY","bumpRadial","linkSource","linkTarget","linkHorizontal","linkVertical","linkRadial","sqrt3","draw","tan30","tan30_2","ka","kr","symbolsFill","diamond","star","triangle","wye","symbolsStroke","plus","times","triangle2","asterisk","square2","diamond2","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","_basis","_beta","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","slope2","MonotoneX","_t0","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","series","stackValue","stackSeries","orderNone","offsetNone","stack","sz","oz","yn","s2","si","sij0","sij1","s3","skj0","skj1","peaks","peak","vi","vj","appearance","tops","bottoms","ZoomEvent","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","constrain","wheelDelta","scaleExtent","interpolateZoom","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","scaleBy","scaleTo","k0","k1","translateBy","translateTo","__zooming","Gesture","taps","touch0","touch1","wheel","wheelidled","l0","l1","dp","dl"],"mappings":"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"}

Anon7 - 2022
AnonSec Team