{"version":3,"file":"index.umd.min.js","sources":["../.yarn/cache/d3-array-npm-3.2.1-6050a3ef81-0bed33cc33.zip/node_modules/d3-array/src/fsum.js","../.yarn/cache/d3-array-npm-3.2.1-6050a3ef81-0bed33cc33.zip/node_modules/d3-array/src/merge.js","../.yarn/cache/d3-array-npm-3.2.1-6050a3ef81-0bed33cc33.zip/node_modules/d3-array/src/range.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/math.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/noop.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/stream.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/cartesian.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/compose.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/rotation.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/circle.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/buffer.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/pointEqual.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/rejoin.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/polygonContains.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/index.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/antimeridian.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/circle.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/rectangle.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/length.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/clip/line.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/distance.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/contains.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/graticule.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/identity.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/area.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/bounds.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/centroid.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/context.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/measure.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/string.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/path/index.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/transform.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/fit.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/resample.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/index.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/conic.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/conicEqualArea.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/albers.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/albersUsa.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/azimuthal.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/mercator.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/conicConformal.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/equirectangular.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/conicEquidistant.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/equalEarth.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/gnomonic.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/naturalEarth1.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/orthographic.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/stereographic.js","../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-adf82b0c10.zip/node_modules/d3-geo/src/projection/transverseMercator.js","../src/scales/ProjectionScale.ts","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/colors.js","../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-4931fbfda5.zip/node_modules/d3-color/src/define.js","../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-4931fbfda5.zip/node_modules/d3-color/src/color.js","../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-4931fbfda5.zip/node_modules/d3-color/src/math.js","../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-4931fbfda5.zip/node_modules/d3-color/src/cubehelix.js","../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-a42ba314e2.zip/node_modules/d3-interpolate/src/constant.js","../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-a42ba314e2.zip/node_modules/d3-interpolate/src/color.js","../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-a42ba314e2.zip/node_modules/d3-interpolate/src/rgb.js","../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-a42ba314e2.zip/node_modules/d3-interpolate/src/basis.js","../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-a42ba314e2.zip/node_modules/d3-interpolate/src/cubehelix.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/ramp.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../src/scales/LegendScale.ts","../src/scales/ColorScale.ts","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-a8ce4cb026.zip/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../src/scales/SizeScale.ts","../src/elements/GeoFeature.ts","../src/controllers/GeoController.ts","../src/controllers/patchController.ts","../src/controllers/ChoroplethController.ts","../src/controllers/BubbleMapController.ts","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/identity.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/transform.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/bbox.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/feature.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/reverse.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/stitch.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/mesh.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/merge.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/bisect.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/untransform.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/neighbors.js","../.yarn/cache/topojson-client-npm-3.1.0-70e59c7f28-8c029a4f18.zip/node_modules/topojson-client/src/quantize.js","../src/index.umd.ts"],"sourcesContent":["// 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","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","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","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 {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","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","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 {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","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 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","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 {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 {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 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 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",null,"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","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, 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 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 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 {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 {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","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","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",null,null,"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","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",null,null,null,null,null,null,"export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2, n = input.length, output = new Array(n);\n    output[0] = (x0 += input[0]) * kx + dx;\n    output[1] = (y0 += input[1]) * ky + dy;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n","import transform from \"./transform.js\";\n\nexport default function(topology) {\n  var t = transform(topology.transform), key,\n      x0 = Infinity, y0 = x0, x1 = -x0, y1 = -x0;\n\n  function bboxPoint(p) {\n    p = t(p);\n    if (p[0] < x0) x0 = p[0];\n    if (p[0] > x1) x1 = p[0];\n    if (p[1] < y0) y0 = p[1];\n    if (p[1] > y1) y1 = p[1];\n  }\n\n  function bboxGeometry(o) {\n    switch (o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(bboxGeometry); break;\n      case \"Point\": bboxPoint(o.coordinates); break;\n      case \"MultiPoint\": o.coordinates.forEach(bboxPoint); break;\n    }\n  }\n\n  topology.arcs.forEach(function(arc) {\n    var i = -1, n = arc.length, p;\n    while (++i < n) {\n      p = t(arc[i], i);\n      if (p[0] < x0) x0 = p[0];\n      if (p[0] > x1) x1 = p[0];\n      if (p[1] < y0) y0 = p[1];\n      if (p[1] > y1) y1 = p[1];\n    }\n  });\n\n  for (key in topology.objects) {\n    bboxGeometry(topology.objects[key]);\n  }\n\n  return [x0, y0, x1, y1];\n}\n","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n  if (typeof o === \"string\") o = topology.objects[o];\n  return o.type === \"GeometryCollection\"\n      ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n      : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n  var id = o.id,\n      bbox = o.bbox,\n      properties = o.properties == null ? {} : o.properties,\n      geometry = object(topology, o);\n  return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n      : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n      : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n  var transformPoint = transform(topology.transform),\n      arcs = topology.arcs;\n\n  function arc(i, points) {\n    if (points.length) points.pop();\n    for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n      points.push(transformPoint(a[k], k));\n    }\n    if (i < 0) reverse(points, n);\n  }\n\n  function point(p) {\n    return transformPoint(p);\n  }\n\n  function line(arcs) {\n    var points = [];\n    for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n    if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n    return points;\n  }\n\n  function ring(arcs) {\n    var points = line(arcs);\n    while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n    return points;\n  }\n\n  function polygon(arcs) {\n    return arcs.map(ring);\n  }\n\n  function geometry(o) {\n    var type = o.type, coordinates;\n    switch (type) {\n      case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n      case \"Point\": coordinates = point(o.coordinates); break;\n      case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n      case \"LineString\": coordinates = line(o.arcs); break;\n      case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n      case \"Polygon\": coordinates = polygon(o.arcs); break;\n      case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n      default: return null;\n    }\n    return {type: type, coordinates: coordinates};\n  }\n\n  return geometry(o);\n}\n","export default function(array, n) {\n  var t, j = array.length, i = j - n;\n  while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","export default function(topology, arcs) {\n  var stitchedArcs = {},\n      fragmentByStart = {},\n      fragmentByEnd = {},\n      fragments = [],\n      emptyIndex = -1;\n\n  // Stitch empty arcs first, since they may be subsumed by other arcs.\n  arcs.forEach(function(i, j) {\n    var arc = topology.arcs[i < 0 ? ~i : i], t;\n    if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n      t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n    }\n  });\n\n  arcs.forEach(function(i) {\n    var e = ends(i),\n        start = e[0],\n        end = e[1],\n        f, g;\n\n    if (f = fragmentByEnd[start]) {\n      delete fragmentByEnd[f.end];\n      f.push(i);\n      f.end = end;\n      if (g = fragmentByStart[end]) {\n        delete fragmentByStart[g.start];\n        var fg = g === f ? f : f.concat(g);\n        fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else if (f = fragmentByStart[end]) {\n      delete fragmentByStart[f.start];\n      f.unshift(i);\n      f.start = start;\n      if (g = fragmentByEnd[start]) {\n        delete fragmentByEnd[g.end];\n        var gf = g === f ? f : g.concat(f);\n        fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else {\n      f = [i];\n      fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n    }\n  });\n\n  function ends(i) {\n    var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n    if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n    else p1 = arc[arc.length - 1];\n    return i < 0 ? [p1, p0] : [p0, p1];\n  }\n\n  function flush(fragmentByEnd, fragmentByStart) {\n    for (var k in fragmentByEnd) {\n      var f = fragmentByEnd[k];\n      delete fragmentByStart[f.start];\n      delete f.start;\n      delete f.end;\n      f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n      fragments.push(f);\n    }\n  }\n\n  flush(fragmentByEnd, fragmentByStart);\n  flush(fragmentByStart, fragmentByEnd);\n  arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n  return fragments;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nexport default function(topology) {\n  return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n  var arcs, i, n;\n  if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n  else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n  return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n  var arcs = [],\n      geomsByArc = [],\n      geom;\n\n  function extract0(i) {\n    var j = i < 0 ? ~i : i;\n    (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n  }\n\n  function extract1(arcs) {\n    arcs.forEach(extract0);\n  }\n\n  function extract2(arcs) {\n    arcs.forEach(extract1);\n  }\n\n  function extract3(arcs) {\n    arcs.forEach(extract2);\n  }\n\n  function geometry(o) {\n    switch (geom = o, o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"LineString\": extract1(o.arcs); break;\n      case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n      case \"MultiPolygon\": extract3(o.arcs); break;\n    }\n  }\n\n  geometry(object);\n\n  geomsByArc.forEach(filter == null\n      ? function(geoms) { arcs.push(geoms[0].i); }\n      : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n  return arcs;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nfunction planarRingArea(ring) {\n  var i = -1, n = ring.length, a, b = ring[n - 1], area = 0;\n  while (++i < n) a = b, b = ring[i], area += a[0] * b[1] - a[1] * b[0];\n  return Math.abs(area); // Note: doubled area!\n}\n\nexport default function(topology) {\n  return object(topology, mergeArcs.apply(this, arguments));\n}\n\nexport function mergeArcs(topology, objects) {\n  var polygonsByArc = {},\n      polygons = [],\n      groups = [];\n\n  objects.forEach(geometry);\n\n  function geometry(o) {\n    switch (o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"Polygon\": extract(o.arcs); break;\n      case \"MultiPolygon\": o.arcs.forEach(extract); break;\n    }\n  }\n\n  function extract(polygon) {\n    polygon.forEach(function(ring) {\n      ring.forEach(function(arc) {\n        (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n      });\n    });\n    polygons.push(polygon);\n  }\n\n  function area(ring) {\n    return planarRingArea(object(topology, {type: \"Polygon\", arcs: [ring]}).coordinates[0]);\n  }\n\n  polygons.forEach(function(polygon) {\n    if (!polygon._) {\n      var group = [],\n          neighbors = [polygon];\n      polygon._ = 1;\n      groups.push(group);\n      while (polygon = neighbors.pop()) {\n        group.push(polygon);\n        polygon.forEach(function(ring) {\n          ring.forEach(function(arc) {\n            polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n              if (!polygon._) {\n                polygon._ = 1;\n                neighbors.push(polygon);\n              }\n            });\n          });\n        });\n      }\n    }\n  });\n\n  polygons.forEach(function(polygon) {\n    delete polygon._;\n  });\n\n  return {\n    type: \"MultiPolygon\",\n    arcs: groups.map(function(polygons) {\n      var arcs = [], n;\n\n      // Extract the exterior (unique) arcs.\n      polygons.forEach(function(polygon) {\n        polygon.forEach(function(ring) {\n          ring.forEach(function(arc) {\n            if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n              arcs.push(arc);\n            }\n          });\n        });\n      });\n\n      // Stitch the arcs into one or more rings.\n      arcs = stitch(topology, arcs);\n\n      // If more than one ring is returned,\n      // at most one of these rings can be the exterior;\n      // choose the one with the greatest absolute area.\n      if ((n = arcs.length) > 1) {\n        for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n          if ((ki = area(arcs[i])) > k) {\n            t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n          }\n        }\n      }\n\n      return arcs;\n    }).filter(function(arcs) {\n      return arcs.length > 0;\n    })\n  };\n}\n","export default function(a, x) {\n  var lo = 0, hi = a.length;\n  while (lo < hi) {\n    var mid = lo + hi >>> 1;\n    if (a[mid] < x) lo = mid + 1;\n    else hi = mid;\n  }\n  return lo;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2,\n        n = input.length,\n        output = new Array(n),\n        x1 = Math.round((input[0] - dx) / kx),\n        y1 = Math.round((input[1] - dy) / ky);\n    output[0] = x1 - x0, x0 = x1;\n    output[1] = y1 - y0, y0 = y1;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n","import bisect from \"./bisect.js\";\n\nexport default function(objects) {\n  var indexesByArc = {}, // arc index -> array of object indexes\n      neighbors = objects.map(function() { return []; });\n\n  function line(arcs, i) {\n    arcs.forEach(function(a) {\n      if (a < 0) a = ~a;\n      var o = indexesByArc[a];\n      if (o) o.push(i);\n      else indexesByArc[a] = [i];\n    });\n  }\n\n  function polygon(arcs, i) {\n    arcs.forEach(function(arc) { line(arc, i); });\n  }\n\n  function geometry(o, i) {\n    if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n    else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n  }\n\n  var geometryType = {\n    LineString: line,\n    MultiLineString: polygon,\n    Polygon: polygon,\n    MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n  };\n\n  objects.forEach(geometry);\n\n  for (var i in indexesByArc) {\n    for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n      for (var k = j + 1; k < m; ++k) {\n        var ij = indexes[j], ik = indexes[k], n;\n        if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n        if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n      }\n    }\n  }\n\n  return neighbors;\n}\n","import bbox from \"./bbox.js\";\nimport untransform from \"./untransform.js\";\n\nexport default function(topology, transform) {\n  if (topology.transform) throw new Error(\"already quantized\");\n\n  if (!transform || !transform.scale) {\n    if (!((n = Math.floor(transform)) >= 2)) throw new Error(\"n must be ≥2\");\n    box = topology.bbox || bbox(topology);\n    var x0 = box[0], y0 = box[1], x1 = box[2], y1 = box[3], n;\n    transform = {scale: [x1 - x0 ? (x1 - x0) / (n - 1) : 1, y1 - y0 ? (y1 - y0) / (n - 1) : 1], translate: [x0, y0]};\n  } else {\n    box = topology.bbox;\n  }\n\n  var t = untransform(transform), box, key, inputs = topology.objects, outputs = {};\n\n  function quantizePoint(point) {\n    return t(point);\n  }\n\n  function quantizeGeometry(input) {\n    var output;\n    switch (input.type) {\n      case \"GeometryCollection\": output = {type: \"GeometryCollection\", geometries: input.geometries.map(quantizeGeometry)}; break;\n      case \"Point\": output = {type: \"Point\", coordinates: quantizePoint(input.coordinates)}; break;\n      case \"MultiPoint\": output = {type: \"MultiPoint\", coordinates: input.coordinates.map(quantizePoint)}; break;\n      default: return input;\n    }\n    if (input.id != null) output.id = input.id;\n    if (input.bbox != null) output.bbox = input.bbox;\n    if (input.properties != null) output.properties = input.properties;\n    return output;\n  }\n\n  function quantizeArc(input) {\n    var i = 0, j = 1, n = input.length, p, output = new Array(n); // pessimistic\n    output[0] = t(input[0], 0);\n    while (++i < n) if ((p = t(input[i], i))[0] || p[1]) output[j++] = p; // non-coincident points\n    if (j === 1) output[j++] = [0, 0]; // an arc must have at least two points\n    output.length = j;\n    return output;\n  }\n\n  for (key in inputs) outputs[key] = quantizeGeometry(inputs[key]);\n\n  return {\n    type: \"Topology\",\n    bbox: box,\n    transform: transform,\n    objects: outputs,\n    arcs: topology.arcs.map(quantizeArc)\n  };\n}\n",null],"names":["Adder","constructor","this","_partials","Float64Array","_n","add","x","p","i","j","y","hi","lo","Math","abs","valueOf","n","merge","arrays","Array","from","array","flatten","range","start","stop","step","arguments","length","max","ceil","epsilon","epsilon2","pi","PI","halfPi","quarterPi","tau","degrees","radians","atan","atan2","cos","exp","log","pow","sin","sign","sqrt","tan","acos","asin","noop","streamGeometry","geometry","stream","streamGeometryType","hasOwnProperty","type","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","geoStream","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","a","b","cartesianCross","cartesianAddInPlace","cartesianScale","vector","k","cartesianNormalizeInPlace","d","l","compose","invert","rotationIdentity","round","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","z","circleRadius","cosRadius","radius","clipBuffer","line","lines","m","push","rejoin","pop","concat","shift","result","pointEqual","Intersection","points","other","entry","o","e","v","clipRejoin","segments","compareIntersection","startInside","interpolate","subject","clip","forEach","segment","p0","p1","sort","link","current","isSubject","longitude","polygonContains","polygon","sinPhi","normal","angle","winding","sum","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","delta","absDelta","antimeridian","arc","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","clean","ringSegments","filter","validSegment","clipAntimeridian","NaN","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","to","direction","clipCircle","cr","smallRadius","notHemisphere","visible","intersect","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","u","w","uu","t2","t","q","polar","q1","code","r","c0","v0","v00","point2","c","t0","t1","sinRadius","circleStream","lengthSum","clipMax","clipMin","clipRectangle","x0","y0","x1","y1","a1","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","linePoint","a0","b0","b1","polygonInside","cleanInside","min","ax","ay","dx","dy","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","map","ringRadians","pointRadians","graticuleX","graticuleY","graticule","X1","X0","Y1","Y0","X","Y","DX","DY","precision","outline","slice","reverse","extent","_","extentMajor","extentMinor","stepMajor","stepMinor","x00","y00","identity$1","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","area","areaPointFirst","areaPoint","pathArea","Infinity","boundsStream$1","bounds","Z0","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","pathCentroid","PathContext","context","_context","prototype","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","lengthRing","pathMeasure","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","digits","_append","append","floor","RangeError","strings","appendRound","s","geoPath","projection","projectionStream","contextStream","path","apply","measure","pathBounds","identity","transformer","methods","TransformStream","key","fit","fitBounds","clipExtent","scale","translate","boundsStream","fitExtent","h","fitSize","size","fitWidth","width","fitHeight","height","cosMinDistance","resample","project","delta2","resampleLineTo","depth","d2","phi2","lambda2","x2","y2","dx2","dy2","dz","lambda00","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","sx","sy","alpha","transform","scaleTranslate","cosAlpha","sinAlpha","ai","bi","ci","fi","projectionMutator","projectAt","rotate","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","theta","preclip","postclip","recenter","center","reset","transformRotate","undefined","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","forward","cylindricalEqualAreaRaw","r0","r0y","geoConicEqualArea","geoAlbers","conicEqualArea","geoAlbersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","cx","cy","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","geoAzimuthalEqualArea","azimuthalEquidistantRaw","geoAzimuthalEquidistant","mercatorRaw","geoMercator","mercatorProjection","reclip","tany","conicConformalRaw","cy0","f","fy","geoConicConformal","equirectangularRaw","geoEquirectangular","conicEquidistantRaw","g","gy","nx","geoConicEquidistant","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","geoEqualEarth","gnomonicRaw","geoGnomonic","naturalEarth1Raw","phi4","geoNaturalEarth1","orthographicRaw","geoOrthographic","stereographicRaw","geoStereographic","transverseMercatorRaw","geoTransverseMercator","lookup","Object","keys","charAt","toLowerCase","ProjectionScale","Scale","cfg","super","outlineBounds","oldChartBounds","init","options","position","computeBounds","bb","bHeight","bWidth","aspectRatio","refScale","refX","refY","updateBounds","chart","chartArea","padding","paddingTop","top","paddingLeft","left","paddingBottom","bottom","paddingRight","right","chartWidth","chartHeight","bak","viewWidth","viewHeight","projectionScale","projectionOffset","colors","specifier","define","factory","extend","parent","definition","create","Color","id","defaults","descriptors","_scriptable","name","_indexable","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","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","trim","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","value","toString","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHex8","formatHsl","clamp","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","constant","linear","gamma","nogamma","exponential","rgbGamma","end","colorRgb","spline","rgbBasis","values","v1","v2","v3","t3","basis","hue","cubehelixGamma","colorCubehelix","cubehelixLong","ramp$1","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","pi_1_3","pi_2_3","interpolateViridis","magma","inferno","plasma","baseDefaults","property","grid","drawOnChartArea","ticks","legend","align","margin","indicatorWidth","LegendScale","LinearScale","legendSize","axis","parse","raw","index","isHorizontal","_getNormalizedValue","Number","_startValue","_valueRange","update","maxWidth","maxHeight","margins","ch","POSITIVE_INFINITY","cw","isHor","factor","full","_computeLabelArea","draw","_isVisible","pos","axisPos","computeLegendMargin","computeLegendPosition","ctx","save","_drawIndicator","restore","LogarithmicLegendScale","LogarithmicScale","call","log10","interpolateBlues","interpolateBrBG","interpolateBuGn","interpolateBuPu","interpolateCividis","interpolateCool","interpolateCubehelixDefault","interpolateGnBu","interpolateGreens","interpolateGreys","interpolateInferno","interpolateMagma","interpolateOrRd","interpolateOranges","interpolatePRGn","interpolatePiYG","interpolatePlasma","interpolatePuBu","interpolatePuBuGn","interpolatePuOr","interpolatePuRd","interpolatePurples","interpolateRainbow","ts","interpolateRdBu","interpolateRdGy","interpolateRdPu","interpolateRdYlBu","interpolateRdYlGn","interpolateReds","interpolateSinebow","interpolateSpectral","interpolateTurbo","interpolateWarm","interpolateYlGn","interpolateYlGnBu","interpolateYlOrBr","interpolateYlOrRd","quantize","steps","perStep","acc","colorScaleDefaults","missing","ColorScale","blues","getColorForValue","getColor","normalized","indicatorSize","_reversePixels","stepWidth","offset","fillStyle","fillRect","ColorLogarithmicScale","scaleDefaults","mode","SizeScale","_model","getSizeForValue","getSizeImpl","r1","labelItems","getLabelItems","positions","el","translation","getPixelForTick","_gridLineItems","item","strokeStyle","lineWidth","setLineDash","borderDash","lineDashOffset","borderDashOffset","beginPath","drawTicks","ty1","ty2","tx1","tx2","stroke","props","borderColor","borderWidth","backgroundColor","renderOptions","pointStyle","drawPoint","SizeLogarithmicScale","GeoFeature","Element","inRange","mouseX","mouseY","getBounds","longLat","geoContains","feature","inXRange","inYRange","getCenterPoint","latitude","amount","growGeoBounds","_drawInCache","doc","isFinite","canvas","createElement","pixelRatio","getContext","clearRect","_drawImpl","canvasKey","_optionsToKey","fill","ownerDocument","drawImage","BarElement","outlineBackgroundColor","outlineBorderWidth","graticuleBorderColor","graticuleBorderWidth","defaultRoutes","outlineBorderColor","geoDefaults","showOutline","showGraticule","clipMap","geoOverrides","scales","display","patchDatasetElementOptions","targetKey","startsWith","sub","GeoController","DatasetController","getGeoDataset","getDataset","getGeoOptions","getProjectionScale","getScaleForId","linkScales","dataset","meta","getMeta","xAxisID","yAxisID","xScale","yScale","resolveOutline","valueOrDefault","getGraticule","dirtyCache","elem","currentDevicePixelRatio","resolveDatasetElementOptions","properties","updateElement","updateElements","data","isArray","geo","geoGraticule","enabled","clipArea","unclipArea","patchController","config","controller","elements","registry","addControllers","addElements","addScales","ChoroplethController","initialize","enableOptionSharing","vAxisID","rAxisID","rScale","vScale","iScale","iAxisID","_getOtherScale","count","_cachedMeta","_parsed","elems","firstOpts","resolveDataElementOptions","sharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_data","indexToColor","getParsed","datasetElementType","dataElementType","overrides","plugins","tooltip","callbacks","title","label","formattedValue","_b","_a","labels","dataIndex","_c","geoFeature","getDatasetMeta","datasetIndex","ChoroplethChart","Chart","BubbleMapController","parsed","skip","indexToRadius","PointElement","hoverRadius","BubbleMapChart","kx","ky","input","output","bbox","topology","bboxPoint","bboxGeometry","arcs","objects","transformPoint","stitch","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","flush","dp","ends","fg","unshift","gf","meshArcs","extractArcs","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","mergeArcs","polygonsByArc","polygons","groups","extract","planarRingArea","group","neighbors","ki","bisect","mid","untransform","indexesByArc","geometryType","indexes","ij","ik","splice","Error","box","inputs","outputs","quantizePoint","quantizeGeometry"],"mappings":"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"}