Newer
Older
XiaoGanWXMini / node_modules / .vite / deps / terraformer-wkt-parser.js.map
@zhangdeliang zhangdeliang on 29 Jul 120 KB 迁移
{
  "version": 3,
  "sources": ["../../terraformer/terraformer.js", "../../terraformer-wkt-parser/terraformer-wkt-parser.js"],
  "sourcesContent": ["(function (root, factory) {\n\n  // Node.\n  if(typeof module === 'object' && typeof module.exports === 'object') {\n    exports = module.exports = factory();\n  }\n\n  // Browser Global.\n  if(typeof window === \"object\") {\n    root.Terraformer = factory();\n  }\n\n}(this, function(){\n  \"use strict\";\n\n  var exports = {},\n      EarthRadius = 6378137,\n      DegreesPerRadian = 57.295779513082320,\n      RadiansPerDegree =  0.017453292519943,\n      MercatorCRS = {\n        \"type\": \"link\",\n        \"properties\": {\n          \"href\": \"http://spatialreference.org/ref/sr-org/6928/ogcwkt/\",\n          \"type\": \"ogcwkt\"\n        }\n      },\n      GeographicCRS = {\n        \"type\": \"link\",\n        \"properties\": {\n          \"href\": \"http://spatialreference.org/ref/epsg/4326/ogcwkt/\",\n          \"type\": \"ogcwkt\"\n        }\n      };\n\n  /*\n  Internal: isArray function\n  */\n  function isArray(obj) {\n    return Object.prototype.toString.call(obj) === \"[object Array]\";\n  }\n\n  /*\n  Internal: safe warning\n  */\n  function warn() {\n    var args = Array.prototype.slice.apply(arguments);\n\n    if (typeof console !== undefined && console.warn) {\n      console.warn.apply(console, args);\n    }\n  }\n\n  /*\n  Internal: Extend one object with another.\n  */\n  function extend(destination, source) {\n    for (var k in source) {\n      if (source.hasOwnProperty(k)) {\n        destination[k] = source[k];\n      }\n    }\n    return destination;\n  }\n\n  /*\n  Public: Calculate an bounding box for a geojson object\n  */\n  function calculateBounds (geojson) {\n    if(geojson.type){\n      switch (geojson.type) {\n        case 'Point':\n          return [ geojson.coordinates[0], geojson.coordinates[1], geojson.coordinates[0], geojson.coordinates[1]];\n\n        case 'MultiPoint':\n          return calculateBoundsFromArray(geojson.coordinates);\n\n        case 'LineString':\n          return calculateBoundsFromArray(geojson.coordinates);\n\n        case 'MultiLineString':\n          return calculateBoundsFromNestedArrays(geojson.coordinates);\n\n        case 'Polygon':\n          return calculateBoundsFromNestedArrays(geojson.coordinates);\n\n        case 'MultiPolygon':\n          return calculateBoundsFromNestedArrayOfArrays(geojson.coordinates);\n\n        case 'Feature':\n          return geojson.geometry? calculateBounds(geojson.geometry) : null;\n\n        case 'FeatureCollection':\n          return calculateBoundsForFeatureCollection(geojson);\n\n        case 'GeometryCollection':\n          return calculateBoundsForGeometryCollection(geojson);\n\n        default:\n          throw new Error(\"Unknown type: \" + geojson.type);\n      }\n    }\n    return null;\n  }\n\n  /*\n  Internal: Calculate an bounding box from an nested array of positions\n  [\n    [\n      [ [lng, lat],[lng, lat],[lng, lat] ]\n    ]\n    [\n      [lng, lat],[lng, lat],[lng, lat]\n    ]\n    [\n      [lng, lat],[lng, lat],[lng, lat]\n    ]\n  ]\n  */\n  function calculateBoundsFromNestedArrays (array) {\n    var x1 = null, x2 = null, y1 = null, y2 = null;\n\n    for (var i = 0; i < array.length; i++) {\n      var inner = array[i];\n\n      for (var j = 0; j < inner.length; j++) {\n        var lonlat = inner[j];\n\n        var lon = lonlat[0];\n        var lat = lonlat[1];\n\n        if (x1 === null) {\n          x1 = lon;\n        } else if (lon < x1) {\n          x1 = lon;\n        }\n\n        if (x2 === null) {\n          x2 = lon;\n        } else if (lon > x2) {\n          x2 = lon;\n        }\n\n        if (y1 === null) {\n          y1 = lat;\n        } else if (lat < y1) {\n          y1 = lat;\n        }\n\n        if (y2 === null) {\n          y2 = lat;\n        } else if (lat > y2) {\n          y2 = lat;\n        }\n      }\n    }\n\n    return [x1, y1, x2, y2 ];\n  }\n\n  /*\n  Internal: Calculate a bounding box from an array of arrays of arrays\n  [\n    [ [lng, lat],[lng, lat],[lng, lat] ]\n    [ [lng, lat],[lng, lat],[lng, lat] ]\n    [ [lng, lat],[lng, lat],[lng, lat] ]\n  ]\n  */\n  function calculateBoundsFromNestedArrayOfArrays (array) {\n    var x1 = null, x2 = null, y1 = null, y2 = null;\n\n    for (var i = 0; i < array.length; i++) {\n      var inner = array[i];\n\n      for (var j = 0; j < inner.length; j++) {\n        var innerinner = inner[j];\n        for (var k = 0; k < innerinner.length; k++) {\n          var lonlat = innerinner[k];\n\n          var lon = lonlat[0];\n          var lat = lonlat[1];\n\n          if (x1 === null) {\n            x1 = lon;\n          } else if (lon < x1) {\n            x1 = lon;\n          }\n\n          if (x2 === null) {\n            x2 = lon;\n          } else if (lon > x2) {\n            x2 = lon;\n          }\n\n          if (y1 === null) {\n            y1 = lat;\n          } else if (lat < y1) {\n            y1 = lat;\n          }\n\n          if (y2 === null) {\n            y2 = lat;\n          } else if (lat > y2) {\n            y2 = lat;\n          }\n        }\n      }\n    }\n\n    return [x1, y1, x2, y2];\n  }\n\n  /*\n  Internal: Calculate a bounding box from an array of positions\n  [\n    [lng, lat],[lng, lat],[lng, lat]\n  ]\n  */\n  function calculateBoundsFromArray (array) {\n    var x1 = null, x2 = null, y1 = null, y2 = null;\n\n    for (var i = 0; i < array.length; i++) {\n      var lonlat = array[i];\n      var lon = lonlat[0];\n      var lat = lonlat[1];\n\n      if (x1 === null) {\n        x1 = lon;\n      } else if (lon < x1) {\n        x1 = lon;\n      }\n\n      if (x2 === null) {\n        x2 = lon;\n      } else if (lon > x2) {\n        x2 = lon;\n      }\n\n      if (y1 === null) {\n        y1 = lat;\n      } else if (lat < y1) {\n        y1 = lat;\n      }\n\n      if (y2 === null) {\n        y2 = lat;\n      } else if (lat > y2) {\n        y2 = lat;\n      }\n    }\n\n    return [x1, y1, x2, y2 ];\n  }\n\n  /*\n  Internal: Calculate an bounding box for a feature collection\n  */\n  function calculateBoundsForFeatureCollection(featureCollection){\n    var extents = [], extent;\n    for (var i = featureCollection.features.length - 1; i >= 0; i--) {\n      extent = calculateBounds(featureCollection.features[i].geometry);\n      extents.push([extent[0],extent[1]]);\n      extents.push([extent[2],extent[3]]);\n    }\n\n    return calculateBoundsFromArray(extents);\n  }\n\n  /*\n  Internal: Calculate an bounding box for a geometry collection\n  */\n  function calculateBoundsForGeometryCollection(geometryCollection){\n    var extents = [], extent;\n\n    for (var i = geometryCollection.geometries.length - 1; i >= 0; i--) {\n      extent = calculateBounds(geometryCollection.geometries[i]);\n      extents.push([extent[0],extent[1]]);\n      extents.push([extent[2],extent[3]]);\n    }\n\n    return calculateBoundsFromArray(extents);\n  }\n\n  function calculateEnvelope(geojson){\n    var bounds = calculateBounds(geojson);\n    return {\n      x: bounds[0],\n      y: bounds[1],\n      w: Math.abs(bounds[0] - bounds[2]),\n      h: Math.abs(bounds[1] - bounds[3])\n    };\n  }\n\n  /*\n  Internal: Convert radians to degrees. Used by spatial reference converters.\n  */\n  function radToDeg(rad) {\n    return rad * DegreesPerRadian;\n  }\n\n  /*\n  Internal: Convert degrees to radians. Used by spatial reference converters.\n  */\n  function degToRad(deg) {\n    return deg * RadiansPerDegree;\n  }\n\n  /*\n  Internal: Loop over each array in a geojson object and apply a function to it. Used by spatial reference converters.\n  */\n  function eachPosition(coordinates, func) {\n    for (var i = 0; i < coordinates.length; i++) {\n      // we found a number so lets convert this pair\n      if(typeof coordinates[i][0] === \"number\"){\n        coordinates[i] = func(coordinates[i]);\n      }\n      // we found an coordinates array it again and run THIS function against it\n      if(typeof coordinates[i] === \"object\"){\n        coordinates[i] = eachPosition(coordinates[i], func);\n      }\n    }\n    return coordinates;\n  }\n\n  /*\n  Public: Convert a GeoJSON Position object to Geographic (4326)\n  */\n  function positionToGeographic(position) {\n    var x = position[0];\n    var y = position[1];\n    return [radToDeg(x / EarthRadius) - (Math.floor((radToDeg(x / EarthRadius) + 180) / 360) * 360), radToDeg((Math.PI / 2) - (2 * Math.atan(Math.exp(-1.0 * y / EarthRadius))))];\n  }\n\n  /*\n  Public: Convert a GeoJSON Position object to Web Mercator (102100)\n  */\n  function positionToMercator(position) {\n    var lng = position[0];\n    var lat = Math.max(Math.min(position[1], 89.99999), -89.99999);\n    return [degToRad(lng) * EarthRadius, EarthRadius/2.0 * Math.log( (1.0 + Math.sin(degToRad(lat))) / (1.0 - Math.sin(degToRad(lat))) )];\n  }\n\n  /*\n  Public: Apply a function agaist all positions in a geojson object. Used by spatial reference converters.\n  */\n  function applyConverter(geojson, converter, noCrs){\n    if(geojson.type === \"Point\") {\n      geojson.coordinates = converter(geojson.coordinates);\n    } else if(geojson.type === \"Feature\") {\n      geojson.geometry = applyConverter(geojson.geometry, converter, true);\n    } else if(geojson.type === \"FeatureCollection\") {\n      for (var f = 0; f < geojson.features.length; f++) {\n        geojson.features[f] = applyConverter(geojson.features[f], converter, true);\n      }\n    } else if(geojson.type === \"GeometryCollection\") {\n      for (var g = 0; g < geojson.geometries.length; g++) {\n        geojson.geometries[g] = applyConverter(geojson.geometries[g], converter, true);\n      }\n    } else {\n      geojson.coordinates = eachPosition(geojson.coordinates, converter);\n    }\n\n    if(!noCrs){\n      if(converter === positionToMercator){\n        geojson.crs = MercatorCRS;\n      }\n    }\n\n    if(converter === positionToGeographic){\n      delete geojson.crs;\n    }\n\n    return geojson;\n  }\n\n  /*\n  Public: Convert a GeoJSON object to ESRI Web Mercator (102100)\n  */\n  function toMercator(geojson) {\n    return applyConverter(geojson, positionToMercator);\n  }\n\n  /*\n  Convert a GeoJSON object to Geographic coordinates (WSG84, 4326)\n  */\n  function toGeographic(geojson) {\n    return applyConverter(geojson, positionToGeographic);\n  }\n\n\n  /*\n  Internal: -1,0,1 comparison function\n  */\n  function cmp(a, b) {\n    if(a < b) {\n      return -1;\n    } else if(a > b) {\n      return 1;\n    } else {\n      return 0;\n    }\n  }\n\n  /*\n  Internal: used for sorting\n  */\n  function compSort(p1, p2) {\n    if (p1[0] > p2[0]) {\n      return -1;\n    } else if (p1[0] < p2[0]) {\n      return 1;\n    } else if (p1[1] > p2[1]) {\n      return -1;\n    } else if (p1[1] < p2[1]) {\n      return 1;\n    } else {\n      return 0;\n    }\n  }\n\n\n  /*\n  Internal: used to determine turn\n  */\n  function turn(p, q, r) {\n    // Returns -1, 0, 1 if p,q,r forms a right, straight, or left turn.\n    return cmp((q[0] - p[0]) * (r[1] - p[1]) - (r[0] - p[0]) * (q[1] - p[1]), 0);\n  }\n\n  /*\n  Internal: used to determine euclidean distance between two points\n  */\n  function euclideanDistance(p, q) {\n    // Returns the squared Euclidean distance between p and q.\n    var dx = q[0] - p[0];\n    var dy = q[1] - p[1];\n\n    return dx * dx + dy * dy;\n  }\n\n  function nextHullPoint(points, p) {\n    // Returns the next point on the convex hull in CCW from p.\n    var q = p;\n    for(var r in points) {\n      var t = turn(p, q, points[r]);\n      if(t === -1 || t === 0 && euclideanDistance(p, points[r]) > euclideanDistance(p, q)) {\n        q = points[r];\n      }\n    }\n    return q;\n  }\n\n  function convexHull(points) {\n    // implementation of the Jarvis March algorithm\n    // adapted from http://tixxit.wordpress.com/2009/12/09/jarvis-march/\n\n    if(points.length === 0) {\n      return [];\n    } else if(points.length === 1) {\n      return points;\n    }\n\n    // Returns the points on the convex hull of points in CCW order.\n    var hull = [points.sort(compSort)[0]];\n\n    for(var p = 0; p < hull.length; p++) {\n      var q = nextHullPoint(points, hull[p]);\n\n      if(q !== hull[0]) {\n        hull.push(q);\n      }\n    }\n\n    return hull;\n  }\n\n  function isConvex(points) {\n    var ltz;\n\n    for (var i = 0; i < points.length - 3; i++) {\n      var p1 = points[i];\n      var p2 = points[i + 1];\n      var p3 = points[i + 2];\n      var v = [p2[0] - p1[0], p2[1] - p1[1]];\n\n      // p3.x * v.y - p3.y * v.x + v.x * p1.y - v.y * p1.x\n      var res = p3[0] * v[1] - p3[1] * v[0] + v[0] * p1[1] - v[1] * p1[0];\n\n      if (i === 0) {\n        if (res < 0) {\n          ltz = true;\n        } else {\n          ltz = false;\n        }\n      } else {\n        if (ltz && (res > 0) || !ltz && (res < 0)) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  function coordinatesContainPoint(coordinates, point) {\n    var contains = false;\n    for(var i = -1, l = coordinates.length, j = l - 1; ++i < l; j = i) {\n      if (((coordinates[i][1] <= point[1] && point[1] < coordinates[j][1]) ||\n           (coordinates[j][1] <= point[1] && point[1] < coordinates[i][1])) &&\n          (point[0] < (coordinates[j][0] - coordinates[i][0]) * (point[1] - coordinates[i][1]) / (coordinates[j][1] - coordinates[i][1]) + coordinates[i][0])) {\n        contains = !contains;\n      }\n    }\n    return contains;\n  }\n\n  function polygonContainsPoint(polygon, point) {\n    if (polygon && polygon.length) {\n      if (polygon.length === 1) { // polygon with no holes\n        return coordinatesContainPoint(polygon[0], point);\n      } else { // polygon with holes\n        if (coordinatesContainPoint(polygon[0], point)) {\n          for (var i = 1; i < polygon.length; i++) {\n            if (coordinatesContainPoint(polygon[i], point)) {\n              return false; // found in hole\n            }\n          }\n\n          return true;\n        } else {\n          return false;\n        }\n      }\n    } else {\n      return false;\n    }\n  }\n\n  function edgeIntersectsEdge(a1, a2, b1, b2) {\n    var ua_t = (b2[0] - b1[0]) * (a1[1] - b1[1]) - (b2[1] - b1[1]) * (a1[0] - b1[0]);\n    var ub_t = (a2[0] - a1[0]) * (a1[1] - b1[1]) - (a2[1] - a1[1]) * (a1[0] - b1[0]);\n    var u_b  = (b2[1] - b1[1]) * (a2[0] - a1[0]) - (b2[0] - b1[0]) * (a2[1] - a1[1]);\n\n    if ( u_b !== 0 ) {\n      var ua = ua_t / u_b;\n      var ub = ub_t / u_b;\n\n      if ( 0 <= ua && ua <= 1 && 0 <= ub && ub <= 1 ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function isNumber(n) {\n    return !isNaN(parseFloat(n)) && isFinite(n);\n  }\n\n  function arraysIntersectArrays(a, b) {\n    if (isNumber(a[0][0])) {\n      if (isNumber(b[0][0])) {\n        for (var i = 0; i < a.length - 1; i++) {\n          for (var j = 0; j < b.length - 1; j++) {\n            if (edgeIntersectsEdge(a[i], a[i + 1], b[j], b[j + 1])) {\n              return true;\n            }\n          }\n        }\n      } else {\n        for (var k = 0; k < b.length; k++) {\n          if (arraysIntersectArrays(a, b[k])) {\n            return true;\n          }\n        }\n      }\n    } else {\n      for (var l = 0; l < a.length; l++) {\n        if (arraysIntersectArrays(a[l], b)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /*\n  Internal: Returns a copy of coordinates for s closed polygon\n  */\n  function closedPolygon(coordinates) {\n    var outer = [ ];\n\n    for (var i = 0; i < coordinates.length; i++) {\n      var inner = coordinates[i].slice();\n      if (pointsEqual(inner[0], inner[inner.length - 1]) === false) {\n        inner.push(inner[0]);\n      }\n\n      outer.push(inner);\n    }\n\n    return outer;\n  }\n\n  function pointsEqual(a, b) {\n    for (var i = 0; i < a.length; i++) {\n\n      if (a[i] !== b[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  function coordinatesEqual(a, b) {\n    if (a.length !== b.length) {\n      return false;\n    }\n\n    var na = a.slice().sort(compSort);\n    var nb = b.slice().sort(compSort);\n\n    for (var i = 0; i < na.length; i++) {\n      if (na[i].length !== nb[i].length) {\n        return false;\n      }\n      for (var j = 0; j < na.length; j++) {\n        if (na[i][j] !== nb[i][j]) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /*\n  Internal: An array of variables that will be excluded form JSON objects.\n  */\n  var excludeFromJSON = [\"length\"];\n\n  /*\n  Internal: Base GeoJSON Primitive\n  */\n  function Primitive(geojson){\n    if(geojson){\n      switch (geojson.type) {\n      case 'Point':\n        return new Point(geojson);\n\n      case 'MultiPoint':\n        return new MultiPoint(geojson);\n\n      case 'LineString':\n        return new LineString(geojson);\n\n      case 'MultiLineString':\n        return new MultiLineString(geojson);\n\n      case 'Polygon':\n        return new Polygon(geojson);\n\n      case 'MultiPolygon':\n        return new MultiPolygon(geojson);\n\n      case 'Feature':\n        return new Feature(geojson);\n\n      case 'FeatureCollection':\n        return new FeatureCollection(geojson);\n\n      case 'GeometryCollection':\n        return new GeometryCollection(geojson);\n\n      default:\n        throw new Error(\"Unknown type: \" + geojson.type);\n      }\n    }\n  }\n\n  Primitive.prototype.toMercator = function(){\n    return toMercator(this);\n  };\n\n  Primitive.prototype.toGeographic = function(){\n    return toGeographic(this);\n  };\n\n  Primitive.prototype.envelope = function(){\n    return calculateEnvelope(this);\n  };\n\n  Primitive.prototype.bbox = function(){\n    return calculateBounds(this);\n  };\n\n  Primitive.prototype.convexHull = function(){\n    var coordinates = [ ], i, j;\n    if (this.type === 'Point') {\n      return null;\n    } else if (this.type === 'LineString' || this.type === 'MultiPoint') {\n      if (this.coordinates && this.coordinates.length >= 3) {\n        coordinates = this.coordinates;\n      } else {\n        return null;\n      }\n    } else if (this.type === 'Polygon' || this.type === 'MultiLineString') {\n      if (this.coordinates && this.coordinates.length > 0) {\n        for (i = 0; i < this.coordinates.length; i++) {\n          coordinates = coordinates.concat(this.coordinates[i]);\n        }\n        if(coordinates.length < 3){\n          return null;\n        }\n      } else {\n        return null;\n      }\n    } else if (this.type === 'MultiPolygon') {\n      if (this.coordinates && this.coordinates.length > 0) {\n        for (i = 0; i < this.coordinates.length; i++) {\n          for (j = 0; j < this.coordinates[i].length; j++) {\n            coordinates = coordinates.concat(this.coordinates[i][j]);\n          }\n        }\n        if(coordinates.length < 3){\n          return null;\n        }\n      } else {\n        return null;\n      }\n    } else if(this.type === \"Feature\"){\n      var primitive = new Primitive(this.geometry);\n      return primitive.convexHull();\n    }\n\n    return new Polygon({\n      type: 'Polygon',\n      coordinates: closedPolygon([convexHull(coordinates)])\n    });\n  };\n\n  Primitive.prototype.toJSON = function(){\n    var obj = {};\n    for (var key in this) {\n      if (this.hasOwnProperty(key) && excludeFromJSON.indexOf(key) === -1) {\n        obj[key] = this[key];\n      }\n    }\n    obj.bbox = calculateBounds(this);\n    return obj;\n  };\n\n  Primitive.prototype.contains = function(primitive){\n    return new Primitive(primitive).within(this);\n  };\n\n  Primitive.prototype.within = function(primitive) {\n    var coordinates, i, j, contains;\n\n    // if we are passed a feature, use the polygon inside instead\n    if (primitive.type === 'Feature') {\n      primitive = primitive.geometry;\n    }\n\n    // point.within(point) :: equality\n    if (primitive.type === \"Point\") {\n      if (this.type === \"Point\") {\n        return pointsEqual(this.coordinates, primitive.coordinates);\n\n      }\n    }\n\n    // point.within(multilinestring)\n    if (primitive.type === \"MultiLineString\") {\n      if (this.type === \"Point\") {\n        for (i = 0; i < primitive.coordinates.length; i++) {\n          var linestring = { type: \"LineString\", coordinates: primitive.coordinates[i] };\n\n          if (this.within(linestring)) {\n            return true;\n          }\n        }\n      }\n    }\n\n    // point.within(linestring), point.within(multipoint)\n    if (primitive.type === \"LineString\" || primitive.type === \"MultiPoint\") {\n      if (this.type === \"Point\") {\n        for (i = 0; i < primitive.coordinates.length; i++) {\n          if (this.coordinates.length !== primitive.coordinates[i].length) {\n            return false;\n          }\n\n          if (pointsEqual(this.coordinates, primitive.coordinates[i])) {\n            return true;\n          }\n        }\n      }\n    }\n\n    if (primitive.type === \"Polygon\") {\n      // polygon.within(polygon)\n      if (this.type === \"Polygon\") {\n        // check for equal polygons\n        if (primitive.coordinates.length === this.coordinates.length) {\n          for (i = 0; i < this.coordinates.length; i++) {\n            if (coordinatesEqual(this.coordinates[i], primitive.coordinates[i])) {\n              return true;\n            }\n          }\n        }\n\n        if (this.coordinates.length && polygonContainsPoint(primitive.coordinates, this.coordinates[0][0])) {\n          return !arraysIntersectArrays(closedPolygon(this.coordinates), closedPolygon(primitive.coordinates));\n        } else {\n          return false;\n        }\n\n      // point.within(polygon)\n      } else if (this.type === \"Point\") {\n        return polygonContainsPoint(primitive.coordinates, this.coordinates);\n\n      // linestring/multipoint withing polygon\n      } else if (this.type === \"LineString\" || this.type === \"MultiPoint\") {\n        if (!this.coordinates || this.coordinates.length === 0) {\n          return false;\n        }\n\n        for (i = 0; i < this.coordinates.length; i++) {\n          if (polygonContainsPoint(primitive.coordinates, this.coordinates[i]) === false) {\n            return false;\n          }\n        }\n\n        return true;\n\n      // multilinestring.within(polygon)\n      } else if (this.type === \"MultiLineString\") {\n        for (i = 0; i < this.coordinates.length; i++) {\n          var ls = new LineString(this.coordinates[i]);\n\n          if (ls.within(primitive) === false) {\n            contains++;\n            return false;\n          }\n        }\n\n        return true;\n\n      // multipolygon.within(polygon)\n      } else if (this.type === \"MultiPolygon\") {\n        for (i = 0; i < this.coordinates.length; i++) {\n          var p1 = new Primitive({ type: \"Polygon\", coordinates: this.coordinates[i] });\n\n          if (p1.within(primitive) === false) {\n            return false;\n          }\n        }\n\n        return true;\n      }\n\n    }\n\n    if (primitive.type === \"MultiPolygon\") {\n      // point.within(multipolygon)\n      if (this.type === \"Point\") {\n        if (primitive.coordinates.length) {\n          for (i = 0; i < primitive.coordinates.length; i++) {\n            coordinates = primitive.coordinates[i];\n            if (polygonContainsPoint(coordinates, this.coordinates) && arraysIntersectArrays([this.coordinates], primitive.coordinates) === false) {\n              return true;\n            }\n          }\n        }\n\n        return false;\n      // polygon.within(multipolygon)\n      } else if (this.type === \"Polygon\") {\n        for (i = 0; i < this.coordinates.length; i++) {\n          if (primitive.coordinates[i].length === this.coordinates.length) {\n            for (j = 0; j < this.coordinates.length; j++) {\n              if (coordinatesEqual(this.coordinates[j], primitive.coordinates[i][j])) {\n                return true;\n              }\n            }\n          }\n        }\n\n        if (arraysIntersectArrays(this.coordinates, primitive.coordinates) === false) {\n          if (primitive.coordinates.length) {\n            for (i = 0; i < primitive.coordinates.length; i++) {\n              coordinates = primitive.coordinates[i];\n              if (polygonContainsPoint(coordinates, this.coordinates[0][0]) === false) {\n                contains = false;\n              } else {\n                contains = true;\n              }\n            }\n\n            return contains;\n          }\n        }\n\n      // linestring.within(multipolygon), multipoint.within(multipolygon)\n      } else if (this.type === \"LineString\" || this.type === \"MultiPoint\") {\n        for (i = 0; i < primitive.coordinates.length; i++) {\n          var p = { type: \"Polygon\", coordinates: primitive.coordinates[i] };\n\n          if (this.within(p)) {\n            return true;\n          }\n\n          return false;\n        }\n\n      // multilinestring.within(multipolygon)\n      } else if (this.type === \"MultiLineString\") {\n        for (i = 0; i < this.coordinates.length; i++) {\n          var lines = new LineString(this.coordinates[i]);\n\n          if (lines.within(primitive) === false) {\n            return false;\n          }\n        }\n\n        return true;\n\n      // multipolygon.within(multipolygon)\n      } else if (this.type === \"MultiPolygon\") {\n        for (i = 0; i < primitive.coordinates.length; i++) {\n          var mpoly = { type: \"Polygon\", coordinates: primitive.coordinates[i] };\n\n          if (this.within(mpoly) === false) {\n            return false;\n          }\n        }\n\n        return true;\n      }\n    }\n\n    // default to false\n    return false;\n  };\n\n  Primitive.prototype.intersects = function(primitive) {\n    // if we are passed a feature, use the polygon inside instead\n    if (primitive.type === 'Feature') {\n      primitive = primitive.geometry;\n    }\n\n    var p = new Primitive(primitive);\n    if (this.within(primitive) || p.within(this)) {\n      return true;\n    }\n\n\n    if (this.type !== 'Point' && this.type !== 'MultiPoint' &&\n        primitive.type !== 'Point' && primitive.type !== 'MultiPoint') {\n      return arraysIntersectArrays(this.coordinates, primitive.coordinates);\n    } else if (this.type === 'Feature') {\n      // in the case of a Feature, use the internal primitive for intersection\n      var inner = new Primitive(this.geometry);\n      return inner.intersects(primitive);\n    }\n\n    warn(\"Type \" + this.type + \" to \" + primitive.type + \" intersection is not supported by intersects\");\n    return false;\n  };\n\n\n  /*\n  GeoJSON Point Class\n    new Point();\n    new Point(x,y,z,wtf);\n    new Point([x,y,z,wtf]);\n    new Point([x,y]);\n    new Point({\n      type: \"Point\",\n      coordinates: [x,y]\n    });\n  */\n  function Point(input){\n    var args = Array.prototype.slice.call(arguments);\n\n    if(input && input.type === \"Point\" && input.coordinates){\n      extend(this, input);\n    } else if(input && isArray(input)) {\n      this.coordinates = input;\n    } else if(args.length >= 2) {\n      this.coordinates = args;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.Point\";\n    }\n\n    this.type = \"Point\";\n  }\n\n  Point.prototype = new Primitive();\n  Point.prototype.constructor = Point;\n\n  /*\n  GeoJSON MultiPoint Class\n      new MultiPoint();\n      new MultiPoint([[x,y], [x1,y1]]);\n      new MultiPoint({\n        type: \"MultiPoint\",\n        coordinates: [x,y]\n      });\n  */\n  function MultiPoint(input){\n    if(input && input.type === \"MultiPoint\" && input.coordinates){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.coordinates = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.MultiPoint\";\n    }\n\n    this.type = \"MultiPoint\";\n  }\n\n  MultiPoint.prototype = new Primitive();\n  MultiPoint.prototype.constructor = MultiPoint;\n  MultiPoint.prototype.forEach = function(func){\n    for (var i = 0; i < this.coordinates.length; i++) {\n      func.apply(this, [this.coordinates[i], i, this.coordinates]);\n    }\n    return this;\n  };\n  MultiPoint.prototype.addPoint = function(point){\n    this.coordinates.push(point);\n    return this;\n  };\n  MultiPoint.prototype.insertPoint = function(point, index){\n    this.coordinates.splice(index, 0, point);\n    return this;\n  };\n  MultiPoint.prototype.removePoint = function(remove){\n    if(typeof remove === \"number\"){\n      this.coordinates.splice(remove, 1);\n    } else {\n      this.coordinates.splice(this.coordinates.indexOf(remove), 1);\n    }\n    return this;\n  };\n  MultiPoint.prototype.get = function(i){\n    return new Point(this.coordinates[i]);\n  };\n\n  /*\n  GeoJSON LineString Class\n      new LineString();\n      new LineString([[x,y], [x1,y1]]);\n      new LineString({\n        type: \"LineString\",\n        coordinates: [x,y]\n      });\n  */\n  function LineString(input){\n    if(input && input.type === \"LineString\" && input.coordinates){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.coordinates = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.LineString\";\n    }\n\n    this.type = \"LineString\";\n  }\n\n  LineString.prototype = new Primitive();\n  LineString.prototype.constructor = LineString;\n  LineString.prototype.addVertex = function(point){\n    this.coordinates.push(point);\n    return this;\n  };\n  LineString.prototype.insertVertex = function(point, index){\n    this.coordinates.splice(index, 0, point);\n    return this;\n  };\n  LineString.prototype.removeVertex = function(remove){\n    this.coordinates.splice(remove, 1);\n    return this;\n  };\n\n  /*\n  GeoJSON MultiLineString Class\n      new MultiLineString();\n      new MultiLineString([ [[x,y], [x1,y1]], [[x2,y2], [x3,y3]] ]);\n      new MultiLineString({\n        type: \"MultiLineString\",\n        coordinates: [ [[x,y], [x1,y1]], [[x2,y2], [x3,y3]] ]\n      });\n  */\n  function MultiLineString(input){\n    if(input && input.type === \"MultiLineString\" && input.coordinates){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.coordinates = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.MultiLineString\";\n    }\n\n    this.type = \"MultiLineString\";\n  }\n\n  MultiLineString.prototype = new Primitive();\n  MultiLineString.prototype.constructor = MultiLineString;\n  MultiLineString.prototype.forEach = function(func){\n    for (var i = 0; i < this.coordinates.length; i++) {\n      func.apply(this, [this.coordinates[i], i, this.coordinates ]);\n    }\n  };\n  MultiLineString.prototype.get = function(i){\n    return new LineString(this.coordinates[i]);\n  };\n\n  /*\n  GeoJSON Polygon Class\n      new Polygon();\n      new Polygon([ [[x,y], [x1,y1], [x2,y2]] ]);\n      new Polygon({\n        type: \"Polygon\",\n        coordinates: [ [[x,y], [x1,y1], [x2,y2]] ]\n      });\n  */\n  function Polygon(input){\n    if(input && input.type === \"Polygon\" && input.coordinates){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.coordinates = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.Polygon\";\n    }\n\n    this.type = \"Polygon\";\n  }\n\n  Polygon.prototype = new Primitive();\n  Polygon.prototype.constructor = Polygon;\n  Polygon.prototype.addVertex = function(point){\n    this.insertVertex(point, this.coordinates[0].length - 1);\n    return this;\n  };\n  Polygon.prototype.insertVertex = function(point, index){\n    this.coordinates[0].splice(index, 0, point);\n    return this;\n  };\n  Polygon.prototype.removeVertex = function(remove){\n    this.coordinates[0].splice(remove, 1);\n    return this;\n  };\n  Polygon.prototype.close = function() {\n    this.coordinates = closedPolygon(this.coordinates);\n  };\n  Polygon.prototype.hasHoles = function() {\n    return this.coordinates.length > 1;\n  };\n  Polygon.prototype.holes = function() {\n    var holes = [];\n    if (this.hasHoles()) {\n      for (var i = 1; i < this.coordinates.length; i++) {\n        holes.push(new Polygon([this.coordinates[i]]));\n      }\n    }\n    return holes;\n  };\n\n  /*\n  GeoJSON MultiPolygon Class\n      new MultiPolygon();\n      new MultiPolygon([ [ [[x,y], [x1,y1]], [[x2,y2], [x3,y3]] ] ]);\n      new MultiPolygon({\n        type: \"MultiPolygon\",\n        coordinates: [ [ [[x,y], [x1,y1]], [[x2,y2], [x3,y3]] ] ]\n      });\n  */\n  function MultiPolygon(input){\n    if(input && input.type === \"MultiPolygon\" && input.coordinates){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.coordinates = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.MultiPolygon\";\n    }\n\n    this.type = \"MultiPolygon\";\n  }\n\n  MultiPolygon.prototype = new Primitive();\n  MultiPolygon.prototype.constructor = MultiPolygon;\n  MultiPolygon.prototype.forEach = function(func){\n    for (var i = 0; i < this.coordinates.length; i++) {\n      func.apply(this, [this.coordinates[i], i, this.coordinates ]);\n    }\n  };\n  MultiPolygon.prototype.get = function(i){\n    return new Polygon(this.coordinates[i]);\n  };\n  MultiPolygon.prototype.close = function(){\n    var outer = [];\n    this.forEach(function(polygon){\n      outer.push(closedPolygon(polygon));\n    });\n    this.coordinates = outer;\n    return this;\n  };\n\n  /*\n  GeoJSON Feature Class\n      new Feature();\n      new Feature({\n        type: \"Feature\",\n        geometry: {\n          type: \"Polygon\",\n          coordinates: [ [ [[x,y], [x1,y1]], [[x2,y2], [x3,y3]] ] ]\n        }\n      });\n      new Feature({\n        type: \"Polygon\",\n        coordinates: [ [ [[x,y], [x1,y1]], [[x2,y2], [x3,y3]] ] ]\n      });\n  */\n  function Feature(input){\n    if(input && input.type === \"Feature\"){\n      extend(this, input);\n    } else if(input && input.type && input.coordinates) {\n      this.geometry = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.Feature\";\n    }\n\n    this.type = \"Feature\";\n  }\n\n  Feature.prototype = new Primitive();\n  Feature.prototype.constructor = Feature;\n\n  /*\n  GeoJSON FeatureCollection Class\n      new FeatureCollection();\n      new FeatureCollection([feature, feature1]);\n      new FeatureCollection({\n        type: \"FeatureCollection\",\n        coordinates: [feature, feature1]\n      });\n  */\n  function FeatureCollection(input){\n    if(input && input.type === \"FeatureCollection\" && input.features){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.features = input;\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.FeatureCollection\";\n    }\n\n    this.type = \"FeatureCollection\";\n  }\n\n  FeatureCollection.prototype = new Primitive();\n  FeatureCollection.prototype.constructor = FeatureCollection;\n  FeatureCollection.prototype.forEach = function(func){\n    for (var i = 0; i < this.features.length; i++) {\n      func.apply(this, [this.features[i], i, this.features]);\n    }\n  };\n  FeatureCollection.prototype.get = function(id){\n    var found;\n    this.forEach(function(feature){\n      if(feature.id === id){\n        found = feature;\n      }\n    });\n    return new Feature(found);\n  };\n\n  /*\n  GeoJSON GeometryCollection Class\n      new GeometryCollection();\n      new GeometryCollection([geometry, geometry1]);\n      new GeometryCollection({\n        type: \"GeometryCollection\",\n        coordinates: [geometry, geometry1]\n      });\n  */\n  function GeometryCollection(input){\n    if(input && input.type === \"GeometryCollection\" && input.geometries){\n      extend(this, input);\n    } else if(isArray(input)) {\n      this.geometries = input;\n    } else if(input.coordinates && input.type){\n      this.type = \"GeometryCollection\";\n      this.geometries = [input];\n    } else {\n      throw \"Terraformer: invalid input for Terraformer.GeometryCollection\";\n    }\n\n    this.type = \"GeometryCollection\";\n  }\n\n  GeometryCollection.prototype = new Primitive();\n  GeometryCollection.prototype.constructor = GeometryCollection;\n  GeometryCollection.prototype.forEach = function(func){\n    for (var i = 0; i < this.geometries.length; i++) {\n      func.apply(this, [this.geometries[i], i, this.geometries]);\n    }\n  };\n  GeometryCollection.prototype.get = function(i){\n    return new Primitive(this.geometries[i]);\n  };\n\n  function createCircle(center, radius, interpolate){\n    var mercatorPosition = positionToMercator(center);\n    var steps = interpolate || 64;\n    var polygon = {\n      type: \"Polygon\",\n      coordinates: [[]]\n    };\n    for(var i=1; i<=steps; i++) {\n      var radians = i * (360/steps) * Math.PI / 180;\n      polygon.coordinates[0].push([mercatorPosition[0] + radius * Math.cos(radians), mercatorPosition[1] + radius * Math.sin(radians)]);\n    }\n    polygon.coordinates = closedPolygon(polygon.coordinates);\n\n    return toGeographic(polygon);\n  }\n\n  function Circle (center, radius, interpolate) {\n    var steps = interpolate || 64;\n    var rad = radius || 250;\n\n    if(!center || center.length < 2 || !rad || !steps) {\n      throw new Error(\"Terraformer: missing parameter for Terraformer.Circle\");\n    }\n\n    extend(this, new Feature({\n      type: \"Feature\",\n      geometry: createCircle(center, rad, steps),\n      properties: {\n        radius: rad,\n        center: center,\n        steps: steps\n      }\n    }));\n  }\n\n  Circle.prototype = new Primitive();\n  Circle.prototype.constructor = Circle;\n  Circle.prototype.recalculate = function(){\n    this.geometry = createCircle(this.properties.center, this.properties.radius, this.properties.steps);\n    return this;\n  };\n  Circle.prototype.center = function(coordinates){\n    if(coordinates){\n      this.properties.center = coordinates;\n      this.recalculate();\n    }\n    return this.properties.center;\n  };\n  Circle.prototype.radius = function(radius){\n    if(radius){\n      this.properties.radius = radius;\n      this.recalculate();\n    }\n    return this.properties.radius;\n  };\n  Circle.prototype.steps = function(steps){\n    if(steps){\n      this.properties.steps = steps;\n      this.recalculate();\n    }\n    return this.properties.steps;\n  };\n\n  Circle.prototype.toJSON = function() {\n    var output = Primitive.prototype.toJSON.call(this);\n    return output;\n  };\n\n  exports.Primitive = Primitive;\n  exports.Point = Point;\n  exports.MultiPoint = MultiPoint;\n  exports.LineString = LineString;\n  exports.MultiLineString = MultiLineString;\n  exports.Polygon = Polygon;\n  exports.MultiPolygon = MultiPolygon;\n  exports.Feature = Feature;\n  exports.FeatureCollection = FeatureCollection;\n  exports.GeometryCollection = GeometryCollection;\n  exports.Circle = Circle;\n\n  exports.toMercator = toMercator;\n  exports.toGeographic = toGeographic;\n\n  exports.Tools = {};\n  exports.Tools.positionToMercator = positionToMercator;\n  exports.Tools.positionToGeographic = positionToGeographic;\n  exports.Tools.applyConverter = applyConverter;\n  exports.Tools.toMercator = toMercator;\n  exports.Tools.toGeographic = toGeographic;\n  exports.Tools.createCircle = createCircle;\n\n  exports.Tools.calculateBounds = calculateBounds;\n  exports.Tools.calculateEnvelope = calculateEnvelope;\n\n  exports.Tools.coordinatesContainPoint = coordinatesContainPoint;\n  exports.Tools.polygonContainsPoint = polygonContainsPoint;\n  exports.Tools.arraysIntersectArrays = arraysIntersectArrays;\n  exports.Tools.coordinatesContainPoint = coordinatesContainPoint;\n  exports.Tools.coordinatesEqual = coordinatesEqual;\n  exports.Tools.convexHull = convexHull;\n  exports.Tools.isConvex = isConvex;\n\n  exports.MercatorCRS = MercatorCRS;\n  exports.GeographicCRS = GeographicCRS;\n\n  return exports;\n}));\n", "(function (root, factory) {\n\n  // Node.\n  if(typeof module === 'object' && typeof module.exports === 'object') {\n    exports = module.exports = factory(require(\"terraformer\"));\n  } else if(typeof navigator === \"object\") {\n    // Browser Global.\n    if (!root.Terraformer){\n      throw new Error(\"Terraformer.WKT requires the core Terraformer library. http://github.com/esri/terraformer\")\n    }\n    root.Terraformer.WKT = factory(root.Terraformer);\n  }\n\n}(this, function(Terraformer) {\n  var exports = { };\n\n  /* Jison generated parser */\nvar parser = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"point\":4,\"EOF\":5,\"linestring\":6,\"polygon\":7,\"multipoint\":8,\"multilinestring\":9,\"multipolygon\":10,\"coordinate\":11,\"DOUBLE_TOK\":12,\"ptarray\":13,\"COMMA\":14,\"ring_list\":15,\"ring\":16,\"(\":17,\")\":18,\"POINT\":19,\"Z\":20,\"ZM\":21,\"M\":22,\"EMPTY\":23,\"point_untagged\":24,\"polygon_list\":25,\"polygon_untagged\":26,\"point_list\":27,\"LINESTRING\":28,\"POLYGON\":29,\"MULTIPOINT\":30,\"MULTILINESTRING\":31,\"MULTIPOLYGON\":32,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",12:\"DOUBLE_TOK\",14:\"COMMA\",17:\"(\",18:\")\",19:\"POINT\",20:\"Z\",21:\"ZM\",22:\"M\",23:\"EMPTY\",28:\"LINESTRING\",29:\"POLYGON\",30:\"MULTIPOINT\",31:\"MULTILINESTRING\",32:\"MULTIPOLYGON\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[11,2],[11,3],[11,4],[13,3],[13,1],[15,3],[15,1],[16,3],[4,4],[4,5],[4,5],[4,5],[4,2],[24,1],[24,3],[25,3],[25,1],[26,3],[27,3],[27,1],[6,4],[6,5],[6,5],[6,5],[6,2],[7,4],[7,5],[7,5],[7,5],[7,2],[8,4],[8,5],[8,5],[8,5],[8,2],[9,4],[9,5],[9,5],[9,5],[9,2],[10,4],[10,5],[10,5],[10,5],[10,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$,_$\n) {\n\nvar $0 = $.length - 1;\nswitch (yystate) {\ncase 1: return $[$0-1]; \nbreak;\ncase 2: return $[$0-1]; \nbreak;\ncase 3: return $[$0-1]; \nbreak;\ncase 4: return $[$0-1]; \nbreak;\ncase 5: return $[$0-1]; \nbreak;\ncase 6: return $[$0-1]; \nbreak;\ncase 7: this.$ = new PointArray([ Number($[$0-1]), Number($[$0]) ]); \nbreak;\ncase 8: this.$ = new PointArray([ Number($[$0-2]), Number($[$0-1]), Number($[$0]) ]); \nbreak;\ncase 9: this.$ = new PointArray([ Number($[$0-3]), Number($[$0-2]), Number($[$0-1]), Number($[$0]) ]); \nbreak;\ncase 10: this.$ = $[$0-2].addPoint($[$0]); \nbreak;\ncase 11: this.$ = $[$0]; \nbreak;\ncase 12: this.$ = $[$0-2].addRing($[$0]); \nbreak;\ncase 13: this.$ = new RingList($[$0]); \nbreak;\ncase 14: this.$ = new Ring($[$0-1]); \nbreak;\ncase 15: this.$ = { \"type\": \"Point\", \"coordinates\": $[$0-1].data[0] }; \nbreak;\ncase 16: this.$ = { \"type\": \"Point\", \"coordinates\": $[$0-1].data[0], \"properties\": { z: true } }; \nbreak;\ncase 17: this.$ = { \"type\": \"Point\", \"coordinates\": $[$0-1].data[0], \"properties\": { z: true, m: true } }; \nbreak;\ncase 18: this.$ = { \"type\": \"Point\", \"coordinates\": $[$0-1].data[0], \"properties\": { m: true } }; \nbreak;\ncase 19: this.$ = { \"type\": \"Point\", \"coordinates\": [ ] }; \nbreak;\ncase 20: this.$ = $[$0]; \nbreak;\ncase 21: this.$ = $[$0-1]; \nbreak;\ncase 22: this.$ = $[$0-2].addPolygon($[$0]); \nbreak;\ncase 23: this.$ = new PolygonList($[$0]); \nbreak;\ncase 24: this.$ = $[$0-1]; \nbreak;\ncase 25: this.$ = $[$0-2].addPoint($[$0]); \nbreak;\ncase 26: this.$ = $[$0]; \nbreak;\ncase 27: this.$ = { \"type\": \"LineString\", \"coordinates\": $[$0-1].data }; \nbreak;\ncase 28: this.$ = { \"type\": \"LineString\", \"coordinates\": $[$0-1].data, \"properties\": { z: true } }; \nbreak;\ncase 29: this.$ = { \"type\": \"LineString\", \"coordinates\": $[$0-1].data, \"properties\": { m: true } }; \nbreak;\ncase 30: this.$ = { \"type\": \"LineString\", \"coordinates\": $[$0-1].data, \"properties\": { z: true, m: true } }; \nbreak;\ncase 31: this.$ = { \"type\": \"LineString\", \"coordinates\": [ ] }; \nbreak;\ncase 32: this.$ = { \"type\": \"Polygon\", \"coordinates\": $[$0-1].toJSON() }; \nbreak;\ncase 33: this.$ = { \"type\": \"Polygon\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { z: true } }; \nbreak;\ncase 34: this.$ = { \"type\": \"Polygon\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { m: true } }; \nbreak;\ncase 35: this.$ = { \"type\": \"Polygon\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { z: true, m: true } }; \nbreak;\ncase 36: this.$ = { \"type\": \"Polygon\", \"coordinates\": [ ] }; \nbreak;\ncase 37: this.$ = { \"type\": \"MultiPoint\", \"coordinates\": $[$0-1].data }; \nbreak;\ncase 38: this.$ = { \"type\": \"MultiPoint\", \"coordinates\": $[$0-1].data, \"properties\": { z: true } }; \nbreak;\ncase 39: this.$ = { \"type\": \"MultiPoint\", \"coordinates\": $[$0-1].data, \"properties\": { m: true } }; \nbreak;\ncase 40: this.$ = { \"type\": \"MultiPoint\", \"coordinates\": $[$0-1].data, \"properties\": { z: true, m: true } }; \nbreak;\ncase 41: this.$ = { \"type\": \"MultiPoint\", \"coordinates\": [ ] } \nbreak;\ncase 42: this.$ = { \"type\": \"MultiLineString\", \"coordinates\": $[$0-1].toJSON() }; \nbreak;\ncase 43: this.$ = { \"type\": \"MultiLineString\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { z: true } }; \nbreak;\ncase 44: this.$ = { \"type\": \"MultiLineString\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { m: true } }; \nbreak;\ncase 45: this.$ = { \"type\": \"MultiLineString\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { z: true, m: true } }; \nbreak;\ncase 46: this.$ = { \"type\": \"MultiLineString\", \"coordinates\": [ ] }; \nbreak;\ncase 47: this.$ = { \"type\": \"MultiPolygon\", \"coordinates\": $[$0-1].toJSON() }; \nbreak;\ncase 48: this.$ = { \"type\": \"MultiPolygon\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { z: true } }; \nbreak;\ncase 49: this.$ = { \"type\": \"MultiPolygon\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { m: true } }; \nbreak;\ncase 50: this.$ = { \"type\": \"MultiPolygon\", \"coordinates\": $[$0-1].toJSON(), \"properties\": { z: true, m: true } }; \nbreak;\ncase 51: this.$ = { \"type\": \"MultiPolygon\", \"coordinates\": [ ] }; \nbreak;\n}\n},\ntable: [{3:1,4:2,6:3,7:4,8:5,9:6,10:7,19:[1,8],28:[1,9],29:[1,10],30:[1,11],31:[1,12],32:[1,13]},{1:[3]},{5:[1,14]},{5:[1,15]},{5:[1,16]},{5:[1,17]},{5:[1,18]},{5:[1,19]},{17:[1,20],20:[1,21],21:[1,22],22:[1,23],23:[1,24]},{17:[1,25],20:[1,26],21:[1,28],22:[1,27],23:[1,29]},{17:[1,30],20:[1,31],21:[1,33],22:[1,32],23:[1,34]},{17:[1,35],20:[1,36],21:[1,38],22:[1,37],23:[1,39]},{17:[1,40],20:[1,41],21:[1,43],22:[1,42],23:[1,44]},{17:[1,45],20:[1,46],21:[1,48],22:[1,47],23:[1,49]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{11:51,12:[1,52],13:50},{17:[1,53]},{17:[1,54]},{17:[1,55]},{5:[2,19]},{11:58,12:[1,52],17:[1,59],24:57,27:56},{17:[1,60]},{17:[1,61]},{17:[1,62]},{5:[2,31]},{15:63,16:64,17:[1,65]},{17:[1,66]},{17:[1,67]},{17:[1,68]},{5:[2,36]},{11:58,12:[1,52],17:[1,59],24:57,27:69},{17:[1,70]},{17:[1,71]},{17:[1,72]},{5:[2,41]},{15:73,16:64,17:[1,65]},{17:[1,74]},{17:[1,75]},{17:[1,76]},{5:[2,46]},{17:[1,79],25:77,26:78},{17:[1,80]},{17:[1,81]},{17:[1,82]},{5:[2,51]},{14:[1,84],18:[1,83]},{14:[2,11],18:[2,11]},{12:[1,85]},{11:51,12:[1,52],13:86},{11:51,12:[1,52],13:87},{11:51,12:[1,52],13:88},{14:[1,90],18:[1,89]},{14:[2,26],18:[2,26]},{14:[2,20],18:[2,20]},{11:91,12:[1,52]},{11:58,12:[1,52],17:[1,59],24:57,27:92},{11:58,12:[1,52],17:[1,59],24:57,27:93},{11:58,12:[1,52],17:[1,59],24:57,27:94},{14:[1,96],18:[1,95]},{14:[2,13],18:[2,13]},{11:51,12:[1,52],13:97},{15:98,16:64,17:[1,65]},{15:99,16:64,17:[1,65]},{15:100,16:64,17:[1,65]},{14:[1,90],18:[1,101]},{11:58,12:[1,52],17:[1,59],24:57,27:102},{11:58,12:[1,52],17:[1,59],24:57,27:103},{11:58,12:[1,52],17:[1,59],24:57,27:104},{14:[1,96],18:[1,105]},{15:106,16:64,17:[1,65]},{15:107,16:64,17:[1,65]},{15:108,16:64,17:[1,65]},{14:[1,110],18:[1,109]},{14:[2,23],18:[2,23]},{15:111,16:64,17:[1,65]},{17:[1,79],25:112,26:78},{17:[1,79],25:113,26:78},{17:[1,79],25:114,26:78},{5:[2,15]},{11:115,12:[1,52]},{12:[1,116],14:[2,7],18:[2,7]},{14:[1,84],18:[1,117]},{14:[1,84],18:[1,118]},{14:[1,84],18:[1,119]},{5:[2,27]},{11:58,12:[1,52],17:[1,59],24:120},{18:[1,121]},{14:[1,90],18:[1,122]},{14:[1,90],18:[1,123]},{14:[1,90],18:[1,124]},{5:[2,32]},{16:125,17:[1,65]},{14:[1,84],18:[1,126]},{14:[1,96],18:[1,127]},{14:[1,96],18:[1,128]},{14:[1,96],18:[1,129]},{5:[2,37]},{14:[1,90],18:[1,130]},{14:[1,90],18:[1,131]},{14:[1,90],18:[1,132]},{5:[2,42]},{14:[1,96],18:[1,133]},{14:[1,96],18:[1,134]},{14:[1,96],18:[1,135]},{5:[2,47]},{17:[1,79],26:136},{14:[1,96],18:[1,137]},{14:[1,110],18:[1,138]},{14:[1,110],18:[1,139]},{14:[1,110],18:[1,140]},{14:[2,10],18:[2,10]},{12:[1,141],14:[2,8],18:[2,8]},{5:[2,16]},{5:[2,17]},{5:[2,18]},{14:[2,25],18:[2,25]},{14:[2,21],18:[2,21]},{5:[2,28]},{5:[2,29]},{5:[2,30]},{14:[2,12],18:[2,12]},{14:[2,14],18:[2,14]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,43]},{5:[2,44]},{5:[2,45]},{14:[2,22],18:[2,22]},{14:[2,24],18:[2,24]},{5:[2,48]},{5:[2,49]},{5:[2,50]},{14:[2,9],18:[2,9]}],\ndefaultActions: {14:[2,1],15:[2,2],16:[2,3],17:[2,4],18:[2,5],19:[2,6],24:[2,19],29:[2,31],34:[2,36],39:[2,41],44:[2,46],49:[2,51],83:[2,15],89:[2,27],95:[2,32],101:[2,37],105:[2,42],109:[2,47],117:[2,16],118:[2,17],119:[2,18],122:[2,28],123:[2,29],124:[2,30],127:[2,33],128:[2,34],129:[2,35],130:[2,38],131:[2,39],132:[2,40],133:[2,43],134:[2,44],135:[2,45],138:[2,48],139:[2,49],140:[2,50]},\nparseError: function parseError (str, hash) {\n    throw new Error(str);\n},\nparse: function parse(input) {\n    var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n    this.lexer.setInput(input);\n    this.lexer.yy = this.yy;\n    this.yy.lexer = this.lexer;\n    this.yy.parser = this;\n    if (typeof this.lexer.yylloc == \"undefined\")\n        this.lexer.yylloc = {};\n    var yyloc = this.lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = this.lexer.options && this.lexer.options.ranges;\n    if (typeof this.yy.parseError === \"function\")\n        this.parseError = this.yy.parseError;\n    function popStack(n) {\n        stack.length = stack.length - 2 * n;\n        vstack.length = vstack.length - n;\n        lstack.length = lstack.length - n;\n    }\n    function lex() {\n        var token;\n        token = self.lexer.lex() || 1;\n        if (typeof token !== \"number\") {\n            token = self.symbols_[token] || token;\n        }\n        return token;\n    }\n    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n    while (true) {\n        state = stack[stack.length - 1];\n        if (this.defaultActions[state]) {\n            action = this.defaultActions[state];\n        } else {\n            if (symbol === null || typeof symbol == \"undefined\") {\n                symbol = lex();\n            }\n            action = table[state] && table[state][symbol];\n        }\n        if (typeof action === \"undefined\" || !action.length || !action[0]) {\n            var errStr = \"\";\n            if (!recovering) {\n                expected = [];\n                for (p in table[state])\n                    if (this.terminals_[p] && p > 2) {\n                        expected.push(\"'\" + this.terminals_[p] + \"'\");\n                    }\n                if (this.lexer.showPosition) {\n                    errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n                } else {\n                    errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n                }\n                this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n            }\n        }\n        if (action[0] instanceof Array && action.length > 1) {\n            throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n        }\n        switch (action[0]) {\n        case 1:\n            stack.push(symbol);\n            vstack.push(this.lexer.yytext);\n            lstack.push(this.lexer.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            if (!preErrorSymbol) {\n                yyleng = this.lexer.yyleng;\n                yytext = this.lexer.yytext;\n                yylineno = this.lexer.yylineno;\n                yyloc = this.lexer.yylloc;\n                if (recovering > 0)\n                    recovering--;\n            } else {\n                symbol = preErrorSymbol;\n                preErrorSymbol = null;\n            }\n            break;\n        case 2:\n            len = this.productions_[action[1]][1];\n            yyval.$ = vstack[vstack.length - len];\n            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n            if (ranges) {\n                yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n            }\n            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n            if (typeof r !== \"undefined\") {\n                return r;\n            }\n            if (len) {\n                stack = stack.slice(0, -1 * len * 2);\n                vstack = vstack.slice(0, -1 * len);\n                lstack = lstack.slice(0, -1 * len);\n            }\n            stack.push(this.productions_[action[1]][0]);\n            vstack.push(yyval.$);\n            lstack.push(yyval._$);\n            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n            stack.push(newState);\n            break;\n        case 3:\n            return true;\n        }\n    }\n    return true;\n}\n};\nundefined/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n        if (this.yy.parser) {\n            this.yy.parser.parseError(str, hash);\n        } else {\n            throw new Error(str);\n        }\n    },\nsetInput:function (input) {\n        this._input = input;\n        this._more = this._less = this.done = false;\n        this.yylineno = this.yyleng = 0;\n        this.yytext = this.matched = this.match = '';\n        this.conditionStack = ['INITIAL'];\n        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n        if (this.options.ranges) this.yylloc.range = [0,0];\n        this.offset = 0;\n        return this;\n    },\ninput:function () {\n        var ch = this._input[0];\n        this.yytext += ch;\n        this.yyleng++;\n        this.offset++;\n        this.match += ch;\n        this.matched += ch;\n        var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n            this.yylineno++;\n            this.yylloc.last_line++;\n        } else {\n            this.yylloc.last_column++;\n        }\n        if (this.options.ranges) this.yylloc.range[1]++;\n\n        this._input = this._input.slice(1);\n        return ch;\n    },\nunput:function (ch) {\n        var len = ch.length;\n        var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n        this._input = ch + this._input;\n        this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n        //this.yyleng -= len;\n        this.offset -= len;\n        var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n        this.match = this.match.substr(0, this.match.length-1);\n        this.matched = this.matched.substr(0, this.matched.length-1);\n\n        if (lines.length-1) this.yylineno -= lines.length-1;\n        var r = this.yylloc.range;\n\n        this.yylloc = {first_line: this.yylloc.first_line,\n          last_line: this.yylineno+1,\n          first_column: this.yylloc.first_column,\n          last_column: lines ?\n              (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n              this.yylloc.first_column - len\n          };\n\n        if (this.options.ranges) {\n            this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n        }\n        return this;\n    },\nmore:function () {\n        this._more = true;\n        return this;\n    },\nless:function (n) {\n        this.unput(this.match.slice(n));\n    },\npastInput:function () {\n        var past = this.matched.substr(0, this.matched.length - this.match.length);\n        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n    },\nupcomingInput:function () {\n        var next = this.match;\n        if (next.length < 20) {\n            next += this._input.substr(0, 20-next.length);\n        }\n        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n    },\nshowPosition:function () {\n        var pre = this.pastInput();\n        var c = new Array(pre.length + 1).join(\"-\");\n        return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n    },\nnext:function () {\n        if (this.done) {\n            return this.EOF;\n        }\n        if (!this._input) this.done = true;\n\n        var token,\n            match,\n            tempMatch,\n            index,\n            col,\n            lines;\n        if (!this._more) {\n            this.yytext = '';\n            this.match = '';\n        }\n        var rules = this._currentRules();\n        for (var i=0;i < rules.length; i++) {\n            tempMatch = this._input.match(this.rules[rules[i]]);\n            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                match = tempMatch;\n                index = i;\n                if (!this.options.flex) break;\n            }\n        }\n        if (match) {\n            lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n            if (lines) this.yylineno += lines.length;\n            this.yylloc = {first_line: this.yylloc.last_line,\n                           last_line: this.yylineno+1,\n                           first_column: this.yylloc.last_column,\n                           last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n            this.yytext += match[0];\n            this.match += match[0];\n            this.matches = match;\n            this.yyleng = this.yytext.length;\n            if (this.options.ranges) {\n                this.yylloc.range = [this.offset, this.offset += this.yyleng];\n            }\n            this._more = false;\n            this._input = this._input.slice(match[0].length);\n            this.matched += match[0];\n            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n            if (this.done && this._input) this.done = false;\n            if (token) return token;\n            else return;\n        }\n        if (this._input === \"\") {\n            return this.EOF;\n        } else {\n            return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n                    {text: \"\", token: null, line: this.yylineno});\n        }\n    },\nlex:function lex () {\n        var r = this.next();\n        if (typeof r !== 'undefined') {\n            return r;\n        } else {\n            return this.lex();\n        }\n    },\nbegin:function begin (condition) {\n        this.conditionStack.push(condition);\n    },\npopState:function popState () {\n        return this.conditionStack.pop();\n    },\n_currentRules:function _currentRules () {\n        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n    },\ntopState:function () {\n        return this.conditionStack[this.conditionStack.length-2];\n    },\npushState:function begin (condition) {\n        this.begin(condition);\n    }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:// ignore\nbreak;\ncase 1:return 17\nbreak;\ncase 2:return 18\nbreak;\ncase 3:return 12\nbreak;\ncase 4:return 19\nbreak;\ncase 5:return 28\nbreak;\ncase 6:return 29\nbreak;\ncase 7:return 30\nbreak;\ncase 8:return 31\nbreak;\ncase 9:return 32\nbreak;\ncase 10:return 14\nbreak;\ncase 11:return 23\nbreak;\ncase 12:return 22\nbreak;\ncase 13:return 20\nbreak;\ncase 14:return 21\nbreak;\ncase 15:return 5\nbreak;\ncase 16:return \"INVALID\"\nbreak;\n}\n};\nlexer.rules = [/^(?:\\s+)/,/^(?:\\()/,/^(?:\\))/,/^(?:-?[0-9]+(\\.[0-9]+)?([eE][\\-\\+]?[0-9]+)?)/,/^(?:POINT\\b)/,/^(?:LINESTRING\\b)/,/^(?:POLYGON\\b)/,/^(?:MULTIPOINT\\b)/,/^(?:MULTILINESTRING\\b)/,/^(?:MULTIPOLYGON\\b)/,/^(?:,)/,/^(?:EMPTY\\b)/,/^(?:M\\b)/,/^(?:Z\\b)/,/^(?:ZM\\b)/,/^(?:$)/,/^(?:.)/];\nlexer.conditions = {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n  function PointArray (point) {\n    this.data = [ point ];\n    this.type = 'PointArray';\n  }\n\n  PointArray.prototype.addPoint = function (point) {\n    if (point.type === 'PointArray') {\n      this.data = this.data.concat(point.data);\n    } else {\n      this.data.push(point);\n    }\n\n    return this;\n  };\n\n  PointArray.prototype.toJSON = function () {\n    return this.data;\n  };\n\n  function Ring (point) {\n    this.data = point;\n    this.type = 'Ring';\n  }\n\n  Ring.prototype.toJSON = function () {\n    var data = [ ];\n\n    for (var i = 0; i < this.data.data.length; i++) {\n      data.push(this.data.data[i]);\n    }\n\n    return data;\n  };\n\n  function RingList (ring) {\n    this.data = [ ring ];\n    this.type = 'RingList';\n  }\n\n  RingList.prototype.addRing = function (ring) {\n    this.data.push(ring);\n\n    return this;\n  };\n\n  RingList.prototype.toJSON = function () {\n    var data = [ ];\n\n    for (var i = 0; i < this.data.length; i++) {\n      data.push(this.data[i].toJSON());\n    }\n\n    if (data.length === 1) {\n      return data;\n    } else {\n      return data;\n    }\n  };\n\n  function PolygonList (polygon) {\n    this.data = [ polygon ];\n    this.type = 'PolygonList';\n  }\n\n  PolygonList.prototype.addPolygon = function (polygon) {\n    this.data.push(polygon);\n\n    return this;\n  };\n\n  PolygonList.prototype.toJSON = function () {\n    var data = [ ];\n\n    for (var i = 0; i < this.data.length; i++) {\n      data = data.concat( [ this.data[i].toJSON() ] );\n    }\n\n    return data;\n  };\n\n  function _parse () {\n    return parser.parse.apply(parser, arguments);\n  }\n\n  function parse (element) {\n    var res, primitive;\n\n    try {\n      res = parser.parse(element);\n    } catch (err) {\n      throw Error(\"Unable to parse: \" + err);\n    }\n\n    return Terraformer.Primitive(res);\n  }\n\n  function arrayToRing (arr) {\n    var parts = [ ], ret = '';\n\n    for (var i = 0; i < arr.length; i++) {\n      parts.push(arr[i].join(' '));\n    }\n\n    ret += '(' + parts.join(', ') + ')';\n\n    return ret;\n\n  }\n\n  function pointToWKTPoint (primitive) {\n    var ret = 'POINT ';\n\n    if (primitive.coordinates === undefined || primitive.coordinates.length === 0) {\n      ret += 'EMPTY';\n\n      return ret;\n    } else if (primitive.coordinates.length === 3) {\n      // 3d or time? default to 3d\n      if (primitive.properties && primitive.properties.m === true) {\n        ret += 'M ';\n      } else {\n        ret += 'Z ';\n      }\n    } else if (primitive.coordinates.length === 4) {\n      // 3d and time\n      ret += 'ZM ';\n    }\n\n    // include coordinates\n    ret += '(' + primitive.coordinates.join(' ') + ')';\n\n    return ret;\n  }\n\n  function lineStringToWKTLineString (primitive) {\n    var ret = 'LINESTRING ';\n\n    if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {\n      ret += 'EMPTY';\n\n      return ret;\n    } else if (primitive.coordinates[0].length === 3) {\n      if (primitive.properties && primitive.properties.m === true) {\n        ret += 'M ';\n      } else {\n        ret += 'Z ';\n      }\n    } else if (primitive.coordinates[0].length === 4) {\n      ret += 'ZM ';\n    }\n\n    ret += arrayToRing(primitive.coordinates);\n\n    return ret;\n  }\n\n  function polygonToWKTPolygon (primitive) {\n    var ret = 'POLYGON ';\n\n    if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {\n      ret += 'EMPTY';\n\n      return ret;\n    } else if (primitive.coordinates[0][0].length === 3) {\n      if (primitive.properties && primitive.properties.m === true) {\n        ret += 'M ';\n      } else {\n        ret += 'Z ';\n      }\n    } else if (primitive.coordinates[0][0].length === 4) {\n      ret += 'ZM ';\n    }\n\n    ret += '(';\n    var parts = [ ];\n    for (var i = 0; i < primitive.coordinates.length; i++) {\n      parts.push(arrayToRing(primitive.coordinates[i]));\n    }\n\n    ret += parts.join(', ');\n    ret += ')';\n\n    return ret;\n  }\n\n  function multiPointToWKTMultiPoint (primitive) {\n    var ret = 'MULTIPOINT ';\n\n    if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {\n      ret += 'EMPTY';\n\n      return ret;\n    } else if (primitive.coordinates[0].length === 3) {\n      if (primitive.properties && primitive.properties.m === true) {\n        ret += 'M ';\n      } else {\n        ret += 'Z ';\n      }\n    } else if (primitive.coordinates[0].length === 4) {\n      ret += 'ZM ';\n    }\n\n    ret += arrayToRing(primitive.coordinates);\n\n    return ret;\n  }\n\n  function multiLineStringToWKTMultiLineString (primitive) {\n    var ret = 'MULTILINESTRING ';\n\n    if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0) {\n      ret += 'EMPTY';\n\n      return ret;\n    } else if (primitive.coordinates[0][0].length === 3) {\n      if (primitive.properties && primitive.properties.m === true) {\n        ret += 'M ';\n      } else {\n        ret += 'Z ';\n      }\n    } else if (primitive.coordinates[0][0].length === 4) {\n      ret += 'ZM ';\n    }\n\n    ret += '(';\n    var parts = [ ];\n    for (var i = 0; i < primitive.coordinates.length; i++) {\n      parts.push(arrayToRing(primitive.coordinates[i]));\n    }\n\n    ret += parts.join(', ');\n    ret += ')';\n\n    return ret;\n  }\n\n  function multiPolygonToWKTMultiPolygon (primitive) {\n    var ret = 'MULTIPOLYGON ';\n\n    if (primitive.coordinates === undefined || primitive.coordinates.length === 0 || primitive.coordinates[0].length === 0 || primitive.coordinates[0][0].length === 0) {\n      ret += 'EMPTY';\n\n      return ret;\n    } else if (primitive.coordinates[0][0][0].length === 3) {\n      if (primitive.properties && primitive.properties.m === true) {\n        ret += 'M ';\n      } else {\n        ret += 'Z ';\n      }\n    } else if (primitive.coordinates[0][0][0].length === 4) {\n      ret += 'ZM ';\n    }\n\n    ret += '(';\n    var inner = [ ];\n    for (var c = 0; c < primitive.coordinates.length; c++) {\n      var it = '(';\n      var parts = [ ];\n      for (var i = 0; i < primitive.coordinates[c].length; i++) {\n        parts.push(arrayToRing(primitive.coordinates[c][i]));\n      }\n\n      it += parts.join(', ');\n      it += ')';\n\n      inner.push(it);\n    }\n\n    ret += inner.join(', ');\n    ret += ')';\n\n    return ret;\n  }\n\n  function convert (primitive) {\n    switch (primitive.type) {\n      case 'Point':\n        return pointToWKTPoint(primitive);\n      case 'LineString':\n        return lineStringToWKTLineString(primitive);\n      case 'Polygon':\n        return polygonToWKTPolygon(primitive);\n      case 'MultiPoint':\n        return multiPointToWKTMultiPoint(primitive);\n      case 'MultiLineString':\n        return multiLineStringToWKTMultiLineString(primitive);\n      case 'MultiPolygon':\n        return multiPolygonToWKTMultiPolygon(primitive);\n      case 'GeometryCollection':\n        var ret = 'GEOMETRYCOLLECTION';\n        var parts = [ ];\n        for (i = 0; i < primitive.geometries.length; i++){\n          parts.push(convert(primitive.geometries[i]));\n        }\n        return ret + '(' + parts.join(', ') + ')';\n      default:\n        throw Error (\"Unknown Type: \" + primitive.type);\n    }\n  }\n\n  exports.parser  = parser;\n  exports.Parser  = parser.Parser;\n  exports.parse   = parse;\n  exports.convert = convert;\n\n  return exports;\n}));\n"],
  "mappings": "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AC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,CAAC;AAAA,UACn3F,gBAAgB,EAAC,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAA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",
  "names": ["exports", "i", "exports", "parser", "parse", "lexer", "i"]
}