{"version":3,"file":"jsts.js","sources":["../src/Array.js","../src/Number.js","../src/Math.js","../src/org/locationtech/jts/util/NumberUtil.js","../src/java/lang/IllegalArgumentException.js","../src/java/lang/Long.js","../src/java/lang/Double.js","../src/java/lang/Comparable.js","../src/java/lang/Cloneable.js","../src/java/util/Comparator.js","../src/java/io/Serializable.js","../src/java/lang/RuntimeException.js","../src/org/locationtech/jts/util/AssertionFailedException.js","../src/org/locationtech/jts/util/Assert.js","../src/org/locationtech/jts/geom/Coordinate.js","../src/hasInterface.js","../src/java/util/Iterator.js","../src/java/util/Collection.js","../src/java/util/IndexOutOfBoundsException.js","../src/java/util/List.js","../src/java/util/NoSuchElementException.js","../src/java/util/OperationNotSupported.js","../src/java/util/ArrayList.js","../src/org/locationtech/jts/geom/CoordinateList.js","../src/org/locationtech/jts/geom/Envelope.js","../src/java/lang/Exception.js","../src/org/locationtech/jts/algorithm/NotRepresentableException.js","../src/java/lang/StringBuffer.js","../src/java/lang/Integer.js","../src/java/lang/Character.js","../src/org/locationtech/jts/math/DD.js","../src/org/locationtech/jts/algorithm/CGAlgorithmsDD.js","../src/org/locationtech/jts/algorithm/Orientation.js","../src/java/lang/System.js","../src/org/locationtech/jts/algorithm/HCoordinate.js","../src/org/locationtech/jts/math/MathUtil.js","../src/org/locationtech/jts/algorithm/Distance.js","../src/org/locationtech/jts/geom/CoordinateSequence.js","../src/org/locationtech/jts/geom/CoordinateSequenceFactory.js","../src/org/locationtech/jts/geom/GeometryComponentFilter.js","../src/org/locationtech/jts/geom/Geometry.js","../src/org/locationtech/jts/geom/CoordinateFilter.js","../src/org/locationtech/jts/algorithm/BoundaryNodeRule.js","../src/org/locationtech/jts/geom/CoordinateArrays.js","../src/java/util/Map.js","../src/java/util/SortedMap.js","../src/java/util/Set.js","../src/java/util/HashSet.js","../src/java/util/TreeMap.js","../src/org/locationtech/jts/geom/Lineal.js","../src/java/util/SortedSet.js","../src/java/util/TreeSet.js","../src/java/util/Arrays.js","../src/org/locationtech/jts/geom/Dimension.js","../src/org/locationtech/jts/geom/GeometryFilter.js","../src/org/locationtech/jts/geom/CoordinateSequenceFilter.js","../src/org/locationtech/jts/geom/GeometryCollection.js","../src/org/locationtech/jts/geom/MultiLineString.js","../src/org/locationtech/jts/operation/BoundaryOp.js","../src/org/locationtech/jts/algorithm/Length.js","../src/java/io/PrintStream.js","../src/java/io/StringReader.js","../src/java/text/DecimalFormat.js","../src/java/io/ByteArrayOutputStream.js","../src/java/io/IOException.js","../src/java/io/LineNumberReader.js","../src/org/locationtech/jts/util/StringUtil.js","../src/java/lang/StringBuilder.js","../src/org/locationtech/jts/geom/CoordinateSequences.js","../src/org/locationtech/jts/geom/LineString.js","../src/org/locationtech/jts/geom/Puntal.js","../src/org/locationtech/jts/geom/Point.js","../src/org/locationtech/jts/algorithm/Area.js","../src/org/locationtech/jts/geom/Polygonal.js","../src/org/locationtech/jts/geom/Polygon.js","../src/org/locationtech/jts/geom/MultiPoint.js","../src/org/locationtech/jts/geom/LinearRing.js","../src/org/locationtech/jts/geom/MultiPolygon.js","../src/org/locationtech/jts/geom/util/GeometryEditor.js","../src/org/locationtech/jts/geom/impl/CoordinateArraySequence.js","../src/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js","../src/Map.js","../src/java/util/HashMap.js","../src/org/locationtech/jts/geom/PrecisionModel.js","../src/org/locationtech/jts/geom/GeometryFactory.js","../src/org/locationtech/jts/io/WKTParser.js","../src/org/locationtech/jts/io/WKTWriter.js","../src/org/locationtech/jts/algorithm/LineIntersector.js","../src/org/locationtech/jts/algorithm/RobustLineIntersector.js","../src/org/locationtech/jts/geom/LineSegment.js","../src/org/locationtech/jts/geom/Location.js","../src/org/locationtech/jts/geom/IntersectionMatrix.js","../src/org/locationtech/jts/algorithm/Angle.js","../src/org/locationtech/jts/geom/Triangle.js","../src/org/locationtech/jts/algorithm/distance/PointPairDistance.js","../src/org/locationtech/jts/algorithm/distance/DistanceToPoint.js","../src/org/locationtech/jts/algorithm/distance/DiscreteHausdorffDistance.js","../src/org/locationtech/jts/index/ItemVisitor.js","../src/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeNode.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeLeafNode.js","../src/java/util/Collections.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeBranchNode.js","../src/org/locationtech/jts/index/intervalrtree/SortedPackedIntervalRTree.js","../src/org/locationtech/jts/geom/util/LinearComponentExtracter.js","../src/org/locationtech/jts/index/ArrayListVisitor.js","../src/org/locationtech/jts/algorithm/RayCrossingCounter.js","../src/org/locationtech/jts/algorithm/locate/IndexedPointInAreaLocator.js","../src/org/locationtech/jts/algorithm/PointLocation.js","../src/org/locationtech/jts/geom/GeometryCollectionIterator.js","../src/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js","../src/org/locationtech/jts/algorithm/match/SimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/AreaSimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/HausdorffSimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/SimilarityMeasureCombiner.js","../src/org/locationtech/jts/algorithm/Centroid.js","../src/java/util/EmptyStackException.js","../src/java/util/Stack.js","../src/org/locationtech/jts/util/UniqueCoordinateArrayFilter.js","../src/org/locationtech/jts/algorithm/ConvexHull.js","../src/org/locationtech/jts/algorithm/InteriorPointArea.js","../src/org/locationtech/jts/algorithm/InteriorPointLine.js","../src/org/locationtech/jts/algorithm/InteriorPointPoint.js","../src/org/locationtech/jts/algorithm/MinimumBoundingCircle.js","../src/org/locationtech/jts/algorithm/MinimumDiameter.js","../src/org/locationtech/jts/geom/util/GeometryTransformer.js","../src/org/locationtech/jts/densify/Densifier.js","../src/org/locationtech/jts/geomgraph/Quadrant.js","../src/org/locationtech/jts/edgegraph/HalfEdge.js","../src/org/locationtech/jts/edgegraph/MarkHalfEdge.js","../src/org/locationtech/jts/edgegraph/EdgeGraph.js","../src/org/locationtech/jts/dissolve/DissolveHalfEdge.js","../src/org/locationtech/jts/dissolve/DissolveEdgeGraph.js","../src/org/locationtech/jts/dissolve/LineDissolver.js","../src/org/locationtech/jts/algorithm/PointLocator.js","../src/org/locationtech/jts/geomgraph/Position.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChain.js","../src/org/locationtech/jts/geomgraph/index/SweepLineEvent.js","../src/org/locationtech/jts/geomgraph/index/EdgeSetIntersector.js","../src/org/locationtech/jts/geomgraph/index/SegmentIntersector.js","../src/org/locationtech/jts/geomgraph/index/SimpleMCSweepLineIntersector.js","../src/org/locationtech/jts/geomgraph/TopologyLocation.js","../src/org/locationtech/jts/geomgraph/Label.js","../src/org/locationtech/jts/geomgraph/EdgeIntersection.js","../src/org/locationtech/jts/geomgraph/EdgeIntersectionList.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js","../src/org/locationtech/jts/geomgraph/Depth.js","../src/org/locationtech/jts/geomgraph/GraphComponent.js","../src/org/locationtech/jts/geomgraph/Edge.js","../src/org/locationtech/jts/geomgraph/Node.js","../src/org/locationtech/jts/geomgraph/NodeMap.js","../src/org/locationtech/jts/geomgraph/EdgeEnd.js","../src/org/locationtech/jts/geom/TopologyException.js","../src/org/locationtech/jts/geomgraph/DirectedEdge.js","../src/org/locationtech/jts/geomgraph/NodeFactory.js","../src/org/locationtech/jts/geomgraph/PlanarGraph.js","../src/org/locationtech/jts/geomgraph/GeometryGraph.js","../src/org/locationtech/jts/index/kdtree/KdNodeVisitor.js","../src/org/locationtech/jts/index/kdtree/KdNode.js","../src/org/locationtech/jts/index/kdtree/KdTree.js","../src/org/locationtech/jts/index/quadtree/NodeBase.js","../src/org/locationtech/jts/index/quadtree/DoubleBits.js","../src/org/locationtech/jts/index/quadtree/Key.js","../src/org/locationtech/jts/index/quadtree/Node.js","../src/org/locationtech/jts/index/quadtree/IntervalSize.js","../src/org/locationtech/jts/index/quadtree/Root.js","../src/org/locationtech/jts/index/SpatialIndex.js","../src/org/locationtech/jts/index/quadtree/Quadtree.js","../src/org/locationtech/jts/index/strtree/Boundable.js","../src/org/locationtech/jts/index/strtree/ItemBoundable.js","../src/org/locationtech/jts/util/PriorityQueue.js","../src/org/locationtech/jts/index/strtree/AbstractNode.js","../src/org/locationtech/jts/index/strtree/BoundablePair.js","../src/org/locationtech/jts/index/strtree/AbstractSTRtree.js","../src/org/locationtech/jts/index/strtree/ItemDistance.js","../src/org/locationtech/jts/index/strtree/STRtree.js","../src/org/locationtech/jts/io/GeoJSONParser.js","../src/org/locationtech/jts/io/GeoJSONReader.js","../src/org/locationtech/jts/io/GeoJSONWriter.js","../src/org/locationtech/jts/io/WKTReader.js","../src/org/locationtech/jts/io/OL3Parser.js","../src/org/locationtech/jts/noding/SegmentPointComparator.js","../src/org/locationtech/jts/noding/SegmentNode.js","../src/org/locationtech/jts/noding/SegmentNodeList.js","../src/org/locationtech/jts/noding/Octant.js","../src/org/locationtech/jts/noding/SegmentString.js","../src/org/locationtech/jts/noding/NodableSegmentString.js","../src/org/locationtech/jts/noding/NodedSegmentString.js","../src/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js","../src/org/locationtech/jts/index/chain/MonotoneChain.js","../src/org/locationtech/jts/index/chain/MonotoneChainBuilder.js","../src/org/locationtech/jts/noding/Noder.js","../src/org/locationtech/jts/noding/SinglePassNoder.js","../src/org/locationtech/jts/noding/MCIndexNoder.js","../src/org/locationtech/jts/noding/ScaledNoder.js","../src/org/locationtech/jts/operation/IsSimpleOp.js","../src/org/locationtech/jts/operation/buffer/BufferParameters.js","../src/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js","../src/java/util/LinkedList.js","../src/org/locationtech/jts/operation/buffer/BufferSubgraph.js","../src/org/locationtech/jts/geomgraph/EdgeRing.js","../src/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js","../src/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js","../src/org/locationtech/jts/operation/overlay/PolygonBuilder.js","../src/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js","../src/org/locationtech/jts/operation/buffer/OffsetSegmentString.js","../src/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js","../src/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js","../src/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js","../src/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js","../src/org/locationtech/jts/geomgraph/EdgeEndStar.js","../src/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","../src/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js","../src/org/locationtech/jts/noding/OrientedCoordinateArray.js","../src/org/locationtech/jts/geomgraph/EdgeList.js","../src/org/locationtech/jts/noding/SegmentIntersector.js","../src/org/locationtech/jts/noding/IntersectionAdder.js","../src/org/locationtech/jts/operation/buffer/BufferBuilder.js","../src/org/locationtech/jts/noding/NodingValidator.js","../src/org/locationtech/jts/noding/snapround/HotPixel.js","../src/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js","../src/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js","../src/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js","../src/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js","../src/org/locationtech/jts/operation/buffer/BufferOp.js","../src/org/locationtech/jts/geom/util/PolygonExtracter.js","../src/org/locationtech/jts/operation/distance/GeometryLocation.js","../src/org/locationtech/jts/geom/util/PointExtracter.js","../src/org/locationtech/jts/operation/distance/ConnectedElementLocationFilter.js","../src/org/locationtech/jts/operation/distance/DistanceOp.js","../src/org/locationtech/jts/operation/linemerge/EdgeString.js","../src/org/locationtech/jts/planargraph/GraphComponent.js","../src/org/locationtech/jts/planargraph/DirectedEdge.js","../src/org/locationtech/jts/operation/linemerge/LineMergeDirectedEdge.js","../src/org/locationtech/jts/planargraph/Edge.js","../src/org/locationtech/jts/planargraph/DirectedEdgeStar.js","../src/org/locationtech/jts/planargraph/Node.js","../src/org/locationtech/jts/operation/linemerge/LineMergeEdge.js","../src/org/locationtech/jts/planargraph/NodeMap.js","../src/org/locationtech/jts/planargraph/PlanarGraph.js","../src/org/locationtech/jts/operation/linemerge/LineMergeGraph.js","../src/org/locationtech/jts/operation/linemerge/LineMerger.js","../src/org/locationtech/jts/noding/BasicSegmentString.js","../src/org/locationtech/jts/noding/InteriorIntersectionFinder.js","../src/org/locationtech/jts/noding/FastNodingValidator.js","../src/org/locationtech/jts/geomgraph/EdgeNodingValidator.js","../src/org/locationtech/jts/geom/util/GeometryCollectionMapper.js","../src/org/locationtech/jts/operation/overlay/LineBuilder.js","../src/org/locationtech/jts/operation/overlay/PointBuilder.js","../src/org/locationtech/jts/operation/overlay/snap/LineStringSnapper.js","../src/org/locationtech/jts/operation/overlay/snap/GeometrySnapper.js","../src/org/locationtech/jts/precision/CommonBits.js","../src/org/locationtech/jts/precision/CommonBitsRemover.js","../src/org/locationtech/jts/operation/overlay/snap/SnapOverlayOp.js","../src/org/locationtech/jts/operation/overlay/snap/SnapIfNeededOverlayOp.js","../src/org/locationtech/jts/operation/GeometryGraphOperation.js","../src/org/locationtech/jts/operation/overlay/OverlayOp.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeDirectedEdge.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeEdge.js","../src/org/locationtech/jts/operation/polygonize/EdgeRing.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeGraph.js","../src/org/locationtech/jts/operation/polygonize/Polygonizer.js","../src/org/locationtech/jts/operation/relate/EdgeEndBuilder.js","../src/org/locationtech/jts/operation/relate/EdgeEndBundle.js","../src/org/locationtech/jts/operation/relate/EdgeEndBundleStar.js","../src/org/locationtech/jts/operation/relate/RelateNode.js","../src/org/locationtech/jts/operation/relate/RelateNodeFactory.js","../src/org/locationtech/jts/operation/relate/RelateComputer.js","../src/org/locationtech/jts/operation/predicate/RectangleContains.js","../src/org/locationtech/jts/algorithm/RectangleLineIntersector.js","../src/org/locationtech/jts/geom/util/ShortCircuitedGeometryVisitor.js","../src/org/locationtech/jts/operation/predicate/RectangleIntersects.js","../src/org/locationtech/jts/operation/relate/RelateOp.js","../src/org/locationtech/jts/geom/util/GeometryCombiner.js","../src/org/locationtech/jts/operation/union/PointGeometryUnion.js","../src/org/locationtech/jts/geom/util/GeometryExtracter.js","../src/org/locationtech/jts/operation/union/CascadedPolygonUnion.js","../src/org/locationtech/jts/operation/union/UnaryUnionOp.js","../src/org/locationtech/jts/operation/valid/ConnectedInteriorTester.js","../src/org/locationtech/jts/operation/relate/RelateNodeGraph.js","../src/org/locationtech/jts/operation/valid/ConsistentAreaTester.js","../src/org/locationtech/jts/operation/valid/IndexedNestedRingTester.js","../src/org/locationtech/jts/operation/valid/TopologyValidationError.js","../src/org/locationtech/jts/operation/valid/IsValidOp.js","../src/org/locationtech/jts/precision/PrecisionReducerCoordinateOperation.js","../src/org/locationtech/jts/precision/GeometryPrecisionReducer.js","../src/org/locationtech/jts/simplify/DouglasPeuckerLineSimplifier.js","../src/org/locationtech/jts/simplify/DouglasPeuckerSimplifier.js","../src/org/locationtech/jts/simplify/TaggedLineSegment.js","../src/org/locationtech/jts/simplify/TaggedLineString.js","../src/org/locationtech/jts/simplify/LineSegmentIndex.js","../src/org/locationtech/jts/simplify/TaggedLineStringSimplifier.js","../src/org/locationtech/jts/simplify/TaggedLinesSimplifier.js","../src/org/locationtech/jts/simplify/TopologyPreservingSimplifier.js","../src/org/locationtech/jts/triangulate/SplitSegment.js","../src/org/locationtech/jts/triangulate/ConstraintSplitPointFinder.js","../src/org/locationtech/jts/triangulate/NonEncroachingSplitPointFinder.js","../src/org/locationtech/jts/triangulate/quadedge/TrianglePredicate.js","../src/org/locationtech/jts/triangulate/quadedge/Vertex.js","../src/org/locationtech/jts/triangulate/ConstraintVertex.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdge.js","../src/org/locationtech/jts/triangulate/IncrementalDelaunayTriangulator.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdgeLocator.js","../src/org/locationtech/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.js","../src/org/locationtech/jts/triangulate/quadedge/LocateFailureException.js","../src/org/locationtech/jts/triangulate/quadedge/TriangleVisitor.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdgeSubdivision.js","../src/org/locationtech/jts/triangulate/Segment.js","../src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulator.js","../src/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.js","../src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulationBuilder.js","../src/org/locationtech/jts/triangulate/VoronoiDiagramBuilder.js","../src/org/locationtech/jts/linearref/LinearLocation.js","../src/org/locationtech/jts/linearref/LinearIterator.js","../src/org/locationtech/jts/linearref/LocationIndexOfPoint.js","../src/org/locationtech/jts/linearref/LocationIndexOfLine.js","../src/org/locationtech/jts/linearref/LinearGeometryBuilder.js","../src/org/locationtech/jts/linearref/ExtractLineByLocation.js","../src/org/locationtech/jts/linearref/LocationIndexedLine.js","../src/org/locationtech/jts/linearref/LengthIndexOfPoint.js","../src/org/locationtech/jts/linearref/LengthLocationMap.js","../src/org/locationtech/jts/linearref/LengthIndexedLine.js","../src/org/locationtech/jts/operation/union/UnionOp.js","../src/org/locationtech/jts/monkey.js","../src/jsts.js"],"sourcesContent":["/* Polyfill service v3.13.0\n * For detailed credits and licence information see http://github.com/financial-times/polyfill-service\n *\n * - Array.prototype.fill, License: CC0 */\n\nif (!('fill' in Array.prototype)) {\n Object.defineProperty(Array.prototype, 'fill', {\n configurable: true,\n value: function fill(value) {\n if (this === undefined || this === null) {\n throw new TypeError(this + ' is not an object');\n }\n\n var arrayLike = Object(this);\n\n var length = Math.max(Math.min(arrayLike.length, 9007199254740991), 0) || 0;\n\n var relativeStart = 1 in arguments ? parseInt(Number(arguments[1]), 10) || 0 : 0;\n\n relativeStart = relativeStart < 0 ? Math.max(length + relativeStart, 0) : Math.min(relativeStart, length);\n\n var relativeEnd = 2 in arguments && arguments[2] !== undefined ? parseInt(Number(arguments[2]), 10) || 0 : length;\n\n relativeEnd = relativeEnd < 0 ? Math.max(length + arguments[2], 0) : Math.min(relativeEnd, length);\n\n while (relativeStart < relativeEnd) {\n arrayLike[relativeStart] = value;\n\n ++relativeStart;\n }\n\n return arrayLike;\n },\n writable: true\n });\n}\n","Number.isFinite = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value)\n}\n\nNumber.isInteger = Number.isInteger || function (val) {\n return typeof val === 'number' &&\n isFinite(val) &&\n Math.floor(val) === val\n}\n\nNumber.parseFloat = Number.parseFloat || parseFloat\n\nNumber.isNaN = Number.isNaN || function (value) {\n return value !== value // eslint-disable-line\n}\n","Math.trunc = Math.trunc || function(x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x)\n}\n\nMath.log2 = Math.log2 || function(x) {\n return Math.log(x) * Math.LOG2E\n}\n","export default class NumberUtil {\n\tconstructor() {\n\t\tNumberUtil.constructor_.apply(this, arguments);\n\t}\n\tstatic equalsWithTolerance(x1, x2, tolerance) {\n\t\treturn Math.abs(x1 - x2) <= tolerance;\n\t}\n\tgetClass() {\n\t\treturn NumberUtil;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nNumberUtil.constructor_ = function () {};\n","export default function IllegalArgumentException () {}\n","export default function Long(high, low) {\n this.low = low | 0\n this.high = high | 0\n}\n\nLong.toBinaryString = function (i) {\n var result = ''\n for (var mask = 0x80000000; mask > 0; mask >>>= 1)\n result += (i.high & mask) === mask ? '1' : '0'\n for (var mask = 0x80000000; mask > 0; mask >>>= 1)\n result += (i.low & mask) === mask ? '1' : '0'\n return result\n}","import Long from './Long';\n\nexport default function Double () {}\n\nDouble.isNaN = n => Number.isNaN(n)\nDouble.isInfinite = n => !Number.isFinite(n)\nDouble.MAX_VALUE = Number.MAX_VALUE\n\nif (typeof Float64Array == 'function' &&\n\t typeof Int32Array == 'function') {\n\t// Simple and fast conversion between double and long bits\n\t// using TypedArrays and ArrayViewBuffers.\n\t(function() {\n\t\tvar EXP_BIT_MASK = 0x7ff00000;\n\t\tvar SIGNIF_BIT_MASK = 0xFFFFF;\n\t\tvar f64buf = new Float64Array(1);\n\t\tvar i32buf = new Int32Array(f64buf.buffer);\n\t\tDouble.doubleToLongBits = function (value) {\n\t\t\tf64buf[0] = value;\n\t\t\tvar low = i32buf[0] | 0;\n\t\t\tvar high = i32buf[1] | 0;\n\t\t\t// Check for NaN based on values of bit fields, maximum\n\t\t\t// exponent and nonzero significand.\n\t\t\tif (((high & EXP_BIT_MASK) === EXP_BIT_MASK) &&\n\t\t\t\t((high & SIGNIF_BIT_MASK) !== 0) &&\n\t\t\t\t(low !== 0)) {\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = 0x7ff80000 | 0;\n\t\t\t}\n\t\t\treturn new Long(high, low);\n\t\t};\n\t\tDouble.longBitsToDouble = function (bits) {\n\t\t\ti32buf[0] = bits.low;\n\t\t\ti32buf[1] = bits.high;\n\t\t\treturn f64buf[0];\n\t\t};\n\t})();\n} else {\n\t// More complex and slower fallback implementation using \n\t// math and the divide-by-two and multiply-by-two algorithms.\n\t(function() {\n\t\tvar BIAS = 1023;\n\t\tvar log2 = Math.log2;\n\t\tvar floor = Math.floor;\n\t\tvar pow = Math.pow;\n\t\tvar MAX_REL_BITS_INTEGER = (function () {\n\t\t\tfor (var i = 53; i > 0; i--) {\n\t\t\t\tvar bits = pow(2, i) - 1;\n\t\t\t\tif (floor(log2(bits)) + 1 === i) {\n\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t})();\n\t\tDouble.doubleToLongBits = function (value) {\n\t\t\tvar x, y, f, bits, skip;\n\t\t\tvar sign, exp, high, low;\n\t\n\t\t\t// Get the sign bit and absolute value.\n\t\t\tif (value < 0 || 1 / value === Number.NEGATIVE_INFINITY) {\n\t\t\t\tsign = (1 << 31);\n\t\t\t\tvalue = (-value);\n\t\t\t} else {\n\t\t\t\tsign = 0;\n\t\t\t}\n\t\n\t\t\t// Handle some special values.\n\t\t\tif (value === 0) {\n\t\t\t\t// Handle zeros (+/-0).\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = sign; // exponent: 00..00, significand: 00..00\n\t\t\t\treturn new Long(high, low);\n\t\t\t}\n\t\n\t\t\tif (value === Infinity) {\n\t\t\t\t// Handle infinity (only positive values for value possible).\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = sign | 0x7ff00000; // exponent: 11..11, significand: 00..00\n\t\t\t\treturn new Long(high, low);\n\t\t\t}\n\t\n\t\t\tif (value !== value) {\n\t\t\t\t// Handle NaNs (boiled down to only one distinct NaN).\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = 0x7ff80000; // exponent: 11..11, significand: 10..00\n\t\t\t\treturn new Long(high, low);\n\t\t\t}\n\t\n\t\t\t// Preinitialize variables, that are not neccessarily set by\n\t\t\t// the algorithm.\n\t\t\tbits = 0;\n\t\t\tlow = 0 | 0;\n\t\n\t\t\t// Get the (always positive) integer part of value.\n\t\t\tx = floor(value);\n\t\n\t\t\t// Process the integer part if it's greater than 1. Zero requires\n\t\t\t// no bits at all, 1 represents the implicit (hidden) leading bit,\n\t\t\t// which must not be written as well.\n\t\t\tif (x > 1) {\n\t\t\t\t// If we can reliably determine the number of bits required for\n\t\t\t\t// the integer part,\n\t\t\t\tif (x <= MAX_REL_BITS_INTEGER) {\n\t\t\t\t\t// get the number of bits required to represent it minus 1\n\t\t\t\t\tbits = floor(log2(x)) /* + 1 - 1*/ ;\n\t\t\t\t\t// and simply copy/shift the integer bits into low and high.\n\t\t\t\t\t// That's much faster than the divide-by-two algorithm (saves\n\t\t\t\t\t// up to ~60%).\n\t\t\t\t\t// We always need to mask out the most significant bit, which\n\t\t\t\t\t// is the implicit (aka hidden) bit.\n\t\t\t\t\tif (bits <= 20) {\n\t\t\t\t\t\t// The simple case in which the integer fits into the\n\t\t\t\t\t\t// lower 20 bits of the high word is worth to be handled\n\t\t\t\t\t\t// separately (saves ~25%).\n\t\t\t\t\t\tlow = 0 | 0;\n\t\t\t\t\t\thigh = (x << (20 - bits)) & 0xfffff;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Here, the integer part is split into low and high.\n\t\t\t\t\t\t// Since its value may require more than 32 bits, we\n\t\t\t\t\t\t// cannot use bitwise operators (which implicitly cast\n\t\t\t\t\t\t// to Int32), but use arithmetic operators % and / to\n\t\t\t\t\t\t// get low and high parts. The uppper 20 bits go to high,\n\t\t\t\t\t\t// the remaining bits (in f) to low.\n\t\t\t\t\t\tf = bits - 20;\n\t\t\t\t\t\t// Like (1 << f) but safe with even more than 32 bits.\n\t\t\t\t\t\ty = pow(2, f);\n\t\t\t\t\t\tlow = (x % y) << (32 - f);\n\t\t\t\t\t\thigh = (x / y) & 0xfffff;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// For greater values, we must use the much slower divide-by-two\n\t\t\t\t\t// algorithm. Bits are generated from right to left, that is from\n\t\t\t\t\t// least to most significant bit. For each bit, we left-shift both\n\t\t\t\t\t// low and high by one and carry bit #0 from high to #31 in low.\n\t\t\t\t\t// The next bit is then copied into bit #19 in high, the leftmost\n\t\t\t\t\t// bit of the double's significand.\n\t\n\t\t\t\t\t// Preserve x for later user, so work with f.\n\t\t\t\t\tf = x;\n\t\t\t\t\tlow = 0 | 0;\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\ty = f / 2;\n\t\t\t\t\t\tf = floor(y);\n\t\t\t\t\t\tif (f === 0) {\n\t\t\t\t\t\t\t// We just found the most signigicant (1-)bit, which\n\t\t\t\t\t\t\t// is the implicit bit and so, not stored in the double\n\t\t\t\t\t\t\t// value. So, it's time to leave the loop.\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Count this bit, shift low and carry bit #0 from high.\n\t\t\t\t\t\tbits++;\n\t\t\t\t\t\tlow >>>= 1;\n\t\t\t\t\t\tlow |= (high & 0x1) << 31;\n\t\t\t\t\t\t// Shift high.\n\t\t\t\t\t\thigh >>>= 1;\n\t\t\t\t\t\tif (y !== f) {\n\t\t\t\t\t\t\t// Copy the new bit into bit #19 in high (only required if 1).\n\t\t\t\t\t\t\thigh |= 0x80000;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Bias the exponent.\n\t\t\texp = bits + BIAS;\n\t\n\t\t\t// If the integer part is zero, we've not yet seen the implicit\n\t\t\t// leading bit. Variable skip is later used while processing the \n\t\t\t// fractional part (if any).\n\t\t\tskip = (x === 0);\n\t\n\t\t\t// Get fraction only into x.\n\t\t\tx = value - x;\n\t\n\t\t\t// If some significand bits are still left to be filled and\n\t\t\t// the fractional part is not zero, convert the fraction using\n\t\t\t// the multiply-by-2 algorithm.\n\t\t\tif (bits < 52 && x !== 0) {\n\t\n\t\t\t\t// Initialize 'buffer' f, into which newly created bits get\n\t\t\t\t// shifted from right to left.\n\t\t\t\tf = 0;\n\t\n\t\t\t\twhile (true) {\n\t\t\t\t\ty = x * 2;\n\t\t\t\t\tif (y >= 1) {\n\t\t\t\t\t\t// This is a new 1-bit. Add and count this bit, if not\n\t\t\t\t\t\t// prohibited by skip.\n\t\t\t\t\t\tx = y - 1;\n\t\t\t\t\t\tif (!skip) {\n\t\t\t\t\t\t\tf <<= 1;\n\t\t\t\t\t\t\tf |= 1;\n\t\t\t\t\t\t\tbits++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Otherwise, decrement the exponent and unset\n\t\t\t\t\t\t\t// skip, so that all following bits get written.\n\t\t\t\t\t\t\texp--;\n\t\t\t\t\t\t\tskip = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// This is a new 0-bit. Add and count this bit, if not\n\t\t\t\t\t\t// prohibited by skip.\n\t\t\t\t\t\tx = y;\n\t\t\t\t\t\tif (!skip) {\n\t\t\t\t\t\t\tf <<= 1;\n\t\t\t\t\t\t\tbits++;\n\t\t\t\t\t\t} else if (--exp === 0) {\n\t\t\t\t\t\t\t// Otherwise we've just decremented the exponent. If the\n\t\t\t\t\t\t\t// biased exponent is zero now (-1023), we process a\n\t\t\t\t\t\t\t// subnormal number, which has no impled leading 1-bit.\n\t\t\t\t\t\t\t// So, count this 0-bit and unset skip to write out\n\t\t\t\t\t\t\t// all the following bits.\n\t\t\t\t\t\t\tbits++;\n\t\t\t\t\t\t\tskip = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (bits === 20) {\n\t\t\t\t\t\t// When 20 bits have been created in total, we're done with\n\t\t\t\t\t\t// the high word. Copy the bits from 'buffer' f into high\n\t\t\t\t\t\t// and reset 'buffer' f. Following bits will end up in the\n\t\t\t\t\t\t// low word.\n\t\t\t\t\t\thigh |= f;\n\t\t\t\t\t\tf = 0;\n\t\t\t\t\t} else if (bits === 52) {\n\t\t\t\t\t\t// When 52 bits have been created in total, we're done with\n\t\t\t\t\t\t// low word as well. Copy the bits from 'buffer' f into low\n\t\t\t\t\t\t// and exit the loop.\n\t\t\t\t\t\tlow |= f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (y === 1) {\n\t\t\t\t\t\t// When y is exactly 1, there is no remainder and the process\n\t\t\t\t\t\t// is complete (the number is finite). Copy the bits from\n\t\t\t\t\t\t// 'buffer' f into either low or high and exit the loop.\n\t\t\t\t\t\tif (bits < 20) {\n\t\t\t\t\t\t\thigh |= (f << (20 - bits));\n\t\t\t\t\t\t} else if (bits < 52) {\n\t\t\t\t\t\t\tlow |= (f << (52 - bits));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Copy/shift the exponent and sign bits into the high word.\n\t\t\thigh |= (exp << 20);\n\t\t\thigh |= sign;\n\t\n\t\t\treturn new Long(high, low);\n\t\t};\n\t\tDouble.longBitsToDouble = function (bits) {\n\t\t\tvar x, sign, exp, fract;\n\t\t\tvar high = bits.high;\n\t\t\tvar low = bits.low;\n\t\n\t\t\t// Extract the sign.\n\t\t\tsign = (high & (1 << 31)) ? -1 : 1;\n\t\n\t\t\t// Extract the unbiased exponent.\n\t\t\texp = ((high & 0x7ff00000) >> 20) - BIAS;\n\t\n\t\t\t// Calculate the fraction from left to right. Start\n\t\t\t// off with the 20 lower bits from the high word.\n\t\t\tfract = 0;\n\t\t\tx = (1 << 19);\n\t\t\tfor (var i = 1; i <= 20; i++) {\n\t\t\t\tif (high & x) {\n\t\t\t\t\tfract += pow(2, -i);\n\t\t\t\t}\n\t\t\t\tx >>>= 1;\n\t\t\t}\n\t\t\t// Continue with all 32 bits from the low word.\n\t\t\tx = (1 << 31);\n\t\t\tfor (var i = 21; i <= 52; i++) {\n\t\t\t\tif (low & x) {\n\t\t\t\t\tfract += pow(2, -i);\n\t\t\t\t}\n\t\t\t\tx >>>= 1;\n\t\t\t}\n\t\n\t\t\t// Handle special values.\n\t\t\t// Check for zero and subnormal values.\n\t\t\tif (exp === -BIAS) {\n\t\t\t\tif (fract === 0) {\n\t\t\t\t\t// +/-1.0 * 0.0 => +/-0.0\n\t\t\t\t\treturn sign * 0;\n\t\t\t\t}\n\t\t\t\texp = -1022;\n\t\t\t}\n\t\t\t// Check for +/-Infinity or NaN.\n\t\t\telse if (exp === BIAS + 1) {\n\t\t\t\tif (fract === 0) {\n\t\t\t\t\t// +/-1.0 / 0.0 => +/-Infinity\n\t\t\t\t\treturn sign / 0;\n\t\t\t\t}\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// Nothing special? Seems to be a normal number.\n\t\t\telse {\n\t\t\t\t// Add the implicit leading bit (1*2^0).\n\t\t\t\tfract += 1;\n\t\t\t}\n\t\n\t\t\treturn sign * fract * pow(2, exp);\n\t\t};\n\t})();\n}","export default function Comparable () {}\n","export default function Clonable () {}\n","export default function Comparator () {}\n","export default function Serializable () {}\n","export default function RuntimeException (message) {\n this.name = 'RuntimeException'\n this.message = message\n this.stack = (new Error()).stack\n Error.call(this, message)\n}\n\nRuntimeException.prototype = Object.create(Error.prototype)\nRuntimeException.prototype.constructor = Error\n","import RuntimeException from '../../../../java/lang/RuntimeException';\nexport default class AssertionFailedException extends RuntimeException {\n\tconstructor() {\n\t\tsuper();\n\t\tAssertionFailedException.constructor_.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn AssertionFailedException;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nAssertionFailedException.constructor_ = function () {\n\tif (arguments.length === 0) {\n\t\tRuntimeException.constructor_.call(this);\n\t} else if (arguments.length === 1) {\n\t\tlet message = arguments[0];\n\t\tRuntimeException.constructor_.call(this, message);\n\t}\n};\n","import AssertionFailedException from './AssertionFailedException';\nexport default class Assert {\n\tconstructor() {\n\t\tAssert.constructor_.apply(this, arguments);\n\t}\n\tstatic shouldNeverReachHere() {\n\t\tif (arguments.length === 0) {\n\t\t\tAssert.shouldNeverReachHere(null);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet message = arguments[0];\n\t\t\tthrow new AssertionFailedException(\"Should never reach here\" + (message !== null ? \": \" + message : \"\"));\n\t\t}\n\t}\n\tstatic isTrue() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet assertion = arguments[0];\n\t\t\tAssert.isTrue(assertion, null);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet assertion = arguments[0], message = arguments[1];\n\t\t\tif (!assertion) {\n\t\t\t\tif (message === null) {\n\t\t\t\t\tthrow new AssertionFailedException();\n\t\t\t\t} else {\n\t\t\t\t\tthrow new AssertionFailedException(message);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tstatic equals() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet expectedValue = arguments[0], actualValue = arguments[1];\n\t\t\tAssert.equals(expectedValue, actualValue, null);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet expectedValue = arguments[0], actualValue = arguments[1], message = arguments[2];\n\t\t\tif (!actualValue.equals(expectedValue)) {\n\t\t\t\tthrow new AssertionFailedException(\"Expected \" + expectedValue + \" but encountered \" + actualValue + (message !== null ? \": \" + message : \"\"));\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn Assert;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nAssert.constructor_ = function () {};\n","import NumberUtil from '../util/NumberUtil';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Double from '../../../../java/lang/Double';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport Comparator from '../../../../java/util/Comparator';\nimport Serializable from '../../../../java/io/Serializable';\nimport Assert from '../util/Assert';\nexport default class Coordinate {\n\tconstructor() {\n\t\tCoordinate.constructor_.apply(this, arguments);\n\t}\n\tstatic hashCode() {\n\t\tif (arguments.length === 1 && typeof arguments[0] === \"number\") {\n\t\t\tlet x = arguments[0];\n\t\t\tvar f = Double.doubleToLongBits(x);\n\t\t\treturn Math.trunc(f ^ f >>> 32);\n\t\t}\n\t}\n\tsetOrdinate(ordinateIndex, value) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase Coordinate.X:\n\t\t\t\tthis.x = value;\n\t\t\t\tbreak;\n\t\t\tcase Coordinate.Y:\n\t\t\t\tthis.y = value;\n\t\t\t\tbreak;\n\t\t\tcase Coordinate.Z:\n\t\t\t\tthis.z = value;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new IllegalArgumentException(\"Invalid ordinate index: \" + ordinateIndex);\n\t\t}\n\t}\n\tequals2D() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet other = arguments[0];\n\t\t\tif (this.x !== other.x) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.y !== other.y) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet c = arguments[0], tolerance = arguments[1];\n\t\t\tif (!NumberUtil.equalsWithTolerance(this.x, c.x, tolerance)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!NumberUtil.equalsWithTolerance(this.y, c.y, tolerance)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\tgetOrdinate(ordinateIndex) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase Coordinate.X:\n\t\t\t\treturn this.x;\n\t\t\tcase Coordinate.Y:\n\t\t\t\treturn this.y;\n\t\t\tcase Coordinate.Z:\n\t\t\t\treturn this.z;\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Invalid ordinate index: \" + ordinateIndex);\n\t}\n\tequals3D(other) {\n\t\treturn this.x === other.x && this.y === other.y && (this.z === other.z || Double.isNaN(this.z) && Double.isNaN(other.z));\n\t}\n\tequals(other) {\n\t\tif (!(other instanceof Coordinate)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.equals2D(other);\n\t}\n\tequalInZ(c, tolerance) {\n\t\treturn NumberUtil.equalsWithTolerance(this.z, c.z, tolerance);\n\t}\n\tcompareTo(o) {\n\t\tvar other = o;\n\t\tif (this.x < other.x) return -1;\n\t\tif (this.x > other.x) return 1;\n\t\tif (this.y < other.y) return -1;\n\t\tif (this.y > other.y) return 1;\n\t\treturn 0;\n\t}\n\tclone() {\n\t\ttry {\n\t\t\tvar coord = null;\n\t\t\treturn coord;\n\t\t} catch (e) {\n\t\t\tif (e instanceof CloneNotSupportedException) {\n\t\t\t\tAssert.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\");\n\t\t\t\treturn null;\n\t\t\t} else throw e;\n\t\t} finally {}\n\t}\n\tcopy() {\n\t\treturn new Coordinate(this);\n\t}\n\ttoString() {\n\t\treturn \"(\" + this.x + \", \" + this.y + \", \" + this.z + \")\";\n\t}\n\tdistance3D(c) {\n\t\tvar dx = this.x - c.x;\n\t\tvar dy = this.y - c.y;\n\t\tvar dz = this.z - c.z;\n\t\treturn Math.sqrt(dx * dx + dy * dy + dz * dz);\n\t}\n\tdistance(c) {\n\t\tvar dx = this.x - c.x;\n\t\tvar dy = this.y - c.y;\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t}\n\thashCode() {\n\t\tvar result = 17;\n\t\tresult = 37 * result + Coordinate.hashCode(this.x);\n\t\tresult = 37 * result + Coordinate.hashCode(this.y);\n\t\treturn result;\n\t}\n\tsetCoordinate(other) {\n\t\tthis.x = other.x;\n\t\tthis.y = other.y;\n\t\tthis.z = other.z;\n\t}\n\tgetClass() {\n\t\treturn Coordinate;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable, Cloneable, Serializable];\n\t}\n}\nclass DimensionalComparator {\n\tconstructor() {\n\t\tDimensionalComparator.constructor_.apply(this, arguments);\n\t}\n\tstatic compare(a, b) {\n\t\tif (a < b) return -1;\n\t\tif (a > b) return 1;\n\t\tif (Double.isNaN(a)) {\n\t\t\tif (Double.isNaN(b)) return 0;\n\t\t\treturn -1;\n\t\t}\n\t\tif (Double.isNaN(b)) return 1;\n\t\treturn 0;\n\t}\n\tcompare(o1, o2) {\n\t\tvar c1 = o1;\n\t\tvar c2 = o2;\n\t\tvar compX = DimensionalComparator.compare(c1.x, c2.x);\n\t\tif (compX !== 0) return compX;\n\t\tvar compY = DimensionalComparator.compare(c1.y, c2.y);\n\t\tif (compY !== 0) return compY;\n\t\tif (this._dimensionsToTest <= 2) return 0;\n\t\tvar compZ = DimensionalComparator.compare(c1.z, c2.z);\n\t\treturn compZ;\n\t}\n\tgetClass() {\n\t\treturn DimensionalComparator;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparator];\n\t}\n}\nDimensionalComparator.constructor_ = function () {\n\tthis._dimensionsToTest = 2;\n\tif (arguments.length === 0) {\n\t\tDimensionalComparator.constructor_.call(this, 2);\n\t} else if (arguments.length === 1) {\n\t\tlet dimensionsToTest = arguments[0];\n\t\tif (dimensionsToTest !== 2 && dimensionsToTest !== 3) throw new IllegalArgumentException(\"only 2 or 3 dimensions may be specified\");\n\t\tthis._dimensionsToTest = dimensionsToTest;\n\t}\n};\nCoordinate.DimensionalComparator = DimensionalComparator;\nCoordinate.constructor_ = function () {\n\tthis.x = null;\n\tthis.y = null;\n\tthis.z = null;\n\tif (arguments.length === 0) {\n\t\tCoordinate.constructor_.call(this, 0.0, 0.0);\n\t} else if (arguments.length === 1) {\n\t\tlet c = arguments[0];\n\t\tCoordinate.constructor_.call(this, c.x, c.y, c.z);\n\t} else if (arguments.length === 2) {\n\t\tlet x = arguments[0], y = arguments[1];\n\t\tCoordinate.constructor_.call(this, x, y, Coordinate.NULL_ORDINATE);\n\t} else if (arguments.length === 3) {\n\t\tlet x = arguments[0], y = arguments[1], z = arguments[2];\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t}\n};\nCoordinate.serialVersionUID = 6683108902428366910;\nCoordinate.NULL_ORDINATE = Double.NaN;\nCoordinate.X = 0;\nCoordinate.Y = 1;\nCoordinate.Z = 2;\n","export default function (o, i) {\n return o.interfaces_ && o.interfaces_.indexOf(i) > -1\n}\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html\n * @constructor\n * @private\n */\nexport default function Iterator() {};\n\n/**\n * Returns true if the iteration has more elements.\n * @return {boolean}\n */\nIterator.prototype.hasNext = function() {};\n\n/**\n * Returns the next element in the iteration.\n * @return {Object}\n */\nIterator.prototype.next = function() {};\n\n/**\n * Removes from the underlying collection the last element returned by the\n * iterator (optional operation).\n */\nIterator.prototype.remove = function() {};\n","import Iterator from './Iterator'\n\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Collection.html\n *\n * @constructor\n * @private\n */\nexport default function Collection() {};\n\n/**\n * Ensures that this collection contains the specified element (optional\n * operation).\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.add = function() {};\n\n\n/**\n * Appends all of the elements in the specified collection to the end of this\n * list, in the order that they are returned by the specified collection's\n * iterator (optional operation).\n * @param {javascript.util.Collection} c\n * @return {boolean}\n */\nCollection.prototype.addAll = function() {};\n\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nCollection.prototype.isEmpty = function() {};\n\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {javascript.util.Iterator}\n */\nCollection.prototype.iterator = function() {};\n\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {number}\n */\nCollection.prototype.size = function() {};\n\n\n/**\n * Returns an array containing all of the elements in this collection.\n * @return {Array}\n */\nCollection.prototype.toArray = function() {};\n\n\n/**\n * Removes a single instance of the specified element from this collection if it\n * is present. (optional)\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.remove = function() {};\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function IndexOutOfBoundsException(message) {\n this.message = message || '';\n};\nIndexOutOfBoundsException.prototype = new Error();\n\n/**\n * @type {string}\n */\nIndexOutOfBoundsException.prototype.name = 'IndexOutOfBoundsException';\n","import Collection from './Collection'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/List.html\n *\n * @extends {javascript.util.Collection}\n * @constructor\n * @private\n */\nexport default function List() { };\nList.prototype = Object.create(Collection.prototype);\nList.prototype.constructor = List\n\n/**\n * Returns the element at the specified position in this list.\n * @param {number} index\n * @return {Object}\n */\nList.prototype.get = function() { };\n\n\n/**\n * Replaces the element at the specified position in this list with the\n * specified element (optional operation).\n * @param {number} index\n * @param {Object} e\n * @return {Object}\n */\nList.prototype.set = function() { };\n\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nList.prototype.isEmpty = function() { };\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function NoSuchElementException(message) {\n this.message = message || '';\n};\nNoSuchElementException.prototype = new Error();\n\n\n/**\n * @type {string}\n */\nNoSuchElementException.prototype.name = 'NoSuchElementException';\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function OperationNotSupported(message) {\n this.message = message || '';\n};\nOperationNotSupported.prototype = new Error();\n\n\n/**\n * @type {string}\n */\nOperationNotSupported.prototype.name = 'OperationNotSupported';\n","import Collection from './Collection'\nimport IndexOutOfBoundsException from './IndexOutOfBoundsException'\nimport Iterator from './Iterator'\nimport List from './List'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html\n *\n * @extends List\n * @private\n */\nexport default function ArrayList () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n};\nArrayList.prototype = Object.create(List.prototype)\nArrayList.prototype.constructor = ArrayList;\n\nArrayList.prototype.ensureCapacity = function () {}\nArrayList.prototype.interfaces_ = [List, Collection]\n\n/**\n * @override\n */\nArrayList.prototype.add = function(e) {\n if (arguments.length === 1) {\n this.array_.push(e)\n } else {\n this.array_.splice(arguments[0], 0, arguments[1])\n }\n return true\n};\n\nArrayList.prototype.clear = function() {\n this.array_ = []\n}\n\n/**\n * @override\n */\nArrayList.prototype.addAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.add(i.next());\n }\n return true;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.set = function(index, element) {\n var oldElement = this.array_[index];\n this.array_[index] = element;\n return oldElement;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.iterator = function() {\n return new Iterator_(this);\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.get = function(index) {\n if (index < 0 || index >= this.size()) {\n throw new IndexOutOfBoundsException();\n }\n\n return this.array_[index];\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.isEmpty = function() {\n return this.array_.length === 0;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.remove = function(o) {\n var found = false;\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n if (this.array_[i] === o) {\n this.array_.splice(i, 1);\n found = true;\n break;\n }\n }\n\n return found;\n};\n\n\nArrayList.prototype.removeAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.remove(i.next());\n }\n return true;\n};\n\n\n\n/**\n * @extends {Iterator}\n * @param {ArrayList} arrayList\n * @constructor\n * @private\n */\nvar Iterator_ = function(arrayList) {\n /**\n * @type {ArrayList}\n * @private\n */\n this.arrayList_ = arrayList;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.next = function() {\n if (this.position_ === this.arrayList_.size()) {\n throw new NoSuchElementException();\n }\n return this.arrayList_.get(this.position_++);\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function() {\n if (this.position_ < this.arrayList_.size()) {\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * TODO: should be in ListIterator\n * @override\n */\nIterator_.prototype.set = function(element) {\n return this.arrayList_.set(this.position_ - 1, element);\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.remove = function() {\n this.arrayList_.remove(this.arrayList_.get(this.position_));\n};\n","import hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport Coordinate from './Coordinate';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class CoordinateList extends ArrayList {\n\tconstructor() {\n\t\tsuper();\n\t\tCoordinateList.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinate(i) {\n\t\treturn this.get(i);\n\t}\n\taddAll() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"boolean\" && hasInterface(arguments[0], Collection))) {\n\t\t\tlet coll = arguments[0], allowRepeated = arguments[1];\n\t\t\tvar isChanged = false;\n\t\t\tfor (var i = coll.iterator(); i.hasNext(); ) {\n\t\t\t\tthis.add(i.next(), allowRepeated);\n\t\t\t\tisChanged = true;\n\t\t\t}\n\t\t\treturn isChanged;\n\t\t} else return super.addAll.apply(this, arguments);\n\t}\n\tclone() {\n\t\tvar clone = super.clone.call(this);\n\t\tfor (var i = 0; i < this.size(); i++) {\n\t\t\tclone.add(i, this.get(i).clone());\n\t\t}\n\t\treturn clone;\n\t}\n\ttoCoordinateArray() {\n\t\treturn this.toArray(CoordinateList.coordArrayType);\n\t}\n\tadd() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet coord = arguments[0];\n\t\t\tsuper.add.call(this, coord);\n\t\t} else if (arguments.length === 2) {\n\t\t\tif (arguments[0] instanceof Array && typeof arguments[1] === \"boolean\") {\n\t\t\t\tlet coord = arguments[0], allowRepeated = arguments[1];\n\t\t\t\tthis.add(coord, allowRepeated, true);\n\t\t\t\treturn true;\n\t\t\t} else if (arguments[0] instanceof Coordinate && typeof arguments[1] === \"boolean\") {\n\t\t\t\tlet coord = arguments[0], allowRepeated = arguments[1];\n\t\t\t\tif (!allowRepeated) {\n\t\t\t\t\tif (this.size() >= 1) {\n\t\t\t\t\t\tvar last = this.get(this.size() - 1);\n\t\t\t\t\t\tif (last.equals2D(coord)) return null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.add.call(this, coord);\n\t\t\t} else if (arguments[0] instanceof Object && typeof arguments[1] === \"boolean\") {\n\t\t\t\tlet obj = arguments[0], allowRepeated = arguments[1];\n\t\t\t\tthis.add(obj, allowRepeated);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (typeof arguments[2] === \"boolean\" && (arguments[0] instanceof Array && typeof arguments[1] === \"boolean\")) {\n\t\t\t\tlet coord = arguments[0], allowRepeated = arguments[1], direction = arguments[2];\n\t\t\t\tif (direction) {\n\t\t\t\t\tfor (var i = 0; i < coord.length; i++) {\n\t\t\t\t\t\tthis.add(coord[i], allowRepeated);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = coord.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tthis.add(coord[i], allowRepeated);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else if (typeof arguments[2] === \"boolean\" && (Number.isInteger(arguments[0]) && arguments[1] instanceof Coordinate)) {\n\t\t\t\tlet i = arguments[0], coord = arguments[1], allowRepeated = arguments[2];\n\t\t\t\tif (!allowRepeated) {\n\t\t\t\t\tvar size = this.size();\n\t\t\t\t\tif (size > 0) {\n\t\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t\tvar prev = this.get(i - 1);\n\t\t\t\t\t\t\tif (prev.equals2D(coord)) return null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < size) {\n\t\t\t\t\t\t\tvar next = this.get(i);\n\t\t\t\t\t\t\tif (next.equals2D(coord)) return null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.add.call(this, i, coord);\n\t\t\t}\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet coord = arguments[0], allowRepeated = arguments[1], start = arguments[2], end = arguments[3];\n\t\t\tvar inc = 1;\n\t\t\tif (start > end) inc = -1;\n\t\t\tfor (var i = start; i !== end; i += inc) {\n\t\t\t\tthis.add(coord[i], allowRepeated);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\tcloseRing() {\n\t\tif (this.size() > 0) this.add(new Coordinate(this.get(0)), false);\n\t}\n\tgetClass() {\n\t\treturn CoordinateList;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCoordinateList.constructor_ = function () {\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet coord = arguments[0];\n\t\tthis.ensureCapacity(coord.length);\n\t\tthis.add(coord, true);\n\t} else if (arguments.length === 2) {\n\t\tlet coord = arguments[0], allowRepeated = arguments[1];\n\t\tthis.ensureCapacity(coord.length);\n\t\tthis.add(coord, allowRepeated);\n\t}\n};\nCoordinateList.coordArrayType = new Array(0).fill(null);\n","import Coordinate from './Coordinate';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Serializable from '../../../../java/io/Serializable';\nexport default class Envelope {\n\tconstructor() {\n\t\tEnvelope.constructor_.apply(this, arguments);\n\t}\n\tstatic intersects() {\n\t\tif (arguments.length === 3) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1], q = arguments[2];\n\t\t\tif (q.x >= (p1.x < p2.x ? p1.x : p2.x) && q.x <= (p1.x > p2.x ? p1.x : p2.x) && (q.y >= (p1.y < p2.y ? p1.y : p2.y) && q.y <= (p1.y > p2.y ? p1.y : p2.y))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1], q1 = arguments[2], q2 = arguments[3];\n\t\t\tvar minq = Math.min(q1.x, q2.x);\n\t\t\tvar maxq = Math.max(q1.x, q2.x);\n\t\t\tvar minp = Math.min(p1.x, p2.x);\n\t\t\tvar maxp = Math.max(p1.x, p2.x);\n\t\t\tif (minp > maxq) return false;\n\t\t\tif (maxp < minq) return false;\n\t\t\tminq = Math.min(q1.y, q2.y);\n\t\t\tmaxq = Math.max(q1.y, q2.y);\n\t\t\tminp = Math.min(p1.y, p2.y);\n\t\t\tmaxp = Math.max(p1.y, p2.y);\n\t\t\tif (minp > maxq) return false;\n\t\t\tif (maxp < minq) return false;\n\t\t\treturn true;\n\t\t}\n\t}\n\tgetArea() {\n\t\treturn this.getWidth() * this.getHeight();\n\t}\n\tequals(other) {\n\t\tif (!(other instanceof Envelope)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar otherEnvelope = other;\n\t\tif (this.isNull()) {\n\t\t\treturn otherEnvelope.isNull();\n\t\t}\n\t\treturn this._maxx === otherEnvelope.getMaxX() && this._maxy === otherEnvelope.getMaxY() && this._minx === otherEnvelope.getMinX() && this._miny === otherEnvelope.getMinY();\n\t}\n\tintersection(env) {\n\t\tif (this.isNull() || env.isNull() || !this.intersects(env)) return new Envelope();\n\t\tvar intMinX = this._minx > env._minx ? this._minx : env._minx;\n\t\tvar intMinY = this._miny > env._miny ? this._miny : env._miny;\n\t\tvar intMaxX = this._maxx < env._maxx ? this._maxx : env._maxx;\n\t\tvar intMaxY = this._maxy < env._maxy ? this._maxy : env._maxy;\n\t\treturn new Envelope(intMinX, intMaxX, intMinY, intMaxY);\n\t}\n\tisNull() {\n\t\treturn this._maxx < this._minx;\n\t}\n\tgetMaxX() {\n\t\treturn this._maxx;\n\t}\n\tcovers() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this.covers(p.x, p.y);\n\t\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\tif (this.isNull() || other.isNull()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn other.getMinX() >= this._minx && other.getMaxX() <= this._maxx && other.getMinY() >= this._miny && other.getMaxY() <= this._maxy;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\tif (this.isNull()) return false;\n\t\t\treturn x >= this._minx && x <= this._maxx && y >= this._miny && y <= this._maxy;\n\t\t}\n\t}\n\tintersects() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\tif (this.isNull() || other.isNull()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn !(other._minx > this._maxx || other._maxx < this._minx || other._miny > this._maxy || other._maxy < this._miny);\n\t\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this.intersects(p.x, p.y);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tif (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\t\t\tlet a = arguments[0], b = arguments[1];\n\t\t\t\tif (this.isNull()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar envminx = a.x < b.x ? a.x : b.x;\n\t\t\t\tif (envminx > this._maxx) return false;\n\t\t\t\tvar envmaxx = a.x > b.x ? a.x : b.x;\n\t\t\t\tif (envmaxx < this._minx) return false;\n\t\t\t\tvar envminy = a.y < b.y ? a.y : b.y;\n\t\t\t\tif (envminy > this._maxy) return false;\n\t\t\t\tvar envmaxy = a.y > b.y ? a.y : b.y;\n\t\t\t\tif (envmaxy < this._miny) return false;\n\t\t\t\treturn true;\n\t\t\t} else if (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\t\tif (this.isNull()) return false;\n\t\t\t\treturn !(x > this._maxx || x < this._minx || y > this._maxy || y < this._miny);\n\t\t\t}\n\t\t}\n\t}\n\tgetMinY() {\n\t\treturn this._miny;\n\t}\n\tgetMinX() {\n\t\treturn this._minx;\n\t}\n\texpandToInclude() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\tthis.expandToInclude(p.x, p.y);\n\t\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\tif (other.isNull()) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (this.isNull()) {\n\t\t\t\t\tthis._minx = other.getMinX();\n\t\t\t\t\tthis._maxx = other.getMaxX();\n\t\t\t\t\tthis._miny = other.getMinY();\n\t\t\t\t\tthis._maxy = other.getMaxY();\n\t\t\t\t} else {\n\t\t\t\t\tif (other._minx < this._minx) {\n\t\t\t\t\t\tthis._minx = other._minx;\n\t\t\t\t\t}\n\t\t\t\t\tif (other._maxx > this._maxx) {\n\t\t\t\t\t\tthis._maxx = other._maxx;\n\t\t\t\t\t}\n\t\t\t\t\tif (other._miny < this._miny) {\n\t\t\t\t\t\tthis._miny = other._miny;\n\t\t\t\t\t}\n\t\t\t\t\tif (other._maxy > this._maxy) {\n\t\t\t\t\t\tthis._maxy = other._maxy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\tif (this.isNull()) {\n\t\t\t\tthis._minx = x;\n\t\t\t\tthis._maxx = x;\n\t\t\t\tthis._miny = y;\n\t\t\t\tthis._maxy = y;\n\t\t\t} else {\n\t\t\t\tif (x < this._minx) {\n\t\t\t\t\tthis._minx = x;\n\t\t\t\t}\n\t\t\t\tif (x > this._maxx) {\n\t\t\t\t\tthis._maxx = x;\n\t\t\t\t}\n\t\t\t\tif (y < this._miny) {\n\t\t\t\t\tthis._miny = y;\n\t\t\t\t}\n\t\t\t\tif (y > this._maxy) {\n\t\t\t\t\tthis._maxy = y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tminExtent() {\n\t\tif (this.isNull()) return 0.0;\n\t\tvar w = this.getWidth();\n\t\tvar h = this.getHeight();\n\t\tif (w < h) return w;\n\t\treturn h;\n\t}\n\tgetWidth() {\n\t\tif (this.isNull()) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this._maxx - this._minx;\n\t}\n\tcompareTo(o) {\n\t\tvar env = o;\n\t\tif (this.isNull()) {\n\t\t\tif (env.isNull()) return 0;\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif (env.isNull()) return 1;\n\t\t}\n\t\tif (this._minx < env._minx) return -1;\n\t\tif (this._minx > env._minx) return 1;\n\t\tif (this._miny < env._miny) return -1;\n\t\tif (this._miny > env._miny) return 1;\n\t\tif (this._maxx < env._maxx) return -1;\n\t\tif (this._maxx > env._maxx) return 1;\n\t\tif (this._maxy < env._maxy) return -1;\n\t\tif (this._maxy > env._maxy) return 1;\n\t\treturn 0;\n\t}\n\ttranslate(transX, transY) {\n\t\tif (this.isNull()) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.init(this.getMinX() + transX, this.getMaxX() + transX, this.getMinY() + transY, this.getMaxY() + transY);\n\t}\n\ttoString() {\n\t\treturn \"Env[\" + this._minx + \" : \" + this._maxx + \", \" + this._miny + \" : \" + this._maxy + \"]\";\n\t}\n\tsetToNull() {\n\t\tthis._minx = 0;\n\t\tthis._maxx = -1;\n\t\tthis._miny = 0;\n\t\tthis._maxy = -1;\n\t}\n\tgetHeight() {\n\t\tif (this.isNull()) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this._maxy - this._miny;\n\t}\n\tmaxExtent() {\n\t\tif (this.isNull()) return 0.0;\n\t\tvar w = this.getWidth();\n\t\tvar h = this.getHeight();\n\t\tif (w > h) return w;\n\t\treturn h;\n\t}\n\texpandBy() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet distance = arguments[0];\n\t\t\tthis.expandBy(distance, distance);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet deltaX = arguments[0], deltaY = arguments[1];\n\t\t\tif (this.isNull()) return null;\n\t\t\tthis._minx -= deltaX;\n\t\t\tthis._maxx += deltaX;\n\t\t\tthis._miny -= deltaY;\n\t\t\tthis._maxy += deltaY;\n\t\t\tif (this._minx > this._maxx || this._miny > this._maxy) this.setToNull();\n\t\t}\n\t}\n\tcontains() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\treturn this.covers(other);\n\t\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this.covers(p);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\treturn this.covers(x, y);\n\t\t}\n\t}\n\tcentre() {\n\t\tif (this.isNull()) return null;\n\t\treturn new Coordinate((this.getMinX() + this.getMaxX()) / 2.0, (this.getMinY() + this.getMaxY()) / 2.0);\n\t}\n\tinit() {\n\t\tif (arguments.length === 0) {\n\t\t\tthis.setToNull();\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\tthis.init(p.x, p.x, p.y, p.y);\n\t\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\t\tlet env = arguments[0];\n\t\t\t\tthis._minx = env._minx;\n\t\t\t\tthis._maxx = env._maxx;\n\t\t\t\tthis._miny = env._miny;\n\t\t\t\tthis._maxy = env._maxy;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\t\tthis.init(p1.x, p2.x, p1.y, p2.y);\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet x1 = arguments[0], x2 = arguments[1], y1 = arguments[2], y2 = arguments[3];\n\t\t\tif (x1 < x2) {\n\t\t\t\tthis._minx = x1;\n\t\t\t\tthis._maxx = x2;\n\t\t\t} else {\n\t\t\t\tthis._minx = x2;\n\t\t\t\tthis._maxx = x1;\n\t\t\t}\n\t\t\tif (y1 < y2) {\n\t\t\t\tthis._miny = y1;\n\t\t\t\tthis._maxy = y2;\n\t\t\t} else {\n\t\t\t\tthis._miny = y2;\n\t\t\t\tthis._maxy = y1;\n\t\t\t}\n\t\t}\n\t}\n\tgetMaxY() {\n\t\treturn this._maxy;\n\t}\n\tdistance(env) {\n\t\tif (this.intersects(env)) return 0;\n\t\tvar dx = 0.0;\n\t\tif (this._maxx < env._minx) dx = env._minx - this._maxx; else if (this._minx > env._maxx) dx = this._minx - env._maxx;\n\t\tvar dy = 0.0;\n\t\tif (this._maxy < env._miny) dy = env._miny - this._maxy; else if (this._miny > env._maxy) dy = this._miny - env._maxy;\n\t\tif (dx === 0.0) return dy;\n\t\tif (dy === 0.0) return dx;\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t}\n\thashCode() {\n\t\tvar result = 17;\n\t\tresult = 37 * result + Coordinate.hashCode(this._minx);\n\t\tresult = 37 * result + Coordinate.hashCode(this._maxx);\n\t\tresult = 37 * result + Coordinate.hashCode(this._miny);\n\t\tresult = 37 * result + Coordinate.hashCode(this._maxy);\n\t\treturn result;\n\t}\n\tgetClass() {\n\t\treturn Envelope;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable, Serializable];\n\t}\n}\nEnvelope.constructor_ = function () {\n\tthis._minx = null;\n\tthis._maxx = null;\n\tthis._miny = null;\n\tthis._maxy = null;\n\tif (arguments.length === 0) {\n\t\tthis.init();\n\t} else if (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\tthis.init(p.x, p.x, p.y, p.y);\n\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\tlet env = arguments[0];\n\t\t\tthis.init(env);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\tthis.init(p1.x, p2.x, p1.y, p2.y);\n\t} else if (arguments.length === 4) {\n\t\tlet x1 = arguments[0], x2 = arguments[1], y1 = arguments[2], y2 = arguments[3];\n\t\tthis.init(x1, x2, y1, y2);\n\t}\n};\nEnvelope.serialVersionUID = 5873921885273102420;\n","export default function Exception () {}\n","import Exception from '../../../../java/lang/Exception';\nexport default class NotRepresentableException extends Exception {\n\tconstructor() {\n\t\tsuper();\n\t\tNotRepresentableException.constructor_.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn NotRepresentableException;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nNotRepresentableException.constructor_ = function () {\n\tException.constructor_.call(this, \"Projective point not representable on the Cartesian plane.\");\n};\n","export default function StringBuffer (str) {\n this.str = str\n}\n\nStringBuffer.prototype.append = function (e) {\n this.str += e\n}\n\nStringBuffer.prototype.setCharAt = function (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n}\n\nStringBuffer.prototype.toString = function (e) {\n return this.str\n}\n","export default function Integer (value) {\n this.value = value\n}\n\nInteger.prototype.intValue = function () {\n return this.value\n}\nInteger.prototype.compareTo = function (o) {\n if (this.value < o) return -1\n if (this.value > o) return 1\n return 0\n}\n\nInteger.isNaN = n => Number.isNaN(n)\n","export default function Character () {}\nCharacter.isWhitespace = c => ((c <= 32 && c >= 0) || c == 127)\nCharacter.toUpperCase = c => c.toUpperCase()\n","import StringBuffer from '../../../../java/lang/StringBuffer';\nimport Double from '../../../../java/lang/Double';\nimport Integer from '../../../../java/lang/Integer';\nimport Character from '../../../../java/lang/Character';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport Serializable from '../../../../java/io/Serializable';\nexport default class DD {\n\tconstructor() {\n\t\tDD.constructor_.apply(this, arguments);\n\t}\n\tstatic sqr(x) {\n\t\treturn DD.valueOf(x).selfMultiply(x);\n\t}\n\tstatic valueOf() {\n\t\tif (typeof arguments[0] === \"string\") {\n\t\t\tlet str = arguments[0];\n\t\t\treturn DD.parse(str);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet x = arguments[0];\n\t\t\treturn new DD(x);\n\t\t}\n\t}\n\tstatic sqrt(x) {\n\t\treturn DD.valueOf(x).sqrt();\n\t}\n\tstatic parse(str) {\n\t\tvar i = 0;\n\t\tvar strlen = str.length;\n\t\twhile (Character.isWhitespace(str.charAt(i))) i++;\n\t\tvar isNegative = false;\n\t\tif (i < strlen) {\n\t\t\tvar signCh = str.charAt(i);\n\t\t\tif (signCh === '-' || signCh === '+') {\n\t\t\t\ti++;\n\t\t\t\tif (signCh === '-') isNegative = true;\n\t\t\t}\n\t\t}\n\t\tvar val = new DD();\n\t\tvar numDigits = 0;\n\t\tvar numBeforeDec = 0;\n\t\tvar exp = 0;\n\t\twhile (true) {\n\t\t\tif (i >= strlen) break;\n\t\t\tvar ch = str.charAt(i);\n\t\t\ti++;\n\t\t\tif (Character.isDigit(ch)) {\n\t\t\t\tvar d = ch - '0';\n\t\t\t\tval.selfMultiply(DD.TEN);\n\t\t\t\tval.selfAdd(d);\n\t\t\t\tnumDigits++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === '.') {\n\t\t\t\tnumBeforeDec = numDigits;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === 'e' || ch === 'E') {\n\t\t\t\tvar expStr = str.substring(i);\n\t\t\t\ttry {\n\t\t\t\t\texp = Integer.parseInt(expStr);\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tif (ex instanceof NumberFormatException) {\n\t\t\t\t\t\tthrow new NumberFormatException(\"Invalid exponent \" + expStr + \" in string \" + str);\n\t\t\t\t\t} else throw ex;\n\t\t\t\t} finally {}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthrow new NumberFormatException(\"Unexpected character '\" + ch + \"' at position \" + i + \" in string \" + str);\n\t\t}\n\t\tvar val2 = val;\n\t\tvar numDecPlaces = numDigits - numBeforeDec - exp;\n\t\tif (numDecPlaces === 0) {\n\t\t\tval2 = val;\n\t\t} else if (numDecPlaces > 0) {\n\t\t\tvar scale = DD.TEN.pow(numDecPlaces);\n\t\t\tval2 = val.divide(scale);\n\t\t} else if (numDecPlaces < 0) {\n\t\t\tvar scale = DD.TEN.pow(-numDecPlaces);\n\t\t\tval2 = val.multiply(scale);\n\t\t}\n\t\tif (isNegative) {\n\t\t\treturn val2.negate();\n\t\t}\n\t\treturn val2;\n\t}\n\tstatic createNaN() {\n\t\treturn new DD(Double.NaN, Double.NaN);\n\t}\n\tstatic copy(dd) {\n\t\treturn new DD(dd);\n\t}\n\tstatic magnitude(x) {\n\t\tvar xAbs = Math.abs(x);\n\t\tvar xLog10 = Math.log(xAbs) / Math.log(10);\n\t\tvar xMag = Math.trunc(Math.floor(xLog10));\n\t\tvar xApprox = Math.pow(10, xMag);\n\t\tif (xApprox * 10 <= xAbs) xMag += 1;\n\t\treturn xMag;\n\t}\n\tstatic stringOfChar(ch, len) {\n\t\tvar buf = new StringBuffer();\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tbuf.append(ch);\n\t\t}\n\t\treturn buf.toString();\n\t}\n\tle(y) {\n\t\treturn this._hi < y._hi || this._hi === y._hi && this._lo <= y._lo;\n\t}\n\textractSignificantDigits(insertDecimalPoint, magnitude) {\n\t\tvar y = this.abs();\n\t\tvar mag = DD.magnitude(y._hi);\n\t\tvar scale = DD.TEN.pow(mag);\n\t\ty = y.divide(scale);\n\t\tif (y.gt(DD.TEN)) {\n\t\t\ty = y.divide(DD.TEN);\n\t\t\tmag += 1;\n\t\t} else if (y.lt(DD.ONE)) {\n\t\t\ty = y.multiply(DD.TEN);\n\t\t\tmag -= 1;\n\t\t}\n\t\tvar decimalPointPos = mag + 1;\n\t\tvar buf = new StringBuffer();\n\t\tvar numDigits = DD.MAX_PRINT_DIGITS - 1;\n\t\tfor (var i = 0; i <= numDigits; i++) {\n\t\t\tif (insertDecimalPoint && i === decimalPointPos) {\n\t\t\t\tbuf.append('.');\n\t\t\t}\n\t\t\tvar digit = Math.trunc(y._hi);\n\t\t\tif (digit < 0 || digit > 9) {}\n\t\t\tif (digit < 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar rebiasBy10 = false;\n\t\t\tvar digitChar = 0;\n\t\t\tif (digit > 9) {\n\t\t\t\trebiasBy10 = true;\n\t\t\t\tdigitChar = '9';\n\t\t\t} else {\n\t\t\t\tdigitChar = '0' + digit;\n\t\t\t}\n\t\t\tbuf.append(digitChar);\n\t\t\ty = y.subtract(DD.valueOf(digit)).multiply(DD.TEN);\n\t\t\tif (rebiasBy10) y.selfAdd(DD.TEN);\n\t\t\tvar continueExtractingDigits = true;\n\t\t\tvar remMag = DD.magnitude(y._hi);\n\t\t\tif (remMag < 0 && Math.abs(remMag) >= numDigits - i) continueExtractingDigits = false;\n\t\t\tif (!continueExtractingDigits) break;\n\t\t}\n\t\tmagnitude[0] = mag;\n\t\treturn buf.toString();\n\t}\n\tsqr() {\n\t\treturn this.multiply(this);\n\t}\n\tdoubleValue() {\n\t\treturn this._hi + this._lo;\n\t}\n\tsubtract() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\treturn this.add(y.negate());\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\treturn this.add(-y);\n\t\t}\n\t}\n\tequals() {\n\t\tif (arguments.length === 1 && arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\treturn this._hi === y._hi && this._lo === y._lo;\n\t\t}\n\t}\n\tisZero() {\n\t\treturn this._hi === 0.0 && this._lo === 0.0;\n\t}\n\tselfSubtract() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\tif (this.isNaN()) return this;\n\t\t\treturn this.selfAdd(-y._hi, -y._lo);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\tif (this.isNaN()) return this;\n\t\t\treturn this.selfAdd(-y, 0.0);\n\t\t}\n\t}\n\tgetSpecialNumberString() {\n\t\tif (this.isZero()) return \"0.0\";\n\t\tif (this.isNaN()) return \"NaN \";\n\t\treturn null;\n\t}\n\tmin(x) {\n\t\tif (this.le(x)) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn x;\n\t\t}\n\t}\n\tselfDivide() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof DD) {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfDivide(y._hi, y._lo);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfDivide(y, 0.0);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet yhi = arguments[0], ylo = arguments[1];\n\t\t\tvar hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null;\n\t\t\tC = this._hi / yhi;\n\t\t\tc = DD.SPLIT * C;\n\t\t\thc = c - C;\n\t\t\tu = DD.SPLIT * yhi;\n\t\t\thc = c - hc;\n\t\t\ttc = C - hc;\n\t\t\thy = u - yhi;\n\t\t\tU = C * yhi;\n\t\t\thy = u - hy;\n\t\t\tty = yhi - hy;\n\t\t\tu = hc * hy - U + hc * ty + tc * hy + tc * ty;\n\t\t\tc = (this._hi - U - u + this._lo - C * ylo) / yhi;\n\t\t\tu = C + c;\n\t\t\tthis._hi = u;\n\t\t\tthis._lo = C - u + c;\n\t\t\treturn this;\n\t\t}\n\t}\n\tdump() {\n\t\treturn \"DD<\" + this._hi + \", \" + this._lo + \">\";\n\t}\n\tdivide() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\tvar hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null;\n\t\t\tC = this._hi / y._hi;\n\t\t\tc = DD.SPLIT * C;\n\t\t\thc = c - C;\n\t\t\tu = DD.SPLIT * y._hi;\n\t\t\thc = c - hc;\n\t\t\ttc = C - hc;\n\t\t\thy = u - y._hi;\n\t\t\tU = C * y._hi;\n\t\t\thy = u - hy;\n\t\t\tty = y._hi - hy;\n\t\t\tu = hc * hy - U + hc * ty + tc * hy + tc * ty;\n\t\t\tc = (this._hi - U - u + this._lo - C * y._lo) / y._hi;\n\t\t\tu = C + c;\n\t\t\tvar zhi = u;\n\t\t\tvar zlo = C - u + c;\n\t\t\treturn new DD(zhi, zlo);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\tif (Double.isNaN(y)) return DD.createNaN();\n\t\t\treturn DD.copy(this).selfDivide(y, 0.0);\n\t\t}\n\t}\n\tge(y) {\n\t\treturn this._hi > y._hi || this._hi === y._hi && this._lo >= y._lo;\n\t}\n\tpow(exp) {\n\t\tif (exp === 0.0) return DD.valueOf(1.0);\n\t\tvar r = new DD(this);\n\t\tvar s = DD.valueOf(1.0);\n\t\tvar n = Math.abs(exp);\n\t\tif (n > 1) {\n\t\t\twhile (n > 0) {\n\t\t\t\tif (n % 2 === 1) {\n\t\t\t\t\ts.selfMultiply(r);\n\t\t\t\t}\n\t\t\t\tn /= 2;\n\t\t\t\tif (n > 0) r = r.sqr();\n\t\t\t}\n\t\t} else {\n\t\t\ts = r;\n\t\t}\n\t\tif (exp < 0) return s.reciprocal();\n\t\treturn s;\n\t}\n\tceil() {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tvar fhi = Math.ceil(this._hi);\n\t\tvar flo = 0.0;\n\t\tif (fhi === this._hi) {\n\t\t\tflo = Math.ceil(this._lo);\n\t\t}\n\t\treturn new DD(fhi, flo);\n\t}\n\tcompareTo(o) {\n\t\tvar other = o;\n\t\tif (this._hi < other._hi) return -1;\n\t\tif (this._hi > other._hi) return 1;\n\t\tif (this._lo < other._lo) return -1;\n\t\tif (this._lo > other._lo) return 1;\n\t\treturn 0;\n\t}\n\trint() {\n\t\tif (this.isNaN()) return this;\n\t\tvar plus5 = this.add(0.5);\n\t\treturn plus5.floor();\n\t}\n\tsetValue() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet value = arguments[0];\n\t\t\tthis.init(value);\n\t\t\treturn this;\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet value = arguments[0];\n\t\t\tthis.init(value);\n\t\t\treturn this;\n\t\t}\n\t}\n\tmax(x) {\n\t\tif (this.ge(x)) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn x;\n\t\t}\n\t}\n\tsqrt() {\n\t\tif (this.isZero()) return DD.valueOf(0.0);\n\t\tif (this.isNegative()) {\n\t\t\treturn DD.NaN;\n\t\t}\n\t\tvar x = 1.0 / Math.sqrt(this._hi);\n\t\tvar ax = this._hi * x;\n\t\tvar axdd = DD.valueOf(ax);\n\t\tvar diffSq = this.subtract(axdd.sqr());\n\t\tvar d2 = diffSq._hi * (x * 0.5);\n\t\treturn axdd.add(d2);\n\t}\n\tselfAdd() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof DD) {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfAdd(y._hi, y._lo);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\tvar H = null, h = null, S = null, s = null, e = null, f = null;\n\t\t\t\tS = this._hi + y;\n\t\t\t\te = S - this._hi;\n\t\t\t\ts = S - e;\n\t\t\t\ts = y - e + (this._hi - s);\n\t\t\t\tf = s + this._lo;\n\t\t\t\tH = S + f;\n\t\t\t\th = f + (S - H);\n\t\t\t\tthis._hi = H + h;\n\t\t\t\tthis._lo = h + (H - this._hi);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet yhi = arguments[0], ylo = arguments[1];\n\t\t\tvar H = null, h = null, T = null, t = null, S = null, s = null, e = null, f = null;\n\t\t\tS = this._hi + yhi;\n\t\t\tT = this._lo + ylo;\n\t\t\te = S - this._hi;\n\t\t\tf = T - this._lo;\n\t\t\ts = S - e;\n\t\t\tt = T - f;\n\t\t\ts = yhi - e + (this._hi - s);\n\t\t\tt = ylo - f + (this._lo - t);\n\t\t\te = s + T;\n\t\t\tH = S + e;\n\t\t\th = e + (S - H);\n\t\t\te = t + h;\n\t\t\tvar zhi = H + e;\n\t\t\tvar zlo = e + (H - zhi);\n\t\t\tthis._hi = zhi;\n\t\t\tthis._lo = zlo;\n\t\t\treturn this;\n\t\t}\n\t}\n\tselfMultiply() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof DD) {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfMultiply(y._hi, y._lo);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfMultiply(y, 0.0);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet yhi = arguments[0], ylo = arguments[1];\n\t\t\tvar hx = null, tx = null, hy = null, ty = null, C = null, c = null;\n\t\t\tC = DD.SPLIT * this._hi;\n\t\t\thx = C - this._hi;\n\t\t\tc = DD.SPLIT * yhi;\n\t\t\thx = C - hx;\n\t\t\ttx = this._hi - hx;\n\t\t\thy = c - yhi;\n\t\t\tC = this._hi * yhi;\n\t\t\thy = c - hy;\n\t\t\tty = yhi - hy;\n\t\t\tc = hx * hy - C + hx * ty + tx * hy + tx * ty + (this._hi * ylo + this._lo * yhi);\n\t\t\tvar zhi = C + c;\n\t\t\thx = C - zhi;\n\t\t\tvar zlo = c + hx;\n\t\t\tthis._hi = zhi;\n\t\t\tthis._lo = zlo;\n\t\t\treturn this;\n\t\t}\n\t}\n\tselfSqr() {\n\t\treturn this.selfMultiply(this);\n\t}\n\tfloor() {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tvar fhi = Math.floor(this._hi);\n\t\tvar flo = 0.0;\n\t\tif (fhi === this._hi) {\n\t\t\tflo = Math.floor(this._lo);\n\t\t}\n\t\treturn new DD(fhi, flo);\n\t}\n\tnegate() {\n\t\tif (this.isNaN()) return this;\n\t\treturn new DD(-this._hi, -this._lo);\n\t}\n\tclone() {\n\t\ttry {\n\t\t\treturn null;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof CloneNotSupportedException) {\n\t\t\t\treturn null;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t}\n\tmultiply() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\tif (y.isNaN()) return DD.createNaN();\n\t\t\treturn DD.copy(this).selfMultiply(y);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\tif (Double.isNaN(y)) return DD.createNaN();\n\t\t\treturn DD.copy(this).selfMultiply(y, 0.0);\n\t\t}\n\t}\n\tisNaN() {\n\t\treturn Double.isNaN(this._hi);\n\t}\n\tintValue() {\n\t\treturn Math.trunc(this._hi);\n\t}\n\ttoString() {\n\t\tvar mag = DD.magnitude(this._hi);\n\t\tif (mag >= -3 && mag <= 20) return this.toStandardNotation();\n\t\treturn this.toSciNotation();\n\t}\n\ttoStandardNotation() {\n\t\tvar specialStr = this.getSpecialNumberString();\n\t\tif (specialStr !== null) return specialStr;\n\t\tvar magnitude = new Array(1).fill(null);\n\t\tvar sigDigits = this.extractSignificantDigits(true, magnitude);\n\t\tvar decimalPointPos = magnitude[0] + 1;\n\t\tvar num = sigDigits;\n\t\tif (sigDigits.charAt(0) === '.') {\n\t\t\tnum = \"0\" + sigDigits;\n\t\t} else if (decimalPointPos < 0) {\n\t\t\tnum = \"0.\" + DD.stringOfChar('0', -decimalPointPos) + sigDigits;\n\t\t} else if (sigDigits.indexOf('.') === -1) {\n\t\t\tvar numZeroes = decimalPointPos - sigDigits.length;\n\t\t\tvar zeroes = DD.stringOfChar('0', numZeroes);\n\t\t\tnum = sigDigits + zeroes + \".0\";\n\t\t}\n\t\tif (this.isNegative()) return \"-\" + num;\n\t\treturn num;\n\t}\n\treciprocal() {\n\t\tvar hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null;\n\t\tC = 1.0 / this._hi;\n\t\tc = DD.SPLIT * C;\n\t\thc = c - C;\n\t\tu = DD.SPLIT * this._hi;\n\t\thc = c - hc;\n\t\ttc = C - hc;\n\t\thy = u - this._hi;\n\t\tU = C * this._hi;\n\t\thy = u - hy;\n\t\tty = this._hi - hy;\n\t\tu = hc * hy - U + hc * ty + tc * hy + tc * ty;\n\t\tc = (1.0 - U - u - C * this._lo) / this._hi;\n\t\tvar zhi = C + c;\n\t\tvar zlo = C - zhi + c;\n\t\treturn new DD(zhi, zlo);\n\t}\n\ttoSciNotation() {\n\t\tif (this.isZero()) return DD.SCI_NOT_ZERO;\n\t\tvar specialStr = this.getSpecialNumberString();\n\t\tif (specialStr !== null) return specialStr;\n\t\tvar magnitude = new Array(1).fill(null);\n\t\tvar digits = this.extractSignificantDigits(false, magnitude);\n\t\tvar expStr = DD.SCI_NOT_EXPONENT_CHAR + magnitude[0];\n\t\tif (digits.charAt(0) === '0') {\n\t\t\tthrow new IllegalStateException(\"Found leading zero: \" + digits);\n\t\t}\n\t\tvar trailingDigits = \"\";\n\t\tif (digits.length > 1) trailingDigits = digits.substring(1);\n\t\tvar digitsWithDecimal = digits.charAt(0) + \".\" + trailingDigits;\n\t\tif (this.isNegative()) return \"-\" + digitsWithDecimal + expStr;\n\t\treturn digitsWithDecimal + expStr;\n\t}\n\tabs() {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tif (this.isNegative()) return this.negate();\n\t\treturn new DD(this);\n\t}\n\tisPositive() {\n\t\treturn this._hi > 0.0 || this._hi === 0.0 && this._lo > 0.0;\n\t}\n\tlt(y) {\n\t\treturn this._hi < y._hi || this._hi === y._hi && this._lo < y._lo;\n\t}\n\tadd() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\treturn DD.copy(this).selfAdd(y);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\treturn DD.copy(this).selfAdd(y);\n\t\t}\n\t}\n\tinit() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (typeof arguments[0] === \"number\") {\n\t\t\t\tlet x = arguments[0];\n\t\t\t\tthis._hi = x;\n\t\t\t\tthis._lo = 0.0;\n\t\t\t} else if (arguments[0] instanceof DD) {\n\t\t\t\tlet dd = arguments[0];\n\t\t\t\tthis._hi = dd._hi;\n\t\t\t\tthis._lo = dd._lo;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet hi = arguments[0], lo = arguments[1];\n\t\t\tthis._hi = hi;\n\t\t\tthis._lo = lo;\n\t\t}\n\t}\n\tgt(y) {\n\t\treturn this._hi > y._hi || this._hi === y._hi && this._lo > y._lo;\n\t}\n\tisNegative() {\n\t\treturn this._hi < 0.0 || this._hi === 0.0 && this._lo < 0.0;\n\t}\n\ttrunc() {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tif (this.isPositive()) return this.floor(); else return this.ceil();\n\t}\n\tsignum() {\n\t\tif (this._hi > 0) return 1;\n\t\tif (this._hi < 0) return -1;\n\t\tif (this._lo > 0) return 1;\n\t\tif (this._lo < 0) return -1;\n\t\treturn 0;\n\t}\n\tgetClass() {\n\t\treturn DD;\n\t}\n\tget interfaces_() {\n\t\treturn [Serializable, Comparable, Cloneable];\n\t}\n}\nDD.constructor_ = function () {\n\tthis._hi = 0.0;\n\tthis._lo = 0.0;\n\tif (arguments.length === 0) {\n\t\tthis.init(0.0);\n\t} else if (arguments.length === 1) {\n\t\tif (typeof arguments[0] === \"number\") {\n\t\t\tlet x = arguments[0];\n\t\t\tthis.init(x);\n\t\t} else if (arguments[0] instanceof DD) {\n\t\t\tlet dd = arguments[0];\n\t\t\tthis.init(dd);\n\t\t} else if (typeof arguments[0] === \"string\") {\n\t\t\tlet str = arguments[0];\n\t\t\tDD.constructor_.call(this, DD.parse(str));\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet hi = arguments[0], lo = arguments[1];\n\t\tthis.init(hi, lo);\n\t}\n};\nDD.PI = new DD(3.141592653589793116e+00, 1.224646799147353207e-16);\nDD.TWO_PI = new DD(6.283185307179586232e+00, 2.449293598294706414e-16);\nDD.PI_2 = new DD(1.570796326794896558e+00, 6.123233995736766036e-17);\nDD.E = new DD(2.718281828459045091e+00, 1.445646891729250158e-16);\nDD.NaN = new DD(Double.NaN, Double.NaN);\nDD.EPS = 1.23259516440783e-32;\nDD.SPLIT = 134217729.0;\nDD.MAX_PRINT_DIGITS = 32;\nDD.TEN = DD.valueOf(10.0);\nDD.ONE = DD.valueOf(1.0);\nDD.SCI_NOT_EXPONENT_CHAR = \"E\";\nDD.SCI_NOT_ZERO = \"0.0E0\";\n","import Coordinate from '../geom/Coordinate';\nimport DD from '../math/DD';\nexport default class CGAlgorithmsDD {\n\tconstructor() {\n\t\tCGAlgorithmsDD.constructor_.apply(this, arguments);\n\t}\n\tstatic orientationIndex(p1, p2, q) {\n\t\tvar index = CGAlgorithmsDD.orientationIndexFilter(p1, p2, q);\n\t\tif (index <= 1) return index;\n\t\tvar dx1 = DD.valueOf(p2.x).selfAdd(-p1.x);\n\t\tvar dy1 = DD.valueOf(p2.y).selfAdd(-p1.y);\n\t\tvar dx2 = DD.valueOf(q.x).selfAdd(-p2.x);\n\t\tvar dy2 = DD.valueOf(q.y).selfAdd(-p2.y);\n\t\treturn dx1.selfMultiply(dy2).selfSubtract(dy1.selfMultiply(dx2)).signum();\n\t}\n\tstatic signOfDet2x2() {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet x1 = arguments[0], y1 = arguments[1], x2 = arguments[2], y2 = arguments[3];\n\t\t\tvar det = x1.multiply(y2).selfSubtract(y1.multiply(x2));\n\t\t\treturn det.signum();\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet dx1 = arguments[0], dy1 = arguments[1], dx2 = arguments[2], dy2 = arguments[3];\n\t\t\tvar x1 = DD.valueOf(dx1);\n\t\t\tvar y1 = DD.valueOf(dy1);\n\t\t\tvar x2 = DD.valueOf(dx2);\n\t\t\tvar y2 = DD.valueOf(dy2);\n\t\t\tvar det = x1.multiply(y2).selfSubtract(y1.multiply(x2));\n\t\t\treturn det.signum();\n\t\t}\n\t}\n\tstatic intersection(p1, p2, q1, q2) {\n\t\tvar denom1 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p2.x).selfSubtract(p1.x));\n\t\tvar denom2 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p2.y).selfSubtract(p1.y));\n\t\tvar denom = denom1.subtract(denom2);\n\t\tvar numx1 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y));\n\t\tvar numx2 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x));\n\t\tvar numx = numx1.subtract(numx2);\n\t\tvar fracP = numx.selfDivide(denom).doubleValue();\n\t\tvar x = DD.valueOf(p1.x).selfAdd(DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(fracP)).doubleValue();\n\t\tvar numy1 = DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y));\n\t\tvar numy2 = DD.valueOf(p2.y).selfSubtract(p1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x));\n\t\tvar numy = numy1.subtract(numy2);\n\t\tvar fracQ = numy.selfDivide(denom).doubleValue();\n\t\tvar y = DD.valueOf(q1.y).selfAdd(DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(fracQ)).doubleValue();\n\t\treturn new Coordinate(x, y);\n\t}\n\tstatic orientationIndexFilter(pa, pb, pc) {\n\t\tvar detsum = null;\n\t\tvar detleft = (pa.x - pc.x) * (pb.y - pc.y);\n\t\tvar detright = (pa.y - pc.y) * (pb.x - pc.x);\n\t\tvar det = detleft - detright;\n\t\tif (detleft > 0.0) {\n\t\t\tif (detright <= 0.0) {\n\t\t\t\treturn CGAlgorithmsDD.signum(det);\n\t\t\t} else {\n\t\t\t\tdetsum = detleft + detright;\n\t\t\t}\n\t\t} else if (detleft < 0.0) {\n\t\t\tif (detright >= 0.0) {\n\t\t\t\treturn CGAlgorithmsDD.signum(det);\n\t\t\t} else {\n\t\t\t\tdetsum = -detleft - detright;\n\t\t\t}\n\t\t} else {\n\t\t\treturn CGAlgorithmsDD.signum(det);\n\t\t}\n\t\tvar errbound = CGAlgorithmsDD.DP_SAFE_EPSILON * detsum;\n\t\tif (det >= errbound || -det >= errbound) {\n\t\t\treturn CGAlgorithmsDD.signum(det);\n\t\t}\n\t\treturn 2;\n\t}\n\tstatic signum(x) {\n\t\tif (x > 0) return 1;\n\t\tif (x < 0) return -1;\n\t\treturn 0;\n\t}\n\tgetClass() {\n\t\treturn CGAlgorithmsDD;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCGAlgorithmsDD.constructor_ = function () {};\nCGAlgorithmsDD.DP_SAFE_EPSILON = 1e-15;\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport CGAlgorithmsDD from './CGAlgorithmsDD';\nexport default class Orientation {\n\tconstructor() {\n\t\tOrientation.constructor_.apply(this, arguments);\n\t}\n\tstatic index(p1, p2, q) {\n\t\treturn CGAlgorithmsDD.orientationIndex(p1, p2, q);\n\t}\n\tstatic isCCW(ring) {\n\t\tvar nPts = ring.length - 1;\n\t\tif (nPts < 3) throw new IllegalArgumentException(\"Ring has fewer than 4 points, so orientation cannot be determined\");\n\t\tvar hiPt = ring[0];\n\t\tvar hiIndex = 0;\n\t\tfor (var i = 1; i <= nPts; i++) {\n\t\t\tvar p = ring[i];\n\t\t\tif (p.y > hiPt.y) {\n\t\t\t\thiPt = p;\n\t\t\t\thiIndex = i;\n\t\t\t}\n\t\t}\n\t\tvar iPrev = hiIndex;\n\t\tdo {\n\t\t\tiPrev = iPrev - 1;\n\t\t\tif (iPrev < 0) iPrev = nPts;\n\t\t} while (ring[iPrev].equals2D(hiPt) && iPrev !== hiIndex);\n\t\tvar iNext = hiIndex;\n\t\tdo {\n\t\t\tiNext = (iNext + 1) % nPts;\n\t\t} while (ring[iNext].equals2D(hiPt) && iNext !== hiIndex);\n\t\tvar prev = ring[iPrev];\n\t\tvar next = ring[iNext];\n\t\tif (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) return false;\n\t\tvar disc = Orientation.index(prev, hiPt, next);\n\t\tvar isCCW = null;\n\t\tif (disc === 0) {\n\t\t\tisCCW = prev.x > next.x;\n\t\t} else {\n\t\t\tisCCW = disc > 0;\n\t\t}\n\t\treturn isCCW;\n\t}\n\tgetClass() {\n\t\treturn Orientation;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOrientation.constructor_ = function () {};\nOrientation.CLOCKWISE = -1;\nOrientation.RIGHT = Orientation.CLOCKWISE;\nOrientation.COUNTERCLOCKWISE = 1;\nOrientation.LEFT = Orientation.COUNTERCLOCKWISE;\nOrientation.COLLINEAR = 0;\nOrientation.STRAIGHT = Orientation.COLLINEAR;\n","export default function System () { }\n\nSystem.arraycopy = (src, srcPos, dest, destPos, len) => {\n let c = 0\n for (let i = srcPos; i < srcPos + len; i++) {\n dest[destPos + c] = src[i]\n c++\n }\n}\n\nSystem.getProperty = (name) => {\n return {\n 'line.separator': '\\n'\n }[name]\n}\n","import NotRepresentableException from './NotRepresentableException';\nimport Coordinate from '../geom/Coordinate';\nimport Double from '../../../../java/lang/Double';\nexport default class HCoordinate {\n\tconstructor() {\n\t\tHCoordinate.constructor_.apply(this, arguments);\n\t}\n\tstatic intersection(p1, p2, q1, q2) {\n\t\tvar px = p1.y - p2.y;\n\t\tvar py = p2.x - p1.x;\n\t\tvar pw = p1.x * p2.y - p2.x * p1.y;\n\t\tvar qx = q1.y - q2.y;\n\t\tvar qy = q2.x - q1.x;\n\t\tvar qw = q1.x * q2.y - q2.x * q1.y;\n\t\tvar x = py * qw - qy * pw;\n\t\tvar y = qx * pw - px * qw;\n\t\tvar w = px * qy - qx * py;\n\t\tvar xInt = x / w;\n\t\tvar yInt = y / w;\n\t\tif (Double.isNaN(xInt) || (Double.isInfinite(xInt) || Double.isNaN(yInt)) || Double.isInfinite(yInt)) {\n\t\t\tthrow new NotRepresentableException();\n\t\t}\n\t\treturn new Coordinate(xInt, yInt);\n\t}\n\tgetY() {\n\t\tvar a = this.y / this.w;\n\t\tif (Double.isNaN(a) || Double.isInfinite(a)) {\n\t\t\tthrow new NotRepresentableException();\n\t\t}\n\t\treturn a;\n\t}\n\tgetX() {\n\t\tvar a = this.x / this.w;\n\t\tif (Double.isNaN(a) || Double.isInfinite(a)) {\n\t\t\tthrow new NotRepresentableException();\n\t\t}\n\t\treturn a;\n\t}\n\tgetCoordinate() {\n\t\tvar p = new Coordinate();\n\t\tp.x = this.getX();\n\t\tp.y = this.getY();\n\t\treturn p;\n\t}\n\tgetClass() {\n\t\treturn HCoordinate;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nHCoordinate.constructor_ = function () {\n\tthis.x = null;\n\tthis.y = null;\n\tthis.w = null;\n\tif (arguments.length === 0) {\n\t\tthis.x = 0.0;\n\t\tthis.y = 0.0;\n\t\tthis.w = 1.0;\n\t} else if (arguments.length === 1) {\n\t\tlet p = arguments[0];\n\t\tthis.x = p.x;\n\t\tthis.y = p.y;\n\t\tthis.w = 1.0;\n\t} else if (arguments.length === 2) {\n\t\tif (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\t\tlet _x = arguments[0], _y = arguments[1];\n\t\t\tthis.x = _x;\n\t\t\tthis.y = _y;\n\t\t\tthis.w = 1.0;\n\t\t} else if (arguments[0] instanceof HCoordinate && arguments[1] instanceof HCoordinate) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\t\tthis.x = p1.y * p2.w - p2.y * p1.w;\n\t\t\tthis.y = p2.x * p1.w - p1.x * p2.w;\n\t\t\tthis.w = p1.x * p2.y - p2.x * p1.y;\n\t\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\t\tthis.x = p1.y - p2.y;\n\t\t\tthis.y = p2.x - p1.x;\n\t\t\tthis.w = p1.x * p2.y - p2.x * p1.y;\n\t\t}\n\t} else if (arguments.length === 3) {\n\t\tlet _x = arguments[0], _y = arguments[1], _w = arguments[2];\n\t\tthis.x = _x;\n\t\tthis.y = _y;\n\t\tthis.w = _w;\n\t} else if (arguments.length === 4) {\n\t\tlet p1 = arguments[0], p2 = arguments[1], q1 = arguments[2], q2 = arguments[3];\n\t\tvar px = p1.y - p2.y;\n\t\tvar py = p2.x - p1.x;\n\t\tvar pw = p1.x * p2.y - p2.x * p1.y;\n\t\tvar qx = q1.y - q2.y;\n\t\tvar qy = q2.x - q1.x;\n\t\tvar qw = q1.x * q2.y - q2.x * q1.y;\n\t\tthis.x = py * qw - qy * pw;\n\t\tthis.y = qx * pw - px * qw;\n\t\tthis.w = px * qy - qx * py;\n\t}\n};\n","import Double from '../../../../java/lang/Double';\nexport default class MathUtil {\n\tconstructor() {\n\t\tMathUtil.constructor_.apply(this, arguments);\n\t}\n\tstatic log10(x) {\n\t\tvar ln = Math.log(x);\n\t\tif (Double.isInfinite(ln)) return ln;\n\t\tif (Double.isNaN(ln)) return ln;\n\t\treturn ln / MathUtil.LOG_10;\n\t}\n\tstatic min(v1, v2, v3, v4) {\n\t\tvar min = v1;\n\t\tif (v2 < min) min = v2;\n\t\tif (v3 < min) min = v3;\n\t\tif (v4 < min) min = v4;\n\t\treturn min;\n\t}\n\tstatic clamp() {\n\t\tif (typeof arguments[2] === \"number\" && (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\")) {\n\t\t\tlet x = arguments[0], min = arguments[1], max = arguments[2];\n\t\t\tif (x < min) return min;\n\t\t\tif (x > max) return max;\n\t\t\treturn x;\n\t\t} else if (Number.isInteger(arguments[2]) && (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1]))) {\n\t\t\tlet x = arguments[0], min = arguments[1], max = arguments[2];\n\t\t\tif (x < min) return min;\n\t\t\tif (x > max) return max;\n\t\t\treturn x;\n\t\t}\n\t}\n\tstatic wrap(index, max) {\n\t\tif (index < 0) {\n\t\t\treturn max - -index % max;\n\t\t}\n\t\treturn index % max;\n\t}\n\tstatic max() {\n\t\tif (arguments.length === 3) {\n\t\t\tlet v1 = arguments[0], v2 = arguments[1], v3 = arguments[2];\n\t\t\tvar max = v1;\n\t\t\tif (v2 > max) max = v2;\n\t\t\tif (v3 > max) max = v3;\n\t\t\treturn max;\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet v1 = arguments[0], v2 = arguments[1], v3 = arguments[2], v4 = arguments[3];\n\t\t\tvar max = v1;\n\t\t\tif (v2 > max) max = v2;\n\t\t\tif (v3 > max) max = v3;\n\t\t\tif (v4 > max) max = v4;\n\t\t\treturn max;\n\t\t}\n\t}\n\tstatic average(x1, x2) {\n\t\treturn (x1 + x2) / 2.0;\n\t}\n\tgetClass() {\n\t\treturn MathUtil;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMathUtil.constructor_ = function () {};\nMathUtil.LOG_10 = Math.log(10);\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport MathUtil from '../math/MathUtil';\nimport Envelope from '../geom/Envelope';\nexport default class Distance {\n\tconstructor() {\n\t\tDistance.constructor_.apply(this, arguments);\n\t}\n\tstatic segmentToSegment(A, B, C, D) {\n\t\tif (A.equals(B)) return Distance.pointToSegment(A, C, D);\n\t\tif (C.equals(D)) return Distance.pointToSegment(D, A, B);\n\t\tvar noIntersection = false;\n\t\tif (!Envelope.intersects(A, B, C, D)) {\n\t\t\tnoIntersection = true;\n\t\t} else {\n\t\t\tvar denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x);\n\t\t\tif (denom === 0) {\n\t\t\t\tnoIntersection = true;\n\t\t\t} else {\n\t\t\t\tvar r_num = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y);\n\t\t\t\tvar s_num = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y);\n\t\t\t\tvar s = s_num / denom;\n\t\t\t\tvar r = r_num / denom;\n\t\t\t\tif (r < 0 || r > 1 || s < 0 || s > 1) {\n\t\t\t\t\tnoIntersection = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (noIntersection) {\n\t\t\treturn MathUtil.min(Distance.pointToSegment(A, C, D), Distance.pointToSegment(B, C, D), Distance.pointToSegment(C, A, B), Distance.pointToSegment(D, A, B));\n\t\t}\n\t\treturn 0.0;\n\t}\n\tstatic pointToSegment(p, A, B) {\n\t\tif (A.x === B.x && A.y === B.y) return p.distance(A);\n\t\tvar len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n\t\tvar r = ((p.x - A.x) * (B.x - A.x) + (p.y - A.y) * (B.y - A.y)) / len2;\n\t\tif (r <= 0.0) return p.distance(A);\n\t\tif (r >= 1.0) return p.distance(B);\n\t\tvar s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n\t\treturn Math.abs(s) * Math.sqrt(len2);\n\t}\n\tstatic pointToLinePerpendicular(p, A, B) {\n\t\tvar len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n\t\tvar s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n\t\treturn Math.abs(s) * Math.sqrt(len2);\n\t}\n\tstatic pointToSegmentString(p, line) {\n\t\tif (line.length === 0) throw new IllegalArgumentException(\"Line array must contain at least one vertex\");\n\t\tvar minDistance = p.distance(line[0]);\n\t\tfor (var i = 0; i < line.length - 1; i++) {\n\t\t\tvar dist = Distance.pointToSegment(p, line[i], line[i + 1]);\n\t\t\tif (dist < minDistance) {\n\t\t\t\tminDistance = dist;\n\t\t\t}\n\t\t}\n\t\treturn minDistance;\n\t}\n\tgetClass() {\n\t\treturn Distance;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDistance.constructor_ = function () {};\n","import Cloneable from '../../../../java/lang/Cloneable';\nexport default class CoordinateSequence {\n\tconstructor() {\n\t\tCoordinateSequence.constructor_.apply(this, arguments);\n\t}\n\tsetOrdinate(index, ordinateIndex, value) {}\n\tsize() {}\n\tgetOrdinate(index, ordinateIndex) {}\n\tgetCoordinate() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet i = arguments[0];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], coord = arguments[1];\n\t\t}\n\t}\n\tgetCoordinateCopy(i) {}\n\tgetDimension() {}\n\tgetX(index) {}\n\texpandEnvelope(env) {}\n\tcopy() {}\n\tgetY(index) {}\n\ttoCoordinateArray() {}\n\tgetClass() {\n\t\treturn CoordinateSequence;\n\t}\n\tget interfaces_() {\n\t\treturn [Cloneable];\n\t}\n}\nCoordinateSequence.constructor_ = function () {};\nCoordinateSequence.X = 0;\nCoordinateSequence.Y = 1;\nCoordinateSequence.Z = 2;\nCoordinateSequence.M = 3;\n","import hasInterface from '../../../../hasInterface';\nimport CoordinateSequence from './CoordinateSequence';\nexport default class CoordinateSequenceFactory {\n\tconstructor() {\n\t\tCoordinateSequenceFactory.constructor_.apply(this, arguments);\n\t}\n\tcreate() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordSeq = arguments[0];\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet size = arguments[0], dimension = arguments[1];\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn CoordinateSequenceFactory;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCoordinateSequenceFactory.constructor_ = function () {};\n","export default class GeometryComponentFilter {\n\tconstructor() {\n\t\tGeometryComponentFilter.constructor_.apply(this, arguments);\n\t}\n\tfilter(geom) {}\n\tgetClass() {\n\t\treturn GeometryComponentFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryComponentFilter.constructor_ = function () {};\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport Serializable from '../../../../java/io/Serializable';\nimport Envelope from './Envelope';\nexport default class Geometry {\n\tconstructor() {\n\t\tGeometry.constructor_.apply(this, arguments);\n\t}\n\tisGeometryCollection() {\n\t\treturn this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION;\n\t}\n\tgetFactory() {\n\t\treturn this._factory;\n\t}\n\tgetGeometryN(n) {\n\t\treturn this;\n\t}\n\tgetArea() {\n\t\treturn 0.0;\n\t}\n\tisRectangle() {\n\t\treturn false;\n\t}\n\tequals() {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tif (g === null) return false;\n\t\t\treturn this.equalsTopo(g);\n\t\t} else if (arguments[0] instanceof Object) {\n\t\t\tlet o = arguments[0];\n\t\t\tif (!(o instanceof Geometry)) return false;\n\t\t\tvar g = o;\n\t\t\treturn this.equalsExact(g);\n\t\t}\n\t}\n\tequalsExact(other) {\n\t\treturn this === other || this.equalsExact(other, 0);\n\t}\n\tgeometryChanged() {\n\t\tthis.apply(Geometry.geometryChangedFilter);\n\t}\n\tgeometryChangedAction() {\n\t\tthis._envelope = null;\n\t}\n\tequalsNorm(g) {\n\t\tif (g === null) return false;\n\t\treturn this.norm().equalsExact(g.norm());\n\t}\n\tgetLength() {\n\t\treturn 0.0;\n\t}\n\tgetNumGeometries() {\n\t\treturn 1;\n\t}\n\tcompareTo() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar other = o;\n\t\t\tif (this.getTypeCode() !== other.getTypeCode()) {\n\t\t\t\treturn this.getTypeCode() - other.getTypeCode();\n\t\t\t}\n\t\t\tif (this.isEmpty() && other.isEmpty()) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (other.isEmpty()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn this.compareToSameClass(o);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar other = o;\n\t\t\tif (this.getTypeCode() !== other.getTypeCode()) {\n\t\t\t\treturn this.getTypeCode() - other.getTypeCode();\n\t\t\t}\n\t\t\tif (this.isEmpty() && other.isEmpty()) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (other.isEmpty()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn this.compareToSameClass(o, comp);\n\t\t}\n\t}\n\tgetUserData() {\n\t\treturn this._userData;\n\t}\n\tgetSRID() {\n\t\treturn this._SRID;\n\t}\n\tgetEnvelope() {\n\t\treturn this.getFactory().toGeometry(this.getEnvelopeInternal());\n\t}\n\tcheckNotGeometryCollection(g) {\n\t\tif (g.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION) {\n\t\t\tthrow new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\t\t}\n\t}\n\tequal(a, b, tolerance) {\n\t\tif (tolerance === 0) {\n\t\t\treturn a.equals(b);\n\t\t}\n\t\treturn a.distance(b) <= tolerance;\n\t}\n\tnorm() {\n\t\tvar copy = this.copy();\n\t\tcopy.normalize();\n\t\treturn copy;\n\t}\n\tgetPrecisionModel() {\n\t\treturn this._factory.getPrecisionModel();\n\t}\n\tgetEnvelopeInternal() {\n\t\tif (this._envelope === null) {\n\t\t\tthis._envelope = this.computeEnvelopeInternal();\n\t\t}\n\t\treturn new Envelope(this._envelope);\n\t}\n\tsetSRID(SRID) {\n\t\tthis._SRID = SRID;\n\t}\n\tsetUserData(userData) {\n\t\tthis._userData = userData;\n\t}\n\tcompare(a, b) {\n\t\tvar i = a.iterator();\n\t\tvar j = b.iterator();\n\t\twhile (i.hasNext() && j.hasNext()) {\n\t\t\tvar aElement = i.next();\n\t\t\tvar bElement = j.next();\n\t\t\tvar comparison = aElement.compareTo(bElement);\n\t\t\tif (comparison !== 0) {\n\t\t\t\treturn comparison;\n\t\t\t}\n\t\t}\n\t\tif (i.hasNext()) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (j.hasNext()) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t}\n\thashCode() {\n\t\treturn this.getEnvelopeInternal().hashCode();\n\t}\n\tisGeometryCollectionOrDerived() {\n\t\tif (this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION || this.getTypeCode() === Geometry.TYPECODE_MULTIPOINT || this.getTypeCode() === Geometry.TYPECODE_MULTILINESTRING || this.getTypeCode() === Geometry.TYPECODE_MULTIPOLYGON) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tget interfaces_() {\n\t\treturn [Cloneable, Comparable, Serializable];\n\t}\n\tgetClass() {\n\t\treturn Geometry;\n\t}\n\tstatic hasNonEmptyElements(geometries) {\n\t\tfor (var i = 0; i < geometries.length; i++) {\n\t\t\tif (!geometries[i].isEmpty()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tstatic hasNullElements(array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tif (array[i] === null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\nGeometry.constructor_ = function (factory) {\n\tif (!factory)\n\t\treturn;\n\tthis._envelope = null;\n\tthis._userData = null;\n\tthis._factory = factory;\n\tthis._SRID = factory.getSRID();\n};\nGeometry.serialVersionUID = 8763622679187376702;\nGeometry.TYPECODE_POINT = 0;\nGeometry.TYPECODE_MULTIPOINT = 1;\nGeometry.TYPECODE_LINESTRING = 2;\nGeometry.TYPECODE_LINEARRING = 3;\nGeometry.TYPECODE_MULTILINESTRING = 4;\nGeometry.TYPECODE_POLYGON = 5;\nGeometry.TYPECODE_MULTIPOLYGON = 6;\nGeometry.TYPECODE_GEOMETRYCOLLECTION = 7;\nGeometry.TYPENAME_POINT = \"Point\";\nGeometry.TYPENAME_MULTIPOINT = \"MultiPoint\";\nGeometry.TYPENAME_LINESTRING = \"LineString\";\nGeometry.TYPENAME_LINEARRING = \"LinearRing\";\nGeometry.TYPENAME_MULTILINESTRING = \"MultiLineString\";\nGeometry.TYPENAME_POLYGON = \"Polygon\";\nGeometry.TYPENAME_MULTIPOLYGON = \"MultiPolygon\";\nGeometry.TYPENAME_GEOMETRYCOLLECTION = \"GeometryCollection\";\nGeometry.geometryChangedFilter = {\n\tget interfaces_() {\n\t\treturn [GeometryComponentFilter];\n\t},\n\tfilter(geom) {\n\t\tgeom.geometryChangedAction();\n\t}\n};\n","export default class CoordinateFilter {\n\tconstructor() {\n\t\tCoordinateFilter.constructor_.apply(this, arguments);\n\t}\n\tfilter(coord) {}\n\tgetClass() {\n\t\treturn CoordinateFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCoordinateFilter.constructor_ = function () {};\n","export default class BoundaryNodeRule {\n\tconstructor() {\n\t\tBoundaryNodeRule.constructor_.apply(this, arguments);\n\t}\n\tisInBoundary(boundaryCount) {}\n\tgetClass() {\n\t\treturn BoundaryNodeRule;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass Mod2BoundaryNodeRule {\n\tconstructor() {\n\t\tMod2BoundaryNodeRule.constructor_.apply(this, arguments);\n\t}\n\tisInBoundary(boundaryCount) {\n\t\treturn boundaryCount % 2 === 1;\n\t}\n\tgetClass() {\n\t\treturn Mod2BoundaryNodeRule;\n\t}\n\tget interfaces_() {\n\t\treturn [BoundaryNodeRule];\n\t}\n}\nMod2BoundaryNodeRule.constructor_ = function () {};\nclass EndPointBoundaryNodeRule {\n\tconstructor() {\n\t\tEndPointBoundaryNodeRule.constructor_.apply(this, arguments);\n\t}\n\tisInBoundary(boundaryCount) {\n\t\treturn boundaryCount > 0;\n\t}\n\tgetClass() {\n\t\treturn EndPointBoundaryNodeRule;\n\t}\n\tget interfaces_() {\n\t\treturn [BoundaryNodeRule];\n\t}\n}\nEndPointBoundaryNodeRule.constructor_ = function () {};\nclass MultiValentEndPointBoundaryNodeRule {\n\tconstructor() {\n\t\tMultiValentEndPointBoundaryNodeRule.constructor_.apply(this, arguments);\n\t}\n\tisInBoundary(boundaryCount) {\n\t\treturn boundaryCount > 1;\n\t}\n\tgetClass() {\n\t\treturn MultiValentEndPointBoundaryNodeRule;\n\t}\n\tget interfaces_() {\n\t\treturn [BoundaryNodeRule];\n\t}\n}\nMultiValentEndPointBoundaryNodeRule.constructor_ = function () {};\nclass MonoValentEndPointBoundaryNodeRule {\n\tconstructor() {\n\t\tMonoValentEndPointBoundaryNodeRule.constructor_.apply(this, arguments);\n\t}\n\tisInBoundary(boundaryCount) {\n\t\treturn boundaryCount === 1;\n\t}\n\tgetClass() {\n\t\treturn MonoValentEndPointBoundaryNodeRule;\n\t}\n\tget interfaces_() {\n\t\treturn [BoundaryNodeRule];\n\t}\n}\nMonoValentEndPointBoundaryNodeRule.constructor_ = function () {};\nBoundaryNodeRule.Mod2BoundaryNodeRule = Mod2BoundaryNodeRule;\nBoundaryNodeRule.EndPointBoundaryNodeRule = EndPointBoundaryNodeRule;\nBoundaryNodeRule.MultiValentEndPointBoundaryNodeRule = MultiValentEndPointBoundaryNodeRule;\nBoundaryNodeRule.MonoValentEndPointBoundaryNodeRule = MonoValentEndPointBoundaryNodeRule;\nBoundaryNodeRule.constructor_ = function () {};\nBoundaryNodeRule.MOD2_BOUNDARY_RULE = new Mod2BoundaryNodeRule();\nBoundaryNodeRule.ENDPOINT_BOUNDARY_RULE = new EndPointBoundaryNodeRule();\nBoundaryNodeRule.MULTIVALENT_ENDPOINT_BOUNDARY_RULE = new MultiValentEndPointBoundaryNodeRule();\nBoundaryNodeRule.MONOVALENT_ENDPOINT_BOUNDARY_RULE = new MonoValentEndPointBoundaryNodeRule();\nBoundaryNodeRule.OGC_SFS_BOUNDARY_RULE = BoundaryNodeRule.MOD2_BOUNDARY_RULE;\n","import CoordinateList from './CoordinateList';\nimport Coordinate from './Coordinate';\nimport MathUtil from '../math/MathUtil';\nimport System from '../../../../java/lang/System';\nimport Comparator from '../../../../java/util/Comparator';\nimport Envelope from './Envelope';\nexport default class CoordinateArrays {\n\tconstructor() {\n\t\tCoordinateArrays.constructor_.apply(this, arguments);\n\t}\n\tstatic isRing(pts) {\n\t\tif (pts.length < 4) return false;\n\t\tif (!pts[0].equals2D(pts[pts.length - 1])) return false;\n\t\treturn true;\n\t}\n\tstatic ptNotInList(testPts, pts) {\n\t\tfor (var i = 0; i < testPts.length; i++) {\n\t\t\tvar testPt = testPts[i];\n\t\t\tif (CoordinateArrays.indexOf(testPt, pts) < 0) return testPt;\n\t\t}\n\t\treturn null;\n\t}\n\tstatic scroll(coordinates, firstCoordinate) {\n\t\tvar i = CoordinateArrays.indexOf(firstCoordinate, coordinates);\n\t\tif (i < 0) return null;\n\t\tvar newCoordinates = new Array(coordinates.length).fill(null);\n\t\tSystem.arraycopy(coordinates, i, newCoordinates, 0, coordinates.length - i);\n\t\tSystem.arraycopy(coordinates, 0, newCoordinates, coordinates.length - i, i);\n\t\tSystem.arraycopy(newCoordinates, 0, coordinates, 0, coordinates.length);\n\t}\n\tstatic equals() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet coord1 = arguments[0], coord2 = arguments[1];\n\t\t\tif (coord1 === coord2) return true;\n\t\t\tif (coord1 === null || coord2 === null) return false;\n\t\t\tif (coord1.length !== coord2.length) return false;\n\t\t\tfor (var i = 0; i < coord1.length; i++) {\n\t\t\t\tif (!coord1[i].equals(coord2[i])) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet coord1 = arguments[0], coord2 = arguments[1], coordinateComparator = arguments[2];\n\t\t\tif (coord1 === coord2) return true;\n\t\t\tif (coord1 === null || coord2 === null) return false;\n\t\t\tif (coord1.length !== coord2.length) return false;\n\t\t\tfor (var i = 0; i < coord1.length; i++) {\n\t\t\t\tif (coordinateComparator.compare(coord1[i], coord2[i]) !== 0) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\tstatic intersection(coordinates, env) {\n\t\tvar coordList = new CoordinateList();\n\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\tif (env.intersects(coordinates[i])) coordList.add(coordinates[i], true);\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t}\n\tstatic hasRepeatedPoints(coord) {\n\t\tfor (var i = 1; i < coord.length; i++) {\n\t\t\tif (coord[i - 1].equals(coord[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tstatic removeRepeatedPoints(coord) {\n\t\tif (!CoordinateArrays.hasRepeatedPoints(coord)) return coord;\n\t\tvar coordList = new CoordinateList(coord, false);\n\t\treturn coordList.toCoordinateArray();\n\t}\n\tstatic reverse(coord) {\n\t\tvar last = coord.length - 1;\n\t\tvar mid = Math.trunc(last / 2);\n\t\tfor (var i = 0; i <= mid; i++) {\n\t\t\tvar tmp = coord[i];\n\t\t\tcoord[i] = coord[last - i];\n\t\t\tcoord[last - i] = tmp;\n\t\t}\n\t}\n\tstatic removeNull(coord) {\n\t\tvar nonNull = 0;\n\t\tfor (var i = 0; i < coord.length; i++) {\n\t\t\tif (coord[i] !== null) nonNull++;\n\t\t}\n\t\tvar newCoord = new Array(nonNull).fill(null);\n\t\tif (nonNull === 0) return newCoord;\n\t\tvar j = 0;\n\t\tfor (var i = 0; i < coord.length; i++) {\n\t\t\tif (coord[i] !== null) newCoord[j++] = coord[i];\n\t\t}\n\t\treturn newCoord;\n\t}\n\tstatic copyDeep() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet coordinates = arguments[0];\n\t\t\tvar copy = new Array(coordinates.length).fill(null);\n\t\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\t\tcopy[i] = new Coordinate(coordinates[i]);\n\t\t\t}\n\t\t\treturn copy;\n\t\t} else if (arguments.length === 5) {\n\t\t\tlet src = arguments[0], srcStart = arguments[1], dest = arguments[2], destStart = arguments[3], length = arguments[4];\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tdest[destStart + i] = new Coordinate(src[srcStart + i]);\n\t\t\t}\n\t\t}\n\t}\n\tstatic isEqualReversed(pts1, pts2) {\n\t\tfor (var i = 0; i < pts1.length; i++) {\n\t\t\tvar p1 = pts1[i];\n\t\t\tvar p2 = pts2[pts1.length - i - 1];\n\t\t\tif (p1.compareTo(p2) !== 0) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tstatic envelope(coordinates) {\n\t\tvar env = new Envelope();\n\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\tenv.expandToInclude(coordinates[i]);\n\t\t}\n\t\treturn env;\n\t}\n\tstatic toCoordinateArray(coordList) {\n\t\treturn coordList.toArray(CoordinateArrays.coordArrayType);\n\t}\n\tstatic atLeastNCoordinatesOrNothing(n, c) {\n\t\treturn c.length >= n ? c : [];\n\t}\n\tstatic indexOf(coordinate, coordinates) {\n\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\tif (coordinate.equals(coordinates[i])) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tstatic increasingDirection(pts) {\n\t\tfor (var i = 0; i < Math.trunc(pts.length / 2); i++) {\n\t\t\tvar j = pts.length - 1 - i;\n\t\t\tvar comp = pts[i].compareTo(pts[j]);\n\t\t\tif (comp !== 0) return comp;\n\t\t}\n\t\treturn 1;\n\t}\n\tstatic compare(pts1, pts2) {\n\t\tvar i = 0;\n\t\twhile (i < pts1.length && i < pts2.length) {\n\t\t\tvar compare = pts1[i].compareTo(pts2[i]);\n\t\t\tif (compare !== 0) return compare;\n\t\t\ti++;\n\t\t}\n\t\tif (i < pts2.length) return -1;\n\t\tif (i < pts1.length) return 1;\n\t\treturn 0;\n\t}\n\tstatic minCoordinate(coordinates) {\n\t\tvar minCoord = null;\n\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\tif (minCoord === null || minCoord.compareTo(coordinates[i]) > 0) {\n\t\t\t\tminCoord = coordinates[i];\n\t\t\t}\n\t\t}\n\t\treturn minCoord;\n\t}\n\tstatic extract(pts, start, end) {\n\t\tstart = MathUtil.clamp(start, 0, pts.length);\n\t\tend = MathUtil.clamp(end, -1, pts.length);\n\t\tvar npts = end - start + 1;\n\t\tif (end < 0) npts = 0;\n\t\tif (start >= pts.length) npts = 0;\n\t\tif (end < start) npts = 0;\n\t\tvar extractPts = new Array(npts).fill(null);\n\t\tif (npts === 0) return extractPts;\n\t\tvar iPts = 0;\n\t\tfor (var i = start; i <= end; i++) {\n\t\t\textractPts[iPts++] = pts[i];\n\t\t}\n\t\treturn extractPts;\n\t}\n\tgetClass() {\n\t\treturn CoordinateArrays;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass ForwardComparator {\n\tconstructor() {\n\t\tForwardComparator.constructor_.apply(this, arguments);\n\t}\n\tcompare(o1, o2) {\n\t\tvar pts1 = o1;\n\t\tvar pts2 = o2;\n\t\treturn CoordinateArrays.compare(pts1, pts2);\n\t}\n\tgetClass() {\n\t\treturn ForwardComparator;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparator];\n\t}\n}\nForwardComparator.constructor_ = function () {};\nclass BidirectionalComparator {\n\tconstructor() {\n\t\tBidirectionalComparator.constructor_.apply(this, arguments);\n\t}\n\tcompare(o1, o2) {\n\t\tvar pts1 = o1;\n\t\tvar pts2 = o2;\n\t\tif (pts1.length < pts2.length) return -1;\n\t\tif (pts1.length > pts2.length) return 1;\n\t\tif (pts1.length === 0) return 0;\n\t\tvar forwardComp = CoordinateArrays.compare(pts1, pts2);\n\t\tvar isEqualRev = CoordinateArrays.isEqualReversed(pts1, pts2);\n\t\tif (isEqualRev) return 0;\n\t\treturn forwardComp;\n\t}\n\tOLDcompare(o1, o2) {\n\t\tvar pts1 = o1;\n\t\tvar pts2 = o2;\n\t\tif (pts1.length < pts2.length) return -1;\n\t\tif (pts1.length > pts2.length) return 1;\n\t\tif (pts1.length === 0) return 0;\n\t\tvar dir1 = CoordinateArrays.increasingDirection(pts1);\n\t\tvar dir2 = CoordinateArrays.increasingDirection(pts2);\n\t\tvar i1 = dir1 > 0 ? 0 : pts1.length - 1;\n\t\tvar i2 = dir2 > 0 ? 0 : pts1.length - 1;\n\t\tfor (var i = 0; i < pts1.length; i++) {\n\t\t\tvar comparePt = pts1[i1].compareTo(pts2[i2]);\n\t\t\tif (comparePt !== 0) return comparePt;\n\t\t\ti1 += dir1;\n\t\t\ti2 += dir2;\n\t\t}\n\t\treturn 0;\n\t}\n\tgetClass() {\n\t\treturn BidirectionalComparator;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparator];\n\t}\n}\nBidirectionalComparator.constructor_ = function () {};\nCoordinateArrays.ForwardComparator = ForwardComparator;\nCoordinateArrays.BidirectionalComparator = BidirectionalComparator;\nCoordinateArrays.constructor_ = function () {};\nCoordinateArrays.coordArrayType = new Array(0).fill(null);\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Map.html\n *\n * @constructor\n * @private\n */\nexport default function Map() {};\n\n\n/**\n * Returns the value to which the specified key is mapped, or null if this map\n * contains no mapping for the key.\n * @param {Object} key\n * @return {Object}\n */\nMap.prototype.get = function() {};\n\n\n/**\n * Associates the specified value with the specified key in this map (optional\n * operation).\n * @param {Object} key\n * @param {Object} value\n * @return {Object}\n */\nMap.prototype.put = function() {};\n\n\n/**\n * Returns the number of key-value mappings in this map.\n * @return {number}\n */\nMap.prototype.size = function() {};\n\n\n/**\n * Returns a Collection view of the values contained in this map.\n * @return {javascript.util.Collection}\n */\nMap.prototype.values = function() {};\n\n/**\n * Returns a {@link Set} view of the mappings contained in this map.\n * The set is backed by the map, so changes to the map are\n * reflected in the set, and vice-versa. If the map is modified\n * while an iteration over the set is in progress (except through\n * the iterator's own remove operation, or through the\n * setValue operation on a map entry returned by the\n * iterator) the results of the iteration are undefined. The set\n * supports element removal, which removes the corresponding\n * mapping from the map, via the Iterator.remove,\n * Set.remove, removeAll, retainAll and\n * clear operations. It does not support the\n * add or addAll operations.\n *\n * @return {Set} a set view of the mappings contained in this map\n */\nMap.prototype.entrySet = function() {};\n","import Map from './Map'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html\n *\n * @extends {Map}\n * @constructor\n * @private\n */\nexport default function SortedMap() {};\nSortedMap.prototype = new Map();\n","import Collection from './Collection'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Set.html\n *\n * @extends {Collection}\n * @constructor\n * @private\n */\nexport default function Set() {};\nSet.prototype = new Collection();\n\n\n/**\n * Returns true if this set contains the specified element. More formally,\n * returns true if and only if this set contains an element e such that (o==null ?\n * e==null : o.equals(e)).\n * @param {Object} e\n * @return {boolean}\n */\nSet.prototype.contains = function() {};\n","import Collection from './Collection'\nimport Iterator from './Iterator'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\nimport Set from './Set'\n\n/**\n * @see http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html\n *\n * @extends {javascript.util.Set}\n * @constructor\n * @private\n */\nexport default function HashSet() {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n};\nHashSet.prototype = new Set();\n\n\n/**\n * @override\n */\nHashSet.prototype.contains = function(o) {\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this.array_[i];\n if (e === o) {\n return true;\n }\n }\n return false;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.add = function(o) {\n if (this.contains(o)) {\n return false;\n }\n\n this.array_.push(o);\n\n return true;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.addAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.add(i.next());\n }\n return true;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.remove = function(o) {\n throw new javascript.util.OperationNotSupported();\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.isEmpty = function() {\n return this.array_.length === 0;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.iterator = function() {\n return new Iterator_(this);\n};\n\n\n\n/**\n * @extends {Iterator}\n * @param {HashSet} hashSet\n * @constructor\n * @private\n */\nvar Iterator_ = function(hashSet) {\n /**\n * @type {HashSet}\n * @private\n */\n this.hashSet_ = hashSet;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.next = function() {\n if (this.position_ === this.hashSet_.size()) {\n throw new NoSuchElementException();\n }\n return this.hashSet_.array_[this.position_++];\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function() {\n if (this.position_ < this.hashSet_.size()) {\n return true;\n } else {\n return false;\n }\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.remove = function() {\n throw new OperationNotSupported();\n};\n","import ArrayList from './ArrayList'\nimport SortedMap from './SortedMap'\nimport HashSet from './HashSet'\n\nconst BLACK = 0\nconst RED = 1\nfunction colorOf (p) { return (p == null ? BLACK : p.color) }\nfunction parentOf (p) { return (p == null ? null : p.parent) }\nfunction setColor (p, c) { if (p !== null) p.color = c }\nfunction leftOf (p) { return (p == null ? null : p.left) }\nfunction rightOf (p) { return (p == null ? null : p.right) }\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html\n *\n * @extends {SortedMap}\n * @constructor\n * @private\n */\nexport default function TreeMap() {\n /**\n * @type {Object}\n * @private\n */\n this.root_ = null;\n /**\n * @type {number}\n * @private\n */\n this.size_ = 0;\n};\nTreeMap.prototype = new SortedMap();\n\n\n/**\n * @override\n */\nTreeMap.prototype.get = function(key) {\n var p = this.root_;\n while (p !== null) {\n var cmp = key['compareTo'](p.key);\n if (cmp < 0) {\n p = p.left;\n } else if (cmp > 0) {\n p = p.right;\n } else {\n return p.value;\n }\n }\n return null;\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.put = function(key, value) {\n if (this.root_ === null) {\n this.root_ = {\n key: key,\n value: value,\n left: null,\n right: null,\n parent: null,\n color: BLACK,\n getValue() { return this.value },\n getKey() { return this.key }\n };\n this.size_ = 1;\n return null;\n }\n var t = this.root_, parent, cmp;\n do {\n parent = t;\n cmp = key['compareTo'](t.key);\n if (cmp < 0) {\n t = t.left;\n } else if (cmp > 0) {\n t = t.right;\n } else {\n var oldValue = t.value;\n t.value = value;\n return oldValue;\n }\n } while (t !== null);\n var e = {\n key: key,\n left: null,\n right: null,\n value: value,\n parent: parent,\n color: BLACK,\n getValue() { return this.value },\n getKey() { return this.key }\n };\n if (cmp < 0) {\n parent.left = e;\n } else {\n parent.right = e;\n }\n this.fixAfterInsertion(e);\n this.size_++;\n return null;\n};\n\n\n/**\n * @param {Object} x\n */\nTreeMap.prototype.fixAfterInsertion = function(x) {\n x.color = RED;\n while (x != null && x != this.root_ && x.parent.color == RED) {\n if (parentOf(x) == leftOf(parentOf(parentOf(x)))) {\n var y = rightOf(parentOf(parentOf(x)));\n if (colorOf(y) == RED) {\n setColor(parentOf(x), BLACK);\n setColor(y, BLACK);\n setColor(parentOf(parentOf(x)), RED);\n x = parentOf(parentOf(x));\n } else {\n if (x == rightOf(parentOf(x))) {\n x = parentOf(x);\n this.rotateLeft(x);\n }\n setColor(parentOf(x), BLACK);\n setColor(parentOf(parentOf(x)), RED);\n this.rotateRight(parentOf(parentOf(x)));\n }\n } else {\n var y = leftOf(parentOf(parentOf(x)));\n if (colorOf(y) == RED) {\n setColor(parentOf(x), BLACK);\n setColor(y, BLACK);\n setColor(parentOf(parentOf(x)), RED);\n x = parentOf(parentOf(x));\n } else {\n if (x == leftOf(parentOf(x))) {\n x = parentOf(x);\n this.rotateRight(x);\n }\n setColor(parentOf(x), BLACK);\n setColor(parentOf(parentOf(x)), RED);\n this.rotateLeft(parentOf(parentOf(x)));\n }\n }\n }\n this.root_.color = BLACK;\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.values = function() {\n var arrayList = new ArrayList();\n var p = this.getFirstEntry();\n if (p !== null) {\n arrayList.add(p.value);\n while ((p = TreeMap.successor(p)) !== null) {\n arrayList.add(p.value);\n }\n }\n return arrayList;\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.entrySet = function() {\n var hashSet = new HashSet();\n var p = this.getFirstEntry();\n if (p !== null) {\n hashSet.add(p);\n while ((p = TreeMap.successor(p)) !== null) {\n hashSet.add(p);\n }\n }\n return hashSet;\n};\n\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateLeft = function(p) {\n if (p != null) {\n var r = p.right;\n p.right = r.left;\n if (r.left != null)\n r.left.parent = p;\n r.parent = p.parent;\n if (p.parent == null)\n this.root_ = r;\n else if (p.parent.left == p)\n p.parent.left = r;\n else\n p.parent.right = r;\n r.left = p;\n p.parent = r;\n }\n};\n\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateRight = function(p) {\n if (p != null) {\n var l = p.left;\n p.left = l.right;\n if (l.right != null) l.right.parent = p;\n l.parent = p.parent;\n if (p.parent == null)\n this.root_ = l;\n else if (p.parent.right == p)\n p.parent.right = l;\n else p.parent.left = l;\n l.right = p;\n p.parent = l;\n }\n};\n\n\n/**\n * @return {Object}\n */\nTreeMap.prototype.getFirstEntry = function() {\n var p = this.root_;\n if (p != null) {\n while (p.left != null) {\n p = p.left;\n }\n }\n return p;\n};\n\n\n/**\n * @param {Object} t\n * @return {Object}\n * @private\n */\nTreeMap.successor = function(t) {\n if (t === null)\n return null;\n else if (t.right !== null) {\n var p = t.right;\n while (p.left !== null) {\n p = p.left;\n }\n return p;\n } else {\n var p = t.parent;\n var ch = t;\n while (p !== null && ch === p.right) {\n ch = p;\n p = p.parent;\n }\n return p;\n }\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.size = function() {\n return this.size_;\n};\n\n\nTreeMap.prototype.containsKey = function(key) {\n var p = this.root_;\n while (p !== null) {\n var cmp = key['compareTo'](p.key);\n if (cmp < 0) {\n p = p.left;\n } else if (cmp > 0) {\n p = p.right;\n } else {\n return true;\n }\n }\n return false;\n};\n","export default class Lineal {\n\tconstructor() {\n\t\tLineal.constructor_.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn Lineal;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineal.constructor_ = function () {};\n","import Set from './Set'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html\n *\n * @extends {Set}\n * @constructor\n * @private\n */\nexport default function SortedSet() {};\nSortedSet.prototype = new Set();\n","import Collection from './Collection'\nimport Iterator from './Iterator'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\nimport SortedSet from './SortedSet'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html\n *\n * @extends {SortedSet}\n * @constructor\n * @private\n */\nexport default function TreeSet() {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n};\nTreeSet.prototype = new SortedSet();\n\n\n/**\n * @override\n */\nTreeSet.prototype.contains = function(o) {\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this.array_[i];\n if (e['compareTo'](o) === 0) {\n return true;\n }\n }\n return false;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.add = function(o) {\n if (this.contains(o)) {\n return false;\n }\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this.array_[i];\n if (e['compareTo'](o) === 1) {\n this.array_.splice(i, 0, o);\n return true;\n }\n }\n\n this.array_.push(o);\n\n return true;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.addAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.add(i.next());\n }\n return true;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.remove = function(e) {\n throw new OperationNotSupported();\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.isEmpty = function() {\n return this.array_.length === 0;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.iterator = function() {\n return new Iterator_(this);\n};\n\n\n\n/**\n * @extends {javascript.util.Iterator}\n * @param {javascript.util.TreeSet} treeSet\n * @constructor\n * @private\n */\nvar Iterator_ = function(treeSet) {\n /**\n * @type {javascript.util.TreeSet}\n * @private\n */\n this.treeSet_ = treeSet;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.next = function() {\n if (this.position_ === this.treeSet_.size()) {\n throw new NoSuchElementException();\n }\n return this.treeSet_.array_[this.position_++];\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function() {\n if (this.position_ < this.treeSet_.size()) {\n return true;\n } else {\n return false;\n }\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.remove = function() {\n throw new OperationNotSupported();\n};\n","import ArrayList from './ArrayList'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html\n *\n * @constructor\n * @private\n */\nexport default function Arrays() {};\n\n/**\n */\nArrays.sort = function() {\n var a = arguments[0], i, t, comparator, compare;\n if (arguments.length === 1) {\n compare = function(a, b) {\n return a.compareTo(b);\n }\n a.sort(compare);\n return;\n } else if (arguments.length === 2) {\n comparator = arguments[1];\n compare = function(a, b) {\n return comparator['compare'](a, b);\n };\n a.sort(compare);\n } else if (arguments.length === 3) {\n t = a.slice(arguments[1], arguments[2]);\n t.sort();\n var r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length));\n a.splice(0, a.length);\n for (i = 0; i < r.length; i++) {\n a.push(r[i]);\n }\n return;\n } else if (arguments.length === 4) {\n t = a.slice(arguments[1], arguments[2]);\n comparator = arguments[3];\n compare = function(a, b) {\n return comparator['compare'](a, b);\n };\n t.sort(compare);\n r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length));\n a.splice(0, a.length);\n for (i = 0; i < r.length; i++) {\n a.push(r[i]);\n }\n return;\n }\n};\n\n\n/**\n * @param {Array} array\n * @return {ArrayList}\n */\nArrays.asList = function(array) {\n var arrayList = new ArrayList();\n for (var i = 0, len = array.length; i < len; i++) {\n arrayList.add(array[i]);\n }\n return arrayList;\n};\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Character from '../../../../java/lang/Character';\nexport default class Dimension {\n\tconstructor() {\n\t\tDimension.constructor_.apply(this, arguments);\n\t}\n\tstatic toDimensionSymbol(dimensionValue) {\n\t\tswitch (dimensionValue) {\n\t\t\tcase Dimension.FALSE:\n\t\t\t\treturn Dimension.SYM_FALSE;\n\t\t\tcase Dimension.TRUE:\n\t\t\t\treturn Dimension.SYM_TRUE;\n\t\t\tcase Dimension.DONTCARE:\n\t\t\t\treturn Dimension.SYM_DONTCARE;\n\t\t\tcase Dimension.P:\n\t\t\t\treturn Dimension.SYM_P;\n\t\t\tcase Dimension.L:\n\t\t\t\treturn Dimension.SYM_L;\n\t\t\tcase Dimension.A:\n\t\t\t\treturn Dimension.SYM_A;\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Unknown dimension value: \" + dimensionValue);\n\t}\n\tstatic toDimensionValue(dimensionSymbol) {\n\t\tswitch (Character.toUpperCase(dimensionSymbol)) {\n\t\t\tcase Dimension.SYM_FALSE:\n\t\t\t\treturn Dimension.FALSE;\n\t\t\tcase Dimension.SYM_TRUE:\n\t\t\t\treturn Dimension.TRUE;\n\t\t\tcase Dimension.SYM_DONTCARE:\n\t\t\t\treturn Dimension.DONTCARE;\n\t\t\tcase Dimension.SYM_P:\n\t\t\t\treturn Dimension.P;\n\t\t\tcase Dimension.SYM_L:\n\t\t\t\treturn Dimension.L;\n\t\t\tcase Dimension.SYM_A:\n\t\t\t\treturn Dimension.A;\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Unknown dimension symbol: \" + dimensionSymbol);\n\t}\n\tgetClass() {\n\t\treturn Dimension;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDimension.constructor_ = function () {};\nDimension.P = 0;\nDimension.L = 1;\nDimension.A = 2;\nDimension.FALSE = -1;\nDimension.TRUE = -2;\nDimension.DONTCARE = -3;\nDimension.SYM_FALSE = 'F';\nDimension.SYM_TRUE = 'T';\nDimension.SYM_DONTCARE = '*';\nDimension.SYM_P = '0';\nDimension.SYM_L = '1';\nDimension.SYM_A = '2';\n","export default class GeometryFilter {\n\tconstructor() {\n\t\tGeometryFilter.constructor_.apply(this, arguments);\n\t}\n\tfilter(geom) {}\n\tgetClass() {\n\t\treturn GeometryFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryFilter.constructor_ = function () {};\n","export default class CoordinateSequenceFilter {\n\tconstructor() {\n\t\tCoordinateSequenceFilter.constructor_.apply(this, arguments);\n\t}\n\tfilter(seq, i) {}\n\tisDone() {}\n\tisGeometryChanged() {}\n\tgetClass() {\n\t\treturn CoordinateSequenceFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCoordinateSequenceFilter.constructor_ = function () {};\n","import TreeSet from '../../../../java/util/TreeSet';\nimport Geometry from './Geometry';\nimport Arrays from '../../../../java/util/Arrays';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Dimension from './Dimension';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport Envelope from './Envelope';\nimport Assert from '../util/Assert';\nexport default class GeometryCollection extends Geometry {\n\tconstructor() {\n\t\tsuper();\n\t\tGeometryCollection.constructor_.apply(this, arguments);\n\t}\n\tcomputeEnvelopeInternal() {\n\t\tvar envelope = new Envelope();\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tenvelope.expandToInclude(this._geometries[i].getEnvelopeInternal());\n\t\t}\n\t\treturn envelope;\n\t}\n\tgetGeometryN(n) {\n\t\treturn this._geometries[n];\n\t}\n\tgetCoordinates() {\n\t\tvar coordinates = new Array(this.getNumPoints()).fill(null);\n\t\tvar k = -1;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tvar childCoordinates = this._geometries[i].getCoordinates();\n\t\t\tfor (var j = 0; j < childCoordinates.length; j++) {\n\t\t\t\tk++;\n\t\t\t\tcoordinates[k] = childCoordinates[j];\n\t\t\t}\n\t\t}\n\t\treturn coordinates;\n\t}\n\tgetArea() {\n\t\tvar area = 0.0;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tarea += this._geometries[i].getArea();\n\t\t}\n\t\treturn area;\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar otherCollection = other;\n\t\t\tif (this._geometries.length !== otherCollection._geometries.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tif (!this._geometries[i].equalsExact(otherCollection._geometries[i], tolerance)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tnormalize() {\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tthis._geometries[i].normalize();\n\t\t}\n\t\tArrays.sort(this._geometries);\n\t}\n\tgetCoordinate() {\n\t\tif (this.isEmpty()) return null;\n\t\treturn this._geometries[0].getCoordinate();\n\t}\n\tgetBoundaryDimension() {\n\t\tvar dimension = Dimension.FALSE;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tdimension = Math.max(dimension, this._geometries[i].getBoundaryDimension());\n\t\t}\n\t\treturn dimension;\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_GEOMETRYCOLLECTION;\n\t}\n\tgetDimension() {\n\t\tvar dimension = Dimension.FALSE;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tdimension = Math.max(dimension, this._geometries[i].getDimension());\n\t\t}\n\t\treturn dimension;\n\t}\n\tgetLength() {\n\t\tvar sum = 0.0;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tsum += this._geometries[i].getLength();\n\t\t}\n\t\treturn sum;\n\t}\n\tgetNumPoints() {\n\t\tvar numPoints = 0;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tnumPoints += this._geometries[i].getNumPoints();\n\t\t}\n\t\treturn numPoints;\n\t}\n\tgetNumGeometries() {\n\t\treturn this._geometries.length;\n\t}\n\treverse() {\n\t\tvar n = this._geometries.length;\n\t\tvar revGeoms = new Array(n).fill(null);\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\trevGeoms[i] = this._geometries[i].reverse();\n\t\t}\n\t\treturn this.getFactory().createGeometryCollection(revGeoms);\n\t}\n\tcompareToSameClass() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar theseElements = new TreeSet(Arrays.asList(this._geometries));\n\t\t\tvar otherElements = new TreeSet(Arrays.asList(o._geometries));\n\t\t\treturn this.compare(theseElements, otherElements);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar gc = o;\n\t\t\tvar n1 = this.getNumGeometries();\n\t\t\tvar n2 = gc.getNumGeometries();\n\t\t\tvar i = 0;\n\t\t\twhile (i < n1 && i < n2) {\n\t\t\t\tvar thisGeom = this.getGeometryN(i);\n\t\t\t\tvar otherGeom = gc.getGeometryN(i);\n\t\t\t\tvar holeComp = thisGeom.compareToSameClass(otherGeom, comp);\n\t\t\t\tif (holeComp !== 0) return holeComp;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < n1) return 1;\n\t\t\tif (i < n2) return -1;\n\t\t\treturn 0;\n\t\t}\n\t}\n\tapply() {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this._geometries.length === 0) return null;\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t\tif (filter.isDone()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t}\n\t\t}\n\t}\n\tgetBoundary() {\n\t\tthis.checkNotGeometryCollection(this);\n\t\tAssert.shouldNeverReachHere();\n\t\treturn null;\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_GEOMETRYCOLLECTION;\n\t}\n\tcopy() {\n\t\tvar geometries = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < geometries.length; i++) {\n\t\t\tgeometries[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new GeometryCollection(geometries, this._factory);\n\t}\n\tisEmpty() {\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tif (!this._geometries[i].isEmpty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tgetClass() {\n\t\treturn GeometryCollection;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryCollection.constructor_ = function () {\n\tthis._geometries = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 2) {\n\t\tlet geometries = arguments[0], factory = arguments[1];\n\t\tGeometry.constructor_.call(this, factory);\n\t\tif (geometries === null) {\n\t\t\tgeometries = [];\n\t\t}\n\t\tif (Geometry.hasNullElements(geometries)) {\n\t\t\tthrow new IllegalArgumentException(\"geometries must not contain null elements\");\n\t\t}\n\t\tthis._geometries = geometries;\n\t}\n};\nGeometryCollection.serialVersionUID = -5694727726395021467;\n","import Geometry from './Geometry';\nimport BoundaryOp from '../operation/BoundaryOp';\nimport Lineal from './Lineal';\nimport GeometryCollection from './GeometryCollection';\nimport Dimension from './Dimension';\nexport default class MultiLineString extends GeometryCollection {\n\tconstructor() {\n\t\tsuper();\n\t\tMultiLineString.constructor_.apply(this, arguments);\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn super.equalsExact.call(this, other, tolerance);\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tgetBoundaryDimension() {\n\t\tif (this.isClosed()) {\n\t\t\treturn Dimension.FALSE;\n\t\t}\n\t\treturn 0;\n\t}\n\tisClosed() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tif (!this._geometries[i].isClosed()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_MULTILINESTRING;\n\t}\n\tgetDimension() {\n\t\treturn 1;\n\t}\n\treverse() {\n\t\tvar nLines = this._geometries.length;\n\t\tvar revLines = new Array(nLines).fill(null);\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\trevLines[nLines - 1 - i] = this._geometries[i].reverse();\n\t\t}\n\t\treturn this.getFactory().createMultiLineString(revLines);\n\t}\n\tgetBoundary() {\n\t\treturn new BoundaryOp(this).getBoundary();\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_MULTILINESTRING;\n\t}\n\tcopy() {\n\t\tvar lineStrings = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < lineStrings.length; i++) {\n\t\t\tlineStrings[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new MultiLineString(lineStrings, this._factory);\n\t}\n\tgetClass() {\n\t\treturn MultiLineString;\n\t}\n\tget interfaces_() {\n\t\treturn [Lineal];\n\t}\n}\nMultiLineString.constructor_ = function () {\n\tlet lineStrings = arguments[0], factory = arguments[1];\n\tGeometryCollection.constructor_.call(this, lineStrings, factory);\n};\nMultiLineString.serialVersionUID = 8166665132445433741;\n","import LineString from '../geom/LineString';\nimport BoundaryNodeRule from '../algorithm/BoundaryNodeRule';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport TreeMap from '../../../../java/util/TreeMap';\nimport MultiLineString from '../geom/MultiLineString';\nexport default class BoundaryOp {\n\tconstructor() {\n\t\tBoundaryOp.constructor_.apply(this, arguments);\n\t}\n\tstatic getBoundary() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet g = arguments[0];\n\t\t\tvar bop = new BoundaryOp(g);\n\t\t\treturn bop.getBoundary();\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet g = arguments[0], bnRule = arguments[1];\n\t\t\tvar bop = new BoundaryOp(g, bnRule);\n\t\t\treturn bop.getBoundary();\n\t\t}\n\t}\n\tboundaryMultiLineString(mLine) {\n\t\tif (this._geom.isEmpty()) {\n\t\t\treturn this.getEmptyMultiPoint();\n\t\t}\n\t\tvar bdyPts = this.computeBoundaryCoordinates(mLine);\n\t\tif (bdyPts.length === 1) {\n\t\t\treturn this._geomFact.createPoint(bdyPts[0]);\n\t\t}\n\t\treturn this._geomFact.createMultiPointFromCoords(bdyPts);\n\t}\n\tgetBoundary() {\n\t\tif (this._geom instanceof LineString) return this.boundaryLineString(this._geom);\n\t\tif (this._geom instanceof MultiLineString) return this.boundaryMultiLineString(this._geom);\n\t\treturn this._geom.getBoundary();\n\t}\n\tboundaryLineString(line) {\n\t\tif (this._geom.isEmpty()) {\n\t\t\treturn this.getEmptyMultiPoint();\n\t\t}\n\t\tif (line.isClosed()) {\n\t\t\tvar closedEndpointOnBoundary = this._bnRule.isInBoundary(2);\n\t\t\tif (closedEndpointOnBoundary) {\n\t\t\t\treturn line.getStartPoint();\n\t\t\t} else {\n\t\t\t\treturn this._geomFact.createMultiPoint();\n\t\t\t}\n\t\t}\n\t\treturn this._geomFact.createMultiPoint([line.getStartPoint(), line.getEndPoint()]);\n\t}\n\tgetEmptyMultiPoint() {\n\t\treturn this._geomFact.createMultiPoint();\n\t}\n\tcomputeBoundaryCoordinates(mLine) {\n\t\tvar bdyPts = new ArrayList();\n\t\tthis._endpointMap = new TreeMap();\n\t\tfor (var i = 0; i < mLine.getNumGeometries(); i++) {\n\t\t\tvar line = mLine.getGeometryN(i);\n\t\t\tif (line.getNumPoints() === 0) continue;\n\t\t\tthis.addEndpoint(line.getCoordinateN(0));\n\t\t\tthis.addEndpoint(line.getCoordinateN(line.getNumPoints() - 1));\n\t\t}\n\t\tfor (var it = this._endpointMap.entrySet().iterator(); it.hasNext(); ) {\n\t\t\tvar entry = it.next();\n\t\t\tvar counter = entry.getValue();\n\t\t\tvar valence = counter.count;\n\t\t\tif (this._bnRule.isInBoundary(valence)) {\n\t\t\t\tbdyPts.add(entry.getKey());\n\t\t\t}\n\t\t}\n\t\treturn CoordinateArrays.toCoordinateArray(bdyPts);\n\t}\n\taddEndpoint(pt) {\n\t\tvar counter = this._endpointMap.get(pt);\n\t\tif (counter === null) {\n\t\t\tcounter = new Counter();\n\t\t\tthis._endpointMap.put(pt, counter);\n\t\t}\n\t\tcounter.count++;\n\t}\n\tgetClass() {\n\t\treturn BoundaryOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nBoundaryOp.constructor_ = function () {\n\tthis._geom = null;\n\tthis._geomFact = null;\n\tthis._bnRule = null;\n\tthis._endpointMap = null;\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tBoundaryOp.constructor_.call(this, geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE);\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], bnRule = arguments[1];\n\t\tthis._geom = geom;\n\t\tthis._geomFact = geom.getFactory();\n\t\tthis._bnRule = bnRule;\n\t}\n};\nclass Counter {\n\tconstructor() {\n\t\tCounter.constructor_.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn Counter;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCounter.constructor_ = function () {\n\tthis.count = null;\n};\n","import Coordinate from '../geom/Coordinate';\nexport default class Length {\n\tconstructor() {\n\t\tLength.constructor_.apply(this, arguments);\n\t}\n\tstatic ofLine(pts) {\n\t\tvar n = pts.size();\n\t\tif (n <= 1) return 0.0;\n\t\tvar len = 0.0;\n\t\tvar p = new Coordinate();\n\t\tpts.getCoordinate(0, p);\n\t\tvar x0 = p.x;\n\t\tvar y0 = p.y;\n\t\tfor (var i = 1; i < n; i++) {\n\t\t\tpts.getCoordinate(i, p);\n\t\t\tvar x1 = p.x;\n\t\t\tvar y1 = p.y;\n\t\t\tvar dx = x1 - x0;\n\t\t\tvar dy = y1 - y0;\n\t\t\tlen += Math.sqrt(dx * dx + dy * dy);\n\t\t\tx0 = x1;\n\t\t\ty0 = y1;\n\t\t}\n\t\treturn len;\n\t}\n\tgetClass() {\n\t\treturn Length;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLength.constructor_ = function () {};\n","export default function PrintStream () {}\n","export default function StringReader () {}\n","export default function DecimalFormat () {}\n","export default function ByteArrayOutputStream () {}\n","export default function IOException () {}\n","export default function LineNumberReader () {}\n","import PrintStream from '../../../../java/io/PrintStream';\nimport StringReader from '../../../../java/io/StringReader';\nimport DecimalFormat from '../../../../java/text/DecimalFormat';\nimport System from '../../../../java/lang/System';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport ByteArrayOutputStream from '../../../../java/io/ByteArrayOutputStream';\nimport Assert from './Assert';\nimport IOException from '../../../../java/io/IOException';\nimport LineNumberReader from '../../../../java/io/LineNumberReader';\nexport default class StringUtil {\n\tconstructor() {\n\t\tStringUtil.constructor_.apply(this, arguments);\n\t}\n\tstatic chars(c, n) {\n\t\tvar ch = new Array(n).fill(null);\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tch[i] = c;\n\t\t}\n\t\treturn new String(ch);\n\t}\n\tstatic getStackTrace() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet t = arguments[0];\n\t\t\tvar os = new ByteArrayOutputStream();\n\t\t\tvar ps = new PrintStream(os);\n\t\t\tt.printStackTrace(ps);\n\t\t\treturn os.toString();\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet t = arguments[0], depth = arguments[1];\n\t\t\tvar stackTrace = \"\";\n\t\t\tvar stringReader = new StringReader(StringUtil.getStackTrace(t));\n\t\t\tvar lineNumberReader = new LineNumberReader(stringReader);\n\t\t\tfor (var i = 0; i < depth; i++) {\n\t\t\t\ttry {\n\t\t\t\t\tstackTrace += lineNumberReader.readLine() + StringUtil.NEWLINE;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e instanceof IOException) {\n\t\t\t\t\t\tAssert.shouldNeverReachHere();\n\t\t\t\t\t} else throw e;\n\t\t\t\t} finally {}\n\t\t\t}\n\t\t\treturn stackTrace;\n\t\t}\n\t}\n\tstatic split(s, separator) {\n\t\tvar separatorlen = separator.length;\n\t\tvar tokenList = new ArrayList();\n\t\tvar tmpString = \"\" + s;\n\t\tvar pos = tmpString.indexOf(separator);\n\t\twhile (pos >= 0) {\n\t\t\tvar token = tmpString.substring(0, pos);\n\t\t\ttokenList.add(token);\n\t\t\ttmpString = tmpString.substring(pos + separatorlen);\n\t\t\tpos = tmpString.indexOf(separator);\n\t\t}\n\t\tif (tmpString.length > 0) tokenList.add(tmpString);\n\t\tvar res = new Array(tokenList.size()).fill(null);\n\t\tfor (var i = 0; i < res.length; i++) {\n\t\t\tres[i] = tokenList.get(i);\n\t\t}\n\t\treturn res;\n\t}\n\tstatic toString() {\n\t\tif (arguments.length === 1 && typeof arguments[0] === \"number\") {\n\t\t\tlet d = arguments[0];\n\t\t\treturn StringUtil.SIMPLE_ORDINATE_FORMAT.format(d);\n\t\t}\n\t}\n\tstatic spaces(n) {\n\t\treturn StringUtil.chars(' ', n);\n\t}\n\tgetClass() {\n\t\treturn StringUtil;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nStringUtil.constructor_ = function () {};\nStringUtil.NEWLINE = System.getProperty(\"line.separator\");\nStringUtil.SIMPLE_ORDINATE_FORMAT = new DecimalFormat(\"0.#\");\n","export default function StringBuilder (str) {\n this.str = str\n }\n \n StringBuilder.prototype.append = function (e) {\n this.str += e\n }\n \n StringBuilder.prototype.setCharAt = function (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n }\n \n StringBuilder.prototype.toString = function (e) {\n return this.str\n }\n ","import hasInterface from '../../../../hasInterface';\nimport StringUtil from '../util/StringUtil';\nimport Double from '../../../../java/lang/Double';\nimport CoordinateSequence from './CoordinateSequence';\nimport StringBuilder from '../../../../java/lang/StringBuilder';\nexport default class CoordinateSequences {\n\tconstructor() {\n\t\tCoordinateSequences.constructor_.apply(this, arguments);\n\t}\n\tstatic copyCoord(src, srcPos, dest, destPos) {\n\t\tvar minDim = Math.min(src.getDimension(), dest.getDimension());\n\t\tfor (var dim = 0; dim < minDim; dim++) {\n\t\t\tdest.setOrdinate(destPos, dim, src.getOrdinate(srcPos, dim));\n\t\t}\n\t}\n\tstatic isRing(seq) {\n\t\tvar n = seq.size();\n\t\tif (n === 0) return true;\n\t\tif (n <= 3) return false;\n\t\treturn seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y);\n\t}\n\tstatic isEqual(cs1, cs2) {\n\t\tvar cs1Size = cs1.size();\n\t\tvar cs2Size = cs2.size();\n\t\tif (cs1Size !== cs2Size) return false;\n\t\tvar dim = Math.min(cs1.getDimension(), cs2.getDimension());\n\t\tfor (var i = 0; i < cs1Size; i++) {\n\t\t\tfor (var d = 0; d < dim; d++) {\n\t\t\t\tvar v1 = cs1.getOrdinate(i, d);\n\t\t\t\tvar v2 = cs2.getOrdinate(i, d);\n\t\t\t\tif (cs1.getOrdinate(i, d) === cs2.getOrdinate(i, d)) continue;\n\t\t\t\tif (Double.isNaN(v1) && Double.isNaN(v2)) continue;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tstatic extend(fact, seq, size) {\n\t\tvar newseq = fact.create(size, seq.getDimension());\n\t\tvar n = seq.size();\n\t\tCoordinateSequences.copy(seq, 0, newseq, 0, n);\n\t\tif (n > 0) {\n\t\t\tfor (var i = n; i < size; i++) CoordinateSequences.copy(seq, n - 1, newseq, i, 1);\n\t\t}\n\t\treturn newseq;\n\t}\n\tstatic reverse(seq) {\n\t\tvar last = seq.size() - 1;\n\t\tvar mid = Math.trunc(last / 2);\n\t\tfor (var i = 0; i <= mid; i++) {\n\t\t\tCoordinateSequences.swap(seq, i, last - i);\n\t\t}\n\t}\n\tstatic swap(seq, i, j) {\n\t\tif (i === j) return null;\n\t\tfor (var dim = 0; dim < seq.getDimension(); dim++) {\n\t\t\tvar tmp = seq.getOrdinate(i, dim);\n\t\t\tseq.setOrdinate(i, dim, seq.getOrdinate(j, dim));\n\t\t\tseq.setOrdinate(j, dim, tmp);\n\t\t}\n\t}\n\tstatic copy(src, srcPos, dest, destPos, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tCoordinateSequences.copyCoord(src, srcPos + i, dest, destPos + i);\n\t\t}\n\t}\n\tstatic toString() {\n\t\tif (arguments.length === 1 && hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\tlet cs = arguments[0];\n\t\t\tvar size = cs.size();\n\t\t\tif (size === 0) return \"()\";\n\t\t\tvar dim = cs.getDimension();\n\t\t\tvar builder = new StringBuilder();\n\t\t\tbuilder.append('(');\n\t\t\tfor (var i = 0; i < size; i++) {\n\t\t\t\tif (i > 0) builder.append(\" \");\n\t\t\t\tfor (var d = 0; d < dim; d++) {\n\t\t\t\t\tif (d > 0) builder.append(\",\");\n\t\t\t\t\tbuilder.append(StringUtil.toString(cs.getOrdinate(i, d)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuilder.append(')');\n\t\t\treturn builder.toString();\n\t\t}\n\t}\n\tstatic ensureValidRing(fact, seq) {\n\t\tvar n = seq.size();\n\t\tif (n === 0) return seq;\n\t\tif (n <= 3) return CoordinateSequences.createClosedRing(fact, seq, 4);\n\t\tvar isClosed = seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y);\n\t\tif (isClosed) return seq;\n\t\treturn CoordinateSequences.createClosedRing(fact, seq, n + 1);\n\t}\n\tstatic createClosedRing(fact, seq, size) {\n\t\tvar newseq = fact.create(size, seq.getDimension());\n\t\tvar n = seq.size();\n\t\tCoordinateSequences.copy(seq, 0, newseq, 0, n);\n\t\tfor (var i = n; i < size; i++) CoordinateSequences.copy(seq, 0, newseq, i, 1);\n\t\treturn newseq;\n\t}\n\tgetClass() {\n\t\treturn CoordinateSequences;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCoordinateSequences.constructor_ = function () {};\n","import Geometry from './Geometry';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport BoundaryOp from '../operation/BoundaryOp';\nimport Length from '../algorithm/Length';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Lineal from './Lineal';\nimport CoordinateSequences from './CoordinateSequences';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Dimension from './Dimension';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport Envelope from './Envelope';\nexport default class LineString extends Geometry {\n\tconstructor() {\n\t\tsuper();\n\t\tLineString.constructor_.apply(this, arguments);\n\t}\n\tcomputeEnvelopeInternal() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn new Envelope();\n\t\t}\n\t\treturn this._points.expandEnvelope(new Envelope());\n\t}\n\tisRing() {\n\t\treturn this.isClosed() && this.isSimple();\n\t}\n\tgetCoordinates() {\n\t\treturn this._points.toCoordinateArray();\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar otherLineString = other;\n\t\t\tif (this._points.size() !== otherLineString._points.size()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\t\tif (!this.equal(this._points.getCoordinate(i), otherLineString._points.getCoordinate(i), tolerance)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tnormalize() {\n\t\tfor (var i = 0; i < Math.trunc(this._points.size() / 2); i++) {\n\t\t\tvar j = this._points.size() - 1 - i;\n\t\t\tif (!this._points.getCoordinate(i).equals(this._points.getCoordinate(j))) {\n\t\t\t\tif (this._points.getCoordinate(i).compareTo(this._points.getCoordinate(j)) > 0) {\n\t\t\t\t\tvar copy = this._points.copy();\n\t\t\t\t\tCoordinateSequences.reverse(copy);\n\t\t\t\t\tthis._points = copy;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinate() {\n\t\tif (this.isEmpty()) return null;\n\t\treturn this._points.getCoordinate(0);\n\t}\n\tgetBoundaryDimension() {\n\t\tif (this.isClosed()) {\n\t\t\treturn Dimension.FALSE;\n\t\t}\n\t\treturn 0;\n\t}\n\tisClosed() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1));\n\t}\n\tgetEndPoint() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.getPointN(this.getNumPoints() - 1);\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_LINESTRING;\n\t}\n\tgetDimension() {\n\t\treturn 1;\n\t}\n\tgetLength() {\n\t\treturn Length.ofLine(this._points);\n\t}\n\tgetNumPoints() {\n\t\treturn this._points.size();\n\t}\n\treverse() {\n\t\tvar seq = this._points.copy();\n\t\tCoordinateSequences.reverse(seq);\n\t\tvar revLine = this.getFactory().createLineString(seq);\n\t\treturn revLine;\n\t}\n\tcompareToSameClass() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar line = o;\n\t\t\tvar i = 0;\n\t\t\tvar j = 0;\n\t\t\twhile (i < this._points.size() && j < line._points.size()) {\n\t\t\t\tvar comparison = this._points.getCoordinate(i).compareTo(line._points.getCoordinate(j));\n\t\t\t\tif (comparison !== 0) {\n\t\t\t\t\treturn comparison;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (i < this._points.size()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (j < line._points.size()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar line = o;\n\t\t\treturn comp.compare(this._points, line._points);\n\t\t}\n\t}\n\tapply() {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\t\tfilter.filter(this._points.getCoordinate(i));\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this._points.size() === 0) return null;\n\t\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\t\tfilter.filter(this._points, i);\n\t\t\t\tif (filter.isDone()) break;\n\t\t\t}\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t}\n\t}\n\tgetBoundary() {\n\t\treturn new BoundaryOp(this).getBoundary();\n\t}\n\tisEquivalentClass(other) {\n\t\treturn other instanceof LineString;\n\t}\n\tgetCoordinateN(n) {\n\t\treturn this._points.getCoordinate(n);\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_LINESTRING;\n\t}\n\tcopy() {\n\t\treturn new LineString(this._points.copy(), this._factory);\n\t}\n\tgetCoordinateSequence() {\n\t\treturn this._points;\n\t}\n\tisEmpty() {\n\t\treturn this._points.size() === 0;\n\t}\n\tinit(points) {\n\t\tif (points === null) {\n\t\t\tpoints = this.getFactory().getCoordinateSequenceFactory().create([]);\n\t\t}\n\t\tif (points.size() === 1) {\n\t\t\tthrow new IllegalArgumentException(\"Invalid number of points in LineString (found \" + points.size() + \" - must be 0 or >= 2)\");\n\t\t}\n\t\tthis._points = points;\n\t}\n\tisCoordinate(pt) {\n\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\tif (this._points.getCoordinate(i).equals(pt)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetStartPoint() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.getPointN(0);\n\t}\n\tgetPointN(n) {\n\t\treturn this.getFactory().createPoint(this._points.getCoordinate(n));\n\t}\n\tgetClass() {\n\t\treturn LineString;\n\t}\n\tget interfaces_() {\n\t\treturn [Lineal];\n\t}\n}\nLineString.constructor_ = function () {\n\tthis._points = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 2) {\n\t\tlet points = arguments[0], factory = arguments[1];\n\t\tGeometry.constructor_.call(this, factory);\n\t\tthis.init(points);\n\t}\n};\nLineString.serialVersionUID = 3110669828065365560;\n","export default class Puntal {\n\tconstructor() {\n\t\tPuntal.constructor_.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn Puntal;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPuntal.constructor_ = function () {};\n","import Geometry from './Geometry';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Dimension from './Dimension';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport Puntal from './Puntal';\nimport Envelope from './Envelope';\nimport Assert from '../util/Assert';\nexport default class Point extends Geometry {\n\tconstructor() {\n\t\tsuper();\n\t\tPoint.constructor_.apply(this, arguments);\n\t}\n\tcomputeEnvelopeInternal() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn new Envelope();\n\t\t}\n\t\tvar env = new Envelope();\n\t\tenv.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0));\n\t\treturn env;\n\t}\n\tgetCoordinates() {\n\t\treturn this.isEmpty() ? [] : [this.getCoordinate()];\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.isEmpty() && other.isEmpty()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (this.isEmpty() !== other.isEmpty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn this.equal(other.getCoordinate(), this.getCoordinate(), tolerance);\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tnormalize() {}\n\tgetCoordinate() {\n\t\treturn this._coordinates.size() !== 0 ? this._coordinates.getCoordinate(0) : null;\n\t}\n\tgetBoundaryDimension() {\n\t\treturn Dimension.FALSE;\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_POINT;\n\t}\n\tgetDimension() {\n\t\treturn 0;\n\t}\n\tgetNumPoints() {\n\t\treturn this.isEmpty() ? 0 : 1;\n\t}\n\treverse() {\n\t\treturn this.copy();\n\t}\n\tgetX() {\n\t\tif (this.getCoordinate() === null) {\n\t\t\tthrow new IllegalStateException(\"getX called on empty Point\");\n\t\t}\n\t\treturn this.getCoordinate().x;\n\t}\n\tcompareToSameClass() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet other = arguments[0];\n\t\t\tvar point = other;\n\t\t\treturn this.getCoordinate().compareTo(point.getCoordinate());\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet other = arguments[0], comp = arguments[1];\n\t\t\tvar point = other;\n\t\t\treturn comp.compare(this._coordinates, point._coordinates);\n\t\t}\n\t}\n\tapply() {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfilter.filter(this.getCoordinate());\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this.isEmpty()) return null;\n\t\t\tfilter.filter(this._coordinates, 0);\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t}\n\t}\n\tgetBoundary() {\n\t\treturn this.getFactory().createGeometryCollection();\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_POINT;\n\t}\n\tcopy() {\n\t\treturn new Point(this._coordinates.copy(), this._factory);\n\t}\n\tgetCoordinateSequence() {\n\t\treturn this._coordinates;\n\t}\n\tgetY() {\n\t\tif (this.getCoordinate() === null) {\n\t\t\tthrow new IllegalStateException(\"getY called on empty Point\");\n\t\t}\n\t\treturn this.getCoordinate().y;\n\t}\n\tisEmpty() {\n\t\treturn this._coordinates.size() === 0;\n\t}\n\tinit(coordinates) {\n\t\tif (coordinates === null) {\n\t\t\tcoordinates = this.getFactory().getCoordinateSequenceFactory().create([]);\n\t\t}\n\t\tAssert.isTrue(coordinates.size() <= 1);\n\t\tthis._coordinates = coordinates;\n\t}\n\tisSimple() {\n\t\treturn true;\n\t}\n\tgetClass() {\n\t\treturn Point;\n\t}\n\tget interfaces_() {\n\t\treturn [Puntal];\n\t}\n}\nPoint.constructor_ = function () {\n\tthis._coordinates = null;\n\tlet coordinates = arguments[0], factory = arguments[1];\n\tGeometry.constructor_.call(this, factory);\n\tthis.init(coordinates);\n};\nPoint.serialVersionUID = 4902022702746614570;\n","import hasInterface from '../../../../hasInterface';\nimport Coordinate from '../geom/Coordinate';\nimport CoordinateSequence from '../geom/CoordinateSequence';\nexport default class Area {\n\tconstructor() {\n\t\tArea.constructor_.apply(this, arguments);\n\t}\n\tstatic ofRing() {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet ring = arguments[0];\n\t\t\treturn Math.abs(Area.ofRingSigned(ring));\n\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\tlet ring = arguments[0];\n\t\t\treturn Math.abs(Area.ofRingSigned(ring));\n\t\t}\n\t}\n\tstatic ofRingSigned() {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet ring = arguments[0];\n\t\t\tif (ring.length < 3) return 0.0;\n\t\t\tvar sum = 0.0;\n\t\t\tvar x0 = ring[0].x;\n\t\t\tfor (var i = 1; i < ring.length - 1; i++) {\n\t\t\t\tvar x = ring[i].x - x0;\n\t\t\t\tvar y1 = ring[i + 1].y;\n\t\t\t\tvar y2 = ring[i - 1].y;\n\t\t\t\tsum += x * (y2 - y1);\n\t\t\t}\n\t\t\treturn sum / 2.0;\n\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\tlet ring = arguments[0];\n\t\t\tvar n = ring.size();\n\t\t\tif (n < 3) return 0.0;\n\t\t\tvar p0 = new Coordinate();\n\t\t\tvar p1 = new Coordinate();\n\t\t\tvar p2 = new Coordinate();\n\t\t\tring.getCoordinate(0, p1);\n\t\t\tring.getCoordinate(1, p2);\n\t\t\tvar x0 = p1.x;\n\t\t\tp2.x -= x0;\n\t\t\tvar sum = 0.0;\n\t\t\tfor (var i = 1; i < n - 1; i++) {\n\t\t\t\tp0.y = p1.y;\n\t\t\t\tp1.x = p2.x;\n\t\t\t\tp1.y = p2.y;\n\t\t\t\tring.getCoordinate(i + 1, p2);\n\t\t\t\tp2.x -= x0;\n\t\t\t\tsum += p1.x * (p0.y - p2.y);\n\t\t\t}\n\t\t\treturn sum / 2.0;\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn Area;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nArea.constructor_ = function () {};\n","export default class Polygonal {\n\tconstructor() {\n\t\tPolygonal.constructor_.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn Polygonal;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPolygonal.constructor_ = function () {};\n","import Area from '../algorithm/Area';\nimport Geometry from './Geometry';\nimport Arrays from '../../../../java/util/Arrays';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Orientation from '../algorithm/Orientation';\nimport System from '../../../../java/lang/System';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport CoordinateArrays from './CoordinateArrays';\nimport Polygonal from './Polygonal';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nexport default class Polygon extends Geometry {\n\tconstructor() {\n\t\tsuper();\n\t\tPolygon.constructor_.apply(this, arguments);\n\t}\n\tcomputeEnvelopeInternal() {\n\t\treturn this._shell.getEnvelopeInternal();\n\t}\n\tgetCoordinates() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn [];\n\t\t}\n\t\tvar coordinates = new Array(this.getNumPoints()).fill(null);\n\t\tvar k = -1;\n\t\tvar shellCoordinates = this._shell.getCoordinates();\n\t\tfor (var x = 0; x < shellCoordinates.length; x++) {\n\t\t\tk++;\n\t\t\tcoordinates[k] = shellCoordinates[x];\n\t\t}\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tvar childCoordinates = this._holes[i].getCoordinates();\n\t\t\tfor (var j = 0; j < childCoordinates.length; j++) {\n\t\t\t\tk++;\n\t\t\t\tcoordinates[k] = childCoordinates[j];\n\t\t\t}\n\t\t}\n\t\treturn coordinates;\n\t}\n\tgetArea() {\n\t\tvar area = 0.0;\n\t\tarea += Area.ofRing(this._shell.getCoordinateSequence());\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tarea -= Area.ofRing(this._holes[i].getCoordinateSequence());\n\t\t}\n\t\treturn area;\n\t}\n\tisRectangle() {\n\t\tif (this.getNumInteriorRing() !== 0) return false;\n\t\tif (this._shell === null) return false;\n\t\tif (this._shell.getNumPoints() !== 5) return false;\n\t\tvar seq = this._shell.getCoordinateSequence();\n\t\tvar env = this.getEnvelopeInternal();\n\t\tfor (var i = 0; i < 5; i++) {\n\t\t\tvar x = seq.getX(i);\n\t\t\tif (!(x === env.getMinX() || x === env.getMaxX())) return false;\n\t\t\tvar y = seq.getY(i);\n\t\t\tif (!(y === env.getMinY() || y === env.getMaxY())) return false;\n\t\t}\n\t\tvar prevX = seq.getX(0);\n\t\tvar prevY = seq.getY(0);\n\t\tfor (var i = 1; i <= 4; i++) {\n\t\t\tvar x = seq.getX(i);\n\t\t\tvar y = seq.getY(i);\n\t\t\tvar xChanged = x !== prevX;\n\t\t\tvar yChanged = y !== prevY;\n\t\t\tif (xChanged === yChanged) return false;\n\t\t\tprevX = x;\n\t\t\tprevY = y;\n\t\t}\n\t\treturn true;\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar otherPolygon = other;\n\t\t\tvar thisShell = this._shell;\n\t\t\tvar otherPolygonShell = otherPolygon._shell;\n\t\t\tif (!thisShell.equalsExact(otherPolygonShell, tolerance)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this._holes.length !== otherPolygon._holes.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tif (!this._holes[i].equalsExact(otherPolygon._holes[i], tolerance)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tnormalize() {\n\t\tif (arguments.length === 0) {\n\t\t\tthis.normalize(this._shell, true);\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tthis.normalize(this._holes[i], false);\n\t\t\t}\n\t\t\tArrays.sort(this._holes);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet ring = arguments[0], clockwise = arguments[1];\n\t\t\tif (ring.isEmpty()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar uniqueCoordinates = new Array(ring.getCoordinates().length - 1).fill(null);\n\t\t\tSystem.arraycopy(ring.getCoordinates(), 0, uniqueCoordinates, 0, uniqueCoordinates.length);\n\t\t\tvar minCoordinate = CoordinateArrays.minCoordinate(ring.getCoordinates());\n\t\t\tCoordinateArrays.scroll(uniqueCoordinates, minCoordinate);\n\t\t\tSystem.arraycopy(uniqueCoordinates, 0, ring.getCoordinates(), 0, uniqueCoordinates.length);\n\t\t\tring.getCoordinates()[uniqueCoordinates.length] = uniqueCoordinates[0];\n\t\t\tif (Orientation.isCCW(ring.getCoordinates()) === clockwise) {\n\t\t\t\tCoordinateArrays.reverse(ring.getCoordinates());\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinate() {\n\t\treturn this._shell.getCoordinate();\n\t}\n\tgetNumInteriorRing() {\n\t\treturn this._holes.length;\n\t}\n\tgetBoundaryDimension() {\n\t\treturn 1;\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_POLYGON;\n\t}\n\tgetDimension() {\n\t\treturn 2;\n\t}\n\tgetLength() {\n\t\tvar len = 0.0;\n\t\tlen += this._shell.getLength();\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tlen += this._holes[i].getLength();\n\t\t}\n\t\treturn len;\n\t}\n\tgetNumPoints() {\n\t\tvar numPoints = this._shell.getNumPoints();\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tnumPoints += this._holes[i].getNumPoints();\n\t\t}\n\t\treturn numPoints;\n\t}\n\treverse() {\n\t\tvar poly = this.copy();\n\t\tpoly._shell = this._shell.copy().reverse();\n\t\tpoly._holes = new Array(this._holes.length).fill(null);\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tpoly._holes[i] = this._holes[i].copy().reverse();\n\t\t}\n\t\treturn poly;\n\t}\n\tconvexHull() {\n\t\treturn this.getExteriorRing().convexHull();\n\t}\n\tcompareToSameClass() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar thisShell = this._shell;\n\t\t\tvar otherShell = o._shell;\n\t\t\treturn thisShell.compareToSameClass(otherShell);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar poly = o;\n\t\t\tvar thisShell = this._shell;\n\t\t\tvar otherShell = poly._shell;\n\t\t\tvar shellComp = thisShell.compareToSameClass(otherShell, comp);\n\t\t\tif (shellComp !== 0) return shellComp;\n\t\t\tvar nHole1 = this.getNumInteriorRing();\n\t\t\tvar nHole2 = poly.getNumInteriorRing();\n\t\t\tvar i = 0;\n\t\t\twhile (i < nHole1 && i < nHole2) {\n\t\t\t\tvar thisHole = this.getInteriorRingN(i);\n\t\t\t\tvar otherHole = poly.getInteriorRingN(i);\n\t\t\t\tvar holeComp = thisHole.compareToSameClass(otherHole, comp);\n\t\t\t\tif (holeComp !== 0) return holeComp;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < nHole1) return 1;\n\t\t\tif (i < nHole2) return -1;\n\t\t\treturn 0;\n\t\t}\n\t}\n\tapply() {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tthis._shell.apply(filter);\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tthis._holes[i].apply(filter);\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tthis._shell.apply(filter);\n\t\t\tif (!filter.isDone()) {\n\t\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\t\tthis._holes[i].apply(filter);\n\t\t\t\t\tif (filter.isDone()) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t\tthis._shell.apply(filter);\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tthis._holes[i].apply(filter);\n\t\t\t}\n\t\t}\n\t}\n\tgetBoundary() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn this.getFactory().createMultiLineString();\n\t\t}\n\t\tvar rings = new Array(this._holes.length + 1).fill(null);\n\t\trings[0] = this._shell;\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\trings[i + 1] = this._holes[i];\n\t\t}\n\t\tif (rings.length <= 1) return this.getFactory().createLinearRing(rings[0].getCoordinateSequence());\n\t\treturn this.getFactory().createMultiLineString(rings);\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_POLYGON;\n\t}\n\tcopy() {\n\t\tvar shellCopy = this._shell.copy();\n\t\tvar holeCopies = new Array(this._holes.length).fill(null);\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tholeCopies[i] = this._holes[i].copy();\n\t\t}\n\t\treturn new Polygon(shellCopy, holeCopies, this._factory);\n\t}\n\tgetExteriorRing() {\n\t\treturn this._shell;\n\t}\n\tisEmpty() {\n\t\treturn this._shell.isEmpty();\n\t}\n\tgetInteriorRingN(n) {\n\t\treturn this._holes[n];\n\t}\n\tgetClass() {\n\t\treturn Polygon;\n\t}\n\tget interfaces_() {\n\t\treturn [Polygonal];\n\t}\n}\nPolygon.constructor_ = function () {\n\tthis._shell = null;\n\tthis._holes = null;\n\tlet shell = arguments[0], holes = arguments[1], factory = arguments[2];\n\tGeometry.constructor_.call(this, factory);\n\tif (shell === null) {\n\t\tshell = this.getFactory().createLinearRing();\n\t}\n\tif (holes === null) {\n\t\tholes = [];\n\t}\n\tif (Geometry.hasNullElements(holes)) {\n\t\tthrow new IllegalArgumentException(\"holes must not contain null elements\");\n\t}\n\tif (shell.isEmpty() && Geometry.hasNonEmptyElements(holes)) {\n\t\tthrow new IllegalArgumentException(\"shell is empty but holes are not\");\n\t}\n\tthis._shell = shell;\n\tthis._holes = holes;\n};\nPolygon.serialVersionUID = -3494792200821764533;\n","import Geometry from './Geometry';\nimport GeometryCollection from './GeometryCollection';\nimport Dimension from './Dimension';\nimport Puntal from './Puntal';\nexport default class MultiPoint extends GeometryCollection {\n\tconstructor() {\n\t\tsuper();\n\t\tMultiPoint.constructor_.apply(this, arguments);\n\t}\n\tisValid() {\n\t\treturn true;\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn super.equalsExact.call(this, other, tolerance);\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tgetCoordinate() {\n\t\tif (arguments.length === 1 && Number.isInteger(arguments[0])) {\n\t\t\tlet n = arguments[0];\n\t\t\treturn this._geometries[n].getCoordinate();\n\t\t} else return super.getCoordinate.apply(this, arguments);\n\t}\n\tgetBoundaryDimension() {\n\t\treturn Dimension.FALSE;\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_MULTIPOINT;\n\t}\n\tgetDimension() {\n\t\treturn 0;\n\t}\n\tgetBoundary() {\n\t\treturn this.getFactory().createGeometryCollection();\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_MULTIPOINT;\n\t}\n\tcopy() {\n\t\tvar points = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < points.length; i++) {\n\t\t\tpoints[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new MultiPoint(points, this._factory);\n\t}\n\tgetClass() {\n\t\treturn MultiPoint;\n\t}\n\tget interfaces_() {\n\t\treturn [Puntal];\n\t}\n}\nMultiPoint.constructor_ = function () {\n\tlet points = arguments[0], factory = arguments[1];\n\tGeometryCollection.constructor_.call(this, points, factory);\n};\nMultiPoint.serialVersionUID = -8048474874175355449;\n","import LineString from './LineString';\nimport Geometry from './Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport GeometryFactory from './GeometryFactory';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport CoordinateSequences from './CoordinateSequences';\nimport CoordinateSequence from './CoordinateSequence';\nimport Dimension from './Dimension';\nexport default class LinearRing extends LineString {\n\tconstructor() {\n\t\tsuper();\n\t\tLinearRing.constructor_.apply(this, arguments);\n\t}\n\tgetBoundaryDimension() {\n\t\treturn Dimension.FALSE;\n\t}\n\tisClosed() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn true;\n\t\t}\n\t\treturn super.isClosed.call(this);\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_LINEARRING;\n\t}\n\treverse() {\n\t\tvar seq = this._points.copy();\n\t\tCoordinateSequences.reverse(seq);\n\t\tvar rev = this.getFactory().createLinearRing(seq);\n\t\treturn rev;\n\t}\n\tvalidateConstruction() {\n\t\tif (!this.isEmpty() && !super.isClosed.call(this)) {\n\t\t\tthrow new IllegalArgumentException(\"Points of LinearRing do not form a closed linestring\");\n\t\t}\n\t\tif (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < LinearRing.MINIMUM_VALID_SIZE) {\n\t\t\tthrow new IllegalArgumentException(\"Invalid number of points in LinearRing (found \" + this.getCoordinateSequence().size() + \" - must be 0 or >= 4)\");\n\t\t}\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_LINEARRING;\n\t}\n\tcopy() {\n\t\treturn new LinearRing(this._points.copy(), this._factory);\n\t}\n\tgetClass() {\n\t\treturn LinearRing;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLinearRing.constructor_ = function () {\n\tif (arguments[0] instanceof Array && arguments[1] instanceof GeometryFactory) {\n\t\tlet points = arguments[0], factory = arguments[1];\n\t\tLinearRing.constructor_.call(this, factory.getCoordinateSequenceFactory().create(points), factory);\n\t} else if (hasInterface(arguments[0], CoordinateSequence) && arguments[1] instanceof GeometryFactory) {\n\t\tlet points = arguments[0], factory = arguments[1];\n\t\tLineString.constructor_.call(this, points, factory);\n\t\tthis.validateConstruction();\n\t}\n};\nLinearRing.MINIMUM_VALID_SIZE = 4;\nLinearRing.serialVersionUID = -4261142084085851829;\n","import Geometry from './Geometry';\nimport GeometryCollection from './GeometryCollection';\nimport Polygonal from './Polygonal';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class MultiPolygon extends GeometryCollection {\n\tconstructor() {\n\t\tsuper();\n\t\tMultiPolygon.constructor_.apply(this, arguments);\n\t}\n\tequalsExact() {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn super.equalsExact.call(this, other, tolerance);\n\t\t} else return super.equalsExact.apply(this, arguments);\n\t}\n\tgetBoundaryDimension() {\n\t\treturn 1;\n\t}\n\tgetTypeCode() {\n\t\treturn Geometry.TYPECODE_MULTIPOLYGON;\n\t}\n\tgetDimension() {\n\t\treturn 2;\n\t}\n\treverse() {\n\t\tvar n = this._geometries.length;\n\t\tvar revGeoms = new Array(n).fill(null);\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\trevGeoms[i] = this._geometries[i].reverse();\n\t\t}\n\t\treturn this.getFactory().createMultiPolygon(revGeoms);\n\t}\n\tgetBoundary() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn this.getFactory().createMultiLineString();\n\t\t}\n\t\tvar allRings = new ArrayList();\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tvar polygon = this._geometries[i];\n\t\t\tvar rings = polygon.getBoundary();\n\t\t\tfor (var j = 0; j < rings.getNumGeometries(); j++) {\n\t\t\t\tallRings.add(rings.getGeometryN(j));\n\t\t\t}\n\t\t}\n\t\tvar allRingsArray = new Array(allRings.size()).fill(null);\n\t\treturn this.getFactory().createMultiLineString(allRings.toArray(allRingsArray));\n\t}\n\tgetGeometryType() {\n\t\treturn Geometry.TYPENAME_MULTIPOLYGON;\n\t}\n\tcopy() {\n\t\tvar polygons = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < polygons.length; i++) {\n\t\t\tpolygons[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new MultiPolygon(polygons, this._factory);\n\t}\n\tgetClass() {\n\t\treturn MultiPolygon;\n\t}\n\tget interfaces_() {\n\t\treturn [Polygonal];\n\t}\n}\nMultiPolygon.constructor_ = function () {\n\tlet polygons = arguments[0], factory = arguments[1];\n\tGeometryCollection.constructor_.call(this, polygons, factory);\n};\nMultiPolygon.serialVersionUID = -551033529766975875;\n","import LineString from '../LineString';\nimport Point from '../Point';\nimport Polygon from '../Polygon';\nimport MultiPoint from '../MultiPoint';\nimport LinearRing from '../LinearRing';\nimport MultiPolygon from '../MultiPolygon';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport MultiLineString from '../MultiLineString';\nexport default class GeometryEditor {\n\tconstructor() {\n\t\tGeometryEditor.constructor_.apply(this, arguments);\n\t}\n\tsetCopyUserData(isUserDataCopied) {\n\t\tthis._isUserDataCopied = isUserDataCopied;\n\t}\n\tedit(geometry, operation) {\n\t\tif (geometry === null) return null;\n\t\tvar result = this.editInternal(geometry, operation);\n\t\tif (this._isUserDataCopied) {\n\t\t\tresult.setUserData(geometry.getUserData());\n\t\t}\n\t\treturn result;\n\t}\n\teditInternal(geometry, operation) {\n\t\tif (this._factory === null) this._factory = geometry.getFactory();\n\t\tif (geometry instanceof GeometryCollection) {\n\t\t\treturn this.editGeometryCollection(geometry, operation);\n\t\t}\n\t\tif (geometry instanceof Polygon) {\n\t\t\treturn this.editPolygon(geometry, operation);\n\t\t}\n\t\tif (geometry instanceof Point) {\n\t\t\treturn operation.edit(geometry, this._factory);\n\t\t}\n\t\tif (geometry instanceof LineString) {\n\t\t\treturn operation.edit(geometry, this._factory);\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"Unsupported Geometry class: \" + geometry.getClass().getName());\n\t\treturn null;\n\t}\n\teditGeometryCollection(collection, operation) {\n\t\tvar collectionForType = operation.edit(collection, this._factory);\n\t\tvar geometries = new ArrayList();\n\t\tfor (var i = 0; i < collectionForType.getNumGeometries(); i++) {\n\t\t\tvar geometry = this.edit(collectionForType.getGeometryN(i), operation);\n\t\t\tif (geometry === null || geometry.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tgeometries.add(geometry);\n\t\t}\n\t\tif (collectionForType.getClass() === MultiPoint) {\n\t\t\treturn this._factory.createMultiPoint(geometries.toArray([]));\n\t\t}\n\t\tif (collectionForType.getClass() === MultiLineString) {\n\t\t\treturn this._factory.createMultiLineString(geometries.toArray([]));\n\t\t}\n\t\tif (collectionForType.getClass() === MultiPolygon) {\n\t\t\treturn this._factory.createMultiPolygon(geometries.toArray([]));\n\t\t}\n\t\treturn this._factory.createGeometryCollection(geometries.toArray([]));\n\t}\n\teditPolygon(polygon, operation) {\n\t\tvar newPolygon = operation.edit(polygon, this._factory);\n\t\tif (newPolygon === null) newPolygon = this._factory.createPolygon();\n\t\tif (newPolygon.isEmpty()) {\n\t\t\treturn newPolygon;\n\t\t}\n\t\tvar shell = this.edit(newPolygon.getExteriorRing(), operation);\n\t\tif (shell === null || shell.isEmpty()) {\n\t\t\treturn this._factory.createPolygon();\n\t\t}\n\t\tvar holes = new ArrayList();\n\t\tfor (var i = 0; i < newPolygon.getNumInteriorRing(); i++) {\n\t\t\tvar hole = this.edit(newPolygon.getInteriorRingN(i), operation);\n\t\t\tif (hole === null || hole.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tholes.add(hole);\n\t\t}\n\t\treturn this._factory.createPolygon(shell, holes.toArray([]));\n\t}\n\tgetClass() {\n\t\treturn GeometryEditor;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nfunction GeometryEditorOperation() {}\nGeometryEditor.GeometryEditorOperation = GeometryEditorOperation;\nclass NoOpGeometryOperation {\n\tconstructor() {\n\t\tNoOpGeometryOperation.constructor_.apply(this, arguments);\n\t}\n\tedit(geometry, factory) {\n\t\treturn geometry;\n\t}\n\tgetClass() {\n\t\treturn NoOpGeometryOperation;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryEditorOperation];\n\t}\n}\nNoOpGeometryOperation.constructor_ = function () {};\nclass CoordinateOperation {\n\tconstructor() {\n\t\tCoordinateOperation.constructor_.apply(this, arguments);\n\t}\n\tedit(geometry, factory) {\n\t\tvar coordinates = this.edit(geometry.getCoordinates(), geometry);\n\t\tif (geometry instanceof LinearRing) {\n\t\t\tif (coordinates === null) return factory.createLinearRing(); else return factory.createLinearRing(coordinates);\n\t\t}\n\t\tif (geometry instanceof LineString) {\n\t\t\tif (coordinates === null) return factory.createLineString(); else return factory.createLineString(coordinates);\n\t\t}\n\t\tif (geometry instanceof Point) {\n\t\t\tif (coordinates === null || coordinates.length === 0) return factory.createPoint(); else return factory.createPoint(coordinates[0]);\n\t\t}\n\t\treturn geometry;\n\t}\n\tgetClass() {\n\t\treturn CoordinateOperation;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryEditorOperation];\n\t}\n}\nCoordinateOperation.constructor_ = function () {};\nclass CoordinateSequenceOperation {\n\tconstructor() {\n\t\tCoordinateSequenceOperation.constructor_.apply(this, arguments);\n\t}\n\tedit(geometry, factory) {\n\t\tif (geometry instanceof LinearRing) {\n\t\t\treturn factory.createLinearRing(this.edit(geometry.getCoordinateSequence(), geometry));\n\t\t}\n\t\tif (geometry instanceof LineString) {\n\t\t\treturn factory.createLineString(this.edit(geometry.getCoordinateSequence(), geometry));\n\t\t}\n\t\tif (geometry instanceof Point) {\n\t\t\treturn factory.createPoint(this.edit(geometry.getCoordinateSequence(), geometry));\n\t\t}\n\t\treturn geometry;\n\t}\n\tgetClass() {\n\t\treturn CoordinateSequenceOperation;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryEditorOperation];\n\t}\n}\nCoordinateSequenceOperation.constructor_ = function () {};\nGeometryEditor.NoOpGeometryOperation = NoOpGeometryOperation;\nGeometryEditor.CoordinateOperation = CoordinateOperation;\nGeometryEditor.CoordinateSequenceOperation = CoordinateSequenceOperation;\nGeometryEditor.constructor_ = function () {\n\tthis._factory = null;\n\tthis._isUserDataCopied = false;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet factory = arguments[0];\n\t\tthis._factory = factory;\n\t}\n};\n","import hasInterface from '../../../../../hasInterface';\nimport Coordinate from '../Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Double from '../../../../../java/lang/Double';\nimport CoordinateSequence from '../CoordinateSequence';\nimport Serializable from '../../../../../java/io/Serializable';\nimport StringBuilder from '../../../../../java/lang/StringBuilder';\nexport default class CoordinateArraySequence {\n\tconstructor() {\n\t\tCoordinateArraySequence.constructor_.apply(this, arguments);\n\t}\n\tsetOrdinate(index, ordinateIndex, value) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase CoordinateSequence.X:\n\t\t\t\tthis._coordinates[index].x = value;\n\t\t\t\tbreak;\n\t\t\tcase CoordinateSequence.Y:\n\t\t\t\tthis._coordinates[index].y = value;\n\t\t\t\tbreak;\n\t\t\tcase CoordinateSequence.Z:\n\t\t\t\tthis._coordinates[index].z = value;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new IllegalArgumentException(\"invalid ordinateIndex\");\n\t\t}\n\t}\n\tsize() {\n\t\treturn this._coordinates.length;\n\t}\n\tgetOrdinate(index, ordinateIndex) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase CoordinateSequence.X:\n\t\t\t\treturn this._coordinates[index].x;\n\t\t\tcase CoordinateSequence.Y:\n\t\t\t\treturn this._coordinates[index].y;\n\t\t\tcase CoordinateSequence.Z:\n\t\t\t\treturn this._coordinates[index].z;\n\t\t}\n\t\treturn Double.NaN;\n\t}\n\tgetCoordinate() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet i = arguments[0];\n\t\t\treturn this._coordinates[i];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], coord = arguments[1];\n\t\t\tcoord.x = this._coordinates[index].x;\n\t\t\tcoord.y = this._coordinates[index].y;\n\t\t\tcoord.z = this._coordinates[index].z;\n\t\t}\n\t}\n\tgetCoordinateCopy(i) {\n\t\treturn new Coordinate(this._coordinates[i]);\n\t}\n\tgetDimension() {\n\t\treturn this._dimension;\n\t}\n\tgetX(index) {\n\t\treturn this._coordinates[index].x;\n\t}\n\texpandEnvelope(env) {\n\t\tfor (var i = 0; i < this._coordinates.length; i++) {\n\t\t\tenv.expandToInclude(this._coordinates[i]);\n\t\t}\n\t\treturn env;\n\t}\n\tcopy() {\n\t\tvar cloneCoordinates = new Array(this.size()).fill(null);\n\t\tfor (var i = 0; i < this._coordinates.length; i++) {\n\t\t\tcloneCoordinates[i] = this._coordinates[i].copy();\n\t\t}\n\t\treturn new CoordinateArraySequence(cloneCoordinates, this._dimension);\n\t}\n\ttoString() {\n\t\tif (this._coordinates.length > 0) {\n\t\t\tvar strBuilder = new StringBuilder(17 * this._coordinates.length);\n\t\t\tstrBuilder.append('(');\n\t\t\tstrBuilder.append(this._coordinates[0]);\n\t\t\tfor (var i = 1; i < this._coordinates.length; i++) {\n\t\t\t\tstrBuilder.append(\", \");\n\t\t\t\tstrBuilder.append(this._coordinates[i]);\n\t\t\t}\n\t\t\tstrBuilder.append(')');\n\t\t\treturn strBuilder.toString();\n\t\t} else {\n\t\t\treturn \"()\";\n\t\t}\n\t}\n\tgetY(index) {\n\t\treturn this._coordinates[index].y;\n\t}\n\ttoCoordinateArray() {\n\t\treturn this._coordinates;\n\t}\n\tgetClass() {\n\t\treturn CoordinateArraySequence;\n\t}\n\tget interfaces_() {\n\t\treturn [CoordinateSequence, Serializable];\n\t}\n}\nCoordinateArraySequence.constructor_ = function () {\n\tthis._dimension = 3;\n\tthis._coordinates = null;\n\tif (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet coordinates = arguments[0];\n\t\t\tCoordinateArraySequence.constructor_.call(this, coordinates, 3);\n\t\t} else if (Number.isInteger(arguments[0])) {\n\t\t\tlet size = arguments[0];\n\t\t\tthis._coordinates = new Array(size).fill(null);\n\t\t\tfor (var i = 0; i < size; i++) {\n\t\t\t\tthis._coordinates[i] = new Coordinate();\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\tlet coordSeq = arguments[0];\n\t\t\tif (coordSeq === null) {\n\t\t\t\tthis._coordinates = new Array(0).fill(null);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tthis._dimension = coordSeq.getDimension();\n\t\t\tthis._coordinates = new Array(coordSeq.size()).fill(null);\n\t\t\tfor (var i = 0; i < this._coordinates.length; i++) {\n\t\t\t\tthis._coordinates[i] = coordSeq.getCoordinateCopy(i);\n\t\t\t}\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tif (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {\n\t\t\tlet coordinates = arguments[0], dimension = arguments[1];\n\t\t\tthis._coordinates = coordinates;\n\t\t\tthis._dimension = dimension;\n\t\t\tif (coordinates === null) this._coordinates = new Array(0).fill(null);\n\t\t} else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n\t\t\tlet size = arguments[0], dimension = arguments[1];\n\t\t\tthis._coordinates = new Array(size).fill(null);\n\t\t\tthis._dimension = dimension;\n\t\t\tfor (var i = 0; i < size; i++) {\n\t\t\t\tthis._coordinates[i] = new Coordinate();\n\t\t\t}\n\t\t}\n\t}\n};\nCoordinateArraySequence.serialVersionUID = -915438501601840650;\n","import CoordinateSequenceFactory from '../CoordinateSequenceFactory';\nimport hasInterface from '../../../../../hasInterface';\nimport CoordinateArraySequence from './CoordinateArraySequence';\nimport CoordinateSequence from '../CoordinateSequence';\nimport Serializable from '../../../../../java/io/Serializable';\nexport default class CoordinateArraySequenceFactory {\n\tconstructor() {\n\t\tCoordinateArraySequenceFactory.constructor_.apply(this, arguments);\n\t}\n\tstatic instance() {\n\t\treturn CoordinateArraySequenceFactory.instanceObject;\n\t}\n\treadResolve() {\n\t\treturn CoordinateArraySequenceFactory.instance();\n\t}\n\tcreate() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new CoordinateArraySequence(coordinates);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordSeq = arguments[0];\n\t\t\t\treturn new CoordinateArraySequence(coordSeq);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet size = arguments[0], dimension = arguments[1];\n\t\t\tif (dimension > 3) dimension = 3;\n\t\t\tif (dimension < 2) return new CoordinateArraySequence(size);\n\t\t\treturn new CoordinateArraySequence(size, dimension);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn CoordinateArraySequenceFactory;\n\t}\n\tget interfaces_() {\n\t\treturn [CoordinateSequenceFactory, Serializable];\n\t}\n}\nCoordinateArraySequenceFactory.constructor_ = function () {};\nCoordinateArraySequenceFactory.serialVersionUID = -4099577099607551657;\nCoordinateArraySequenceFactory.instanceObject = new CoordinateArraySequenceFactory();\n","// shared pointer\nvar i\n// shortcuts\nvar defineProperty = Object.defineProperty\nfunction is (a, b) { return (a === b) || (a !== a && b !== b) } // eslint-disable-line\n\nexport default createCollection({\n // WeakMap#delete(key:void*):boolean\n 'delete': sharedDelete,\n // :was Map#get(key:void*[, d3fault:void*]):void*\n // Map#has(key:void*):boolean\n has: mapHas,\n // Map#get(key:void*):boolean\n get: sharedGet,\n // Map#set(key:void*, value:void*):void\n set: sharedSet,\n // Map#keys(void):Iterator\n keys: sharedKeys,\n // Map#values(void):Iterator\n values: sharedValues,\n // Map#entries(void):Iterator\n entries: mapEntries,\n // Map#forEach(callback:Function, context:void*):void ==> callback.call(context, key, value, mapObject) === not in specs`\n forEach: sharedForEach,\n // Map#clear():\n clear: sharedClear\n})\n\nfunction createCollection (proto, objectOnly) {\n function Collection (a) {\n if (!this || this.constructor !== Collection) return new Collection(a)\n this._keys = []\n this._values = []\n this._itp = [] // iteration pointers\n this.objectOnly = objectOnly\n\n // parse initial iterable argument passed\n if (a) init.call(this, a)\n }\n\n // define size for non object-only collections\n if (!objectOnly) {\n defineProperty(proto, 'size', {\n get: sharedSize\n })\n }\n\n // set prototype\n proto.constructor = Collection\n Collection.prototype = proto\n\n return Collection\n}\n\nfunction init (a) {\n // init Set argument, like `[1,2,3,{}]`\n if (this.add) a.forEach(this.add, this)\n // init Map argument like `[[1,2], [{}, 4]]`\n else a.forEach(function (a) { this.set(a[0], a[1]) }, this)\n}\n\nfunction sharedDelete (key) {\n if (this.has(key)) {\n this._keys.splice(i, 1)\n this._values.splice(i, 1)\n // update iteration pointers\n this._itp.forEach(function (p) { if (i < p[0]) p[0]-- })\n }\n // Aurora here does it while Canary doesn't\n return i > -1\n}\n\nfunction sharedGet (key) {\n return this.has(key) ? this._values[i] : undefined\n}\n\nfunction has (list, key) {\n if (this.objectOnly && key !== Object(key)) throw new TypeError('Invalid value used as weak collection key')\n // NaN or 0 passed\n if (key !== key || key === 0) for (i = list.length; i-- && !is(list[i], key);) {} // eslint-disable-line\n else i = list.indexOf(key)\n return i > -1\n}\n\nfunction mapHas (value) {\n return has.call(this, this._keys, value)\n}\n\nfunction sharedSet (key, value) {\n this.has(key) ? this._values[i] = value : this._values[this._keys.push(key) - 1] = value\n return this\n}\n\nfunction sharedClear () {\n (this._keys || 0).length =\n this._values.length = 0\n}\n\nfunction sharedKeys () {\n return sharedIterator(this._itp, this._keys)\n}\n\nfunction sharedValues () {\n return sharedIterator(this._itp, this._values)\n}\n\nfunction mapEntries () {\n return sharedIterator(this._itp, this._keys, this._values)\n}\n\nfunction sharedIterator (itp, array, array2) {\n var p = [0]\n var done = false\n itp.push(p)\n return {\n next: function () {\n var v\n var k = p[0]\n if (!done && k < array.length) {\n v = array2 ? [array[k], array2[k]] : array[k]\n p[0]++\n } else {\n done = true\n itp.splice(itp.indexOf(p), 1)\n }\n return { done: done, value: v }\n }\n }\n}\n\nfunction sharedSize () {\n return this._values.length\n}\n\nfunction sharedForEach (callback, context) {\n var it = this.entries()\n for (;;) {\n var r = it.next()\n if (r.done) break\n callback.call(context, r.value[1], r.value[0], this)\n }\n}\n","import ArrayList from './ArrayList'\nimport MapInterface from './Map'\nimport HashSet from './HashSet'\nimport MapPolyfill from '../../Map'\n\nlet MapImpl = typeof Map === 'undefined' || !Map.prototype.values ? MapPolyfill : Map\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html\n *\n * @extends {javascript.util.Map}\n * @constructor\n * @private\n */\nexport default function HashMap () {\n /**\n * @type {Object}\n * @private\n */\n this.map_ = new MapImpl()\n}\nHashMap.prototype = new MapInterface()\n\n/**\n * @override\n */\nHashMap.prototype.get = function (key) {\n return this.map_.get(key) || null\n}\n\n/**\n * @override\n */\nHashMap.prototype.put = function (key, value) {\n this.map_.set(key, value)\n return value\n}\n\n/**\n * @override\n */\nHashMap.prototype.values = function () {\n const arrayList = new ArrayList()\n const it = this.map_.values()\n let o = it.next()\n while (!o.done) {\n arrayList.add(o.value)\n o = it.next()\n }\n return arrayList\n}\n\n/**\n * @override\n */\nHashMap.prototype.entrySet = function () {\n const hashSet = new HashSet()\n this.map_.entries().forEach(entry => hashSet.add(entry))\n return hashSet\n}\n\n/**\n * @override\n */\nHashMap.prototype.size = function () {\n return this.map_.size()\n}\n","import HashMap from '../../../../java/util/HashMap';\nimport Coordinate from './Coordinate';\nimport Double from '../../../../java/lang/Double';\nimport Integer from '../../../../java/lang/Integer';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Serializable from '../../../../java/io/Serializable';\nexport default class PrecisionModel {\n\tconstructor() {\n\t\tPrecisionModel.constructor_.apply(this, arguments);\n\t}\n\tstatic mostPrecise(pm1, pm2) {\n\t\tif (pm1.compareTo(pm2) >= 0) return pm1;\n\t\treturn pm2;\n\t}\n\tequals(other) {\n\t\tif (!(other instanceof PrecisionModel)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar otherPrecisionModel = other;\n\t\treturn this._modelType === otherPrecisionModel._modelType && this._scale === otherPrecisionModel._scale;\n\t}\n\tcompareTo(o) {\n\t\tvar other = o;\n\t\tvar sigDigits = this.getMaximumSignificantDigits();\n\t\tvar otherSigDigits = other.getMaximumSignificantDigits();\n\t\treturn new Integer(sigDigits).compareTo(new Integer(otherSigDigits));\n\t}\n\tgetScale() {\n\t\treturn this._scale;\n\t}\n\tisFloating() {\n\t\treturn this._modelType === PrecisionModel.FLOATING || this._modelType === PrecisionModel.FLOATING_SINGLE;\n\t}\n\tgetType() {\n\t\treturn this._modelType;\n\t}\n\ttoString() {\n\t\tvar description = \"UNKNOWN\";\n\t\tif (this._modelType === PrecisionModel.FLOATING) {\n\t\t\tdescription = \"Floating\";\n\t\t} else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n\t\t\tdescription = \"Floating-Single\";\n\t\t} else if (this._modelType === PrecisionModel.FIXED) {\n\t\t\tdescription = \"Fixed (Scale=\" + this.getScale() + \")\";\n\t\t}\n\t\treturn description;\n\t}\n\tmakePrecise() {\n\t\tif (typeof arguments[0] === \"number\") {\n\t\t\tlet val = arguments[0];\n\t\t\tif (Double.isNaN(val)) return val;\n\t\t\tif (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n\t\t\t\tvar floatSingleVal = val;\n\t\t\t\treturn floatSingleVal;\n\t\t\t}\n\t\t\tif (this._modelType === PrecisionModel.FIXED) {\n\t\t\t\treturn Math.round(val * this._scale) / this._scale;\n\t\t\t}\n\t\t\treturn val;\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet coord = arguments[0];\n\t\t\tif (this._modelType === PrecisionModel.FLOATING) return null;\n\t\t\tcoord.x = this.makePrecise(coord.x);\n\t\t\tcoord.y = this.makePrecise(coord.y);\n\t\t}\n\t}\n\tgetMaximumSignificantDigits() {\n\t\tvar maxSigDigits = 16;\n\t\tif (this._modelType === PrecisionModel.FLOATING) {\n\t\t\tmaxSigDigits = 16;\n\t\t} else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n\t\t\tmaxSigDigits = 6;\n\t\t} else if (this._modelType === PrecisionModel.FIXED) {\n\t\t\tmaxSigDigits = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)));\n\t\t}\n\t\treturn maxSigDigits;\n\t}\n\tsetScale(scale) {\n\t\tthis._scale = Math.abs(scale);\n\t}\n\tgetClass() {\n\t\treturn PrecisionModel;\n\t}\n\tget interfaces_() {\n\t\treturn [Serializable, Comparable];\n\t}\n}\nclass Type {\n\tconstructor() {\n\t\tType.constructor_.apply(this, arguments);\n\t}\n\treadResolve() {\n\t\treturn Type.nameToTypeMap.get(this._name);\n\t}\n\ttoString() {\n\t\treturn this._name;\n\t}\n\tgetClass() {\n\t\treturn Type;\n\t}\n\tget interfaces_() {\n\t\treturn [Serializable];\n\t}\n}\nType.constructor_ = function () {\n\tthis._name = null;\n\tlet name = arguments[0];\n\tthis._name = name;\n\tType.nameToTypeMap.put(name, this);\n};\nType.serialVersionUID = -5528602631731589822;\nType.nameToTypeMap = new HashMap();\nPrecisionModel.Type = Type;\nPrecisionModel.constructor_ = function () {\n\tthis._modelType = null;\n\tthis._scale = null;\n\tif (arguments.length === 0) {\n\t\tthis._modelType = PrecisionModel.FLOATING;\n\t} else if (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Type) {\n\t\t\tlet modelType = arguments[0];\n\t\t\tthis._modelType = modelType;\n\t\t\tif (modelType === PrecisionModel.FIXED) {\n\t\t\t\tthis.setScale(1.0);\n\t\t\t}\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet scale = arguments[0];\n\t\t\tthis._modelType = PrecisionModel.FIXED;\n\t\t\tthis.setScale(scale);\n\t\t} else if (arguments[0] instanceof PrecisionModel) {\n\t\t\tlet pm = arguments[0];\n\t\t\tthis._modelType = pm._modelType;\n\t\t\tthis._scale = pm._scale;\n\t\t}\n\t}\n};\nPrecisionModel.serialVersionUID = 7777263578777803835;\nPrecisionModel.FIXED = new Type(\"FIXED\");\nPrecisionModel.FLOATING = new Type(\"FLOATING\");\nPrecisionModel.FLOATING_SINGLE = new Type(\"FLOATING SINGLE\");\nPrecisionModel.maximumPreciseValue = 9007199254740992.0;\n","import CoordinateSequenceFactory from './CoordinateSequenceFactory';\nimport LineString from './LineString';\nimport Geometry from './Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport Coordinate from './Coordinate';\nimport Point from './Point';\nimport Polygon from './Polygon';\nimport MultiPoint from './MultiPoint';\nimport GeometryEditor from './util/GeometryEditor';\nimport LinearRing from './LinearRing';\nimport CoordinateArraySequenceFactory from './impl/CoordinateArraySequenceFactory';\nimport MultiPolygon from './MultiPolygon';\nimport CoordinateSequences from './CoordinateSequences';\nimport CoordinateSequence from './CoordinateSequence';\nimport GeometryCollection from './GeometryCollection';\nimport PrecisionModel from './PrecisionModel';\nimport Serializable from '../../../../java/io/Serializable';\nimport Assert from '../util/Assert';\nimport MultiLineString from './MultiLineString';\nexport default class GeometryFactory {\n\tconstructor() {\n\t\tGeometryFactory.constructor_.apply(this, arguments);\n\t}\n\tstatic toMultiPolygonArray(multiPolygons) {\n\t\tvar multiPolygonArray = new Array(multiPolygons.size()).fill(null);\n\t\treturn multiPolygons.toArray(multiPolygonArray);\n\t}\n\tstatic toGeometryArray(geometries) {\n\t\tif (geometries === null) return null;\n\t\tvar geometryArray = new Array(geometries.size()).fill(null);\n\t\treturn geometries.toArray(geometryArray);\n\t}\n\tstatic getDefaultCoordinateSequenceFactory() {\n\t\treturn CoordinateArraySequenceFactory.instance();\n\t}\n\tstatic toMultiLineStringArray(multiLineStrings) {\n\t\tvar multiLineStringArray = new Array(multiLineStrings.size()).fill(null);\n\t\treturn multiLineStrings.toArray(multiLineStringArray);\n\t}\n\tstatic toLineStringArray(lineStrings) {\n\t\tvar lineStringArray = new Array(lineStrings.size()).fill(null);\n\t\treturn lineStrings.toArray(lineStringArray);\n\t}\n\tstatic toMultiPointArray(multiPoints) {\n\t\tvar multiPointArray = new Array(multiPoints.size()).fill(null);\n\t\treturn multiPoints.toArray(multiPointArray);\n\t}\n\tstatic toLinearRingArray(linearRings) {\n\t\tvar linearRingArray = new Array(linearRings.size()).fill(null);\n\t\treturn linearRings.toArray(linearRingArray);\n\t}\n\tstatic toPointArray(points) {\n\t\tvar pointArray = new Array(points.size()).fill(null);\n\t\treturn points.toArray(pointArray);\n\t}\n\tstatic toPolygonArray(polygons) {\n\t\tvar polygonArray = new Array(polygons.size()).fill(null);\n\t\treturn polygons.toArray(polygonArray);\n\t}\n\tstatic createPointFromInternalCoord(coord, exemplar) {\n\t\texemplar.getPrecisionModel().makePrecise(coord);\n\t\treturn exemplar.getFactory().createPoint(coord);\n\t}\n\ttoGeometry(envelope) {\n\t\tif (envelope.isNull()) {\n\t\t\treturn this.createPoint();\n\t\t}\n\t\tif (envelope.getMinX() === envelope.getMaxX() && envelope.getMinY() === envelope.getMaxY()) {\n\t\t\treturn this.createPoint(new Coordinate(envelope.getMinX(), envelope.getMinY()));\n\t\t}\n\t\tif (envelope.getMinX() === envelope.getMaxX() || envelope.getMinY() === envelope.getMaxY()) {\n\t\t\treturn this.createLineString([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY())]);\n\t\t}\n\t\treturn this.createPolygon(this.createLinearRing([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMinY())]), null);\n\t}\n\tcreateLineString() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createLineString(this.getCoordinateSequenceFactory().create([]));\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn this.createLineString(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new LineString(coordinates, this);\n\t\t\t}\n\t\t}\n\t}\n\tcreateMultiLineString() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new MultiLineString(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet lineStrings = arguments[0];\n\t\t\treturn new MultiLineString(lineStrings, this);\n\t\t}\n\t}\n\tbuildGeometry(geomList) {\n\t\tvar geomClass = null;\n\t\tvar isHeterogeneous = false;\n\t\tvar hasGeometryCollection = false;\n\t\tfor (var i = geomList.iterator(); i.hasNext(); ) {\n\t\t\tvar geom = i.next();\n\t\t\tvar partClass = geom.getClass();\n\t\t\tif (geomClass === null) {\n\t\t\t\tgeomClass = partClass;\n\t\t\t}\n\t\t\tif (partClass !== geomClass) {\n\t\t\t\tisHeterogeneous = true;\n\t\t\t}\n\t\t\tif (geom instanceof GeometryCollection) hasGeometryCollection = true;\n\t\t}\n\t\tif (geomClass === null) {\n\t\t\treturn this.createGeometryCollection();\n\t\t}\n\t\tif (isHeterogeneous || hasGeometryCollection) {\n\t\t\treturn this.createGeometryCollection(GeometryFactory.toGeometryArray(geomList));\n\t\t}\n\t\tvar geom0 = geomList.iterator().next();\n\t\tvar isCollection = geomList.size() > 1;\n\t\tif (isCollection) {\n\t\t\tif (geom0 instanceof Polygon) {\n\t\t\t\treturn this.createMultiPolygon(GeometryFactory.toPolygonArray(geomList));\n\t\t\t} else if (geom0 instanceof LineString) {\n\t\t\t\treturn this.createMultiLineString(GeometryFactory.toLineStringArray(geomList));\n\t\t\t} else if (geom0 instanceof Point) {\n\t\t\t\treturn this.createMultiPoint(GeometryFactory.toPointArray(geomList));\n\t\t\t}\n\t\t\tAssert.shouldNeverReachHere(\"Unhandled class: \" + geom0.getClass().getName());\n\t\t}\n\t\treturn geom0;\n\t}\n\tcreateMultiPointFromCoords(coordinates) {\n\t\treturn this.createMultiPoint(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null);\n\t}\n\tcreatePoint() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createPoint(this.getCoordinateSequenceFactory().create([]));\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet coordinate = arguments[0];\n\t\t\t\treturn this.createPoint(coordinate !== null ? this.getCoordinateSequenceFactory().create([coordinate]) : null);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new Point(coordinates, this);\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinateSequenceFactory() {\n\t\treturn this._coordinateSequenceFactory;\n\t}\n\tcreatePolygon() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createPolygon(null, null);\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet shell = arguments[0];\n\t\t\t\treturn this.createPolygon(this.createLinearRing(shell));\n\t\t\t} else if (arguments[0] instanceof Array) {\n\t\t\t\tlet shell = arguments[0];\n\t\t\t\treturn this.createPolygon(this.createLinearRing(shell));\n\t\t\t} else if (arguments[0] instanceof LinearRing) {\n\t\t\t\tlet shell = arguments[0];\n\t\t\t\treturn this.createPolygon(shell, null);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet shell = arguments[0], holes = arguments[1];\n\t\t\treturn new Polygon(shell, holes, this);\n\t\t}\n\t}\n\tgetSRID() {\n\t\treturn this._SRID;\n\t}\n\tcreateGeometryCollection() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new GeometryCollection(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet geometries = arguments[0];\n\t\t\treturn new GeometryCollection(geometries, this);\n\t\t}\n\t}\n\tcreateGeometry(g) {\n\t\tvar editor = new GeometryEditor(this);\n\t\treturn editor.edit(g, new (class {\n\t\t\tedit() {\n\t\t\t\tif (arguments.length === 2 && (arguments[1] instanceof Geometry && hasInterface(arguments[0], CoordinateSequence))) {\n\t\t\t\t\tlet coordSeq = arguments[0], geometry = arguments[1];\n\t\t\t\t\treturn this._coordinateSequenceFactory.create(coordSeq);\n\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t}\n\tgetPrecisionModel() {\n\t\treturn this._precisionModel;\n\t}\n\tcreateLinearRing() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createLinearRing(this.getCoordinateSequenceFactory().create([]));\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn this.createLinearRing(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new LinearRing(coordinates, this);\n\t\t\t}\n\t\t}\n\t}\n\tcreateMultiPolygon() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new MultiPolygon(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet polygons = arguments[0];\n\t\t\treturn new MultiPolygon(polygons, this);\n\t\t}\n\t}\n\tcreateMultiPoint() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new MultiPoint(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet point = arguments[0];\n\t\t\t\treturn new MultiPoint(point, this);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\tif (coordinates === null) {\n\t\t\t\t\treturn this.createMultiPoint(new Array(0).fill(null));\n\t\t\t\t}\n\t\t\t\tvar points = new Array(coordinates.size()).fill(null);\n\t\t\t\tfor (var i = 0; i < coordinates.size(); i++) {\n\t\t\t\t\tvar ptSeq = this.getCoordinateSequenceFactory().create(1, coordinates.getDimension());\n\t\t\t\t\tCoordinateSequences.copy(coordinates, i, ptSeq, 0, 1);\n\t\t\t\t\tpoints[i] = this.createPoint(ptSeq);\n\t\t\t\t}\n\t\t\t\treturn this.createMultiPoint(points);\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn GeometryFactory;\n\t}\n\tget interfaces_() {\n\t\treturn [Serializable];\n\t}\n}\nGeometryFactory.constructor_ = function () {\n\tthis._precisionModel = null;\n\tthis._coordinateSequenceFactory = null;\n\tthis._SRID = null;\n\tif (arguments.length === 0) {\n\t\tGeometryFactory.constructor_.call(this, new PrecisionModel(), 0);\n\t} else if (arguments.length === 1) {\n\t\tif (hasInterface(arguments[0], CoordinateSequenceFactory)) {\n\t\t\tlet coordinateSequenceFactory = arguments[0];\n\t\t\tGeometryFactory.constructor_.call(this, new PrecisionModel(), 0, coordinateSequenceFactory);\n\t\t} else if (arguments[0] instanceof PrecisionModel) {\n\t\t\tlet precisionModel = arguments[0];\n\t\t\tGeometryFactory.constructor_.call(this, precisionModel, 0, GeometryFactory.getDefaultCoordinateSequenceFactory());\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet precisionModel = arguments[0], SRID = arguments[1];\n\t\tGeometryFactory.constructor_.call(this, precisionModel, SRID, GeometryFactory.getDefaultCoordinateSequenceFactory());\n\t} else if (arguments.length === 3) {\n\t\tlet precisionModel = arguments[0], SRID = arguments[1], coordinateSequenceFactory = arguments[2];\n\t\tthis._precisionModel = precisionModel;\n\t\tthis._coordinateSequenceFactory = coordinateSequenceFactory;\n\t\tthis._SRID = SRID;\n\t}\n};\nGeometryFactory.serialVersionUID = -6820524753094095635;\n","import Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\n\nconst regExes = {\n 'typeStr': /^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,\n 'emptyTypeStr': /^\\s*(\\w+)\\s*EMPTY\\s*$/,\n 'spaces': /\\s+/,\n 'parenComma': /\\)\\s*,\\s*\\(/,\n 'doubleParenComma': /\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/, // can't use {2} here\n 'trimParens': /^\\s*\\(?(.*?)\\)?\\s*$/\n}\n\n/**\n * Class for reading and writing Well-Known Text.\n *\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\nexport default class WKTParser {\n /** Create a new parser for WKT\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of WKTParser.\n * @private\n */\n constructor(geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.precisionModel = this.geometryFactory.getPrecisionModel()\n }\n\n /**\n * Deserialize a WKT string and return a geometry. Supports WKT for POINT,\n * MULTIPOINT, LINESTRING, LINEARRING, MULTILINESTRING, POLYGON, MULTIPOLYGON,\n * and GEOMETRYCOLLECTION.\n *\n * @param {String} wkt A WKT string.\n * @return {Geometry} A geometry instance.\n * @private\n */\n read (wkt) {\n var geometry, type, str\n wkt = wkt.replace(/[\\n\\r]/g, ' ')\n var matches = regExes.typeStr.exec(wkt)\n if (wkt.search('EMPTY') !== -1) {\n matches = regExes.emptyTypeStr.exec(wkt)\n matches[2] = undefined\n }\n if (matches) {\n type = matches[1].toLowerCase()\n str = matches[2]\n if (parse[type]) {\n geometry = parse[type].call(this, str)\n }\n }\n\n if (geometry === undefined) throw new Error('Could not parse WKT ' + wkt)\n\n return geometry\n }\n\n /**\n * Serialize a geometry into a WKT string.\n *\n * @param {Geometry} geometry A feature or array of features.\n * @return {String} The WKT string representation of the input geometries.\n * @private\n */\n write (geometry) {\n return this.extractGeometry(geometry)\n }\n\n /**\n * Entry point to construct the WKT for a single Geometry object.\n *\n * @param {Geometry} geometry\n * @return {String} A WKT string of representing the geometry.\n * @private\n */\n extractGeometry (geometry) {\n var type = geometry.getGeometryType().toLowerCase()\n if (!extract[type]) {\n return null\n }\n var wktType = type.toUpperCase()\n var data\n if (geometry.isEmpty()) {\n data = wktType + ' EMPTY'\n } else {\n data = wktType + '(' + extract[type].call(this, geometry) + ')'\n }\n return data\n }\n}\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual data extraction.\n * @private\n */\nconst extract = {\n coordinate (coordinate) {\n return coordinate.x + ' ' + coordinate.y\n },\n\n /**\n * Return a space delimited string of point coordinates.\n *\n * @param {Point}\n * point\n * @return {String} A string of coordinates representing the point.\n */\n point (point) {\n return extract.coordinate.call(this, point._coordinates._coordinates[0])\n },\n\n /**\n * Return a comma delimited string of point coordinates from a multipoint.\n *\n * @param {MultiPoint}\n * multipoint\n * @return {String} A string of point coordinate strings representing the\n * multipoint.\n */\n multipoint (multipoint) {\n var array = []\n for (let i = 0, len = multipoint._geometries.length; i < len; ++i) {\n array.push('(' + extract.point.call(this, multipoint._geometries[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of point coordinates from a line.\n *\n * @param {LineString} linestring\n * @return {String} A string of point coordinate strings representing the linestring.\n */\n linestring (linestring) {\n var array = []\n for (let i = 0, len = linestring._points._coordinates.length; i < len; ++i) {\n array.push(extract.coordinate.call(this, linestring._points._coordinates[i]))\n }\n return array.join(',')\n },\n\n linearring (linearring) {\n var array = []\n for (let i = 0, len = linearring._points._coordinates.length; i < len; ++i) {\n array.push(extract.coordinate.call(this, linearring._points._coordinates[i]))\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linestring strings from a\n * multilinestring.\n *\n * @param {MultiLineString} multilinestring\n * @return {String} A string of of linestring strings representing the multilinestring.\n */\n multilinestring (multilinestring) {\n var array = []\n for (let i = 0, len = multilinestring._geometries.length; i < len; ++i) {\n array.push('(' +\n extract.linestring.call(this, multilinestring._geometries[i]) +\n ')')\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linear ring arrays from a polygon.\n *\n * @param {Polygon} polygon\n * @return {String} An array of linear ring arrays representing the polygon.\n */\n polygon (polygon) {\n var array = []\n array.push('(' + extract.linestring.call(this, polygon._shell) + ')')\n for (let i = 0, len = polygon._holes.length; i < len; ++i) {\n array.push('(' + extract.linestring.call(this, polygon._holes[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return an array of polygon arrays from a multipolygon.\n *\n * @param {MultiPolygon} multipolygon\n * @return {String} An array of polygon arrays representing the multipolygon.\n */\n multipolygon (multipolygon) {\n var array = []\n for (let i = 0, len = multipolygon._geometries.length; i < len; ++i) {\n array.push('(' + extract.polygon.call(this, multipolygon._geometries[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return the WKT portion between 'GEOMETRYCOLLECTION(' and ')' for an\n * geometrycollection.\n *\n * @param {GeometryCollection} collection\n * @return {String} internal WKT representation of the collection.\n */\n geometrycollection (collection) {\n var array = []\n for (let i = 0, len = collection._geometries.length; i < len; ++i) {\n array.push(this.extractGeometry(collection._geometries[i]))\n }\n return array.join(',')\n }\n}\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual parsing.\n * @private\n */\nconst parse = {\n \n coord (str) {\n var coords = str.trim().split(regExes.spaces)\n var coord = new Coordinate(Number.parseFloat(coords[0]), Number.parseFloat(coords[1]))\n this.precisionModel.makePrecise(coord)\n return coord\n },\n\n /**\n * Return point geometry given a point WKT fragment.\n *\n * @param {String} str A WKT fragment representing the point.\n * @return {Point} A point geometry.\n * @private\n */\n point (str) {\n if (str === undefined)\n return this.geometryFactory.createPoint()\n return this.geometryFactory.createPoint(parse.coord.call(this, str))\n },\n\n /**\n * Return a multipoint geometry given a multipoint WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipoint.\n * @return {Point} A multipoint feature.\n * @private\n */\n multipoint (str) {\n if (str === undefined)\n return this.geometryFactory.createMultiPoint()\n var point\n var points = str.trim().split(',')\n var components = []\n for (let i = 0, len = points.length; i < len; ++i) {\n point = points[i].replace(regExes.trimParens, '$1')\n components.push(parse.point.call(this, point))\n }\n return this.geometryFactory.createMultiPoint(components)\n },\n\n /**\n * Return a linestring geometry given a linestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linestring.\n * @return {LineString} A linestring geometry.\n * @private\n */\n linestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLineString()\n }\n\n var points = str.trim().split(',')\n var components = []\n var coords\n for (let i = 0, len = points.length; i < len; ++i) {\n components.push(parse.coord.call(this, points[i]))\n }\n return this.geometryFactory.createLineString(components)\n },\n\n /**\n * Return a linearring geometry given a linearring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linearring.\n * @return {LinearRing} A linearring geometry.\n * @private\n */\n linearring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLinearRing()\n }\n\n var points = str.trim().split(',')\n var components = []\n var coords\n for (let i = 0, len = points.length; i < len; ++i) {\n components.push(parse.coord.call(this, points[i]))\n }\n return this.geometryFactory.createLinearRing(components)\n },\n\n /**\n * Return a multilinestring geometry given a multilinestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multilinestring.\n * @return {MultiLineString} A multilinestring geometry.\n * @private\n */\n multilinestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createMultiLineString()\n }\n\n var line\n var lines = str.trim().split(regExes.parenComma)\n var components = []\n for (let i = 0, len = lines.length; i < len; ++i) {\n line = lines[i].replace(regExes.trimParens, '$1')\n components.push(parse.linestring.call(this, line))\n }\n return this.geometryFactory.createMultiLineString(components)\n },\n\n /**\n * Return a polygon geometry given a polygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the polygon.\n * @return {Polygon} A polygon geometry.\n * @private\n */\n polygon (str) {\n if (str === undefined) {\n return this.geometryFactory.createPolygon()\n }\n\n var ring, linestring, linearring\n var rings = str.trim().split(regExes.parenComma)\n var shell\n var holes = []\n for (let i = 0, len = rings.length; i < len; ++i) {\n ring = rings[i].replace(regExes.trimParens, '$1')\n linestring = parse.linestring.call(this, ring)\n linearring = this.geometryFactory.createLinearRing(linestring._points)\n if (i === 0) {\n shell = linearring\n } else {\n holes.push(linearring)\n }\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Return a multipolygon geometry given a multipolygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipolygon.\n * @return {MultiPolygon} A multipolygon geometry.\n * @private\n */\n multipolygon (str) {\n if (str === undefined) {\n return this.geometryFactory.createMultiPolygon()\n }\n\n var polygon\n var polygons = str.trim().split(regExes.doubleParenComma)\n var components = []\n for (let i = 0, len = polygons.length; i < len; ++i) {\n polygon = polygons[i].replace(regExes.trimParens, '$1')\n components.push(parse.polygon.call(this, polygon))\n }\n return this.geometryFactory.createMultiPolygon(components)\n },\n\n /**\n * Return a geometrycollection given a geometrycollection WKT fragment.\n *\n * @param {String} str A WKT fragment representing the geometrycollection.\n * @return {GeometryCollection}\n * @private\n */\n geometrycollection (str) {\n if (str === undefined) {\n return this.geometryFactory.createGeometryCollection()\n }\n\n // separate components of the collection with |\n str = str.replace(/,\\s*([A-Za-z])/g, '|$1')\n var wktArray = str.trim().split('|')\n var components = []\n for (let i = 0, len = wktArray.length; i < len; ++i) {\n components.push(this.read(wktArray[i]))\n }\n return this.geometryFactory.createGeometryCollection(components)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTWriter\n */\n\nimport WKTParser from './WKTParser'\n\n/**\n * Writes the Well-Known Text representation of a {@link Geometry}. The\n * Well-Known Text format is defined in the OGC Simple Features\n * Specification for SQL.\n *
\n * The WKTWriter
outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *
\n * The SFS WKT spec does not define a special tag for {@link LinearRing}s.\n * Under the spec, rings are output as \n * LINESTRING
s.\n */\nexport default class WKTWriter {\n /**\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory)\n }\n /**\n * Converts a Geometry
to its Well-known Text representation.\n *\n * @param {Geometry} geometry a Geometry
to process.\n * @return {string} a GeoJSONReader
is parameterized by a GeometryFactory
,\n * to allow it to create Geometry
objects of the appropriate\n * implementation. In particular, the GeometryFactory
determines\n * the PrecisionModel
and SRID
that is used.\n *\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new GeoJSONParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a GeoJSON representation of a {@link Geometry}\n *\n * Will also parse GeoJSON Features/FeatureCollections as custom objects.\n *\n * @param {Object|String} geoJson a GeoJSON Object or String.\n * @return {Geometry|Object} a Geometry or Feature/FeatureCollection representation.
\n * @memberof module:org/locationtech/jts/io/GeoJSONReader#\n */\n read (geoJson) {\n var geometry = this.parser.read(geoJson)\n return geometry\n }\n}\n","/**\n * @module org/locationtech/jts/io/GeoJSONWriter\n */\n\nimport GeoJSONParser from './GeoJSONParser'\n\n/**\n * Writes the GeoJSON representation of a {@link Geometry}. The\n * The GeoJSON format is defined here.\n */\nexport default class GeoJSONWriter {\n /**\n * The GeoJSONWriter
outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\n constructor() {\n this.parser = new GeoJSONParser(this.geometryFactory)\n }\n\n /**\n * Converts a Geometry
to its GeoJSON representation.\n *\n * @param {Geometry}\n * geometry a Geometry
to process.\n * @return {Object} The GeoJSON representation of the Geometry.\n * @memberof module:org/locationtech/jts/io/GeoJSONWriter#\n */\n write (geometry) {\n return this.parser.write(geometry)\n }\n}","/**\n * @module org/locationtech/jts/io/WKTReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory'\nimport WKTParser from './WKTParser'\n\n/**\n * Converts a geometry in Well-Known Text format to a {@link Geometry}.\n * WKTReader
supports extracting Geometry
objects\n * from either {@link Reader}s or {@link String}s. This allows it to function\n * as a parser to read Geometry
objects from text blocks embedded\n * in other data formats (e.g. XML).\n */\n\nexport default class WKTReader {\n /**\n * A WKTReader
is parameterized by a GeometryFactory
,\n * to allow it to create Geometry
objects of the appropriate\n * implementation. In particular, the GeometryFactory
determines\n * the PrecisionModel
and SRID
that is used.\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory || new GeometryFactory())\n }\n /**\n * Reads a Well-Known Text representation of a {@link Geometry}\n *\n * @param {string}\n * wkt a Geometry
read from\n * string.
\n * @memberof module:org/locationtech/jts/io/WKTReader#\n */\n read (wkt) {\n var geometry = this.parser.read(wkt)\n return geometry\n }\n}","/*eslint-disable no-undef */\n\n/**\n * @module org/locationtech/jts/io/OL3Parser\n */\n\nimport Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\n\nfunction p2c (p) { return [p.x, p.y] }\n\nexport default class OL3Parser {\n /**\n * OpenLayers Geometry parser and writer\n * @param {GeometryFactory} geometryFactory\n * @param {ol} olReference \n */\n constructor(geometryFactory, olReference) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.ol = olReference || (typeof ol !== 'undefined' && ol)\n }\n\n /**\n * Inject OpenLayers geom classes\n */\n inject(Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection) {\n this.ol = {\n geom: {\n Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection\n }\n }\n }\n\n /**\n * @param geometry {ol.geom.Geometry}\n * @return {Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n read (geometry) {\n const ol = this.ol\n if (geometry instanceof ol.geom.Point) {\n return this.convertFromPoint(geometry)\n } else if (geometry instanceof ol.geom.LineString) {\n return this.convertFromLineString(geometry)\n } else if (geometry instanceof ol.geom.LinearRing) {\n return this.convertFromLinearRing(geometry)\n } else if (geometry instanceof ol.geom.Polygon) {\n return this.convertFromPolygon(geometry)\n } else if (geometry instanceof ol.geom.MultiPoint) {\n return this.convertFromMultiPoint(geometry)\n } else if (geometry instanceof ol.geom.MultiLineString) {\n return this.convertFromMultiLineString(geometry)\n } else if (geometry instanceof ol.geom.MultiPolygon) {\n return this.convertFromMultiPolygon(geometry)\n } else if (geometry instanceof ol.geom.GeometryCollection) {\n return this.convertFromCollection(geometry)\n }\n }\n\n convertFromPoint (point) {\n const coordinates = point.getCoordinates()\n return this.geometryFactory.createPoint(new Coordinate(coordinates[0], coordinates[1]))\n }\n\n convertFromLineString (lineString) {\n return this.geometryFactory.createLineString(lineString.getCoordinates().map(function (coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromLinearRing (linearRing) {\n return this.geometryFactory.createLinearRing(linearRing.getCoordinates().map(function (coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromPolygon (polygon) {\n const linearRings = polygon.getLinearRings()\n var shell = null\n var holes = []\n for (let i = 0; i < linearRings.length; i++) {\n const linearRing = this.convertFromLinearRing(linearRings[i])\n if (i === 0) {\n shell = linearRing\n } else {\n holes.push(linearRing)\n }\n }\n return this.geometryFactory.createPolygon(shell, holes)\n }\n\n convertFromMultiPoint (multiPoint) {\n const points = multiPoint.getPoints().map(function (point) {\n return this.convertFromPoint(point)\n }, this)\n return this.geometryFactory.createMultiPoint(points)\n }\n\n convertFromMultiLineString (multiLineString) {\n const lineStrings = multiLineString.getLineStrings().map(function (lineString) {\n return this.convertFromLineString(lineString)\n }, this)\n return this.geometryFactory.createMultiLineString(lineStrings)\n }\n\n convertFromMultiPolygon (multiPolygon) {\n const polygons = multiPolygon.getPolygons().map(function (polygon) {\n return this.convertFromPolygon(polygon)\n }, this)\n return this.geometryFactory.createMultiPolygon(polygons)\n }\n\n convertFromCollection (collection) {\n const geometries = collection.getGeometries().map(function (geometry) {\n return this.read(geometry)\n }, this)\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n\n /**\n * @param geometry\n * {Geometry}\n * @return {ol.geom.Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n write (geometry) {\n if (geometry.getGeometryType() === 'Point') {\n return this.convertToPoint(geometry.getCoordinate())\n } else if (geometry.getGeometryType() === 'LineString') {\n return this.convertToLineString(geometry)\n } else if (geometry.getGeometryType() === 'LinearRing') {\n return this.convertToLinearRing(geometry)\n } else if (geometry.getGeometryType() === 'Polygon') {\n return this.convertToPolygon(geometry)\n } else if (geometry.getGeometryType() === 'MultiPoint') {\n return this.convertToMultiPoint(geometry)\n } else if (geometry.getGeometryType() === 'MultiLineString') {\n return this.convertToMultiLineString(geometry)\n } else if (geometry.getGeometryType() === 'MultiPolygon') {\n return this.convertToMultiPolygon(geometry)\n } else if (geometry.getGeometryType() === 'GeometryCollection') {\n return this.convertToCollection(geometry)\n }\n }\n\n convertToPoint (coordinate) {\n return new this.ol.geom.Point([coordinate.x, coordinate.y])\n }\n\n convertToLineString (lineString) {\n var points = lineString._points._coordinates.map(p2c)\n return new this.ol.geom.LineString(points)\n }\n\n convertToLinearRing (linearRing) {\n var points = linearRing._points._coordinates.map(p2c)\n return new this.ol.geom.LinearRing(points)\n }\n\n convertToPolygon (polygon) {\n var rings = [polygon._shell._points._coordinates.map(p2c)]\n for (let i = 0; i < polygon._holes.length; i++) {\n rings.push(polygon._holes[i]._points._coordinates.map(p2c))\n }\n return new this.ol.geom.Polygon(rings)\n }\n\n convertToMultiPoint (multiPoint) {\n return new this.ol.geom.MultiPoint(multiPoint.getCoordinates().map(p2c))\n }\n\n convertToMultiLineString (multiLineString) {\n var lineStrings = []\n for (let i = 0; i < multiLineString._geometries.length; i++) {\n lineStrings.push(this.convertToLineString(multiLineString._geometries[i]).getCoordinates())\n }\n return new this.ol.geom.MultiLineString(lineStrings)\n }\n\n convertToMultiPolygon (multiPolygon) {\n var polygons = []\n for (let i = 0; i < multiPolygon._geometries.length; i++) {\n polygons.push(this.convertToPolygon(multiPolygon._geometries[i]).getCoordinates())\n }\n return new this.ol.geom.MultiPolygon(polygons)\n }\n\n convertToCollection (geometryCollection) {\n var geometries = []\n for (let i = 0; i < geometryCollection._geometries.length; i++) {\n var geometry = geometryCollection._geometries[i]\n geometries.push(this.write(geometry))\n }\n return new this.ol.geom.GeometryCollection(geometries)\n }\n} \n","import Assert from '../util/Assert';\nexport default class SegmentPointComparator {\n\tconstructor() {\n\t\tSegmentPointComparator.constructor_.apply(this, arguments);\n\t}\n\tstatic relativeSign(x0, x1) {\n\t\tif (x0 < x1) return -1;\n\t\tif (x0 > x1) return 1;\n\t\treturn 0;\n\t}\n\tstatic compare(octant, p0, p1) {\n\t\tif (p0.equals2D(p1)) return 0;\n\t\tvar xSign = SegmentPointComparator.relativeSign(p0.x, p1.x);\n\t\tvar ySign = SegmentPointComparator.relativeSign(p0.y, p1.y);\n\t\tswitch (octant) {\n\t\t\tcase 0:\n\t\t\t\treturn SegmentPointComparator.compareValue(xSign, ySign);\n\t\t\tcase 1:\n\t\t\t\treturn SegmentPointComparator.compareValue(ySign, xSign);\n\t\t\tcase 2:\n\t\t\t\treturn SegmentPointComparator.compareValue(ySign, -xSign);\n\t\t\tcase 3:\n\t\t\t\treturn SegmentPointComparator.compareValue(-xSign, ySign);\n\t\t\tcase 4:\n\t\t\t\treturn SegmentPointComparator.compareValue(-xSign, -ySign);\n\t\t\tcase 5:\n\t\t\t\treturn SegmentPointComparator.compareValue(-ySign, -xSign);\n\t\t\tcase 6:\n\t\t\t\treturn SegmentPointComparator.compareValue(-ySign, xSign);\n\t\t\tcase 7:\n\t\t\t\treturn SegmentPointComparator.compareValue(xSign, -ySign);\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"invalid octant value\");\n\t\treturn 0;\n\t}\n\tstatic compareValue(compareSign0, compareSign1) {\n\t\tif (compareSign0 < 0) return -1;\n\t\tif (compareSign0 > 0) return 1;\n\t\tif (compareSign1 < 0) return -1;\n\t\tif (compareSign1 > 0) return 1;\n\t\treturn 0;\n\t}\n\tgetClass() {\n\t\treturn SegmentPointComparator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSegmentPointComparator.constructor_ = function () {};\n","import Coordinate from '../geom/Coordinate';\nimport SegmentPointComparator from './SegmentPointComparator';\nimport Comparable from '../../../../java/lang/Comparable';\nexport default class SegmentNode {\n\tconstructor() {\n\t\tSegmentNode.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinate() {\n\t\treturn this.coord;\n\t}\n\tprint(out) {\n\t\tout.print(this.coord);\n\t\tout.print(\" seg # = \" + this.segmentIndex);\n\t}\n\tcompareTo(obj) {\n\t\tvar other = obj;\n\t\tif (this.segmentIndex < other.segmentIndex) return -1;\n\t\tif (this.segmentIndex > other.segmentIndex) return 1;\n\t\tif (this.coord.equals2D(other.coord)) return 0;\n\t\treturn SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord);\n\t}\n\tisEndPoint(maxSegmentIndex) {\n\t\tif (this.segmentIndex === 0 && !this._isInterior) return true;\n\t\tif (this.segmentIndex === maxSegmentIndex) return true;\n\t\treturn false;\n\t}\n\tisInterior() {\n\t\treturn this._isInterior;\n\t}\n\tgetClass() {\n\t\treturn SegmentNode;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable];\n\t}\n}\nSegmentNode.constructor_ = function () {\n\tthis._segString = null;\n\tthis.coord = null;\n\tthis.segmentIndex = null;\n\tthis._segmentOctant = null;\n\tthis._isInterior = null;\n\tlet segString = arguments[0], coord = arguments[1], segmentIndex = arguments[2], segmentOctant = arguments[3];\n\tthis._segString = segString;\n\tthis.coord = new Coordinate(coord);\n\tthis.segmentIndex = segmentIndex;\n\tthis._segmentOctant = segmentOctant;\n\tthis._isInterior = !coord.equals2D(segString.getCoordinate(segmentIndex));\n};\n","import CoordinateList from '../geom/CoordinateList';\nimport SegmentNode from './SegmentNode';\nimport Iterator from '../../../../java/util/Iterator';\nimport Coordinate from '../geom/Coordinate';\nimport NodedSegmentString from './NodedSegmentString';\nimport Integer from '../../../../java/lang/Integer';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport RuntimeException from '../../../../java/lang/RuntimeException';\nimport Assert from '../util/Assert';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default class SegmentNodeList {\n\tconstructor() {\n\t\tSegmentNodeList.constructor_.apply(this, arguments);\n\t}\n\tgetSplitCoordinates() {\n\t\tvar coordList = new CoordinateList();\n\t\tthis.addEndpoints();\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tthis.addEdgeCoordinates(eiPrev, ei, coordList);\n\t\t\teiPrev = ei;\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t}\n\taddCollapsedNodes() {\n\t\tvar collapsedVertexIndexes = new ArrayList();\n\t\tthis.findCollapsesFromInsertedNodes(collapsedVertexIndexes);\n\t\tthis.findCollapsesFromExistingVertices(collapsedVertexIndexes);\n\t\tfor (var it = collapsedVertexIndexes.iterator(); it.hasNext(); ) {\n\t\t\tvar vertexIndex = it.next().intValue();\n\t\t\tthis.add(this._edge.getCoordinate(vertexIndex), vertexIndex);\n\t\t}\n\t}\n\tprint(out) {\n\t\tout.println(\"Intersections:\");\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ei = it.next();\n\t\t\tei.print(out);\n\t\t}\n\t}\n\tfindCollapsesFromExistingVertices(collapsedVertexIndexes) {\n\t\tfor (var i = 0; i < this._edge.size() - 2; i++) {\n\t\t\tvar p0 = this._edge.getCoordinate(i);\n\t\t\tvar p1 = this._edge.getCoordinate(i + 1);\n\t\t\tvar p2 = this._edge.getCoordinate(i + 2);\n\t\t\tif (p0.equals2D(p2)) {\n\t\t\t\tcollapsedVertexIndexes.add(new Integer(i + 1));\n\t\t\t}\n\t\t}\n\t}\n\taddEdgeCoordinates(ei0, ei1, coordList) {\n\t\tvar npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n\t\tvar lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex);\n\t\tvar useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt);\n\t\tif (!useIntPt1) {\n\t\t\tnpts--;\n\t\t}\n\t\tvar ipt = 0;\n\t\tcoordList.add(new Coordinate(ei0.coord), false);\n\t\tfor (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n\t\t\tcoordList.add(this._edge.getCoordinate(i));\n\t\t}\n\t\tif (useIntPt1) {\n\t\t\tcoordList.add(new Coordinate(ei1.coord));\n\t\t}\n\t}\n\titerator() {\n\t\treturn this._nodeMap.values().iterator();\n\t}\n\taddSplitEdges(edgeList) {\n\t\tthis.addEndpoints();\n\t\tthis.addCollapsedNodes();\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tvar newEdge = this.createSplitEdge(eiPrev, ei);\n\t\t\tedgeList.add(newEdge);\n\t\t\teiPrev = ei;\n\t\t}\n\t}\n\tfindCollapseIndex(ei0, ei1, collapsedVertexIndex) {\n\t\tif (!ei0.coord.equals2D(ei1.coord)) return false;\n\t\tvar numVerticesBetween = ei1.segmentIndex - ei0.segmentIndex;\n\t\tif (!ei1.isInterior()) {\n\t\t\tnumVerticesBetween--;\n\t\t}\n\t\tif (numVerticesBetween === 1) {\n\t\t\tcollapsedVertexIndex[0] = ei0.segmentIndex + 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tfindCollapsesFromInsertedNodes(collapsedVertexIndexes) {\n\t\tvar collapsedVertexIndex = new Array(1).fill(null);\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tvar isCollapsed = this.findCollapseIndex(eiPrev, ei, collapsedVertexIndex);\n\t\t\tif (isCollapsed) collapsedVertexIndexes.add(new Integer(collapsedVertexIndex[0]));\n\t\t\teiPrev = ei;\n\t\t}\n\t}\n\tgetEdge() {\n\t\treturn this._edge;\n\t}\n\taddEndpoints() {\n\t\tvar maxSegIndex = this._edge.size() - 1;\n\t\tthis.add(this._edge.getCoordinate(0), 0);\n\t\tthis.add(this._edge.getCoordinate(maxSegIndex), maxSegIndex);\n\t}\n\tcreateSplitEdge(ei0, ei1) {\n\t\tvar npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n\t\tvar lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex);\n\t\tvar useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt);\n\t\tif (!useIntPt1) {\n\t\t\tnpts--;\n\t\t}\n\t\tvar pts = new Array(npts).fill(null);\n\t\tvar ipt = 0;\n\t\tpts[ipt++] = new Coordinate(ei0.coord);\n\t\tfor (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n\t\t\tpts[ipt++] = this._edge.getCoordinate(i);\n\t\t}\n\t\tif (useIntPt1) pts[ipt] = new Coordinate(ei1.coord);\n\t\treturn new NodedSegmentString(pts, this._edge.getData());\n\t}\n\tadd(intPt, segmentIndex) {\n\t\tvar eiNew = new SegmentNode(this._edge, intPt, segmentIndex, this._edge.getSegmentOctant(segmentIndex));\n\t\tvar ei = this._nodeMap.get(eiNew);\n\t\tif (ei !== null) {\n\t\t\tAssert.isTrue(ei.coord.equals2D(intPt), \"Found equal nodes with different coordinates\");\n\t\t\treturn ei;\n\t\t}\n\t\tthis._nodeMap.put(eiNew, eiNew);\n\t\treturn eiNew;\n\t}\n\tcheckSplitEdgesCorrectness(splitEdges) {\n\t\tvar edgePts = this._edge.getCoordinates();\n\t\tvar split0 = splitEdges.get(0);\n\t\tvar pt0 = split0.getCoordinate(0);\n\t\tif (!pt0.equals2D(edgePts[0])) throw new RuntimeException(\"bad split edge start point at \" + pt0);\n\t\tvar splitn = splitEdges.get(splitEdges.size() - 1);\n\t\tvar splitnPts = splitn.getCoordinates();\n\t\tvar ptn = splitnPts[splitnPts.length - 1];\n\t\tif (!ptn.equals2D(edgePts[edgePts.length - 1])) throw new RuntimeException(\"bad split edge end point at \" + ptn);\n\t}\n\tgetClass() {\n\t\treturn SegmentNodeList;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSegmentNodeList.constructor_ = function () {\n\tthis._nodeMap = new TreeMap();\n\tthis._edge = null;\n\tlet edge = arguments[0];\n\tthis._edge = edge;\n};\nclass NodeVertexIterator {\n\tconstructor() {\n\t\tNodeVertexIterator.constructor_.apply(this, arguments);\n\t}\n\tnext() {\n\t\tif (this._currNode === null) {\n\t\t\tthis._currNode = this._nextNode;\n\t\t\tthis._currSegIndex = this._currNode.segmentIndex;\n\t\t\tthis.readNextNode();\n\t\t\treturn this._currNode;\n\t\t}\n\t\tif (this._nextNode === null) return null;\n\t\tif (this._nextNode.segmentIndex === this._currNode.segmentIndex) {\n\t\t\tthis._currNode = this._nextNode;\n\t\t\tthis._currSegIndex = this._currNode.segmentIndex;\n\t\t\tthis.readNextNode();\n\t\t\treturn this._currNode;\n\t\t}\n\t\tif (this._nextNode.segmentIndex > this._currNode.segmentIndex) {}\n\t\treturn null;\n\t}\n\tremove() {\n\t\tthrow new UnsupportedOperationException(this.getClass().getName());\n\t}\n\thasNext() {\n\t\tif (this._nextNode === null) return false;\n\t\treturn true;\n\t}\n\treadNextNode() {\n\t\tif (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null;\n\t}\n\tgetClass() {\n\t\treturn NodeVertexIterator;\n\t}\n\tget interfaces_() {\n\t\treturn [Iterator];\n\t}\n}\nNodeVertexIterator.constructor_ = function () {\n\tthis._nodeList = null;\n\tthis._edge = null;\n\tthis._nodeIt = null;\n\tthis._currNode = null;\n\tthis._nextNode = null;\n\tthis._currSegIndex = 0;\n\tlet nodeList = arguments[0];\n\tthis._nodeList = nodeList;\n\tthis._edge = nodeList.getEdge();\n\tthis._nodeIt = nodeList.iterator();\n\tthis.readNextNode();\n};\n","import Coordinate from '../geom/Coordinate';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nexport default class Octant {\n\tconstructor() {\n\t\tOctant.constructor_.apply(this, arguments);\n\t}\n\tstatic octant() {\n\t\tif (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\t\tlet dx = arguments[0], dy = arguments[1];\n\t\t\tif (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException(\"Cannot compute the octant for point ( \" + dx + \", \" + dy + \" )\");\n\t\t\tvar adx = Math.abs(dx);\n\t\t\tvar ady = Math.abs(dy);\n\t\t\tif (dx >= 0) {\n\t\t\t\tif (dy >= 0) {\n\t\t\t\t\tif (adx >= ady) return 0; else return 1;\n\t\t\t\t} else {\n\t\t\t\t\tif (adx >= ady) return 7; else return 6;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (dy >= 0) {\n\t\t\t\t\tif (adx >= ady) return 3; else return 2;\n\t\t\t\t} else {\n\t\t\t\t\tif (adx >= ady) return 4; else return 5;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tvar dx = p1.x - p0.x;\n\t\t\tvar dy = p1.y - p0.y;\n\t\t\tif (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException(\"Cannot compute the octant for two identical points \" + p0);\n\t\t\treturn Octant.octant(dx, dy);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn Octant;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOctant.constructor_ = function () {};\n","export default class SegmentString {\n\tconstructor() {\n\t\tSegmentString.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinates() {}\n\tsize() {}\n\tgetCoordinate(i) {}\n\tisClosed() {}\n\tsetData(data) {}\n\tgetData() {}\n\tgetClass() {\n\t\treturn SegmentString;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSegmentString.constructor_ = function () {};\n","import SegmentString from './SegmentString';\nexport default class NodableSegmentString {\n\tconstructor() {\n\t\tNodableSegmentString.constructor_.apply(this, arguments);\n\t}\n\taddIntersection(intPt, segmentIndex) {}\n\tgetClass() {\n\t\treturn NodableSegmentString;\n\t}\n\tget interfaces_() {\n\t\treturn [SegmentString];\n\t}\n}\nNodableSegmentString.constructor_ = function () {};\n","import SegmentNodeList from './SegmentNodeList';\nimport WKTWriter from '../io/WKTWriter';\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence';\nimport Coordinate from '../geom/Coordinate';\nimport Octant from './Octant';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport NodableSegmentString from './NodableSegmentString';\nexport default class NodedSegmentString {\n\tconstructor() {\n\t\tNodedSegmentString.constructor_.apply(this, arguments);\n\t}\n\tstatic getNodedSubstrings() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet segStrings = arguments[0];\n\t\t\tvar resultEdgelist = new ArrayList();\n\t\t\tNodedSegmentString.getNodedSubstrings(segStrings, resultEdgelist);\n\t\t\treturn resultEdgelist;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet segStrings = arguments[0], resultEdgelist = arguments[1];\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tss.getNodeList().addSplitEdges(resultEdgelist);\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinates() {\n\t\treturn this._pts;\n\t}\n\tsize() {\n\t\treturn this._pts.length;\n\t}\n\tgetCoordinate(i) {\n\t\treturn this._pts[i];\n\t}\n\tisClosed() {\n\t\treturn this._pts[0].equals(this._pts[this._pts.length - 1]);\n\t}\n\tgetSegmentOctant(index) {\n\t\tif (index === this._pts.length - 1) return -1;\n\t\treturn this.safeOctant(this.getCoordinate(index), this.getCoordinate(index + 1));\n\t}\n\tsetData(data) {\n\t\tthis._data = data;\n\t}\n\tsafeOctant(p0, p1) {\n\t\tif (p0.equals2D(p1)) return 0;\n\t\treturn Octant.octant(p0, p1);\n\t}\n\tgetData() {\n\t\treturn this._data;\n\t}\n\taddIntersection() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet intPt = arguments[0], segmentIndex = arguments[1];\n\t\t\tthis.addIntersectionNode(intPt, segmentIndex);\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet li = arguments[0], segmentIndex = arguments[1], geomIndex = arguments[2], intIndex = arguments[3];\n\t\t\tvar intPt = new Coordinate(li.getIntersection(intIndex));\n\t\t\tthis.addIntersection(intPt, segmentIndex);\n\t\t}\n\t}\n\ttoString() {\n\t\treturn WKTWriter.toLineString(new CoordinateArraySequence(this._pts));\n\t}\n\tgetNodeList() {\n\t\treturn this._nodeList;\n\t}\n\taddIntersectionNode(intPt, segmentIndex) {\n\t\tvar normalizedSegmentIndex = segmentIndex;\n\t\tvar nextSegIndex = normalizedSegmentIndex + 1;\n\t\tif (nextSegIndex < this._pts.length) {\n\t\t\tvar nextPt = this._pts[nextSegIndex];\n\t\t\tif (intPt.equals2D(nextPt)) {\n\t\t\t\tnormalizedSegmentIndex = nextSegIndex;\n\t\t\t}\n\t\t}\n\t\tvar ei = this._nodeList.add(intPt, normalizedSegmentIndex);\n\t\treturn ei;\n\t}\n\taddIntersections(li, segmentIndex, geomIndex) {\n\t\tfor (var i = 0; i < li.getIntersectionNum(); i++) {\n\t\t\tthis.addIntersection(li, segmentIndex, geomIndex, i);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn NodedSegmentString;\n\t}\n\tget interfaces_() {\n\t\treturn [NodableSegmentString];\n\t}\n}\nNodedSegmentString.constructor_ = function () {\n\tthis._nodeList = new SegmentNodeList(this);\n\tthis._pts = null;\n\tthis._data = null;\n\tlet pts = arguments[0], data = arguments[1];\n\tthis._pts = pts;\n\tthis._data = data;\n};\n","import LineSegment from '../../geom/LineSegment';\nexport default class MonotoneChainOverlapAction {\n\tconstructor() {\n\t\tMonotoneChainOverlapAction.constructor_.apply(this, arguments);\n\t}\n\toverlap() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet seg1 = arguments[0], seg2 = arguments[1];\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3];\n\t\t\tmc1.getLineSegment(start1, this._overlapSeg1);\n\t\t\tmc2.getLineSegment(start2, this._overlapSeg2);\n\t\t\tthis.overlap(this._overlapSeg1, this._overlapSeg2);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn MonotoneChainOverlapAction;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMonotoneChainOverlapAction.constructor_ = function () {\n\tthis._overlapSeg1 = new LineSegment();\n\tthis._overlapSeg2 = new LineSegment();\n};\n","import Envelope from '../../geom/Envelope';\nexport default class MonotoneChain {\n\tconstructor() {\n\t\tMonotoneChain.constructor_.apply(this, arguments);\n\t}\n\tgetLineSegment(index, ls) {\n\t\tls.p0 = this._pts[index];\n\t\tls.p1 = this._pts[index + 1];\n\t}\n\tcomputeSelect(searchEnv, start0, end0, mcs) {\n\t\tvar p0 = this._pts[start0];\n\t\tvar p1 = this._pts[end0];\n\t\tif (end0 - start0 === 1) {\n\t\t\tmcs.select(this, start0);\n\t\t\treturn null;\n\t\t}\n\t\tif (!searchEnv.intersects(p0, p1)) return null;\n\t\tvar mid = Math.trunc((start0 + end0) / 2);\n\t\tif (start0 < mid) {\n\t\t\tthis.computeSelect(searchEnv, start0, mid, mcs);\n\t\t}\n\t\tif (mid < end0) {\n\t\t\tthis.computeSelect(searchEnv, mid, end0, mcs);\n\t\t}\n\t}\n\tgetCoordinates() {\n\t\tvar coord = new Array(this._end - this._start + 1).fill(null);\n\t\tvar index = 0;\n\t\tfor (var i = this._start; i <= this._end; i++) {\n\t\t\tcoord[index++] = this._pts[i];\n\t\t}\n\t\treturn coord;\n\t}\n\tcomputeOverlaps() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet mc = arguments[0], mco = arguments[1];\n\t\t\tthis.computeOverlaps(this._start, this._end, mc, mc._start, mc._end, mco);\n\t\t} else if (arguments.length === 6) {\n\t\t\tlet start0 = arguments[0], end0 = arguments[1], mc = arguments[2], start1 = arguments[3], end1 = arguments[4], mco = arguments[5];\n\t\t\tif (end0 - start0 === 1 && end1 - start1 === 1) {\n\t\t\t\tmco.overlap(this, start0, mc, start1);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!this.overlaps(start0, end0, mc, start1, end1)) return null;\n\t\t\tvar mid0 = Math.trunc((start0 + end0) / 2);\n\t\t\tvar mid1 = Math.trunc((start1 + end1) / 2);\n\t\t\tif (start0 < mid0) {\n\t\t\t\tif (start1 < mid1) this.computeOverlaps(start0, mid0, mc, start1, mid1, mco);\n\t\t\t\tif (mid1 < end1) this.computeOverlaps(start0, mid0, mc, mid1, end1, mco);\n\t\t\t}\n\t\t\tif (mid0 < end0) {\n\t\t\t\tif (start1 < mid1) this.computeOverlaps(mid0, end0, mc, start1, mid1, mco);\n\t\t\t\tif (mid1 < end1) this.computeOverlaps(mid0, end0, mc, mid1, end1, mco);\n\t\t\t}\n\t\t}\n\t}\n\tsetId(id) {\n\t\tthis._id = id;\n\t}\n\tselect(searchEnv, mcs) {\n\t\tthis.computeSelect(searchEnv, this._start, this._end, mcs);\n\t}\n\tgetEnvelope() {\n\t\tif (this._env === null) {\n\t\t\tvar p0 = this._pts[this._start];\n\t\t\tvar p1 = this._pts[this._end];\n\t\t\tthis._env = new Envelope(p0, p1);\n\t\t}\n\t\treturn this._env;\n\t}\n\toverlaps(start0, end0, mc, start1, end1) {\n\t\treturn Envelope.intersects(this._pts[start0], this._pts[end0], mc._pts[start1], mc._pts[end1]);\n\t}\n\tgetEndIndex() {\n\t\treturn this._end;\n\t}\n\tgetStartIndex() {\n\t\treturn this._start;\n\t}\n\tgetContext() {\n\t\treturn this._context;\n\t}\n\tgetId() {\n\t\treturn this._id;\n\t}\n\tgetClass() {\n\t\treturn MonotoneChain;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMonotoneChain.constructor_ = function () {\n\tthis._pts = null;\n\tthis._start = null;\n\tthis._end = null;\n\tthis._env = null;\n\tthis._context = null;\n\tthis._id = null;\n\tlet pts = arguments[0], start = arguments[1], end = arguments[2], context = arguments[3];\n\tthis._pts = pts;\n\tthis._start = start;\n\tthis._end = end;\n\tthis._context = context;\n};\n","import MonotoneChain from './MonotoneChain';\nimport Integer from '../../../../../java/lang/Integer';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Quadrant from '../../geomgraph/Quadrant';\nexport default class MonotoneChainBuilder {\n\tconstructor() {\n\t\tMonotoneChainBuilder.constructor_.apply(this, arguments);\n\t}\n\tstatic getChainStartIndices(pts) {\n\t\tvar start = 0;\n\t\tvar startIndexList = new ArrayList();\n\t\tstartIndexList.add(new Integer(start));\n\t\tdo {\n\t\t\tvar last = MonotoneChainBuilder.findChainEnd(pts, start);\n\t\t\tstartIndexList.add(new Integer(last));\n\t\t\tstart = last;\n\t\t} while (start < pts.length - 1);\n\t\tvar startIndex = MonotoneChainBuilder.toIntArray(startIndexList);\n\t\treturn startIndex;\n\t}\n\tstatic findChainEnd(pts, start) {\n\t\tvar safeStart = start;\n\t\twhile (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) {\n\t\t\tsafeStart++;\n\t\t}\n\t\tif (safeStart >= pts.length - 1) {\n\t\t\treturn pts.length - 1;\n\t\t}\n\t\tvar chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1]);\n\t\tvar last = start + 1;\n\t\twhile (last < pts.length) {\n\t\t\tif (!pts[last - 1].equals2D(pts[last])) {\n\t\t\t\tvar quad = Quadrant.quadrant(pts[last - 1], pts[last]);\n\t\t\t\tif (quad !== chainQuad) break;\n\t\t\t}\n\t\t\tlast++;\n\t\t}\n\t\treturn last - 1;\n\t}\n\tstatic getChains() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet pts = arguments[0];\n\t\t\treturn MonotoneChainBuilder.getChains(pts, null);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet pts = arguments[0], context = arguments[1];\n\t\t\tvar mcList = new ArrayList();\n\t\t\tvar startIndex = MonotoneChainBuilder.getChainStartIndices(pts);\n\t\t\tfor (var i = 0; i < startIndex.length - 1; i++) {\n\t\t\t\tvar mc = new MonotoneChain(pts, startIndex[i], startIndex[i + 1], context);\n\t\t\t\tmcList.add(mc);\n\t\t\t}\n\t\t\treturn mcList;\n\t\t}\n\t}\n\tstatic toIntArray(list) {\n\t\tvar array = new Array(list.size()).fill(null);\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = list.get(i).intValue();\n\t\t}\n\t\treturn array;\n\t}\n\tgetClass() {\n\t\treturn MonotoneChainBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMonotoneChainBuilder.constructor_ = function () {};\n","export default class Noder {\n\tconstructor() {\n\t\tNoder.constructor_.apply(this, arguments);\n\t}\n\tcomputeNodes(segStrings) {}\n\tgetNodedSubstrings() {}\n\tgetClass() {\n\t\treturn Noder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nNoder.constructor_ = function () {};\n","import Noder from './Noder';\nexport default class SinglePassNoder {\n\tconstructor() {\n\t\tSinglePassNoder.constructor_.apply(this, arguments);\n\t}\n\tsetSegmentIntersector(segInt) {\n\t\tthis._segInt = segInt;\n\t}\n\tgetClass() {\n\t\treturn SinglePassNoder;\n\t}\n\tget interfaces_() {\n\t\treturn [Noder];\n\t}\n}\nSinglePassNoder.constructor_ = function () {\n\tthis._segInt = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet segInt = arguments[0];\n\t\tthis.setSegmentIntersector(segInt);\n\t}\n};\n","import STRtree from '../index/strtree/STRtree';\nimport NodedSegmentString from './NodedSegmentString';\nimport MonotoneChainOverlapAction from '../index/chain/MonotoneChainOverlapAction';\nimport MonotoneChainBuilder from '../index/chain/MonotoneChainBuilder';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport SinglePassNoder from './SinglePassNoder';\nexport default class MCIndexNoder extends SinglePassNoder {\n\tconstructor() {\n\t\tsuper();\n\t\tMCIndexNoder.constructor_.apply(this, arguments);\n\t}\n\tgetMonotoneChains() {\n\t\treturn this._monoChains;\n\t}\n\tgetNodedSubstrings() {\n\t\treturn NodedSegmentString.getNodedSubstrings(this._nodedSegStrings);\n\t}\n\tgetIndex() {\n\t\treturn this._index;\n\t}\n\tadd(segStr) {\n\t\tvar segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr);\n\t\tfor (var i = segChains.iterator(); i.hasNext(); ) {\n\t\t\tvar mc = i.next();\n\t\t\tmc.setId(this._idCounter++);\n\t\t\tthis._index.insert(mc.getEnvelope(), mc);\n\t\t\tthis._monoChains.add(mc);\n\t\t}\n\t}\n\tcomputeNodes(inputSegStrings) {\n\t\tthis._nodedSegStrings = inputSegStrings;\n\t\tfor (var i = inputSegStrings.iterator(); i.hasNext(); ) {\n\t\t\tthis.add(i.next());\n\t\t}\n\t\tthis.intersectChains();\n\t}\n\tintersectChains() {\n\t\tvar overlapAction = new SegmentOverlapAction(this._segInt);\n\t\tfor (var i = this._monoChains.iterator(); i.hasNext(); ) {\n\t\t\tvar queryChain = i.next();\n\t\t\tvar overlapChains = this._index.query(queryChain.getEnvelope());\n\t\t\tfor (var j = overlapChains.iterator(); j.hasNext(); ) {\n\t\t\t\tvar testChain = j.next();\n\t\t\t\tif (testChain.getId() > queryChain.getId()) {\n\t\t\t\t\tqueryChain.computeOverlaps(testChain, overlapAction);\n\t\t\t\t\tthis._nOverlaps++;\n\t\t\t\t}\n\t\t\t\tif (this._segInt.isDone()) return null;\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn MCIndexNoder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass SegmentOverlapAction extends MonotoneChainOverlapAction {\n\tconstructor() {\n\t\tsuper();\n\t\tSegmentOverlapAction.constructor_.apply(this, arguments);\n\t}\n\toverlap() {\n\t\tif (arguments.length === 4) {\n\t\t\tlet mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3];\n\t\t\tvar ss1 = mc1.getContext();\n\t\t\tvar ss2 = mc2.getContext();\n\t\t\tthis._si.processIntersections(ss1, start1, ss2, start2);\n\t\t} else return super.overlap.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn SegmentOverlapAction;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSegmentOverlapAction.constructor_ = function () {\n\tthis._si = null;\n\tlet si = arguments[0];\n\tthis._si = si;\n};\nMCIndexNoder.SegmentOverlapAction = SegmentOverlapAction;\nMCIndexNoder.constructor_ = function () {\n\tthis._monoChains = new ArrayList();\n\tthis._index = new STRtree();\n\tthis._idCounter = 0;\n\tthis._nodedSegStrings = null;\n\tthis._nOverlaps = 0;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet si = arguments[0];\n\t\tSinglePassNoder.constructor_.call(this, si);\n\t}\n};\n","import hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport Noder from './Noder';\nimport Coordinate from '../geom/Coordinate';\nimport NodedSegmentString from './NodedSegmentString';\nimport System from '../../../../java/lang/System';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class ScaledNoder {\n\tconstructor() {\n\t\tScaledNoder.constructor_.apply(this, arguments);\n\t}\n\trescale() {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet segStrings = arguments[0];\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tthis.rescale(ss.getCoordinates());\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Array) {\n\t\t\tlet pts = arguments[0];\n\t\t\tvar p0 = null;\n\t\t\tvar p1 = null;\n\t\t\tif (pts.length === 2) {\n\t\t\t\tp0 = new Coordinate(pts[0]);\n\t\t\t\tp1 = new Coordinate(pts[1]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\t\tpts[i].x = pts[i].x / this._scaleFactor + this._offsetX;\n\t\t\t\tpts[i].y = pts[i].y / this._scaleFactor + this._offsetY;\n\t\t\t}\n\t\t\tif (pts.length === 2 && pts[0].equals2D(pts[1])) {\n\t\t\t\tSystem.out.println(pts);\n\t\t\t}\n\t\t}\n\t}\n\tscale() {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet segStrings = arguments[0];\n\t\t\tvar nodedSegmentStrings = new ArrayList(segStrings.size());\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tnodedSegmentStrings.add(new NodedSegmentString(this.scale(ss.getCoordinates()), ss.getData()));\n\t\t\t}\n\t\t\treturn nodedSegmentStrings;\n\t\t} else if (arguments[0] instanceof Array) {\n\t\t\tlet pts = arguments[0];\n\t\t\tvar roundPts = new Array(pts.length).fill(null);\n\t\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\t\troundPts[i] = new Coordinate(Math.round((pts[i].x - this._offsetX) * this._scaleFactor), Math.round((pts[i].y - this._offsetY) * this._scaleFactor), pts[i].z);\n\t\t\t}\n\t\t\tvar roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts);\n\t\t\treturn roundPtsNoDup;\n\t\t}\n\t}\n\tisIntegerPrecision() {\n\t\treturn this._scaleFactor === 1.0;\n\t}\n\tgetNodedSubstrings() {\n\t\tvar splitSS = this._noder.getNodedSubstrings();\n\t\tif (this._isScaled) this.rescale(splitSS);\n\t\treturn splitSS;\n\t}\n\tcomputeNodes(inputSegStrings) {\n\t\tvar intSegStrings = inputSegStrings;\n\t\tif (this._isScaled) intSegStrings = this.scale(inputSegStrings);\n\t\tthis._noder.computeNodes(intSegStrings);\n\t}\n\tgetClass() {\n\t\treturn ScaledNoder;\n\t}\n\tget interfaces_() {\n\t\treturn [Noder];\n\t}\n}\nScaledNoder.constructor_ = function () {\n\tthis._noder = null;\n\tthis._scaleFactor = null;\n\tthis._offsetX = null;\n\tthis._offsetY = null;\n\tthis._isScaled = false;\n\tif (arguments.length === 2) {\n\t\tlet noder = arguments[0], scaleFactor = arguments[1];\n\t\tScaledNoder.constructor_.call(this, noder, scaleFactor, 0, 0);\n\t} else if (arguments.length === 4) {\n\t\tlet noder = arguments[0], scaleFactor = arguments[1], offsetX = arguments[2], offsetY = arguments[3];\n\t\tthis._noder = noder;\n\t\tthis._scaleFactor = scaleFactor;\n\t\tthis._isScaled = !this.isIntegerPrecision();\n\t}\n};\n","import TreeSet from '../../../../java/util/TreeSet';\nimport LineString from '../geom/LineString';\nimport hasInterface from '../../../../hasInterface';\nimport MultiPoint from '../geom/MultiPoint';\nimport GeometryGraph from '../geomgraph/GeometryGraph';\nimport GeometryCollection from '../geom/GeometryCollection';\nimport Polygonal from '../geom/Polygonal';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter';\nimport TreeMap from '../../../../java/util/TreeMap';\nimport MultiLineString from '../geom/MultiLineString';\nexport default class IsSimpleOp {\n\tconstructor() {\n\t\tIsSimpleOp.constructor_.apply(this, arguments);\n\t}\n\tstatic isSimple() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geom = arguments[0];\n\t\t\tvar op = new IsSimpleOp(geom);\n\t\t\treturn op.isSimple();\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geom = arguments[0], boundaryNodeRule = arguments[1];\n\t\t\tvar op = new IsSimpleOp(geom, boundaryNodeRule);\n\t\t\treturn op.isSimple();\n\t\t}\n\t}\n\tisSimpleMultiPoint(mp) {\n\t\tif (mp.isEmpty()) return true;\n\t\tvar points = new TreeSet();\n\t\tfor (var i = 0; i < mp.getNumGeometries(); i++) {\n\t\t\tvar pt = mp.getGeometryN(i);\n\t\t\tvar p = pt.getCoordinate();\n\t\t\tif (points.contains(p)) {\n\t\t\t\tthis._nonSimpleLocation = p;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tpoints.add(p);\n\t\t}\n\t\treturn true;\n\t}\n\tisSimplePolygonal(geom) {\n\t\tvar rings = LinearComponentExtracter.getLines(geom);\n\t\tfor (var i = rings.iterator(); i.hasNext(); ) {\n\t\t\tvar ring = i.next();\n\t\t\tif (!this.isSimpleLinearGeometry(ring)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\thasClosedEndpointIntersection(graph) {\n\t\tvar endPoints = new TreeMap();\n\t\tfor (var i = graph.getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar maxSegmentIndex = e.getMaximumSegmentIndex();\n\t\t\tvar isClosed = e.isClosed();\n\t\t\tvar p0 = e.getCoordinate(0);\n\t\t\tthis.addEndpoint(endPoints, p0, isClosed);\n\t\t\tvar p1 = e.getCoordinate(e.getNumPoints() - 1);\n\t\t\tthis.addEndpoint(endPoints, p1, isClosed);\n\t\t}\n\t\tfor (var i = endPoints.values().iterator(); i.hasNext(); ) {\n\t\t\tvar eiInfo = i.next();\n\t\t\tif (eiInfo.isClosed && eiInfo.degree !== 2) {\n\t\t\t\tthis._nonSimpleLocation = eiInfo.getCoordinate();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetNonSimpleLocation() {\n\t\treturn this._nonSimpleLocation;\n\t}\n\tisSimpleLinearGeometry(geom) {\n\t\tif (geom.isEmpty()) return true;\n\t\tvar graph = new GeometryGraph(0, geom);\n\t\tvar li = new RobustLineIntersector();\n\t\tvar si = graph.computeSelfNodes(li, true);\n\t\tif (!si.hasIntersection()) return true;\n\t\tif (si.hasProperIntersection()) {\n\t\t\tthis._nonSimpleLocation = si.getProperIntersectionPoint();\n\t\t\treturn false;\n\t\t}\n\t\tif (this.hasNonEndpointIntersection(graph)) return false;\n\t\tif (this._isClosedEndpointsInInterior) {\n\t\t\tif (this.hasClosedEndpointIntersection(graph)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\thasNonEndpointIntersection(graph) {\n\t\tfor (var i = graph.getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar maxSegmentIndex = e.getMaximumSegmentIndex();\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tif (!ei.isEndPoint(maxSegmentIndex)) {\n\t\t\t\t\tthis._nonSimpleLocation = ei.getCoordinate();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\taddEndpoint(endPoints, p, isClosed) {\n\t\tvar eiInfo = endPoints.get(p);\n\t\tif (eiInfo === null) {\n\t\t\teiInfo = new EndpointInfo(p);\n\t\t\tendPoints.put(p, eiInfo);\n\t\t}\n\t\teiInfo.addEndpoint(isClosed);\n\t}\n\tcomputeSimple(geom) {\n\t\tthis._nonSimpleLocation = null;\n\t\tif (geom.isEmpty()) return true;\n\t\tif (geom instanceof LineString) return this.isSimpleLinearGeometry(geom);\n\t\tif (geom instanceof MultiLineString) return this.isSimpleLinearGeometry(geom);\n\t\tif (geom instanceof MultiPoint) return this.isSimpleMultiPoint(geom);\n\t\tif (hasInterface(geom, Polygonal)) return this.isSimplePolygonal(geom);\n\t\tif (geom instanceof GeometryCollection) return this.isSimpleGeometryCollection(geom);\n\t\treturn true;\n\t}\n\tisSimple() {\n\t\tthis._nonSimpleLocation = null;\n\t\treturn this.computeSimple(this._inputGeom);\n\t}\n\tisSimpleGeometryCollection(geom) {\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar comp = geom.getGeometryN(i);\n\t\t\tif (!this.computeSimple(comp)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tgetClass() {\n\t\treturn IsSimpleOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass EndpointInfo {\n\tconstructor() {\n\t\tEndpointInfo.constructor_.apply(this, arguments);\n\t}\n\taddEndpoint(isClosed) {\n\t\tthis.degree++;\n\t\tthis.isClosed |= isClosed;\n\t}\n\tgetCoordinate() {\n\t\treturn this.pt;\n\t}\n\tgetClass() {\n\t\treturn EndpointInfo;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEndpointInfo.constructor_ = function () {\n\tthis.pt = null;\n\tthis.isClosed = null;\n\tthis.degree = null;\n\tlet pt = arguments[0];\n\tthis.pt = pt;\n\tthis.isClosed = false;\n\tthis.degree = 0;\n};\nIsSimpleOp.EndpointInfo = EndpointInfo;\nIsSimpleOp.constructor_ = function () {\n\tthis._inputGeom = null;\n\tthis._isClosedEndpointsInInterior = true;\n\tthis._nonSimpleLocation = null;\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tthis._inputGeom = geom;\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], boundaryNodeRule = arguments[1];\n\t\tthis._inputGeom = geom;\n\t\tthis._isClosedEndpointsInInterior = !boundaryNodeRule.isInBoundary(2);\n\t}\n};\n","export default class BufferParameters {\n\tconstructor() {\n\t\tBufferParameters.constructor_.apply(this, arguments);\n\t}\n\tstatic bufferDistanceError(quadSegs) {\n\t\tvar alpha = Math.PI / 2.0 / quadSegs;\n\t\treturn 1 - Math.cos(alpha / 2.0);\n\t}\n\tgetEndCapStyle() {\n\t\treturn this._endCapStyle;\n\t}\n\tisSingleSided() {\n\t\treturn this._isSingleSided;\n\t}\n\tsetQuadrantSegments(quadSegs) {\n\t\tthis._quadrantSegments = quadSegs;\n\t\tif (this._quadrantSegments === 0) this._joinStyle = BufferParameters.JOIN_BEVEL;\n\t\tif (this._quadrantSegments < 0) {\n\t\t\tthis._joinStyle = BufferParameters.JOIN_MITRE;\n\t\t\tthis._mitreLimit = Math.abs(this._quadrantSegments);\n\t\t}\n\t\tif (quadSegs <= 0) {\n\t\t\tthis._quadrantSegments = 1;\n\t\t}\n\t\tif (this._joinStyle !== BufferParameters.JOIN_ROUND) {\n\t\t\tthis._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS;\n\t\t}\n\t}\n\tgetJoinStyle() {\n\t\treturn this._joinStyle;\n\t}\n\tsetJoinStyle(joinStyle) {\n\t\tthis._joinStyle = joinStyle;\n\t}\n\tsetSimplifyFactor(simplifyFactor) {\n\t\tthis._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor;\n\t}\n\tgetSimplifyFactor() {\n\t\treturn this._simplifyFactor;\n\t}\n\tgetQuadrantSegments() {\n\t\treturn this._quadrantSegments;\n\t}\n\tsetEndCapStyle(endCapStyle) {\n\t\tthis._endCapStyle = endCapStyle;\n\t}\n\tgetMitreLimit() {\n\t\treturn this._mitreLimit;\n\t}\n\tsetMitreLimit(mitreLimit) {\n\t\tthis._mitreLimit = mitreLimit;\n\t}\n\tsetSingleSided(isSingleSided) {\n\t\tthis._isSingleSided = isSingleSided;\n\t}\n\tgetClass() {\n\t\treturn BufferParameters;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nBufferParameters.constructor_ = function () {\n\tthis._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS;\n\tthis._endCapStyle = BufferParameters.CAP_ROUND;\n\tthis._joinStyle = BufferParameters.JOIN_ROUND;\n\tthis._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT;\n\tthis._isSingleSided = false;\n\tthis._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet quadrantSegments = arguments[0];\n\t\tthis.setQuadrantSegments(quadrantSegments);\n\t} else if (arguments.length === 2) {\n\t\tlet quadrantSegments = arguments[0], endCapStyle = arguments[1];\n\t\tthis.setQuadrantSegments(quadrantSegments);\n\t\tthis.setEndCapStyle(endCapStyle);\n\t} else if (arguments.length === 4) {\n\t\tlet quadrantSegments = arguments[0], endCapStyle = arguments[1], joinStyle = arguments[2], mitreLimit = arguments[3];\n\t\tthis.setQuadrantSegments(quadrantSegments);\n\t\tthis.setEndCapStyle(endCapStyle);\n\t\tthis.setJoinStyle(joinStyle);\n\t\tthis.setMitreLimit(mitreLimit);\n\t}\n};\nBufferParameters.CAP_ROUND = 1;\nBufferParameters.CAP_FLAT = 2;\nBufferParameters.CAP_SQUARE = 3;\nBufferParameters.JOIN_ROUND = 1;\nBufferParameters.JOIN_MITRE = 2;\nBufferParameters.JOIN_BEVEL = 3;\nBufferParameters.DEFAULT_QUADRANT_SEGMENTS = 8;\nBufferParameters.DEFAULT_MITRE_LIMIT = 5.0;\nBufferParameters.DEFAULT_SIMPLIFY_FACTOR = 0.01;\n","import Position from '../../geomgraph/Position';\nimport Orientation from '../../algorithm/Orientation';\nimport Assert from '../../util/Assert';\nexport default class RightmostEdgeFinder {\n\tconstructor() {\n\t\tRightmostEdgeFinder.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinate() {\n\t\treturn this._minCoord;\n\t}\n\tgetRightmostSide(de, index) {\n\t\tvar side = this.getRightmostSideOfSegment(de, index);\n\t\tif (side < 0) side = this.getRightmostSideOfSegment(de, index - 1);\n\t\tif (side < 0) {\n\t\t\tthis._minCoord = null;\n\t\t\tthis.checkForRightmostCoordinate(de);\n\t\t}\n\t\treturn side;\n\t}\n\tfindRightmostEdgeAtVertex() {\n\t\tvar pts = this._minDe.getEdge().getCoordinates();\n\t\tAssert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, \"rightmost point expected to be interior vertex of edge\");\n\t\tvar pPrev = pts[this._minIndex - 1];\n\t\tvar pNext = pts[this._minIndex + 1];\n\t\tvar orientation = Orientation.index(this._minCoord, pNext, pPrev);\n\t\tvar usePrev = false;\n\t\tif (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === Orientation.COUNTERCLOCKWISE) {\n\t\t\tusePrev = true;\n\t\t} else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === Orientation.CLOCKWISE) {\n\t\t\tusePrev = true;\n\t\t}\n\t\tif (usePrev) {\n\t\t\tthis._minIndex = this._minIndex - 1;\n\t\t}\n\t}\n\tgetRightmostSideOfSegment(de, i) {\n\t\tvar e = de.getEdge();\n\t\tvar coord = e.getCoordinates();\n\t\tif (i < 0 || i + 1 >= coord.length) return -1;\n\t\tif (coord[i].y === coord[i + 1].y) return -1;\n\t\tvar pos = Position.LEFT;\n\t\tif (coord[i].y < coord[i + 1].y) pos = Position.RIGHT;\n\t\treturn pos;\n\t}\n\tgetEdge() {\n\t\treturn this._orientedDe;\n\t}\n\tcheckForRightmostCoordinate(de) {\n\t\tvar coord = de.getEdge().getCoordinates();\n\t\tfor (var i = 0; i < coord.length - 1; i++) {\n\t\t\tif (this._minCoord === null || coord[i].x > this._minCoord.x) {\n\t\t\t\tthis._minDe = de;\n\t\t\t\tthis._minIndex = i;\n\t\t\t\tthis._minCoord = coord[i];\n\t\t\t}\n\t\t}\n\t}\n\tfindRightmostEdgeAtNode() {\n\t\tvar node = this._minDe.getNode();\n\t\tvar star = node.getEdges();\n\t\tthis._minDe = star.getRightmostEdge();\n\t\tif (!this._minDe.isForward()) {\n\t\t\tthis._minDe = this._minDe.getSym();\n\t\t\tthis._minIndex = this._minDe.getEdge().getCoordinates().length - 1;\n\t\t}\n\t}\n\tfindEdge(dirEdgeList) {\n\t\tfor (var i = dirEdgeList.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (!de.isForward()) continue;\n\t\t\tthis.checkForRightmostCoordinate(de);\n\t\t}\n\t\tAssert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), \"inconsistency in rightmost processing\");\n\t\tif (this._minIndex === 0) {\n\t\t\tthis.findRightmostEdgeAtNode();\n\t\t} else {\n\t\t\tthis.findRightmostEdgeAtVertex();\n\t\t}\n\t\tthis._orientedDe = this._minDe;\n\t\tvar rightmostSide = this.getRightmostSide(this._minDe, this._minIndex);\n\t\tif (rightmostSide === Position.LEFT) {\n\t\t\tthis._orientedDe = this._minDe.getSym();\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn RightmostEdgeFinder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRightmostEdgeFinder.constructor_ = function () {\n\tthis._minIndex = -1;\n\tthis._minCoord = null;\n\tthis._minDe = null;\n\tthis._orientedDe = null;\n};\n","export default function LinkedList () {\n this.array_ = []\n}\nLinkedList.prototype.addLast = function (e) {\n this.array_.push(e)\n}\nLinkedList.prototype.removeFirst = function () {\n return this.array_.shift()\n}\nLinkedList.prototype.isEmpty = function () {\n return this.array_.length === 0\n}\n","import HashSet from '../../../../../java/util/HashSet';\nimport Position from '../../geomgraph/Position';\nimport Stack from '../../../../../java/util/Stack';\nimport RightmostEdgeFinder from './RightmostEdgeFinder';\nimport TopologyException from '../../geom/TopologyException';\nimport LinkedList from '../../../../../java/util/LinkedList';\nimport Comparable from '../../../../../java/lang/Comparable';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Envelope from '../../geom/Envelope';\nexport default class BufferSubgraph {\n\tconstructor() {\n\t\tBufferSubgraph.constructor_.apply(this, arguments);\n\t}\n\tclearVisitedEdges() {\n\t\tfor (var it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tde.setVisited(false);\n\t\t}\n\t}\n\tgetRightmostCoordinate() {\n\t\treturn this._rightMostCoord;\n\t}\n\tcomputeNodeDepth(n) {\n\t\tvar startEdge = null;\n\t\tfor (var i = n.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isVisited() || de.getSym().isVisited()) {\n\t\t\t\tstartEdge = de;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (startEdge === null) throw new TopologyException(\"unable to find edge to compute depths at \" + n.getCoordinate());\n\t\tn.getEdges().computeDepths(startEdge);\n\t\tfor (var i = n.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tde.setVisited(true);\n\t\t\tthis.copySymDepths(de);\n\t\t}\n\t}\n\tcomputeDepth(outsideDepth) {\n\t\tthis.clearVisitedEdges();\n\t\tvar de = this._finder.getEdge();\n\t\tvar n = de.getNode();\n\t\tvar label = de.getLabel();\n\t\tde.setEdgeDepths(Position.RIGHT, outsideDepth);\n\t\tthis.copySymDepths(de);\n\t\tthis.computeDepths(de);\n\t}\n\tcreate(node) {\n\t\tthis.addReachable(node);\n\t\tthis._finder.findEdge(this._dirEdgeList);\n\t\tthis._rightMostCoord = this._finder.getCoordinate();\n\t}\n\tfindResultEdges() {\n\t\tfor (var it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) {\n\t\t\t\tde.setInResult(true);\n\t\t\t}\n\t\t}\n\t}\n\tcomputeDepths(startEdge) {\n\t\tvar nodesVisited = new HashSet();\n\t\tvar nodeQueue = new LinkedList();\n\t\tvar startNode = startEdge.getNode();\n\t\tnodeQueue.addLast(startNode);\n\t\tnodesVisited.add(startNode);\n\t\tstartEdge.setVisited(true);\n\t\twhile (!nodeQueue.isEmpty()) {\n\t\t\tvar n = nodeQueue.removeFirst();\n\t\t\tnodesVisited.add(n);\n\t\t\tthis.computeNodeDepth(n);\n\t\t\tfor (var i = n.getEdges().iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tvar sym = de.getSym();\n\t\t\t\tif (sym.isVisited()) continue;\n\t\t\t\tvar adjNode = sym.getNode();\n\t\t\t\tif (!nodesVisited.contains(adjNode)) {\n\t\t\t\t\tnodeQueue.addLast(adjNode);\n\t\t\t\t\tnodesVisited.add(adjNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcompareTo(o) {\n\t\tvar graph = o;\n\t\tif (this._rightMostCoord.x < graph._rightMostCoord.x) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (this._rightMostCoord.x > graph._rightMostCoord.x) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t}\n\tgetEnvelope() {\n\t\tif (this._env === null) {\n\t\t\tvar edgeEnv = new Envelope();\n\t\t\tfor (var it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n\t\t\t\tvar dirEdge = it.next();\n\t\t\t\tvar pts = dirEdge.getEdge().getCoordinates();\n\t\t\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\t\t\tedgeEnv.expandToInclude(pts[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._env = edgeEnv;\n\t\t}\n\t\treturn this._env;\n\t}\n\taddReachable(startNode) {\n\t\tvar nodeStack = new Stack();\n\t\tnodeStack.add(startNode);\n\t\twhile (!nodeStack.empty()) {\n\t\t\tvar node = nodeStack.pop();\n\t\t\tthis.add(node, nodeStack);\n\t\t}\n\t}\n\tcopySymDepths(de) {\n\t\tvar sym = de.getSym();\n\t\tsym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT));\n\t\tsym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT));\n\t}\n\tadd(node, nodeStack) {\n\t\tnode.setVisited(true);\n\t\tthis._nodes.add(node);\n\t\tfor (var i = node.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tthis._dirEdgeList.add(de);\n\t\t\tvar sym = de.getSym();\n\t\t\tvar symNode = sym.getNode();\n\t\t\tif (!symNode.isVisited()) nodeStack.push(symNode);\n\t\t}\n\t}\n\tgetNodes() {\n\t\treturn this._nodes;\n\t}\n\tgetDirectedEdges() {\n\t\treturn this._dirEdgeList;\n\t}\n\tgetClass() {\n\t\treturn BufferSubgraph;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable];\n\t}\n}\nBufferSubgraph.constructor_ = function () {\n\tthis._finder = null;\n\tthis._dirEdgeList = new ArrayList();\n\tthis._nodes = new ArrayList();\n\tthis._rightMostCoord = null;\n\tthis._env = null;\n\tthis._finder = new RightmostEdgeFinder();\n};\n","import Location from '../geom/Location';\nimport Position from './Position';\nimport PointLocation from '../algorithm/PointLocation';\nimport TopologyException from '../geom/TopologyException';\nimport Orientation from '../algorithm/Orientation';\nimport Label from './Label';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Assert from '../util/Assert';\nexport default class EdgeRing {\n\tconstructor() {\n\t\tEdgeRing.constructor_.apply(this, arguments);\n\t}\n\tcomputeRing() {\n\t\tif (this._ring !== null) return null;\n\t\tvar coord = new Array(this._pts.size()).fill(null);\n\t\tfor (var i = 0; i < this._pts.size(); i++) {\n\t\t\tcoord[i] = this._pts.get(i);\n\t\t}\n\t\tthis._ring = this._geometryFactory.createLinearRing(coord);\n\t\tthis._isHole = Orientation.isCCW(this._ring.getCoordinates());\n\t}\n\tisIsolated() {\n\t\treturn this._label.getGeometryCount() === 1;\n\t}\n\tcomputePoints(start) {\n\t\tthis._startDe = start;\n\t\tvar de = start;\n\t\tvar isFirstEdge = true;\n\t\tdo {\n\t\t\tif (de === null) throw new TopologyException(\"Found null DirectedEdge\");\n\t\t\tif (de.getEdgeRing() === this) throw new TopologyException(\"Directed Edge visited twice during ring-building at \" + de.getCoordinate());\n\t\t\tthis._edges.add(de);\n\t\t\tvar label = de.getLabel();\n\t\t\tAssert.isTrue(label.isArea());\n\t\t\tthis.mergeLabel(label);\n\t\t\tthis.addPoints(de.getEdge(), de.isForward(), isFirstEdge);\n\t\t\tisFirstEdge = false;\n\t\t\tthis.setEdgeRing(de, this);\n\t\t\tde = this.getNext(de);\n\t\t} while (de !== this._startDe);\n\t}\n\tgetLinearRing() {\n\t\treturn this._ring;\n\t}\n\tgetCoordinate(i) {\n\t\treturn this._pts.get(i);\n\t}\n\tcomputeMaxNodeDegree() {\n\t\tthis._maxNodeDegree = 0;\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tvar node = de.getNode();\n\t\t\tvar degree = node.getEdges().getOutgoingDegree(this);\n\t\t\tif (degree > this._maxNodeDegree) this._maxNodeDegree = degree;\n\t\t\tde = this.getNext(de);\n\t\t} while (de !== this._startDe);\n\t\tthis._maxNodeDegree *= 2;\n\t}\n\taddPoints(edge, isForward, isFirstEdge) {\n\t\tvar edgePts = edge.getCoordinates();\n\t\tif (isForward) {\n\t\t\tvar startIndex = 1;\n\t\t\tif (isFirstEdge) startIndex = 0;\n\t\t\tfor (var i = startIndex; i < edgePts.length; i++) {\n\t\t\t\tthis._pts.add(edgePts[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tvar startIndex = edgePts.length - 2;\n\t\t\tif (isFirstEdge) startIndex = edgePts.length - 1;\n\t\t\tfor (var i = startIndex; i >= 0; i--) {\n\t\t\t\tthis._pts.add(edgePts[i]);\n\t\t\t}\n\t\t}\n\t}\n\tisHole() {\n\t\treturn this._isHole;\n\t}\n\tsetInResult() {\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tde.getEdge().setInResult(true);\n\t\t\tde = de.getNext();\n\t\t} while (de !== this._startDe);\n\t}\n\tcontainsPoint(p) {\n\t\tvar shell = this.getLinearRing();\n\t\tvar env = shell.getEnvelopeInternal();\n\t\tif (!env.contains(p)) return false;\n\t\tif (!PointLocation.isInRing(p, shell.getCoordinates())) return false;\n\t\tfor (var i = this._holes.iterator(); i.hasNext(); ) {\n\t\t\tvar hole = i.next();\n\t\t\tif (hole.containsPoint(p)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\taddHole(ring) {\n\t\tthis._holes.add(ring);\n\t}\n\tisShell() {\n\t\treturn this._shell === null;\n\t}\n\tgetLabel() {\n\t\treturn this._label;\n\t}\n\tgetEdges() {\n\t\treturn this._edges;\n\t}\n\tgetMaxNodeDegree() {\n\t\tif (this._maxNodeDegree < 0) this.computeMaxNodeDegree();\n\t\treturn this._maxNodeDegree;\n\t}\n\tgetShell() {\n\t\treturn this._shell;\n\t}\n\tmergeLabel() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet deLabel = arguments[0];\n\t\t\tthis.mergeLabel(deLabel, 0);\n\t\t\tthis.mergeLabel(deLabel, 1);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet deLabel = arguments[0], geomIndex = arguments[1];\n\t\t\tvar loc = deLabel.getLocation(geomIndex, Position.RIGHT);\n\t\t\tif (loc === Location.NONE) return null;\n\t\t\tif (this._label.getLocation(geomIndex) === Location.NONE) {\n\t\t\t\tthis._label.setLocation(geomIndex, loc);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tsetShell(shell) {\n\t\tthis._shell = shell;\n\t\tif (shell !== null) shell.addHole(this);\n\t}\n\ttoPolygon(geometryFactory) {\n\t\tvar holeLR = new Array(this._holes.size()).fill(null);\n\t\tfor (var i = 0; i < this._holes.size(); i++) {\n\t\t\tholeLR[i] = this._holes.get(i).getLinearRing();\n\t\t}\n\t\tvar poly = geometryFactory.createPolygon(this.getLinearRing(), holeLR);\n\t\treturn poly;\n\t}\n\tgetClass() {\n\t\treturn EdgeRing;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeRing.constructor_ = function () {\n\tthis._startDe = null;\n\tthis._maxNodeDegree = -1;\n\tthis._edges = new ArrayList();\n\tthis._pts = new ArrayList();\n\tthis._label = new Label(Location.NONE);\n\tthis._ring = null;\n\tthis._isHole = null;\n\tthis._shell = null;\n\tthis._holes = new ArrayList();\n\tthis._geometryFactory = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 2) {\n\t\tlet start = arguments[0], geometryFactory = arguments[1];\n\t\tthis._geometryFactory = geometryFactory;\n\t\tthis.computePoints(start);\n\t\tthis.computeRing();\n\t}\n};\n","import EdgeRing from '../../geomgraph/EdgeRing';\nexport default class MinimalEdgeRing extends EdgeRing {\n\tconstructor() {\n\t\tsuper();\n\t\tMinimalEdgeRing.constructor_.apply(this, arguments);\n\t}\n\tsetEdgeRing(de, er) {\n\t\tde.setMinEdgeRing(er);\n\t}\n\tgetNext(de) {\n\t\treturn de.getNextMin();\n\t}\n\tgetClass() {\n\t\treturn MinimalEdgeRing;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMinimalEdgeRing.constructor_ = function () {\n\tlet start = arguments[0], geometryFactory = arguments[1];\n\tEdgeRing.constructor_.call(this, start, geometryFactory);\n};\n","import MinimalEdgeRing from './MinimalEdgeRing';\nimport EdgeRing from '../../geomgraph/EdgeRing';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default class MaximalEdgeRing extends EdgeRing {\n\tconstructor() {\n\t\tsuper();\n\t\tMaximalEdgeRing.constructor_.apply(this, arguments);\n\t}\n\tbuildMinimalRings() {\n\t\tvar minEdgeRings = new ArrayList();\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tif (de.getMinEdgeRing() === null) {\n\t\t\t\tvar minEr = new MinimalEdgeRing(de, this._geometryFactory);\n\t\t\t\tminEdgeRings.add(minEr);\n\t\t\t}\n\t\t\tde = de.getNext();\n\t\t} while (de !== this._startDe);\n\t\treturn minEdgeRings;\n\t}\n\tsetEdgeRing(de, er) {\n\t\tde.setEdgeRing(er);\n\t}\n\tlinkDirectedEdgesForMinimalEdgeRings() {\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tvar node = de.getNode();\n\t\t\tnode.getEdges().linkMinimalDirectedEdges(this);\n\t\t\tde = de.getNext();\n\t\t} while (de !== this._startDe);\n\t}\n\tgetNext(de) {\n\t\treturn de.getNext();\n\t}\n\tgetClass() {\n\t\treturn MaximalEdgeRing;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMaximalEdgeRing.constructor_ = function () {\n\tlet start = arguments[0], geometryFactory = arguments[1];\n\tEdgeRing.constructor_.call(this, start, geometryFactory);\n};\n","import PointLocation from '../../algorithm/PointLocation';\nimport TopologyException from '../../geom/TopologyException';\nimport MaximalEdgeRing from './MaximalEdgeRing';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default class PolygonBuilder {\n\tconstructor() {\n\t\tPolygonBuilder.constructor_.apply(this, arguments);\n\t}\n\tsortShellsAndHoles(edgeRings, shellList, freeHoleList) {\n\t\tfor (var it = edgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.isHole()) {\n\t\t\t\tfreeHoleList.add(er);\n\t\t\t} else {\n\t\t\t\tshellList.add(er);\n\t\t\t}\n\t\t}\n\t}\n\tcomputePolygons(shellList) {\n\t\tvar resultPolyList = new ArrayList();\n\t\tfor (var it = shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tvar poly = er.toPolygon(this._geometryFactory);\n\t\t\tresultPolyList.add(poly);\n\t\t}\n\t\treturn resultPolyList;\n\t}\n\tplaceFreeHoles(shellList, freeHoleList) {\n\t\tfor (var it = freeHoleList.iterator(); it.hasNext(); ) {\n\t\t\tvar hole = it.next();\n\t\t\tif (hole.getShell() === null) {\n\t\t\t\tvar shell = this.findEdgeRingContaining(hole, shellList);\n\t\t\t\tif (shell === null) throw new TopologyException(\"unable to assign hole to a shell\", hole.getCoordinate(0));\n\t\t\t\thole.setShell(shell);\n\t\t\t}\n\t\t}\n\t}\n\tbuildMinimalEdgeRings(maxEdgeRings, shellList, freeHoleList) {\n\t\tvar edgeRings = new ArrayList();\n\t\tfor (var it = maxEdgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.getMaxNodeDegree() > 2) {\n\t\t\t\ter.linkDirectedEdgesForMinimalEdgeRings();\n\t\t\t\tvar minEdgeRings = er.buildMinimalRings();\n\t\t\t\tvar shell = this.findShell(minEdgeRings);\n\t\t\t\tif (shell !== null) {\n\t\t\t\t\tthis.placePolygonHoles(shell, minEdgeRings);\n\t\t\t\t\tshellList.add(shell);\n\t\t\t\t} else {\n\t\t\t\t\tfreeHoleList.addAll(minEdgeRings);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tedgeRings.add(er);\n\t\t\t}\n\t\t}\n\t\treturn edgeRings;\n\t}\n\tcontainsPoint(p) {\n\t\tfor (var it = this._shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.containsPoint(p)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tbuildMaximalEdgeRings(dirEdges) {\n\t\tvar maxEdgeRings = new ArrayList();\n\t\tfor (var it = dirEdges.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.isInResult() && de.getLabel().isArea()) {\n\t\t\t\tif (de.getEdgeRing() === null) {\n\t\t\t\t\tvar er = new MaximalEdgeRing(de, this._geometryFactory);\n\t\t\t\t\tmaxEdgeRings.add(er);\n\t\t\t\t\ter.setInResult();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn maxEdgeRings;\n\t}\n\tplacePolygonHoles(shell, minEdgeRings) {\n\t\tfor (var it = minEdgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.isHole()) {\n\t\t\t\ter.setShell(shell);\n\t\t\t}\n\t\t}\n\t}\n\tgetPolygons() {\n\t\tvar resultPolyList = this.computePolygons(this._shellList);\n\t\treturn resultPolyList;\n\t}\n\tfindEdgeRingContaining(testEr, shellList) {\n\t\tvar testRing = testEr.getLinearRing();\n\t\tvar testEnv = testRing.getEnvelopeInternal();\n\t\tvar testPt = testRing.getCoordinateN(0);\n\t\tvar minShell = null;\n\t\tvar minEnv = null;\n\t\tfor (var it = shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar tryShell = it.next();\n\t\t\tvar tryRing = tryShell.getLinearRing();\n\t\t\tvar tryEnv = tryRing.getEnvelopeInternal();\n\t\t\tif (minShell !== null) minEnv = minShell.getLinearRing().getEnvelopeInternal();\n\t\t\tvar isContained = false;\n\t\t\tif (tryEnv.contains(testEnv) && PointLocation.isInRing(testPt, tryRing.getCoordinates())) isContained = true;\n\t\t\tif (isContained) {\n\t\t\t\tif (minShell === null || minEnv.contains(tryEnv)) {\n\t\t\t\t\tminShell = tryShell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn minShell;\n\t}\n\tfindShell(minEdgeRings) {\n\t\tvar shellCount = 0;\n\t\tvar shell = null;\n\t\tfor (var it = minEdgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (!er.isHole()) {\n\t\t\t\tshell = er;\n\t\t\t\tshellCount++;\n\t\t\t}\n\t\t}\n\t\tAssert.isTrue(shellCount <= 1, \"found two shells in MinimalEdgeRing list\");\n\t\treturn shell;\n\t}\n\tadd() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet graph = arguments[0];\n\t\t\tthis.add(graph.getEdgeEnds(), graph.getNodes());\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet dirEdges = arguments[0], nodes = arguments[1];\n\t\t\tPlanarGraph.linkResultDirectedEdges(nodes);\n\t\t\tvar maxEdgeRings = this.buildMaximalEdgeRings(dirEdges);\n\t\t\tvar freeHoleList = new ArrayList();\n\t\t\tvar edgeRings = this.buildMinimalEdgeRings(maxEdgeRings, this._shellList, freeHoleList);\n\t\t\tthis.sortShellsAndHoles(edgeRings, this._shellList, freeHoleList);\n\t\t\tthis.placeFreeHoles(this._shellList, freeHoleList);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn PolygonBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPolygonBuilder.constructor_ = function () {\n\tthis._geometryFactory = null;\n\tthis._shellList = new ArrayList();\n\tlet geometryFactory = arguments[0];\n\tthis._geometryFactory = geometryFactory;\n};\n","import CoordinateList from '../../geom/CoordinateList';\nimport Orientation from '../../algorithm/Orientation';\nimport Distance from '../../algorithm/Distance';\nexport default class BufferInputLineSimplifier {\n\tconstructor() {\n\t\tBufferInputLineSimplifier.constructor_.apply(this, arguments);\n\t}\n\tstatic simplify(inputLine, distanceTol) {\n\t\tvar simp = new BufferInputLineSimplifier(inputLine);\n\t\treturn simp.simplify(distanceTol);\n\t}\n\tisDeletable(i0, i1, i2, distanceTol) {\n\t\tvar p0 = this._inputLine[i0];\n\t\tvar p1 = this._inputLine[i1];\n\t\tvar p2 = this._inputLine[i2];\n\t\tif (!this.isConcave(p0, p1, p2)) return false;\n\t\tif (!this.isShallow(p0, p1, p2, distanceTol)) return false;\n\t\treturn this.isShallowSampled(p0, p1, i0, i2, distanceTol);\n\t}\n\tdeleteShallowConcavities() {\n\t\tvar index = 1;\n\t\tvar maxIndex = this._inputLine.length - 1;\n\t\tvar midIndex = this.findNextNonDeletedIndex(index);\n\t\tvar lastIndex = this.findNextNonDeletedIndex(midIndex);\n\t\tvar isChanged = false;\n\t\twhile (lastIndex < this._inputLine.length) {\n\t\t\tvar isMiddleVertexDeleted = false;\n\t\t\tif (this.isDeletable(index, midIndex, lastIndex, this._distanceTol)) {\n\t\t\t\tthis._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE;\n\t\t\t\tisMiddleVertexDeleted = true;\n\t\t\t\tisChanged = true;\n\t\t\t}\n\t\t\tif (isMiddleVertexDeleted) index = lastIndex; else index = midIndex;\n\t\t\tmidIndex = this.findNextNonDeletedIndex(index);\n\t\t\tlastIndex = this.findNextNonDeletedIndex(midIndex);\n\t\t}\n\t\treturn isChanged;\n\t}\n\tisShallowConcavity(p0, p1, p2, distanceTol) {\n\t\tvar orientation = Orientation.index(p0, p1, p2);\n\t\tvar isAngleToSimplify = orientation === this._angleOrientation;\n\t\tif (!isAngleToSimplify) return false;\n\t\tvar dist = Distance.pointToSegment(p1, p0, p2);\n\t\treturn dist < distanceTol;\n\t}\n\tisShallowSampled(p0, p2, i0, i2, distanceTol) {\n\t\tvar inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK);\n\t\tif (inc <= 0) inc = 1;\n\t\tfor (var i = i0; i < i2; i += inc) {\n\t\t\tif (!this.isShallow(p0, p2, this._inputLine[i], distanceTol)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tisConcave(p0, p1, p2) {\n\t\tvar orientation = Orientation.index(p0, p1, p2);\n\t\tvar isConcave = orientation === this._angleOrientation;\n\t\treturn isConcave;\n\t}\n\tsimplify(distanceTol) {\n\t\tthis._distanceTol = Math.abs(distanceTol);\n\t\tif (distanceTol < 0) this._angleOrientation = Orientation.CLOCKWISE;\n\t\tthis._isDeleted = new Array(this._inputLine.length).fill(null);\n\t\tvar isChanged = false;\n\t\tdo {\n\t\t\tisChanged = this.deleteShallowConcavities();\n\t\t} while (isChanged);\n\t\treturn this.collapseLine();\n\t}\n\tfindNextNonDeletedIndex(index) {\n\t\tvar next = index + 1;\n\t\twhile (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) next++;\n\t\treturn next;\n\t}\n\tisShallow(p0, p1, p2, distanceTol) {\n\t\tvar dist = Distance.pointToSegment(p1, p0, p2);\n\t\treturn dist < distanceTol;\n\t}\n\tcollapseLine() {\n\t\tvar coordList = new CoordinateList();\n\t\tfor (var i = 0; i < this._inputLine.length; i++) {\n\t\t\tif (this._isDeleted[i] !== BufferInputLineSimplifier.DELETE) coordList.add(this._inputLine[i]);\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t}\n\tgetClass() {\n\t\treturn BufferInputLineSimplifier;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nBufferInputLineSimplifier.constructor_ = function () {\n\tthis._inputLine = null;\n\tthis._distanceTol = null;\n\tthis._isDeleted = null;\n\tthis._angleOrientation = Orientation.COUNTERCLOCKWISE;\n\tlet inputLine = arguments[0];\n\tthis._inputLine = inputLine;\n};\nBufferInputLineSimplifier.INIT = 0;\nBufferInputLineSimplifier.DELETE = 1;\nBufferInputLineSimplifier.KEEP = 1;\nBufferInputLineSimplifier.NUM_PTS_TO_CHECK = 10;\n","import GeometryFactory from '../../geom/GeometryFactory';\nimport Coordinate from '../../geom/Coordinate';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default class OffsetSegmentString {\n\tconstructor() {\n\t\tOffsetSegmentString.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinates() {\n\t\tvar coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE);\n\t\treturn coord;\n\t}\n\tsetPrecisionModel(precisionModel) {\n\t\tthis._precisionModel = precisionModel;\n\t}\n\taddPt(pt) {\n\t\tvar bufPt = new Coordinate(pt);\n\t\tthis._precisionModel.makePrecise(bufPt);\n\t\tif (this.isRedundant(bufPt)) return null;\n\t\tthis._ptList.add(bufPt);\n\t}\n\treverse() {}\n\taddPts(pt, isForward) {\n\t\tif (isForward) {\n\t\t\tfor (var i = 0; i < pt.length; i++) {\n\t\t\t\tthis.addPt(pt[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = pt.length - 1; i >= 0; i--) {\n\t\t\t\tthis.addPt(pt[i]);\n\t\t\t}\n\t\t}\n\t}\n\tisRedundant(pt) {\n\t\tif (this._ptList.size() < 1) return false;\n\t\tvar lastPt = this._ptList.get(this._ptList.size() - 1);\n\t\tvar ptDist = pt.distance(lastPt);\n\t\tif (ptDist < this._minimimVertexDistance) return true;\n\t\treturn false;\n\t}\n\ttoString() {\n\t\tvar fact = new GeometryFactory();\n\t\tvar line = fact.createLineString(this.getCoordinates());\n\t\treturn line.toString();\n\t}\n\tcloseRing() {\n\t\tif (this._ptList.size() < 1) return null;\n\t\tvar startPt = new Coordinate(this._ptList.get(0));\n\t\tvar lastPt = this._ptList.get(this._ptList.size() - 1);\n\t\tvar last2Pt = null;\n\t\tif (this._ptList.size() >= 2) last2Pt = this._ptList.get(this._ptList.size() - 2);\n\t\tif (startPt.equals(lastPt)) return null;\n\t\tthis._ptList.add(startPt);\n\t}\n\tsetMinimumVertexDistance(minimimVertexDistance) {\n\t\tthis._minimimVertexDistance = minimimVertexDistance;\n\t}\n\tgetClass() {\n\t\treturn OffsetSegmentString;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOffsetSegmentString.constructor_ = function () {\n\tthis._ptList = null;\n\tthis._precisionModel = null;\n\tthis._minimimVertexDistance = 0.0;\n\tthis._ptList = new ArrayList();\n};\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null);\n","import BufferParameters from './BufferParameters';\nimport NotRepresentableException from '../../algorithm/NotRepresentableException';\nimport Position from '../../geomgraph/Position';\nimport Coordinate from '../../geom/Coordinate';\nimport Orientation from '../../algorithm/Orientation';\nimport OffsetSegmentString from './OffsetSegmentString';\nimport LineSegment from '../../geom/LineSegment';\nimport Angle from '../../algorithm/Angle';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport HCoordinate from '../../algorithm/HCoordinate';\nexport default class OffsetSegmentGenerator {\n\tconstructor() {\n\t\tOffsetSegmentGenerator.constructor_.apply(this, arguments);\n\t}\n\taddNextSegment(p, addStartPoint) {\n\t\tthis._s0 = this._s1;\n\t\tthis._s1 = this._s2;\n\t\tthis._s2 = p;\n\t\tthis._seg0.setCoordinates(this._s0, this._s1);\n\t\tthis.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0);\n\t\tthis._seg1.setCoordinates(this._s1, this._s2);\n\t\tthis.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1);\n\t\tif (this._s1.equals(this._s2)) return null;\n\t\tvar orientation = Orientation.index(this._s0, this._s1, this._s2);\n\t\tvar outsideTurn = orientation === Orientation.CLOCKWISE && this._side === Position.LEFT || orientation === Orientation.COUNTERCLOCKWISE && this._side === Position.RIGHT;\n\t\tif (orientation === 0) {\n\t\t\tthis.addCollinear(addStartPoint);\n\t\t} else if (outsideTurn) {\n\t\t\tthis.addOutsideTurn(orientation, addStartPoint);\n\t\t} else {\n\t\t\tthis.addInsideTurn(orientation, addStartPoint);\n\t\t}\n\t}\n\taddLineEndCap(p0, p1) {\n\t\tvar seg = new LineSegment(p0, p1);\n\t\tvar offsetL = new LineSegment();\n\t\tthis.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL);\n\t\tvar offsetR = new LineSegment();\n\t\tthis.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR);\n\t\tvar dx = p1.x - p0.x;\n\t\tvar dy = p1.y - p0.y;\n\t\tvar angle = Math.atan2(dy, dx);\n\t\tswitch (this._bufParams.getEndCapStyle()) {\n\t\t\tcase BufferParameters.CAP_ROUND:\n\t\t\t\tthis._segList.addPt(offsetL.p1);\n\t\t\t\tthis.addDirectedFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, Orientation.CLOCKWISE, this._distance);\n\t\t\t\tthis._segList.addPt(offsetR.p1);\n\t\t\t\tbreak;\n\t\t\tcase BufferParameters.CAP_FLAT:\n\t\t\t\tthis._segList.addPt(offsetL.p1);\n\t\t\t\tthis._segList.addPt(offsetR.p1);\n\t\t\t\tbreak;\n\t\t\tcase BufferParameters.CAP_SQUARE:\n\t\t\t\tvar squareCapSideOffset = new Coordinate();\n\t\t\t\tsquareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle);\n\t\t\t\tsquareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle);\n\t\t\t\tvar squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y);\n\t\t\t\tvar squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y);\n\t\t\t\tthis._segList.addPt(squareCapLOffset);\n\t\t\t\tthis._segList.addPt(squareCapROffset);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tgetCoordinates() {\n\t\tvar pts = this._segList.getCoordinates();\n\t\treturn pts;\n\t}\n\taddMitreJoin(p, offset0, offset1, distance) {\n\t\tvar isMitreWithinLimit = true;\n\t\tvar intPt = null;\n\t\ttry {\n\t\t\tintPt = HCoordinate.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1);\n\t\t\tvar mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance);\n\t\t\tif (mitreRatio > this._bufParams.getMitreLimit()) isMitreWithinLimit = false;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof NotRepresentableException) {\n\t\t\t\tintPt = new Coordinate(0, 0);\n\t\t\t\tisMitreWithinLimit = false;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\tif (isMitreWithinLimit) {\n\t\t\tthis._segList.addPt(intPt);\n\t\t} else {\n\t\t\tthis.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit());\n\t\t}\n\t}\n\taddOutsideTurn(orientation, addStartPoint) {\n\t\tif (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n\t\t\tthis._segList.addPt(this._offset0.p1);\n\t\t\treturn null;\n\t\t}\n\t\tif (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n\t\t\tthis.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance);\n\t\t} else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n\t\t\tthis.addBevelJoin(this._offset0, this._offset1);\n\t\t} else {\n\t\t\tif (addStartPoint) this._segList.addPt(this._offset0.p1);\n\t\t\tthis.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance);\n\t\t\tthis._segList.addPt(this._offset1.p0);\n\t\t}\n\t}\n\tcreateSquare(p) {\n\t\tthis._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance));\n\t\tthis._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance));\n\t\tthis._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance));\n\t\tthis._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance));\n\t\tthis._segList.closeRing();\n\t}\n\taddSegments(pt, isForward) {\n\t\tthis._segList.addPts(pt, isForward);\n\t}\n\taddFirstSegment() {\n\t\tthis._segList.addPt(this._offset1.p0);\n\t}\n\taddCornerFillet(p, p0, p1, direction, radius) {\n\t\tvar dx0 = p0.x - p.x;\n\t\tvar dy0 = p0.y - p.y;\n\t\tvar startAngle = Math.atan2(dy0, dx0);\n\t\tvar dx1 = p1.x - p.x;\n\t\tvar dy1 = p1.y - p.y;\n\t\tvar endAngle = Math.atan2(dy1, dx1);\n\t\tif (direction === Orientation.CLOCKWISE) {\n\t\t\tif (startAngle <= endAngle) startAngle += 2.0 * Math.PI;\n\t\t} else {\n\t\t\tif (startAngle >= endAngle) startAngle -= 2.0 * Math.PI;\n\t\t}\n\t\tthis._segList.addPt(p0);\n\t\tthis.addDirectedFillet(p, startAngle, endAngle, direction, radius);\n\t\tthis._segList.addPt(p1);\n\t}\n\taddLastSegment() {\n\t\tthis._segList.addPt(this._offset1.p1);\n\t}\n\tinitSideSegments(s1, s2, side) {\n\t\tthis._s1 = s1;\n\t\tthis._s2 = s2;\n\t\tthis._side = side;\n\t\tthis._seg1.setCoordinates(s1, s2);\n\t\tthis.computeOffsetSegment(this._seg1, side, this._distance, this._offset1);\n\t}\n\taddLimitedMitreJoin(offset0, offset1, distance, mitreLimit) {\n\t\tvar basePt = this._seg0.p1;\n\t\tvar ang0 = Angle.angle(basePt, this._seg0.p0);\n\t\tvar ang1 = Angle.angle(basePt, this._seg1.p1);\n\t\tvar angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1);\n\t\tvar angDiffHalf = angDiff / 2;\n\t\tvar midAng = Angle.normalize(ang0 + angDiffHalf);\n\t\tvar mitreMidAng = Angle.normalize(midAng + Math.PI);\n\t\tvar mitreDist = mitreLimit * distance;\n\t\tvar bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf));\n\t\tvar bevelHalfLen = distance - bevelDelta;\n\t\tvar bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng);\n\t\tvar bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng);\n\t\tvar bevelMidPt = new Coordinate(bevelMidX, bevelMidY);\n\t\tvar mitreMidLine = new LineSegment(basePt, bevelMidPt);\n\t\tvar bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen);\n\t\tvar bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen);\n\t\tif (this._side === Position.LEFT) {\n\t\t\tthis._segList.addPt(bevelEndLeft);\n\t\t\tthis._segList.addPt(bevelEndRight);\n\t\t} else {\n\t\t\tthis._segList.addPt(bevelEndRight);\n\t\t\tthis._segList.addPt(bevelEndLeft);\n\t\t}\n\t}\n\taddDirectedFillet(p, startAngle, endAngle, direction, radius) {\n\t\tvar directionFactor = direction === Orientation.CLOCKWISE ? -1 : 1;\n\t\tvar totalAngle = Math.abs(startAngle - endAngle);\n\t\tvar nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5);\n\t\tif (nSegs < 1) return null;\n\t\tvar initAngle = null, currAngleInc = null;\n\t\tinitAngle = 0.0;\n\t\tcurrAngleInc = totalAngle / nSegs;\n\t\tvar currAngle = initAngle;\n\t\tvar pt = new Coordinate();\n\t\twhile (currAngle < totalAngle) {\n\t\t\tvar angle = startAngle + directionFactor * currAngle;\n\t\t\tpt.x = p.x + radius * Math.cos(angle);\n\t\t\tpt.y = p.y + radius * Math.sin(angle);\n\t\t\tthis._segList.addPt(pt);\n\t\t\tcurrAngle += currAngleInc;\n\t\t}\n\t}\n\tcomputeOffsetSegment(seg, side, distance, offset) {\n\t\tvar sideSign = side === Position.LEFT ? 1 : -1;\n\t\tvar dx = seg.p1.x - seg.p0.x;\n\t\tvar dy = seg.p1.y - seg.p0.y;\n\t\tvar len = Math.sqrt(dx * dx + dy * dy);\n\t\tvar ux = sideSign * distance * dx / len;\n\t\tvar uy = sideSign * distance * dy / len;\n\t\toffset.p0.x = seg.p0.x - uy;\n\t\toffset.p0.y = seg.p0.y + ux;\n\t\toffset.p1.x = seg.p1.x - uy;\n\t\toffset.p1.y = seg.p1.y + ux;\n\t}\n\taddInsideTurn(orientation, addStartPoint) {\n\t\tthis._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tthis._segList.addPt(this._li.getIntersection(0));\n\t\t} else {\n\t\t\tthis._hasNarrowConcaveAngle = true;\n\t\t\tif (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n\t\t\t\tthis._segList.addPt(this._offset0.p1);\n\t\t\t} else {\n\t\t\t\tthis._segList.addPt(this._offset0.p1);\n\t\t\t\tif (this._closingSegLengthFactor > 0) {\n\t\t\t\t\tvar mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n\t\t\t\t\tthis._segList.addPt(mid0);\n\t\t\t\t\tvar mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n\t\t\t\t\tthis._segList.addPt(mid1);\n\t\t\t\t} else {\n\t\t\t\t\tthis._segList.addPt(this._s1);\n\t\t\t\t}\n\t\t\t\tthis._segList.addPt(this._offset1.p0);\n\t\t\t}\n\t\t}\n\t}\n\tcreateCircle(p) {\n\t\tvar pt = new Coordinate(p.x + this._distance, p.y);\n\t\tthis._segList.addPt(pt);\n\t\tthis.addDirectedFillet(p, 0.0, 2.0 * Math.PI, -1, this._distance);\n\t\tthis._segList.closeRing();\n\t}\n\taddBevelJoin(offset0, offset1) {\n\t\tthis._segList.addPt(offset0.p1);\n\t\tthis._segList.addPt(offset1.p0);\n\t}\n\tinit(distance) {\n\t\tthis._distance = distance;\n\t\tthis._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0));\n\t\tthis._segList = new OffsetSegmentString();\n\t\tthis._segList.setPrecisionModel(this._precisionModel);\n\t\tthis._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR);\n\t}\n\taddCollinear(addStartPoint) {\n\t\tthis._li.computeIntersection(this._s0, this._s1, this._s1, this._s2);\n\t\tvar numInt = this._li.getIntersectionNum();\n\t\tif (numInt >= 2) {\n\t\t\tif (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n\t\t\t\tif (addStartPoint) this._segList.addPt(this._offset0.p1);\n\t\t\t\tthis._segList.addPt(this._offset1.p0);\n\t\t\t} else {\n\t\t\t\tthis.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, Orientation.CLOCKWISE, this._distance);\n\t\t\t}\n\t\t}\n\t}\n\tcloseRing() {\n\t\tthis._segList.closeRing();\n\t}\n\thasNarrowConcaveAngle() {\n\t\treturn this._hasNarrowConcaveAngle;\n\t}\n\tgetClass() {\n\t\treturn OffsetSegmentGenerator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOffsetSegmentGenerator.constructor_ = function () {\n\tthis._maxCurveSegmentError = 0.0;\n\tthis._filletAngleQuantum = null;\n\tthis._closingSegLengthFactor = 1;\n\tthis._segList = null;\n\tthis._distance = 0.0;\n\tthis._precisionModel = null;\n\tthis._bufParams = null;\n\tthis._li = null;\n\tthis._s0 = null;\n\tthis._s1 = null;\n\tthis._s2 = null;\n\tthis._seg0 = new LineSegment();\n\tthis._seg1 = new LineSegment();\n\tthis._offset0 = new LineSegment();\n\tthis._offset1 = new LineSegment();\n\tthis._side = 0;\n\tthis._hasNarrowConcaveAngle = false;\n\tlet precisionModel = arguments[0], bufParams = arguments[1], distance = arguments[2];\n\tthis._precisionModel = precisionModel;\n\tthis._bufParams = bufParams;\n\tthis._li = new RobustLineIntersector();\n\tthis._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments();\n\tif (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR;\n\tthis.init(distance);\n};\nOffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3;\nOffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3;\nOffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6;\nOffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR = 80;\n","import BufferParameters from './BufferParameters';\nimport Position from '../../geomgraph/Position';\nimport Coordinate from '../../geom/Coordinate';\nimport BufferInputLineSimplifier from './BufferInputLineSimplifier';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport OffsetSegmentGenerator from './OffsetSegmentGenerator';\nexport default class OffsetCurveBuilder {\n\tconstructor() {\n\t\tOffsetCurveBuilder.constructor_.apply(this, arguments);\n\t}\n\tstatic copyCoordinates(pts) {\n\t\tvar copy = new Array(pts.length).fill(null);\n\t\tfor (var i = 0; i < copy.length; i++) {\n\t\t\tcopy[i] = new Coordinate(pts[i]);\n\t\t}\n\t\treturn copy;\n\t}\n\tgetOffsetCurve(inputPts, distance) {\n\t\tthis._distance = distance;\n\t\tif (distance === 0.0) return null;\n\t\tvar isRightSide = distance < 0.0;\n\t\tvar posDistance = Math.abs(distance);\n\t\tvar segGen = this.getSegGen(posDistance);\n\t\tif (inputPts.length <= 1) {\n\t\t\tthis.computePointCurve(inputPts[0], segGen);\n\t\t} else {\n\t\t\tthis.computeOffsetCurve(inputPts, isRightSide, segGen);\n\t\t}\n\t\tvar curvePts = segGen.getCoordinates();\n\t\tif (isRightSide) CoordinateArrays.reverse(curvePts);\n\t\treturn curvePts;\n\t}\n\tcomputeSingleSidedBufferCurve(inputPts, isRightSide, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tif (isRightSide) {\n\t\t\tsegGen.addSegments(inputPts, true);\n\t\t\tvar simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n\t\t\tvar n2 = simp2.length - 1;\n\t\t\tsegGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = n2 - 2; i >= 0; i--) {\n\t\t\t\tsegGen.addNextSegment(simp2[i], true);\n\t\t\t}\n\t\t} else {\n\t\t\tsegGen.addSegments(inputPts, false);\n\t\t\tvar simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\t\tvar n1 = simp1.length - 1;\n\t\t\tsegGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = 2; i <= n1; i++) {\n\t\t\t\tsegGen.addNextSegment(simp1[i], true);\n\t\t\t}\n\t\t}\n\t\tsegGen.addLastSegment();\n\t\tsegGen.closeRing();\n\t}\n\tcomputeRingBufferCurve(inputPts, side, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tif (side === Position.RIGHT) distTol = -distTol;\n\t\tvar simp = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\tvar n = simp.length - 1;\n\t\tsegGen.initSideSegments(simp[n - 1], simp[0], side);\n\t\tfor (var i = 1; i <= n; i++) {\n\t\t\tvar addStartPoint = i !== 1;\n\t\t\tsegGen.addNextSegment(simp[i], addStartPoint);\n\t\t}\n\t\tsegGen.closeRing();\n\t}\n\tcomputeLineBufferCurve(inputPts, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tvar simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\tvar n1 = simp1.length - 1;\n\t\tsegGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n\t\tfor (var i = 2; i <= n1; i++) {\n\t\t\tsegGen.addNextSegment(simp1[i], true);\n\t\t}\n\t\tsegGen.addLastSegment();\n\t\tsegGen.addLineEndCap(simp1[n1 - 1], simp1[n1]);\n\t\tvar simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n\t\tvar n2 = simp2.length - 1;\n\t\tsegGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n\t\tfor (var i = n2 - 2; i >= 0; i--) {\n\t\t\tsegGen.addNextSegment(simp2[i], true);\n\t\t}\n\t\tsegGen.addLastSegment();\n\t\tsegGen.addLineEndCap(simp2[1], simp2[0]);\n\t\tsegGen.closeRing();\n\t}\n\tcomputePointCurve(pt, segGen) {\n\t\tswitch (this._bufParams.getEndCapStyle()) {\n\t\t\tcase BufferParameters.CAP_ROUND:\n\t\t\t\tsegGen.createCircle(pt);\n\t\t\t\tbreak;\n\t\t\tcase BufferParameters.CAP_SQUARE:\n\t\t\t\tsegGen.createSquare(pt);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tgetLineCurve(inputPts, distance) {\n\t\tthis._distance = distance;\n\t\tif (distance < 0.0 && !this._bufParams.isSingleSided()) return null;\n\t\tif (distance === 0.0) return null;\n\t\tvar posDistance = Math.abs(distance);\n\t\tvar segGen = this.getSegGen(posDistance);\n\t\tif (inputPts.length <= 1) {\n\t\t\tthis.computePointCurve(inputPts[0], segGen);\n\t\t} else {\n\t\t\tif (this._bufParams.isSingleSided()) {\n\t\t\t\tvar isRightSide = distance < 0.0;\n\t\t\t\tthis.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen);\n\t\t\t} else this.computeLineBufferCurve(inputPts, segGen);\n\t\t}\n\t\tvar lineCoord = segGen.getCoordinates();\n\t\treturn lineCoord;\n\t}\n\tgetBufferParameters() {\n\t\treturn this._bufParams;\n\t}\n\tsimplifyTolerance(bufDistance) {\n\t\treturn bufDistance * this._bufParams.getSimplifyFactor();\n\t}\n\tgetRingCurve(inputPts, side, distance) {\n\t\tthis._distance = distance;\n\t\tif (inputPts.length <= 2) return this.getLineCurve(inputPts, distance);\n\t\tif (distance === 0.0) {\n\t\t\treturn OffsetCurveBuilder.copyCoordinates(inputPts);\n\t\t}\n\t\tvar segGen = this.getSegGen(distance);\n\t\tthis.computeRingBufferCurve(inputPts, side, segGen);\n\t\treturn segGen.getCoordinates();\n\t}\n\tcomputeOffsetCurve(inputPts, isRightSide, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tif (isRightSide) {\n\t\t\tvar simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n\t\t\tvar n2 = simp2.length - 1;\n\t\t\tsegGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = n2 - 2; i >= 0; i--) {\n\t\t\t\tsegGen.addNextSegment(simp2[i], true);\n\t\t\t}\n\t\t} else {\n\t\t\tvar simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\t\tvar n1 = simp1.length - 1;\n\t\t\tsegGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = 2; i <= n1; i++) {\n\t\t\t\tsegGen.addNextSegment(simp1[i], true);\n\t\t\t}\n\t\t}\n\t\tsegGen.addLastSegment();\n\t}\n\tgetSegGen(distance) {\n\t\treturn new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance);\n\t}\n\tgetClass() {\n\t\treturn OffsetCurveBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOffsetCurveBuilder.constructor_ = function () {\n\tthis._distance = 0.0;\n\tthis._precisionModel = null;\n\tthis._bufParams = null;\n\tlet precisionModel = arguments[0], bufParams = arguments[1];\n\tthis._precisionModel = precisionModel;\n\tthis._bufParams = bufParams;\n};\n","import hasInterface from '../../../../../hasInterface';\nimport Position from '../../geomgraph/Position';\nimport Coordinate from '../../geom/Coordinate';\nimport Orientation from '../../algorithm/Orientation';\nimport Collections from '../../../../../java/util/Collections';\nimport DirectedEdge from '../../geomgraph/DirectedEdge';\nimport LineSegment from '../../geom/LineSegment';\nimport Comparable from '../../../../../java/lang/Comparable';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport List from '../../../../../java/util/List';\nexport default class SubgraphDepthLocater {\n\tconstructor() {\n\t\tSubgraphDepthLocater.constructor_.apply(this, arguments);\n\t}\n\tfindStabbedSegments() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet stabbingRayLeftPt = arguments[0];\n\t\t\tvar stabbedSegments = new ArrayList();\n\t\t\tfor (var i = this._subgraphs.iterator(); i.hasNext(); ) {\n\t\t\t\tvar bsg = i.next();\n\t\t\t\tvar env = bsg.getEnvelope();\n\t\t\t\tif (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) continue;\n\t\t\t\tthis.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments);\n\t\t\t}\n\t\t\treturn stabbedSegments;\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n\t\t\t\tlet stabbingRayLeftPt = arguments[0], dirEdge = arguments[1], stabbedSegments = arguments[2];\n\t\t\t\tvar pts = dirEdge.getEdge().getCoordinates();\n\t\t\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\t\t\tthis._seg.p0 = pts[i];\n\t\t\t\t\tthis._seg.p1 = pts[i + 1];\n\t\t\t\t\tif (this._seg.p0.y > this._seg.p1.y) this._seg.reverse();\n\t\t\t\t\tvar maxx = Math.max(this._seg.p0.x, this._seg.p1.x);\n\t\t\t\t\tif (maxx < stabbingRayLeftPt.x) continue;\n\t\t\t\t\tif (this._seg.isHorizontal()) continue;\n\t\t\t\t\tif (stabbingRayLeftPt.y < this._seg.p0.y || stabbingRayLeftPt.y > this._seg.p1.y) continue;\n\t\t\t\t\tif (Orientation.index(this._seg.p0, this._seg.p1, stabbingRayLeftPt) === Orientation.RIGHT) continue;\n\t\t\t\t\tvar depth = dirEdge.getDepth(Position.LEFT);\n\t\t\t\t\tif (!this._seg.p0.equals(pts[i])) depth = dirEdge.getDepth(Position.RIGHT);\n\t\t\t\t\tvar ds = new DepthSegment(this._seg, depth);\n\t\t\t\t\tstabbedSegments.add(ds);\n\t\t\t\t}\n\t\t\t} else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n\t\t\t\tlet stabbingRayLeftPt = arguments[0], dirEdges = arguments[1], stabbedSegments = arguments[2];\n\t\t\t\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\t\t\t\tvar de = i.next();\n\t\t\t\t\tif (!de.isForward()) continue;\n\t\t\t\t\tthis.findStabbedSegments(stabbingRayLeftPt, de, stabbedSegments);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgetDepth(p) {\n\t\tvar stabbedSegments = this.findStabbedSegments(p);\n\t\tif (stabbedSegments.size() === 0) return 0;\n\t\tvar ds = Collections.min(stabbedSegments);\n\t\treturn ds._leftDepth;\n\t}\n\tgetClass() {\n\t\treturn SubgraphDepthLocater;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass DepthSegment {\n\tconstructor() {\n\t\tDepthSegment.constructor_.apply(this, arguments);\n\t}\n\tcompareTo(obj) {\n\t\tvar other = obj;\n\t\tif (this._upwardSeg.minX() >= other._upwardSeg.maxX()) return 1;\n\t\tif (this._upwardSeg.maxX() <= other._upwardSeg.minX()) return -1;\n\t\tvar orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg);\n\t\tif (orientIndex !== 0) return orientIndex;\n\t\torientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg);\n\t\tif (orientIndex !== 0) return orientIndex;\n\t\treturn this._upwardSeg.compareTo(other._upwardSeg);\n\t}\n\tcompareX(seg0, seg1) {\n\t\tvar compare0 = seg0.p0.compareTo(seg1.p0);\n\t\tif (compare0 !== 0) return compare0;\n\t\treturn seg0.p1.compareTo(seg1.p1);\n\t}\n\ttoString() {\n\t\treturn this._upwardSeg.toString();\n\t}\n\tgetClass() {\n\t\treturn DepthSegment;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable];\n\t}\n}\nDepthSegment.constructor_ = function () {\n\tthis._upwardSeg = null;\n\tthis._leftDepth = null;\n\tlet seg = arguments[0], depth = arguments[1];\n\tthis._upwardSeg = new LineSegment(seg);\n\tthis._leftDepth = depth;\n};\nSubgraphDepthLocater.DepthSegment = DepthSegment;\nSubgraphDepthLocater.constructor_ = function () {\n\tthis._subgraphs = null;\n\tthis._seg = new LineSegment();\n\tlet subgraphs = arguments[0];\n\tthis._subgraphs = subgraphs;\n};\n","import Location from '../../geom/Location';\nimport LineString from '../../geom/LineString';\nimport Position from '../../geomgraph/Position';\nimport Point from '../../geom/Point';\nimport NodedSegmentString from '../../noding/NodedSegmentString';\nimport Polygon from '../../geom/Polygon';\nimport MultiPoint from '../../geom/MultiPoint';\nimport LinearRing from '../../geom/LinearRing';\nimport Orientation from '../../algorithm/Orientation';\nimport MultiPolygon from '../../geom/MultiPolygon';\nimport Label from '../../geomgraph/Label';\nimport GeometryCollection from '../../geom/GeometryCollection';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Distance from '../../algorithm/Distance';\nimport MultiLineString from '../../geom/MultiLineString';\nimport Triangle from '../../geom/Triangle';\nexport default class OffsetCurveSetBuilder {\n\tconstructor() {\n\t\tOffsetCurveSetBuilder.constructor_.apply(this, arguments);\n\t}\n\taddPoint(p) {\n\t\tif (this._distance <= 0.0) return null;\n\t\tvar coord = p.getCoordinates();\n\t\tvar curve = this._curveBuilder.getLineCurve(coord, this._distance);\n\t\tthis.addCurve(curve, Location.EXTERIOR, Location.INTERIOR);\n\t}\n\taddPolygon(p) {\n\t\tvar offsetDistance = this._distance;\n\t\tvar offsetSide = Position.LEFT;\n\t\tif (this._distance < 0.0) {\n\t\t\toffsetDistance = -this._distance;\n\t\t\toffsetSide = Position.RIGHT;\n\t\t}\n\t\tvar shell = p.getExteriorRing();\n\t\tvar shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates());\n\t\tif (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) return null;\n\t\tif (this._distance <= 0.0 && shellCoord.length < 3) return null;\n\t\tthis.addPolygonRing(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tvar holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates());\n\t\t\tif (this._distance > 0.0 && this.isErodedCompletely(hole, -this._distance)) continue;\n\t\t\tthis.addPolygonRing(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR);\n\t\t}\n\t}\n\tisTriangleErodedCompletely(triangleCoord, bufferDistance) {\n\t\tvar tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2]);\n\t\tvar inCentre = tri.inCentre();\n\t\tvar distToCentre = Distance.pointToSegment(inCentre, tri.p0, tri.p1);\n\t\treturn distToCentre < Math.abs(bufferDistance);\n\t}\n\taddLineString(line) {\n\t\tif (this._distance <= 0.0 && !this._curveBuilder.getBufferParameters().isSingleSided()) return null;\n\t\tvar coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n\t\tvar curve = this._curveBuilder.getLineCurve(coord, this._distance);\n\t\tthis.addCurve(curve, Location.EXTERIOR, Location.INTERIOR);\n\t}\n\taddCurve(coord, leftLoc, rightLoc) {\n\t\tif (coord === null || coord.length < 2) return null;\n\t\tvar e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc));\n\t\tthis._curveList.add(e);\n\t}\n\tgetCurves() {\n\t\tthis.add(this._inputGeom);\n\t\treturn this._curveList;\n\t}\n\taddPolygonRing(coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n\t\tif (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) return null;\n\t\tvar leftLoc = cwLeftLoc;\n\t\tvar rightLoc = cwRightLoc;\n\t\tif (coord.length >= LinearRing.MINIMUM_VALID_SIZE && Orientation.isCCW(coord)) {\n\t\t\tleftLoc = cwRightLoc;\n\t\t\trightLoc = cwLeftLoc;\n\t\t\tside = Position.opposite(side);\n\t\t}\n\t\tvar curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance);\n\t\tthis.addCurve(curve, leftLoc, rightLoc);\n\t}\n\tadd(g) {\n\t\tif (g.isEmpty()) return null;\n\t\tif (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getClass().getName());\n\t}\n\tisErodedCompletely(ring, bufferDistance) {\n\t\tvar ringCoord = ring.getCoordinates();\n\t\tvar minDiam = 0.0;\n\t\tif (ringCoord.length < 4) return bufferDistance < 0;\n\t\tif (ringCoord.length === 4) return this.isTriangleErodedCompletely(ringCoord, bufferDistance);\n\t\tvar env = ring.getEnvelopeInternal();\n\t\tvar envMinDimension = Math.min(env.getHeight(), env.getWidth());\n\t\tif (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) return true;\n\t\treturn false;\n\t}\n\taddCollection(gc) {\n\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\tvar g = gc.getGeometryN(i);\n\t\t\tthis.add(g);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn OffsetCurveSetBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOffsetCurveSetBuilder.constructor_ = function () {\n\tthis._inputGeom = null;\n\tthis._distance = null;\n\tthis._curveBuilder = null;\n\tthis._curveList = new ArrayList();\n\tlet inputGeom = arguments[0], distance = arguments[1], curveBuilder = arguments[2];\n\tthis._inputGeom = inputGeom;\n\tthis._distance = distance;\n\tthis._curveBuilder = curveBuilder;\n};\n","import StringBuffer from '../../../../java/lang/StringBuffer';\nimport Location from '../geom/Location';\nimport Position from './Position';\nimport TopologyException from '../geom/TopologyException';\nimport System from '../../../../java/lang/System';\nimport SimplePointInAreaLocator from '../algorithm/locate/SimplePointInAreaLocator';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Assert from '../util/Assert';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default class EdgeEndStar {\n\tconstructor() {\n\t\tEdgeEndStar.constructor_.apply(this, arguments);\n\t}\n\tgetNextCW(ee) {\n\t\tthis.getEdges();\n\t\tvar i = this._edgeList.indexOf(ee);\n\t\tvar iNextCW = i - 1;\n\t\tif (i === 0) iNextCW = this._edgeList.size() - 1;\n\t\treturn this._edgeList.get(iNextCW);\n\t}\n\tpropagateSideLabels(geomIndex) {\n\t\tvar startLoc = Location.NONE;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tif (label.isArea(geomIndex) && label.getLocation(geomIndex, Position.LEFT) !== Location.NONE) startLoc = label.getLocation(geomIndex, Position.LEFT);\n\t\t}\n\t\tif (startLoc === Location.NONE) return null;\n\t\tvar currLoc = startLoc;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tif (label.getLocation(geomIndex, Position.ON) === Location.NONE) label.setLocation(geomIndex, Position.ON, currLoc);\n\t\t\tif (label.isArea(geomIndex)) {\n\t\t\t\tvar leftLoc = label.getLocation(geomIndex, Position.LEFT);\n\t\t\t\tvar rightLoc = label.getLocation(geomIndex, Position.RIGHT);\n\t\t\t\tif (rightLoc !== Location.NONE) {\n\t\t\t\t\tif (rightLoc !== currLoc) throw new TopologyException(\"side location conflict\", e.getCoordinate());\n\t\t\t\t\tif (leftLoc === Location.NONE) {\n\t\t\t\t\t\tAssert.shouldNeverReachHere(\"found single null side (at \" + e.getCoordinate() + \")\");\n\t\t\t\t\t}\n\t\t\t\t\tcurrLoc = leftLoc;\n\t\t\t\t} else {\n\t\t\t\t\tAssert.isTrue(label.getLocation(geomIndex, Position.LEFT) === Location.NONE, \"found single null side\");\n\t\t\t\t\tlabel.setLocation(geomIndex, Position.RIGHT, currLoc);\n\t\t\t\t\tlabel.setLocation(geomIndex, Position.LEFT, currLoc);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinate() {\n\t\tvar it = this.iterator();\n\t\tif (!it.hasNext()) return null;\n\t\tvar e = it.next();\n\t\treturn e.getCoordinate();\n\t}\n\tprint(out) {\n\t\tSystem.out.println(\"EdgeEndStar: \" + this.getCoordinate());\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\te.print(out);\n\t\t}\n\t}\n\tisAreaLabelsConsistent(geomGraph) {\n\t\tthis.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule());\n\t\treturn this.checkAreaLabelsConsistent(0);\n\t}\n\tcheckAreaLabelsConsistent(geomIndex) {\n\t\tvar edges = this.getEdges();\n\t\tif (edges.size() <= 0) return true;\n\t\tvar lastEdgeIndex = edges.size() - 1;\n\t\tvar startLabel = edges.get(lastEdgeIndex).getLabel();\n\t\tvar startLoc = startLabel.getLocation(geomIndex, Position.LEFT);\n\t\tAssert.isTrue(startLoc !== Location.NONE, \"Found unlabelled area edge\");\n\t\tvar currLoc = startLoc;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tAssert.isTrue(label.isArea(geomIndex), \"Found non-area edge\");\n\t\t\tvar leftLoc = label.getLocation(geomIndex, Position.LEFT);\n\t\t\tvar rightLoc = label.getLocation(geomIndex, Position.RIGHT);\n\t\t\tif (leftLoc === rightLoc) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (rightLoc !== currLoc) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcurrLoc = leftLoc;\n\t\t}\n\t\treturn true;\n\t}\n\tfindIndex(eSearch) {\n\t\tthis.iterator();\n\t\tfor (var i = 0; i < this._edgeList.size(); i++) {\n\t\t\tvar e = this._edgeList.get(i);\n\t\t\tif (e === eSearch) return i;\n\t\t}\n\t\treturn -1;\n\t}\n\titerator() {\n\t\treturn this.getEdges().iterator();\n\t}\n\tgetEdges() {\n\t\tif (this._edgeList === null) {\n\t\t\tthis._edgeList = new ArrayList(this._edgeMap.values());\n\t\t}\n\t\treturn this._edgeList;\n\t}\n\tgetLocation(geomIndex, p, geom) {\n\t\tif (this._ptInAreaLocation[geomIndex] === Location.NONE) {\n\t\t\tthis._ptInAreaLocation[geomIndex] = SimplePointInAreaLocator.locate(p, geom[geomIndex].getGeometry());\n\t\t}\n\t\treturn this._ptInAreaLocation[geomIndex];\n\t}\n\ttoString() {\n\t\tvar buf = new StringBuffer();\n\t\tbuf.append(\"EdgeEndStar: \" + this.getCoordinate());\n\t\tbuf.append(\"\\n\");\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tbuf.append(e);\n\t\t\tbuf.append(\"\\n\");\n\t\t}\n\t\treturn buf.toString();\n\t}\n\tcomputeEdgeEndLabels(boundaryNodeRule) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ee = it.next();\n\t\t\tee.computeLabel(boundaryNodeRule);\n\t\t}\n\t}\n\tcomputeLabelling(geomGraph) {\n\t\tthis.computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule());\n\t\tthis.propagateSideLabels(0);\n\t\tthis.propagateSideLabels(1);\n\t\tvar hasDimensionalCollapseEdge = [false, false];\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tfor (var geomi = 0; geomi < 2; geomi++) {\n\t\t\t\tif (label.isLine(geomi) && label.getLocation(geomi) === Location.BOUNDARY) hasDimensionalCollapseEdge[geomi] = true;\n\t\t\t}\n\t\t}\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tfor (var geomi = 0; geomi < 2; geomi++) {\n\t\t\t\tif (label.isAnyNull(geomi)) {\n\t\t\t\t\tvar loc = Location.NONE;\n\t\t\t\t\tif (hasDimensionalCollapseEdge[geomi]) {\n\t\t\t\t\t\tloc = Location.EXTERIOR;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p = e.getCoordinate();\n\t\t\t\t\t\tloc = this.getLocation(geomi, p, geomGraph);\n\t\t\t\t\t}\n\t\t\t\t\tlabel.setAllLocationsIfNull(geomi, loc);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgetDegree() {\n\t\treturn this._edgeMap.size();\n\t}\n\tinsertEdgeEnd(e, obj) {\n\t\tthis._edgeMap.put(e, obj);\n\t\tthis._edgeList = null;\n\t}\n\tgetClass() {\n\t\treturn EdgeEndStar;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeEndStar.constructor_ = function () {\n\tthis._edgeMap = new TreeMap();\n\tthis._edgeList = null;\n\tthis._ptInAreaLocation = [Location.NONE, Location.NONE];\n};\n","import Location from '../geom/Location';\nimport Position from './Position';\nimport TopologyException from '../geom/TopologyException';\nimport EdgeEndStar from './EdgeEndStar';\nimport System from '../../../../java/lang/System';\nimport Label from './Label';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Quadrant from './Quadrant';\nimport Assert from '../util/Assert';\nexport default class DirectedEdgeStar extends EdgeEndStar {\n\tconstructor() {\n\t\tsuper();\n\t\tDirectedEdgeStar.constructor_.apply(this, arguments);\n\t}\n\tlinkResultDirectedEdges() {\n\t\tthis.getResultAreaEdges();\n\t\tvar firstOut = null;\n\t\tvar incoming = null;\n\t\tvar state = this._SCANNING_FOR_INCOMING;\n\t\tfor (var i = 0; i < this._resultAreaEdgeList.size(); i++) {\n\t\t\tvar nextOut = this._resultAreaEdgeList.get(i);\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (!nextOut.getLabel().isArea()) continue;\n\t\t\tif (firstOut === null && nextOut.isInResult()) firstOut = nextOut;\n\t\t\tswitch (state) {\n\t\t\t\tcase this._SCANNING_FOR_INCOMING:\n\t\t\t\t\tif (!nextIn.isInResult()) continue;\n\t\t\t\t\tincoming = nextIn;\n\t\t\t\t\tstate = this._LINKING_TO_OUTGOING;\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._LINKING_TO_OUTGOING:\n\t\t\t\t\tif (!nextOut.isInResult()) continue;\n\t\t\t\t\tincoming.setNext(nextOut);\n\t\t\t\t\tstate = this._SCANNING_FOR_INCOMING;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (state === this._LINKING_TO_OUTGOING) {\n\t\t\tif (firstOut === null) throw new TopologyException(\"no outgoing dirEdge found\", this.getCoordinate());\n\t\t\tAssert.isTrue(firstOut.isInResult(), \"unable to link last incoming dirEdge\");\n\t\t\tincoming.setNext(firstOut);\n\t\t}\n\t}\n\tinsert(ee) {\n\t\tvar de = ee;\n\t\tthis.insertEdgeEnd(de, de);\n\t}\n\tgetRightmostEdge() {\n\t\tvar edges = this.getEdges();\n\t\tvar size = edges.size();\n\t\tif (size < 1) return null;\n\t\tvar de0 = edges.get(0);\n\t\tif (size === 1) return de0;\n\t\tvar deLast = edges.get(size - 1);\n\t\tvar quad0 = de0.getQuadrant();\n\t\tvar quad1 = deLast.getQuadrant();\n\t\tif (Quadrant.isNorthern(quad0) && Quadrant.isNorthern(quad1)) return de0; else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) return deLast; else {\n\t\t\tvar nonHorizontalEdge = null;\n\t\t\tif (de0.getDy() !== 0) return de0; else if (deLast.getDy() !== 0) return deLast;\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"found two horizontal edges incident on node\");\n\t\treturn null;\n\t}\n\tprint(out) {\n\t\tSystem.out.println(\"DirectedEdgeStar: \" + this.getCoordinate());\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tout.print(\"out \");\n\t\t\tde.print(out);\n\t\t\tout.println();\n\t\t\tout.print(\"in \");\n\t\t\tde.getSym().print(out);\n\t\t\tout.println();\n\t\t}\n\t}\n\tgetResultAreaEdges() {\n\t\tif (this._resultAreaEdgeList !== null) return this._resultAreaEdgeList;\n\t\tthis._resultAreaEdgeList = new ArrayList();\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.isInResult() || de.getSym().isInResult()) this._resultAreaEdgeList.add(de);\n\t\t}\n\t\treturn this._resultAreaEdgeList;\n\t}\n\tupdateLabelling(nodeLabel) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tlabel.setAllLocationsIfNull(0, nodeLabel.getLocation(0));\n\t\t\tlabel.setAllLocationsIfNull(1, nodeLabel.getLocation(1));\n\t\t}\n\t}\n\tlinkAllDirectedEdges() {\n\t\tthis.getEdges();\n\t\tvar prevOut = null;\n\t\tvar firstIn = null;\n\t\tfor (var i = this._edgeList.size() - 1; i >= 0; i--) {\n\t\t\tvar nextOut = this._edgeList.get(i);\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (firstIn === null) firstIn = nextIn;\n\t\t\tif (prevOut !== null) nextIn.setNext(prevOut);\n\t\t\tprevOut = nextOut;\n\t\t}\n\t\tfirstIn.setNext(prevOut);\n\t}\n\tcomputeDepths() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet de = arguments[0];\n\t\t\tvar edgeIndex = this.findIndex(de);\n\t\t\tvar label = de.getLabel();\n\t\t\tvar startDepth = de.getDepth(Position.LEFT);\n\t\t\tvar targetLastDepth = de.getDepth(Position.RIGHT);\n\t\t\tvar nextDepth = this.computeDepths(edgeIndex + 1, this._edgeList.size(), startDepth);\n\t\t\tvar lastDepth = this.computeDepths(0, edgeIndex, nextDepth);\n\t\t\tif (lastDepth !== targetLastDepth) throw new TopologyException(\"depth mismatch at \" + de.getCoordinate());\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet startIndex = arguments[0], endIndex = arguments[1], startDepth = arguments[2];\n\t\t\tvar currDepth = startDepth;\n\t\t\tfor (var i = startIndex; i < endIndex; i++) {\n\t\t\t\tvar nextDe = this._edgeList.get(i);\n\t\t\t\tvar label = nextDe.getLabel();\n\t\t\t\tnextDe.setEdgeDepths(Position.RIGHT, currDepth);\n\t\t\t\tcurrDepth = nextDe.getDepth(Position.LEFT);\n\t\t\t}\n\t\t\treturn currDepth;\n\t\t}\n\t}\n\tmergeSymLabels() {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tlabel.merge(de.getSym().getLabel());\n\t\t}\n\t}\n\tlinkMinimalDirectedEdges(er) {\n\t\tvar firstOut = null;\n\t\tvar incoming = null;\n\t\tvar state = this._SCANNING_FOR_INCOMING;\n\t\tfor (var i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {\n\t\t\tvar nextOut = this._resultAreaEdgeList.get(i);\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (firstOut === null && nextOut.getEdgeRing() === er) firstOut = nextOut;\n\t\t\tswitch (state) {\n\t\t\t\tcase this._SCANNING_FOR_INCOMING:\n\t\t\t\t\tif (nextIn.getEdgeRing() !== er) continue;\n\t\t\t\t\tincoming = nextIn;\n\t\t\t\t\tstate = this._LINKING_TO_OUTGOING;\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._LINKING_TO_OUTGOING:\n\t\t\t\t\tif (nextOut.getEdgeRing() !== er) continue;\n\t\t\t\t\tincoming.setNextMin(nextOut);\n\t\t\t\t\tstate = this._SCANNING_FOR_INCOMING;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (state === this._LINKING_TO_OUTGOING) {\n\t\t\tAssert.isTrue(firstOut !== null, \"found null for first outgoing dirEdge\");\n\t\t\tAssert.isTrue(firstOut.getEdgeRing() === er, \"unable to link last incoming dirEdge\");\n\t\t\tincoming.setNextMin(firstOut);\n\t\t}\n\t}\n\tgetOutgoingDegree() {\n\t\tif (arguments.length === 0) {\n\t\t\tvar degree = 0;\n\t\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\t\tvar de = it.next();\n\t\t\t\tif (de.isInResult()) degree++;\n\t\t\t}\n\t\t\treturn degree;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet er = arguments[0];\n\t\t\tvar degree = 0;\n\t\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\t\tvar de = it.next();\n\t\t\t\tif (de.getEdgeRing() === er) degree++;\n\t\t\t}\n\t\t\treturn degree;\n\t\t}\n\t}\n\tgetLabel() {\n\t\treturn this._label;\n\t}\n\tfindCoveredLineEdges() {\n\t\tvar startLoc = Location.NONE;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar nextOut = it.next();\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (!nextOut.isLineEdge()) {\n\t\t\t\tif (nextOut.isInResult()) {\n\t\t\t\t\tstartLoc = Location.INTERIOR;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (nextIn.isInResult()) {\n\t\t\t\t\tstartLoc = Location.EXTERIOR;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (startLoc === Location.NONE) return null;\n\t\tvar currLoc = startLoc;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar nextOut = it.next();\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (nextOut.isLineEdge()) {\n\t\t\t\tnextOut.getEdge().setCovered(currLoc === Location.INTERIOR);\n\t\t\t} else {\n\t\t\t\tif (nextOut.isInResult()) currLoc = Location.EXTERIOR;\n\t\t\t\tif (nextIn.isInResult()) currLoc = Location.INTERIOR;\n\t\t\t}\n\t\t}\n\t}\n\tcomputeLabelling(geom) {\n\t\tsuper.computeLabelling.call(this, geom);\n\t\tthis._label = new Label(Location.NONE);\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ee = it.next();\n\t\t\tvar e = ee.getEdge();\n\t\t\tvar eLabel = e.getLabel();\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tvar eLoc = eLabel.getLocation(i);\n\t\t\t\tif (eLoc === Location.INTERIOR || eLoc === Location.BOUNDARY) this._label.setLocation(i, Location.INTERIOR);\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn DirectedEdgeStar;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDirectedEdgeStar.constructor_ = function () {\n\tthis._resultAreaEdgeList = null;\n\tthis._label = null;\n\tthis._SCANNING_FOR_INCOMING = 1;\n\tthis._LINKING_TO_OUTGOING = 2;\n};\n","import DirectedEdgeStar from '../../geomgraph/DirectedEdgeStar';\nimport Node from '../../geomgraph/Node';\nimport NodeFactory from '../../geomgraph/NodeFactory';\nexport default class OverlayNodeFactory extends NodeFactory {\n\tconstructor() {\n\t\tsuper();\n\t\tOverlayNodeFactory.constructor_.apply(this, arguments);\n\t}\n\tcreateNode(coord) {\n\t\treturn new Node(coord, new DirectedEdgeStar());\n\t}\n\tgetClass() {\n\t\treturn OverlayNodeFactory;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOverlayNodeFactory.constructor_ = function () {};\n","import Comparable from '../../../../java/lang/Comparable';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nexport default class OrientedCoordinateArray {\n\tconstructor() {\n\t\tOrientedCoordinateArray.constructor_.apply(this, arguments);\n\t}\n\tstatic orientation(pts) {\n\t\treturn CoordinateArrays.increasingDirection(pts) === 1;\n\t}\n\tstatic compareOriented(pts1, orientation1, pts2, orientation2) {\n\t\tvar dir1 = orientation1 ? 1 : -1;\n\t\tvar dir2 = orientation2 ? 1 : -1;\n\t\tvar limit1 = orientation1 ? pts1.length : -1;\n\t\tvar limit2 = orientation2 ? pts2.length : -1;\n\t\tvar i1 = orientation1 ? 0 : pts1.length - 1;\n\t\tvar i2 = orientation2 ? 0 : pts2.length - 1;\n\t\tvar comp = 0;\n\t\twhile (true) {\n\t\t\tvar compPt = pts1[i1].compareTo(pts2[i2]);\n\t\t\tif (compPt !== 0) return compPt;\n\t\t\ti1 += dir1;\n\t\t\ti2 += dir2;\n\t\t\tvar done1 = i1 === limit1;\n\t\t\tvar done2 = i2 === limit2;\n\t\t\tif (done1 && !done2) return -1;\n\t\t\tif (!done1 && done2) return 1;\n\t\t\tif (done1 && done2) return 0;\n\t\t}\n\t}\n\tcompareTo(o1) {\n\t\tvar oca = o1;\n\t\tvar comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation);\n\t\treturn comp;\n\t}\n\tgetClass() {\n\t\treturn OrientedCoordinateArray;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable];\n\t}\n}\nOrientedCoordinateArray.constructor_ = function () {\n\tthis._pts = null;\n\tthis._orientation = null;\n\tlet pts = arguments[0];\n\tthis._pts = pts;\n\tthis._orientation = OrientedCoordinateArray.orientation(pts);\n};\n","import OrientedCoordinateArray from '../noding/OrientedCoordinateArray';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default class EdgeList {\n\tconstructor() {\n\t\tEdgeList.constructor_.apply(this, arguments);\n\t}\n\tprint(out) {\n\t\tout.print(\"MULTILINESTRING ( \");\n\t\tfor (var j = 0; j < this._edges.size(); j++) {\n\t\t\tvar e = this._edges.get(j);\n\t\t\tif (j > 0) out.print(\",\");\n\t\t\tout.print(\"(\");\n\t\t\tvar pts = e.getCoordinates();\n\t\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\t\tif (i > 0) out.print(\",\");\n\t\t\t\tout.print(pts[i].x + \" \" + pts[i].y);\n\t\t\t}\n\t\t\tout.println(\")\");\n\t\t}\n\t\tout.print(\") \");\n\t}\n\taddAll(edgeColl) {\n\t\tfor (var i = edgeColl.iterator(); i.hasNext(); ) {\n\t\t\tthis.add(i.next());\n\t\t}\n\t}\n\tfindEdgeIndex(e) {\n\t\tfor (var i = 0; i < this._edges.size(); i++) {\n\t\t\tif (this._edges.get(i).equals(e)) return i;\n\t\t}\n\t\treturn -1;\n\t}\n\titerator() {\n\t\treturn this._edges.iterator();\n\t}\n\tgetEdges() {\n\t\treturn this._edges;\n\t}\n\tget(i) {\n\t\treturn this._edges.get(i);\n\t}\n\tfindEqualEdge(e) {\n\t\tvar oca = new OrientedCoordinateArray(e.getCoordinates());\n\t\tvar matchEdge = this._ocaMap.get(oca);\n\t\treturn matchEdge;\n\t}\n\tadd(e) {\n\t\tthis._edges.add(e);\n\t\tvar oca = new OrientedCoordinateArray(e.getCoordinates());\n\t\tthis._ocaMap.put(oca, e);\n\t}\n\tgetClass() {\n\t\treturn EdgeList;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeList.constructor_ = function () {\n\tthis._edges = new ArrayList();\n\tthis._ocaMap = new TreeMap();\n};\n","export default class SegmentIntersector {\n\tconstructor() {\n\t\tSegmentIntersector.constructor_.apply(this, arguments);\n\t}\n\tprocessIntersections(e0, segIndex0, e1, segIndex1) {}\n\tisDone() {}\n\tgetClass() {\n\t\treturn SegmentIntersector;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSegmentIntersector.constructor_ = function () {};\n","import SegmentIntersector from './SegmentIntersector';\nexport default class IntersectionAdder {\n\tconstructor() {\n\t\tIntersectionAdder.constructor_.apply(this, arguments);\n\t}\n\tstatic isAdjacentSegments(i1, i2) {\n\t\treturn Math.abs(i1 - i2) === 1;\n\t}\n\tisTrivialIntersection(e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1) {\n\t\t\tif (this._li.getIntersectionNum() === 1) {\n\t\t\t\tif (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) return true;\n\t\t\t\tif (e0.isClosed()) {\n\t\t\t\t\tvar maxSegIndex = e0.size() - 1;\n\t\t\t\t\tif (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetProperIntersectionPoint() {\n\t\treturn this._properIntersectionPoint;\n\t}\n\thasProperInteriorIntersection() {\n\t\treturn this._hasProperInterior;\n\t}\n\tgetLineIntersector() {\n\t\treturn this._li;\n\t}\n\thasProperIntersection() {\n\t\treturn this._hasProper;\n\t}\n\tprocessIntersections(e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tthis.numTests++;\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tthis.numIntersections++;\n\t\t\tif (this._li.isInteriorIntersection()) {\n\t\t\t\tthis.numInteriorIntersections++;\n\t\t\t\tthis._hasInterior = true;\n\t\t\t}\n\t\t\tif (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n\t\t\t\tthis._hasIntersection = true;\n\t\t\t\te0.addIntersections(this._li, segIndex0, 0);\n\t\t\t\te1.addIntersections(this._li, segIndex1, 1);\n\t\t\t\tif (this._li.isProper()) {\n\t\t\t\t\tthis.numProperIntersections++;\n\t\t\t\t\tthis._hasProper = true;\n\t\t\t\t\tthis._hasProperInterior = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\thasIntersection() {\n\t\treturn this._hasIntersection;\n\t}\n\tisDone() {\n\t\treturn false;\n\t}\n\thasInteriorIntersection() {\n\t\treturn this._hasInterior;\n\t}\n\tgetClass() {\n\t\treturn IntersectionAdder;\n\t}\n\tget interfaces_() {\n\t\treturn [SegmentIntersector];\n\t}\n}\nIntersectionAdder.constructor_ = function () {\n\tthis._hasIntersection = false;\n\tthis._hasProper = false;\n\tthis._hasProperInterior = false;\n\tthis._hasInterior = false;\n\tthis._properIntersectionPoint = null;\n\tthis._li = null;\n\tthis._isSelfIntersection = null;\n\tthis.numIntersections = 0;\n\tthis.numInteriorIntersections = 0;\n\tthis.numProperIntersections = 0;\n\tthis.numTests = 0;\n\tlet li = arguments[0];\n\tthis._li = li;\n};\n","import Location from '../../geom/Location';\nimport BufferSubgraph from './BufferSubgraph';\nimport PolygonBuilder from '../overlay/PolygonBuilder';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Position from '../../geomgraph/Position';\nimport MCIndexNoder from '../../noding/MCIndexNoder';\nimport OffsetCurveBuilder from './OffsetCurveBuilder';\nimport Collections from '../../../../../java/util/Collections';\nimport SubgraphDepthLocater from './SubgraphDepthLocater';\nimport OffsetCurveSetBuilder from './OffsetCurveSetBuilder';\nimport Label from '../../geomgraph/Label';\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory';\nimport EdgeList from '../../geomgraph/EdgeList';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport IntersectionAdder from '../../noding/IntersectionAdder';\nimport Edge from '../../geomgraph/Edge';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default class BufferBuilder {\n\tconstructor() {\n\t\tBufferBuilder.constructor_.apply(this, arguments);\n\t}\n\tstatic depthDelta(label) {\n\t\tvar lLoc = label.getLocation(0, Position.LEFT);\n\t\tvar rLoc = label.getLocation(0, Position.RIGHT);\n\t\tif (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) return 1; else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) return -1;\n\t\treturn 0;\n\t}\n\tstatic convertSegStrings(it) {\n\t\tvar fact = new GeometryFactory();\n\t\tvar lines = new ArrayList();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ss = it.next();\n\t\t\tvar line = fact.createLineString(ss.getCoordinates());\n\t\t\tlines.add(line);\n\t\t}\n\t\treturn fact.buildGeometry(lines);\n\t}\n\tsetWorkingPrecisionModel(pm) {\n\t\tthis._workingPrecisionModel = pm;\n\t}\n\tinsertUniqueEdge(e) {\n\t\tvar existingEdge = this._edgeList.findEqualEdge(e);\n\t\tif (existingEdge !== null) {\n\t\t\tvar existingLabel = existingEdge.getLabel();\n\t\t\tvar labelToMerge = e.getLabel();\n\t\t\tif (!existingEdge.isPointwiseEqual(e)) {\n\t\t\t\tlabelToMerge = new Label(e.getLabel());\n\t\t\t\tlabelToMerge.flip();\n\t\t\t}\n\t\t\texistingLabel.merge(labelToMerge);\n\t\t\tvar mergeDelta = BufferBuilder.depthDelta(labelToMerge);\n\t\t\tvar existingDelta = existingEdge.getDepthDelta();\n\t\t\tvar newDelta = existingDelta + mergeDelta;\n\t\t\texistingEdge.setDepthDelta(newDelta);\n\t\t} else {\n\t\t\tthis._edgeList.add(e);\n\t\t\te.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()));\n\t\t}\n\t}\n\tbuildSubgraphs(subgraphList, polyBuilder) {\n\t\tvar processedGraphs = new ArrayList();\n\t\tfor (var i = subgraphList.iterator(); i.hasNext(); ) {\n\t\t\tvar subgraph = i.next();\n\t\t\tvar p = subgraph.getRightmostCoordinate();\n\t\t\tvar locater = new SubgraphDepthLocater(processedGraphs);\n\t\t\tvar outsideDepth = locater.getDepth(p);\n\t\t\tsubgraph.computeDepth(outsideDepth);\n\t\t\tsubgraph.findResultEdges();\n\t\t\tprocessedGraphs.add(subgraph);\n\t\t\tpolyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes());\n\t\t}\n\t}\n\tcreateSubgraphs(graph) {\n\t\tvar subgraphList = new ArrayList();\n\t\tfor (var i = graph.getNodes().iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (!node.isVisited()) {\n\t\t\t\tvar subgraph = new BufferSubgraph();\n\t\t\t\tsubgraph.create(node);\n\t\t\t\tsubgraphList.add(subgraph);\n\t\t\t}\n\t\t}\n\t\tCollections.sort(subgraphList, Collections.reverseOrder());\n\t\treturn subgraphList;\n\t}\n\tcreateEmptyResultGeometry() {\n\t\tvar emptyGeom = this._geomFact.createPolygon();\n\t\treturn emptyGeom;\n\t}\n\tgetNoder(precisionModel) {\n\t\tif (this._workingNoder !== null) return this._workingNoder;\n\t\tvar noder = new MCIndexNoder();\n\t\tvar li = new RobustLineIntersector();\n\t\tli.setPrecisionModel(precisionModel);\n\t\tnoder.setSegmentIntersector(new IntersectionAdder(li));\n\t\treturn noder;\n\t}\n\tbuffer(g, distance) {\n\t\tvar precisionModel = this._workingPrecisionModel;\n\t\tif (precisionModel === null) precisionModel = g.getPrecisionModel();\n\t\tthis._geomFact = g.getFactory();\n\t\tvar curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams);\n\t\tvar curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder);\n\t\tvar bufferSegStrList = curveSetBuilder.getCurves();\n\t\tif (bufferSegStrList.size() <= 0) {\n\t\t\treturn this.createEmptyResultGeometry();\n\t\t}\n\t\tthis.computeNodedEdges(bufferSegStrList, precisionModel);\n\t\tthis._graph = new PlanarGraph(new OverlayNodeFactory());\n\t\tthis._graph.addEdges(this._edgeList.getEdges());\n\t\tvar subgraphList = this.createSubgraphs(this._graph);\n\t\tvar polyBuilder = new PolygonBuilder(this._geomFact);\n\t\tthis.buildSubgraphs(subgraphList, polyBuilder);\n\t\tvar resultPolyList = polyBuilder.getPolygons();\n\t\tif (resultPolyList.size() <= 0) {\n\t\t\treturn this.createEmptyResultGeometry();\n\t\t}\n\t\tvar resultGeom = this._geomFact.buildGeometry(resultPolyList);\n\t\treturn resultGeom;\n\t}\n\tcomputeNodedEdges(bufferSegStrList, precisionModel) {\n\t\tvar noder = this.getNoder(precisionModel);\n\t\tnoder.computeNodes(bufferSegStrList);\n\t\tvar nodedSegStrings = noder.getNodedSubstrings();\n\t\tfor (var i = nodedSegStrings.iterator(); i.hasNext(); ) {\n\t\t\tvar segStr = i.next();\n\t\t\tvar pts = segStr.getCoordinates();\n\t\t\tif (pts.length === 2 && pts[0].equals2D(pts[1])) continue;\n\t\t\tvar oldLabel = segStr.getData();\n\t\t\tvar edge = new Edge(segStr.getCoordinates(), new Label(oldLabel));\n\t\t\tthis.insertUniqueEdge(edge);\n\t\t}\n\t}\n\tsetNoder(noder) {\n\t\tthis._workingNoder = noder;\n\t}\n\tgetClass() {\n\t\treturn BufferBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nBufferBuilder.constructor_ = function () {\n\tthis._bufParams = null;\n\tthis._workingPrecisionModel = null;\n\tthis._workingNoder = null;\n\tthis._geomFact = null;\n\tthis._graph = null;\n\tthis._edgeList = new EdgeList();\n\tlet bufParams = arguments[0];\n\tthis._bufParams = bufParams;\n};\n","import GeometryFactory from '../geom/GeometryFactory';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport RuntimeException from '../../../../java/lang/RuntimeException';\nexport default class NodingValidator {\n\tconstructor() {\n\t\tNodingValidator.constructor_.apply(this, arguments);\n\t}\n\tcheckEndPtVertexIntersections() {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = this._segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tvar pts = ss.getCoordinates();\n\t\t\t\tthis.checkEndPtVertexIntersections(pts[0], this._segStrings);\n\t\t\t\tthis.checkEndPtVertexIntersections(pts[pts.length - 1], this._segStrings);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet testPt = arguments[0], segStrings = arguments[1];\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tvar pts = ss.getCoordinates();\n\t\t\t\tfor (var j = 1; j < pts.length - 1; j++) {\n\t\t\t\t\tif (pts[j].equals(testPt)) throw new RuntimeException(\"found endpt/interior pt intersection at index \" + j + \" :pt \" + testPt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcheckInteriorIntersections() {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = this._segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss0 = i.next();\n\t\t\t\tfor (var j = this._segStrings.iterator(); j.hasNext(); ) {\n\t\t\t\t\tvar ss1 = j.next();\n\t\t\t\t\tthis.checkInteriorIntersections(ss0, ss1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet ss0 = arguments[0], ss1 = arguments[1];\n\t\t\tvar pts0 = ss0.getCoordinates();\n\t\t\tvar pts1 = ss1.getCoordinates();\n\t\t\tfor (var i0 = 0; i0 < pts0.length - 1; i0++) {\n\t\t\t\tfor (var i1 = 0; i1 < pts1.length - 1; i1++) {\n\t\t\t\t\tthis.checkInteriorIntersections(ss0, i0, ss1, i1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet e0 = arguments[0], segIndex0 = arguments[1], e1 = arguments[2], segIndex1 = arguments[3];\n\t\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\t\tif (this._li.hasIntersection()) {\n\t\t\t\tif (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) {\n\t\t\t\t\tthrow new RuntimeException(\"found non-noded intersection at \" + p00 + \"-\" + p01 + \" and \" + p10 + \"-\" + p11);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcheckValid() {\n\t\tthis.checkEndPtVertexIntersections();\n\t\tthis.checkInteriorIntersections();\n\t\tthis.checkCollapses();\n\t}\n\tcheckCollapses() {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = this._segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tthis.checkCollapses(ss);\n\t\t\t}\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet ss = arguments[0];\n\t\t\tvar pts = ss.getCoordinates();\n\t\t\tfor (var i = 0; i < pts.length - 2; i++) {\n\t\t\t\tthis.checkCollapse(pts[i], pts[i + 1], pts[i + 2]);\n\t\t\t}\n\t\t}\n\t}\n\thasInteriorIntersection(li, p0, p1) {\n\t\tfor (var i = 0; i < li.getIntersectionNum(); i++) {\n\t\t\tvar intPt = li.getIntersection(i);\n\t\t\tif (!(intPt.equals(p0) || intPt.equals(p1))) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tcheckCollapse(p0, p1, p2) {\n\t\tif (p0.equals(p2)) throw new RuntimeException(\"found non-noded collapse at \" + NodingValidator.fact.createLineString([p0, p1, p2]));\n\t}\n\tgetClass() {\n\t\treturn NodingValidator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nNodingValidator.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._segStrings = null;\n\tlet segStrings = arguments[0];\n\tthis._segStrings = segStrings;\n};\nNodingValidator.fact = new GeometryFactory();\n","import Coordinate from '../../geom/Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Envelope from '../../geom/Envelope';\nimport Assert from '../../util/Assert';\nexport default class HotPixel {\n\tconstructor() {\n\t\tHotPixel.constructor_.apply(this, arguments);\n\t}\n\tintersectsScaled(p0, p1) {\n\t\tvar segMinx = Math.min(p0.x, p1.x);\n\t\tvar segMaxx = Math.max(p0.x, p1.x);\n\t\tvar segMiny = Math.min(p0.y, p1.y);\n\t\tvar segMaxy = Math.max(p0.y, p1.y);\n\t\tvar isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy;\n\t\tif (isOutsidePixelEnv) return false;\n\t\tvar intersects = this.intersectsToleranceSquare(p0, p1);\n\t\tAssert.isTrue(!(isOutsidePixelEnv && intersects), \"Found bad envelope test\");\n\t\treturn intersects;\n\t}\n\tinitCorners(pt) {\n\t\tvar tolerance = 0.5;\n\t\tthis._minx = pt.x - tolerance;\n\t\tthis._maxx = pt.x + tolerance;\n\t\tthis._miny = pt.y - tolerance;\n\t\tthis._maxy = pt.y + tolerance;\n\t\tthis._corner[0] = new Coordinate(this._maxx, this._maxy);\n\t\tthis._corner[1] = new Coordinate(this._minx, this._maxy);\n\t\tthis._corner[2] = new Coordinate(this._minx, this._miny);\n\t\tthis._corner[3] = new Coordinate(this._maxx, this._miny);\n\t}\n\tintersects(p0, p1) {\n\t\tif (this._scaleFactor === 1.0) return this.intersectsScaled(p0, p1);\n\t\tthis.copyScaled(p0, this._p0Scaled);\n\t\tthis.copyScaled(p1, this._p1Scaled);\n\t\treturn this.intersectsScaled(this._p0Scaled, this._p1Scaled);\n\t}\n\tscale(val) {\n\t\treturn Math.round(val * this._scaleFactor);\n\t}\n\tgetCoordinate() {\n\t\treturn this._originalPt;\n\t}\n\tcopyScaled(p, pScaled) {\n\t\tpScaled.x = this.scale(p.x);\n\t\tpScaled.y = this.scale(p.y);\n\t}\n\tgetSafeEnvelope() {\n\t\tif (this._safeEnv === null) {\n\t\t\tvar safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor;\n\t\t\tthis._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance);\n\t\t}\n\t\treturn this._safeEnv;\n\t}\n\tintersectsPixelClosure(p0, p1) {\n\t\tthis._li.computeIntersection(p0, p1, this._corner[0], this._corner[1]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[1], this._corner[2]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[2], this._corner[3]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[3], this._corner[0]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\treturn false;\n\t}\n\tintersectsToleranceSquare(p0, p1) {\n\t\tvar intersectsLeft = false;\n\t\tvar intersectsBottom = false;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[0], this._corner[1]);\n\t\tif (this._li.isProper()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[1], this._corner[2]);\n\t\tif (this._li.isProper()) return true;\n\t\tif (this._li.hasIntersection()) intersectsLeft = true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[2], this._corner[3]);\n\t\tif (this._li.isProper()) return true;\n\t\tif (this._li.hasIntersection()) intersectsBottom = true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[3], this._corner[0]);\n\t\tif (this._li.isProper()) return true;\n\t\tif (intersectsLeft && intersectsBottom) return true;\n\t\tif (p0.equals(this._pt)) return true;\n\t\tif (p1.equals(this._pt)) return true;\n\t\treturn false;\n\t}\n\taddSnappedNode(segStr, segIndex) {\n\t\tvar p0 = segStr.getCoordinate(segIndex);\n\t\tvar p1 = segStr.getCoordinate(segIndex + 1);\n\t\tif (this.intersects(p0, p1)) {\n\t\t\tsegStr.addIntersection(this.getCoordinate(), segIndex);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tgetClass() {\n\t\treturn HotPixel;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nHotPixel.constructor_ = function () {\n\tthis._li = null;\n\tthis._pt = null;\n\tthis._originalPt = null;\n\tthis._ptScaled = null;\n\tthis._p0Scaled = null;\n\tthis._p1Scaled = null;\n\tthis._scaleFactor = null;\n\tthis._minx = null;\n\tthis._maxx = null;\n\tthis._miny = null;\n\tthis._maxy = null;\n\tthis._corner = new Array(4).fill(null);\n\tthis._safeEnv = null;\n\tlet pt = arguments[0], scaleFactor = arguments[1], li = arguments[2];\n\tthis._originalPt = pt;\n\tthis._pt = pt;\n\tthis._scaleFactor = scaleFactor;\n\tthis._li = li;\n\tif (scaleFactor <= 0) throw new IllegalArgumentException(\"Scale factor must be non-zero\");\n\tif (scaleFactor !== 1.0) {\n\t\tthis._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y));\n\t\tthis._p0Scaled = new Coordinate();\n\t\tthis._p1Scaled = new Coordinate();\n\t}\n\tthis.initCorners(this._pt);\n};\nHotPixel.SAFE_ENV_EXPANSION_FACTOR = 0.75;\n","import LineSegment from '../../geom/LineSegment';\nexport default class MonotoneChainSelectAction {\n\tconstructor() {\n\t\tMonotoneChainSelectAction.constructor_.apply(this, arguments);\n\t}\n\tselect() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet seg = arguments[0];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet mc = arguments[0], startIndex = arguments[1];\n\t\t\tmc.getLineSegment(startIndex, this.selectedSegment);\n\t\t\tthis.select(this.selectedSegment);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn MonotoneChainSelectAction;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nMonotoneChainSelectAction.constructor_ = function () {\n\tthis.selectedSegment = new LineSegment();\n};\n","import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction';\nimport MonotoneChain from '../../index/chain/MonotoneChain';\nimport ItemVisitor from '../../index/ItemVisitor';\nexport default class MCIndexPointSnapper {\n\tconstructor() {\n\t\tMCIndexPointSnapper.constructor_.apply(this, arguments);\n\t}\n\tsnap() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet hotPixel = arguments[0];\n\t\t\treturn this.snap(hotPixel, null, -1);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2];\n\t\t\tvar pixelEnv = hotPixel.getSafeEnvelope();\n\t\t\tvar hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex);\n\t\t\tthis._index.query(pixelEnv, new (class {\n\t\t\t\tget interfaces_() {\n\t\t\t\t\treturn [ItemVisitor];\n\t\t\t\t}\n\t\t\t\tvisitItem(item) {\n\t\t\t\t\tvar testChain = item;\n\t\t\t\t\ttestChain.select(pixelEnv, hotPixelSnapAction);\n\t\t\t\t}\n\t\t\t})());\n\t\t\treturn hotPixelSnapAction.isNodeAdded();\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn MCIndexPointSnapper;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass HotPixelSnapAction extends MonotoneChainSelectAction {\n\tconstructor() {\n\t\tsuper();\n\t\tHotPixelSnapAction.constructor_.apply(this, arguments);\n\t}\n\tisNodeAdded() {\n\t\treturn this._isNodeAdded;\n\t}\n\tselect() {\n\t\tif (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n\t\t\tlet mc = arguments[0], startIndex = arguments[1];\n\t\t\tvar ss = mc.getContext();\n\t\t\tif (this._parentEdge !== null) {\n\t\t\t\tif (ss === this._parentEdge && startIndex === this._hotPixelVertexIndex) return null;\n\t\t\t}\n\t\t\tthis._isNodeAdded = this._hotPixel.addSnappedNode(ss, startIndex);\n\t\t} else return super.select.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn HotPixelSnapAction;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nHotPixelSnapAction.constructor_ = function () {\n\tthis._hotPixel = null;\n\tthis._parentEdge = null;\n\tthis._hotPixelVertexIndex = null;\n\tthis._isNodeAdded = false;\n\tlet hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2];\n\tthis._hotPixel = hotPixel;\n\tthis._parentEdge = parentEdge;\n\tthis._hotPixelVertexIndex = hotPixelVertexIndex;\n};\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction;\nMCIndexPointSnapper.constructor_ = function () {\n\tthis._index = null;\n\tlet index = arguments[0];\n\tthis._index = index;\n};\n","import SegmentIntersector from './SegmentIntersector';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class InteriorIntersectionFinderAdder {\n\tconstructor() {\n\t\tInteriorIntersectionFinderAdder.constructor_.apply(this, arguments);\n\t}\n\tprocessIntersections(e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tif (this._li.isInteriorIntersection()) {\n\t\t\t\tfor (var intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) {\n\t\t\t\t\tthis._interiorIntersections.add(this._li.getIntersection(intIndex));\n\t\t\t\t}\n\t\t\t\te0.addIntersections(this._li, segIndex0, 0);\n\t\t\t\te1.addIntersections(this._li, segIndex1, 1);\n\t\t\t}\n\t\t}\n\t}\n\tisDone() {\n\t\treturn false;\n\t}\n\tgetInteriorIntersections() {\n\t\treturn this._interiorIntersections;\n\t}\n\tgetClass() {\n\t\treturn InteriorIntersectionFinderAdder;\n\t}\n\tget interfaces_() {\n\t\treturn [SegmentIntersector];\n\t}\n}\nInteriorIntersectionFinderAdder.constructor_ = function () {\n\tthis._li = null;\n\tthis._interiorIntersections = null;\n\tlet li = arguments[0];\n\tthis._li = li;\n\tthis._interiorIntersections = new ArrayList();\n};\n","import NodingValidator from '../NodingValidator';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport Noder from '../Noder';\nimport MCIndexNoder from '../MCIndexNoder';\nimport NodedSegmentString from '../NodedSegmentString';\nimport HotPixel from './HotPixel';\nimport Exception from '../../../../../java/lang/Exception';\nimport MCIndexPointSnapper from './MCIndexPointSnapper';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport InteriorIntersectionFinderAdder from '../InteriorIntersectionFinderAdder';\nexport default class MCIndexSnapRounder {\n\tconstructor() {\n\t\tMCIndexSnapRounder.constructor_.apply(this, arguments);\n\t}\n\tcheckCorrectness(inputSegmentStrings) {\n\t\tvar resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings);\n\t\tvar nv = new NodingValidator(resultSegStrings);\n\t\ttry {\n\t\t\tnv.checkValid();\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof Exception) {\n\t\t\t\tex.printStackTrace();\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t}\n\tgetNodedSubstrings() {\n\t\treturn NodedSegmentString.getNodedSubstrings(this._nodedSegStrings);\n\t}\n\tsnapRound(segStrings, li) {\n\t\tvar intersections = this.findInteriorIntersections(segStrings, li);\n\t\tthis.computeIntersectionSnaps(intersections);\n\t\tthis.computeVertexSnaps(segStrings);\n\t}\n\tfindInteriorIntersections(segStrings, li) {\n\t\tvar intFinderAdder = new InteriorIntersectionFinderAdder(li);\n\t\tthis._noder.setSegmentIntersector(intFinderAdder);\n\t\tthis._noder.computeNodes(segStrings);\n\t\treturn intFinderAdder.getInteriorIntersections();\n\t}\n\tcomputeVertexSnaps() {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet edges = arguments[0];\n\t\t\tfor (var i0 = edges.iterator(); i0.hasNext(); ) {\n\t\t\t\tvar edge0 = i0.next();\n\t\t\t\tthis.computeVertexSnaps(edge0);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof NodedSegmentString) {\n\t\t\tlet e = arguments[0];\n\t\t\tvar pts0 = e.getCoordinates();\n\t\t\tfor (var i = 0; i < pts0.length; i++) {\n\t\t\t\tvar hotPixel = new HotPixel(pts0[i], this._scaleFactor, this._li);\n\t\t\t\tvar isNodeAdded = this._pointSnapper.snap(hotPixel, e, i);\n\t\t\t\tif (isNodeAdded) {\n\t\t\t\t\te.addIntersection(pts0[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcomputeNodes(inputSegmentStrings) {\n\t\tthis._nodedSegStrings = inputSegmentStrings;\n\t\tthis._noder = new MCIndexNoder();\n\t\tthis._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex());\n\t\tthis.snapRound(inputSegmentStrings, this._li);\n\t}\n\tcomputeIntersectionSnaps(snapPts) {\n\t\tfor (var it = snapPts.iterator(); it.hasNext(); ) {\n\t\t\tvar snapPt = it.next();\n\t\t\tvar hotPixel = new HotPixel(snapPt, this._scaleFactor, this._li);\n\t\t\tthis._pointSnapper.snap(hotPixel);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn MCIndexSnapRounder;\n\t}\n\tget interfaces_() {\n\t\treturn [Noder];\n\t}\n}\nMCIndexSnapRounder.constructor_ = function () {\n\tthis._pm = null;\n\tthis._li = null;\n\tthis._scaleFactor = null;\n\tthis._noder = null;\n\tthis._pointSnapper = null;\n\tthis._nodedSegStrings = null;\n\tlet pm = arguments[0];\n\tthis._pm = pm;\n\tthis._li = new RobustLineIntersector();\n\tthis._li.setPrecisionModel(pm);\n\tthis._scaleFactor = pm.getScale();\n};\n","import BufferParameters from './BufferParameters';\nimport Geometry from '../../geom/Geometry';\nimport BufferBuilder from './BufferBuilder';\nimport ScaledNoder from '../../noding/ScaledNoder';\nimport TopologyException from '../../geom/TopologyException';\nimport MathUtil from '../../math/MathUtil';\nimport PrecisionModel from '../../geom/PrecisionModel';\nimport RuntimeException from '../../../../../java/lang/RuntimeException';\nimport MCIndexSnapRounder from '../../noding/snapround/MCIndexSnapRounder';\nexport default class BufferOp {\n\tconstructor() {\n\t\tBufferOp.constructor_.apply(this, arguments);\n\t}\n\tstatic bufferOp() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet g = arguments[0], distance = arguments[1];\n\t\t\tvar gBuf = new BufferOp(g);\n\t\t\tvar geomBuf = gBuf.getResultGeometry(distance);\n\t\t\treturn geomBuf;\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === \"number\")) {\n\t\t\t\tlet g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2];\n\t\t\t\tvar bufOp = new BufferOp(g);\n\t\t\t\tbufOp.setQuadrantSegments(quadrantSegments);\n\t\t\t\tvar geomBuf = bufOp.getResultGeometry(distance);\n\t\t\t\treturn geomBuf;\n\t\t\t} else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === \"number\")) {\n\t\t\t\tlet g = arguments[0], distance = arguments[1], params = arguments[2];\n\t\t\t\tvar bufOp = new BufferOp(g, params);\n\t\t\t\tvar geomBuf = bufOp.getResultGeometry(distance);\n\t\t\t\treturn geomBuf;\n\t\t\t}\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2], endCapStyle = arguments[3];\n\t\t\tvar bufOp = new BufferOp(g);\n\t\t\tbufOp.setQuadrantSegments(quadrantSegments);\n\t\t\tbufOp.setEndCapStyle(endCapStyle);\n\t\t\tvar geomBuf = bufOp.getResultGeometry(distance);\n\t\t\treturn geomBuf;\n\t\t}\n\t}\n\tstatic precisionScaleFactor(g, distance, maxPrecisionDigits) {\n\t\tvar env = g.getEnvelopeInternal();\n\t\tvar envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()));\n\t\tvar expandByDistance = distance > 0.0 ? distance : 0.0;\n\t\tvar bufEnvMax = envMax + 2 * expandByDistance;\n\t\tvar bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0);\n\t\tvar minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits;\n\t\tvar scaleFactor = Math.pow(10.0, minUnitLog10);\n\t\treturn scaleFactor;\n\t}\n\tbufferFixedPrecision(fixedPM) {\n\t\tvar noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale());\n\t\tvar bufBuilder = new BufferBuilder(this._bufParams);\n\t\tbufBuilder.setWorkingPrecisionModel(fixedPM);\n\t\tbufBuilder.setNoder(noder);\n\t\tthis._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance);\n\t}\n\tbufferReducedPrecision() {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.bufferReducedPrecision(precDigits);\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tif (ex instanceof TopologyException) {\n\t\t\t\t\t\tthis._saveException = ex;\n\t\t\t\t\t} else throw ex;\n\t\t\t\t} finally {}\n\t\t\t\tif (this._resultGeometry !== null) return null;\n\t\t\t}\n\t\t\tthrow this._saveException;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet precisionDigits = arguments[0];\n\t\t\tvar sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits);\n\t\t\tvar fixedPM = new PrecisionModel(sizeBasedScaleFactor);\n\t\t\tthis.bufferFixedPrecision(fixedPM);\n\t\t}\n\t}\n\tcomputeGeometry() {\n\t\tthis.bufferOriginalPrecision();\n\t\tif (this._resultGeometry !== null) return null;\n\t\tvar argPM = this._argGeom.getFactory().getPrecisionModel();\n\t\tif (argPM.getType() === PrecisionModel.FIXED) this.bufferFixedPrecision(argPM); else this.bufferReducedPrecision();\n\t}\n\tsetQuadrantSegments(quadrantSegments) {\n\t\tthis._bufParams.setQuadrantSegments(quadrantSegments);\n\t}\n\tbufferOriginalPrecision() {\n\t\ttry {\n\t\t\tvar bufBuilder = new BufferBuilder(this._bufParams);\n\t\t\tthis._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance);\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof RuntimeException) {\n\t\t\t\tthis._saveException = ex;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t}\n\tgetResultGeometry(distance) {\n\t\tthis._distance = distance;\n\t\tthis.computeGeometry();\n\t\treturn this._resultGeometry;\n\t}\n\tsetEndCapStyle(endCapStyle) {\n\t\tthis._bufParams.setEndCapStyle(endCapStyle);\n\t}\n\tgetClass() {\n\t\treturn BufferOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nBufferOp.constructor_ = function () {\n\tthis._argGeom = null;\n\tthis._distance = null;\n\tthis._bufParams = new BufferParameters();\n\tthis._resultGeometry = null;\n\tthis._saveException = null;\n\tif (arguments.length === 1) {\n\t\tlet g = arguments[0];\n\t\tthis._argGeom = g;\n\t} else if (arguments.length === 2) {\n\t\tlet g = arguments[0], bufParams = arguments[1];\n\t\tthis._argGeom = g;\n\t\tthis._bufParams = bufParams;\n\t}\n};\nBufferOp.CAP_ROUND = BufferParameters.CAP_ROUND;\nBufferOp.CAP_BUTT = BufferParameters.CAP_FLAT;\nBufferOp.CAP_FLAT = BufferParameters.CAP_FLAT;\nBufferOp.CAP_SQUARE = BufferParameters.CAP_SQUARE;\nBufferOp.MAX_PRECISION_DIGITS = 12;\n","import Polygon from '../Polygon';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../GeometryFilter';\nexport default class PolygonExtracter {\n\tconstructor() {\n\t\tPolygonExtracter.constructor_.apply(this, arguments);\n\t}\n\tstatic getPolygons() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geom = arguments[0];\n\t\t\treturn PolygonExtracter.getPolygons(geom, new ArrayList());\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geom = arguments[0], list = arguments[1];\n\t\t\tif (geom instanceof Polygon) {\n\t\t\t\tlist.add(geom);\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tgeom.apply(new PolygonExtracter(list));\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\t}\n\tfilter(geom) {\n\t\tif (geom instanceof Polygon) this._comps.add(geom);\n\t}\n\tgetClass() {\n\t\treturn PolygonExtracter;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryFilter];\n\t}\n}\nPolygonExtracter.constructor_ = function () {\n\tthis._comps = null;\n\tlet comps = arguments[0];\n\tthis._comps = comps;\n};\n","export default class GeometryLocation {\n\tconstructor() {\n\t\tGeometryLocation.constructor_.apply(this, arguments);\n\t}\n\tisInsideArea() {\n\t\treturn this._segIndex === GeometryLocation.INSIDE_AREA;\n\t}\n\tgetCoordinate() {\n\t\treturn this._pt;\n\t}\n\tgetGeometryComponent() {\n\t\treturn this._component;\n\t}\n\tgetSegmentIndex() {\n\t\treturn this._segIndex;\n\t}\n\tgetClass() {\n\t\treturn GeometryLocation;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryLocation.constructor_ = function () {\n\tthis._component = null;\n\tthis._segIndex = null;\n\tthis._pt = null;\n\tif (arguments.length === 2) {\n\t\tlet component = arguments[0], pt = arguments[1];\n\t\tGeometryLocation.constructor_.call(this, component, GeometryLocation.INSIDE_AREA, pt);\n\t} else if (arguments.length === 3) {\n\t\tlet component = arguments[0], segIndex = arguments[1], pt = arguments[2];\n\t\tthis._component = component;\n\t\tthis._segIndex = segIndex;\n\t\tthis._pt = pt;\n\t}\n};\nGeometryLocation.INSIDE_AREA = -1;\n","import Point from '../Point';\nimport Collections from '../../../../../java/util/Collections';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../GeometryFilter';\nexport default class PointExtracter {\n\tconstructor() {\n\t\tPointExtracter.constructor_.apply(this, arguments);\n\t}\n\tstatic getPoints() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (geom instanceof Point) {\n\t\t\t\treturn Collections.singletonList(geom);\n\t\t\t}\n\t\t\treturn PointExtracter.getPoints(geom, new ArrayList());\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geom = arguments[0], list = arguments[1];\n\t\t\tif (geom instanceof Point) {\n\t\t\t\tlist.add(geom);\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tgeom.apply(new PointExtracter(list));\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\t}\n\tfilter(geom) {\n\t\tif (geom instanceof Point) this._pts.add(geom);\n\t}\n\tgetClass() {\n\t\treturn PointExtracter;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryFilter];\n\t}\n}\nPointExtracter.constructor_ = function () {\n\tthis._pts = null;\n\tlet pts = arguments[0];\n\tthis._pts = pts;\n};\n","import LineString from '../../geom/LineString';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport GeometryLocation from './GeometryLocation';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../../geom/GeometryFilter';\nexport default class ConnectedElementLocationFilter {\n\tconstructor() {\n\t\tConnectedElementLocationFilter.constructor_.apply(this, arguments);\n\t}\n\tstatic getLocations(geom) {\n\t\tvar locations = new ArrayList();\n\t\tgeom.apply(new ConnectedElementLocationFilter(locations));\n\t\treturn locations;\n\t}\n\tfilter(geom) {\n\t\tif (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate()));\n\t}\n\tgetClass() {\n\t\treturn ConnectedElementLocationFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryFilter];\n\t}\n}\nConnectedElementLocationFilter.constructor_ = function () {\n\tthis._locations = null;\n\tlet locations = arguments[0];\n\tthis._locations = locations;\n};\n","import PointLocator from '../../algorithm/PointLocator';\nimport PolygonExtracter from '../../geom/util/PolygonExtracter';\nimport Location from '../../geom/Location';\nimport LineString from '../../geom/LineString';\nimport hasInterface from '../../../../../hasInterface';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport GeometryLocation from './GeometryLocation';\nimport Double from '../../../../../java/lang/Double';\nimport PointExtracter from '../../geom/util/PointExtracter';\nimport ConnectedElementLocationFilter from './ConnectedElementLocationFilter';\nimport LineSegment from '../../geom/LineSegment';\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter';\nimport List from '../../../../../java/util/List';\nimport Distance from '../../algorithm/Distance';\nexport default class DistanceOp {\n\tconstructor() {\n\t\tDistanceOp.constructor_.apply(this, arguments);\n\t}\n\tstatic distance(g0, g1) {\n\t\tvar distOp = new DistanceOp(g0, g1);\n\t\treturn distOp.distance();\n\t}\n\tstatic isWithinDistance(g0, g1, distance) {\n\t\tvar envDist = g0.getEnvelopeInternal().distance(g1.getEnvelopeInternal());\n\t\tif (envDist > distance) return false;\n\t\tvar distOp = new DistanceOp(g0, g1, distance);\n\t\treturn distOp.distance() <= distance;\n\t}\n\tstatic nearestPoints(g0, g1) {\n\t\tvar distOp = new DistanceOp(g0, g1);\n\t\treturn distOp.nearestPoints();\n\t}\n\tcomputeContainmentDistance() {\n\t\tif (arguments.length === 0) {\n\t\t\tvar locPtPoly = new Array(2).fill(null);\n\t\t\tthis.computeContainmentDistance(0, locPtPoly);\n\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\tthis.computeContainmentDistance(1, locPtPoly);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet polyGeomIndex = arguments[0], locPtPoly = arguments[1];\n\t\t\tvar polyGeom = this._geom[polyGeomIndex];\n\t\t\tif (polyGeom.getDimension() < 2) return null;\n\t\t\tvar locationsIndex = 1 - polyGeomIndex;\n\t\t\tvar polys = PolygonExtracter.getPolygons(polyGeom);\n\t\t\tif (polys.size() > 0) {\n\t\t\t\tvar insideLocs = ConnectedElementLocationFilter.getLocations(this._geom[locationsIndex]);\n\t\t\t\tthis.computeContainmentDistance(insideLocs, polys, locPtPoly);\n\t\t\t\tif (this._minDistance <= this._terminateDistance) {\n\t\t\t\t\tthis._minDistanceLocation[locationsIndex] = locPtPoly[0];\n\t\t\t\t\tthis._minDistanceLocation[polyGeomIndex] = locPtPoly[1];\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (arguments[2] instanceof Array && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n\t\t\t\tlet locs = arguments[0], polys = arguments[1], locPtPoly = arguments[2];\n\t\t\t\tfor (var i = 0; i < locs.size(); i++) {\n\t\t\t\t\tvar loc = locs.get(i);\n\t\t\t\t\tfor (var j = 0; j < polys.size(); j++) {\n\t\t\t\t\t\tthis.computeContainmentDistance(loc, polys.get(j), locPtPoly);\n\t\t\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (arguments[2] instanceof Array && (arguments[0] instanceof GeometryLocation && arguments[1] instanceof Polygon)) {\n\t\t\t\tlet ptLoc = arguments[0], poly = arguments[1], locPtPoly = arguments[2];\n\t\t\t\tvar pt = ptLoc.getCoordinate();\n\t\t\t\tif (Location.EXTERIOR !== this._ptLocator.locate(pt, poly)) {\n\t\t\t\t\tthis._minDistance = 0.0;\n\t\t\t\t\tlocPtPoly[0] = ptLoc;\n\t\t\t\t\tlocPtPoly[1] = new GeometryLocation(poly, pt);\n\t\t\t\t\t;\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcomputeMinDistanceLinesPoints(lines, points, locGeom) {\n\t\tfor (var i = 0; i < lines.size(); i++) {\n\t\t\tvar line = lines.get(i);\n\t\t\tfor (var j = 0; j < points.size(); j++) {\n\t\t\t\tvar pt = points.get(j);\n\t\t\t\tthis.computeMinDistance(line, pt, locGeom);\n\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t}\n\t\t}\n\t}\n\tcomputeFacetDistance() {\n\t\tvar locGeom = new Array(2).fill(null);\n\t\tvar lines0 = LinearComponentExtracter.getLines(this._geom[0]);\n\t\tvar lines1 = LinearComponentExtracter.getLines(this._geom[1]);\n\t\tvar pts0 = PointExtracter.getPoints(this._geom[0]);\n\t\tvar pts1 = PointExtracter.getPoints(this._geom[1]);\n\t\tthis.computeMinDistanceLines(lines0, lines1, locGeom);\n\t\tthis.updateMinDistance(locGeom, false);\n\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\tlocGeom[0] = null;\n\t\tlocGeom[1] = null;\n\t\tthis.computeMinDistanceLinesPoints(lines0, pts1, locGeom);\n\t\tthis.updateMinDistance(locGeom, false);\n\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\tlocGeom[0] = null;\n\t\tlocGeom[1] = null;\n\t\tthis.computeMinDistanceLinesPoints(lines1, pts0, locGeom);\n\t\tthis.updateMinDistance(locGeom, true);\n\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\tlocGeom[0] = null;\n\t\tlocGeom[1] = null;\n\t\tthis.computeMinDistancePoints(pts0, pts1, locGeom);\n\t\tthis.updateMinDistance(locGeom, false);\n\t}\n\tnearestLocations() {\n\t\tthis.computeMinDistance();\n\t\treturn this._minDistanceLocation;\n\t}\n\tupdateMinDistance(locGeom, flip) {\n\t\tif (locGeom[0] === null) return null;\n\t\tif (flip) {\n\t\t\tthis._minDistanceLocation[0] = locGeom[1];\n\t\t\tthis._minDistanceLocation[1] = locGeom[0];\n\t\t} else {\n\t\t\tthis._minDistanceLocation[0] = locGeom[0];\n\t\t\tthis._minDistanceLocation[1] = locGeom[1];\n\t\t}\n\t}\n\tnearestPoints() {\n\t\tthis.computeMinDistance();\n\t\tvar nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()];\n\t\treturn nearestPts;\n\t}\n\tcomputeMinDistance() {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this._minDistanceLocation !== null) return null;\n\t\t\tthis._minDistanceLocation = new Array(2).fill(null);\n\t\t\tthis.computeContainmentDistance();\n\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\tthis.computeFacetDistance();\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof Point)) {\n\t\t\t\tlet line = arguments[0], pt = arguments[1], locGeom = arguments[2];\n\t\t\t\tif (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > this._minDistance) return null;\n\t\t\t\tvar coord0 = line.getCoordinates();\n\t\t\t\tvar coord = pt.getCoordinate();\n\t\t\t\tfor (var i = 0; i < coord0.length - 1; i++) {\n\t\t\t\t\tvar dist = Distance.pointToSegment(coord, coord0[i], coord0[i + 1]);\n\t\t\t\t\tif (dist < this._minDistance) {\n\t\t\t\t\t\tthis._minDistance = dist;\n\t\t\t\t\t\tvar seg = new LineSegment(coord0[i], coord0[i + 1]);\n\t\t\t\t\t\tvar segClosestPoint = seg.closestPoint(coord);\n\t\t\t\t\t\tlocGeom[0] = new GeometryLocation(line, i, segClosestPoint);\n\t\t\t\t\t\tlocGeom[1] = new GeometryLocation(pt, 0, coord);\n\t\t\t\t\t}\n\t\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t\t}\n\t\t\t} else if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof LineString)) {\n\t\t\t\tlet line0 = arguments[0], line1 = arguments[1], locGeom = arguments[2];\n\t\t\t\tif (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) > this._minDistance) return null;\n\t\t\t\tvar coord0 = line0.getCoordinates();\n\t\t\t\tvar coord1 = line1.getCoordinates();\n\t\t\t\tfor (var i = 0; i < coord0.length - 1; i++) {\n\t\t\t\t\tfor (var j = 0; j < coord1.length - 1; j++) {\n\t\t\t\t\t\tvar dist = Distance.segmentToSegment(coord0[i], coord0[i + 1], coord1[j], coord1[j + 1]);\n\t\t\t\t\t\tif (dist < this._minDistance) {\n\t\t\t\t\t\t\tthis._minDistance = dist;\n\t\t\t\t\t\t\tvar seg0 = new LineSegment(coord0[i], coord0[i + 1]);\n\t\t\t\t\t\t\tvar seg1 = new LineSegment(coord1[j], coord1[j + 1]);\n\t\t\t\t\t\t\tvar closestPt = seg0.closestPoints(seg1);\n\t\t\t\t\t\t\tlocGeom[0] = new GeometryLocation(line0, i, closestPt[0]);\n\t\t\t\t\t\t\tlocGeom[1] = new GeometryLocation(line1, j, closestPt[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcomputeMinDistancePoints(points0, points1, locGeom) {\n\t\tfor (var i = 0; i < points0.size(); i++) {\n\t\t\tvar pt0 = points0.get(i);\n\t\t\tfor (var j = 0; j < points1.size(); j++) {\n\t\t\t\tvar pt1 = points1.get(j);\n\t\t\t\tvar dist = pt0.getCoordinate().distance(pt1.getCoordinate());\n\t\t\t\tif (dist < this._minDistance) {\n\t\t\t\t\tthis._minDistance = dist;\n\t\t\t\t\tlocGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate());\n\t\t\t\t\tlocGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate());\n\t\t\t\t}\n\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t}\n\t\t}\n\t}\n\tdistance() {\n\t\tif (this._geom[0] === null || this._geom[1] === null) throw new IllegalArgumentException(\"null geometries are not supported\");\n\t\tif (this._geom[0].isEmpty() || this._geom[1].isEmpty()) return 0.0;\n\t\tthis.computeMinDistance();\n\t\treturn this._minDistance;\n\t}\n\tcomputeMinDistanceLines(lines0, lines1, locGeom) {\n\t\tfor (var i = 0; i < lines0.size(); i++) {\n\t\t\tvar line0 = lines0.get(i);\n\t\t\tfor (var j = 0; j < lines1.size(); j++) {\n\t\t\t\tvar line1 = lines1.get(j);\n\t\t\t\tthis.computeMinDistance(line0, line1, locGeom);\n\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn DistanceOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDistanceOp.constructor_ = function () {\n\tthis._geom = null;\n\tthis._terminateDistance = 0.0;\n\tthis._ptLocator = new PointLocator();\n\tthis._minDistanceLocation = null;\n\tthis._minDistance = Double.MAX_VALUE;\n\tif (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tDistanceOp.constructor_.call(this, g0, g1, 0.0);\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], terminateDistance = arguments[2];\n\t\tthis._geom = new Array(2).fill(null);\n\t\tthis._geom[0] = g0;\n\t\tthis._geom[1] = g1;\n\t\tthis._terminateDistance = terminateDistance;\n\t}\n};\n","import CoordinateList from '../../geom/CoordinateList';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default class EdgeString {\n\tconstructor() {\n\t\tEdgeString.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinates() {\n\t\tif (this._coordinates === null) {\n\t\t\tvar forwardDirectedEdges = 0;\n\t\t\tvar reverseDirectedEdges = 0;\n\t\t\tvar coordinateList = new CoordinateList();\n\t\t\tfor (var i = this._directedEdges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar directedEdge = i.next();\n\t\t\t\tif (directedEdge.getEdgeDirection()) {\n\t\t\t\t\tforwardDirectedEdges++;\n\t\t\t\t} else {\n\t\t\t\t\treverseDirectedEdges++;\n\t\t\t\t}\n\t\t\t\tcoordinateList.add(directedEdge.getEdge().getLine().getCoordinates(), false, directedEdge.getEdgeDirection());\n\t\t\t}\n\t\t\tthis._coordinates = coordinateList.toCoordinateArray();\n\t\t\tif (reverseDirectedEdges > forwardDirectedEdges) {\n\t\t\t\tCoordinateArrays.reverse(this._coordinates);\n\t\t\t}\n\t\t}\n\t\treturn this._coordinates;\n\t}\n\ttoLineString() {\n\t\treturn this._factory.createLineString(this.getCoordinates());\n\t}\n\tadd(directedEdge) {\n\t\tthis._directedEdges.add(directedEdge);\n\t}\n\tgetClass() {\n\t\treturn EdgeString;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeString.constructor_ = function () {\n\tthis._factory = null;\n\tthis._directedEdges = new ArrayList();\n\tthis._coordinates = null;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n};\n","export default class GraphComponent {\n\tconstructor() {\n\t\tGraphComponent.constructor_.apply(this, arguments);\n\t}\n\tstatic getComponentWithVisitedState(i, visitedState) {\n\t\twhile (i.hasNext()) {\n\t\t\tvar comp = i.next();\n\t\t\tif (comp.isVisited() === visitedState) return comp;\n\t\t}\n\t\treturn null;\n\t}\n\tstatic setVisited(i, visited) {\n\t\twhile (i.hasNext()) {\n\t\t\tvar comp = i.next();\n\t\t\tcomp.setVisited(visited);\n\t\t}\n\t}\n\tstatic setMarked(i, marked) {\n\t\twhile (i.hasNext()) {\n\t\t\tvar comp = i.next();\n\t\t\tcomp.setMarked(marked);\n\t\t}\n\t}\n\tsetVisited(isVisited) {\n\t\tthis._isVisited = isVisited;\n\t}\n\tisMarked() {\n\t\treturn this._isMarked;\n\t}\n\tsetData(data) {\n\t\tthis._data = data;\n\t}\n\tgetData() {\n\t\treturn this._data;\n\t}\n\tsetMarked(isMarked) {\n\t\tthis._isMarked = isMarked;\n\t}\n\tgetContext() {\n\t\treturn this._data;\n\t}\n\tisVisited() {\n\t\treturn this._isVisited;\n\t}\n\tsetContext(data) {\n\t\tthis._data = data;\n\t}\n\tgetClass() {\n\t\treturn GraphComponent;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGraphComponent.constructor_ = function () {\n\tthis._isMarked = false;\n\tthis._isVisited = false;\n\tthis._data = null;\n};\n","import Orientation from '../algorithm/Orientation';\nimport Comparable from '../../../../java/lang/Comparable';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Quadrant from '../geomgraph/Quadrant';\nimport GraphComponent from './GraphComponent';\nexport default class DirectedEdge extends GraphComponent {\n\tconstructor() {\n\t\tsuper();\n\t\tDirectedEdge.constructor_.apply(this, arguments);\n\t}\n\tstatic toEdges(dirEdges) {\n\t\tvar edges = new ArrayList();\n\t\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tedges.add(i.next()._parentEdge);\n\t\t}\n\t\treturn edges;\n\t}\n\tisRemoved() {\n\t\treturn this._parentEdge === null;\n\t}\n\tcompareDirection(e) {\n\t\tif (this._quadrant > e._quadrant) return 1;\n\t\tif (this._quadrant < e._quadrant) return -1;\n\t\treturn Orientation.index(e._p0, e._p1, this._p1);\n\t}\n\tgetCoordinate() {\n\t\treturn this._from.getCoordinate();\n\t}\n\tprint(out) {\n\t\tvar className = this.getClass().getName();\n\t\tvar lastDotPos = className.lastIndexOf('.');\n\t\tvar name = className.substring(lastDotPos + 1);\n\t\tout.print(\" \" + name + \": \" + this._p0 + \" - \" + this._p1 + \" \" + this._quadrant + \":\" + this._angle);\n\t}\n\tgetDirectionPt() {\n\t\treturn this._p1;\n\t}\n\tgetAngle() {\n\t\treturn this._angle;\n\t}\n\tcompareTo(obj) {\n\t\tvar de = obj;\n\t\treturn this.compareDirection(de);\n\t}\n\tgetFromNode() {\n\t\treturn this._from;\n\t}\n\tgetSym() {\n\t\treturn this._sym;\n\t}\n\tsetEdge(parentEdge) {\n\t\tthis._parentEdge = parentEdge;\n\t}\n\tremove() {\n\t\tthis._sym = null;\n\t\tthis._parentEdge = null;\n\t}\n\tgetEdge() {\n\t\treturn this._parentEdge;\n\t}\n\tgetQuadrant() {\n\t\treturn this._quadrant;\n\t}\n\tsetSym(sym) {\n\t\tthis._sym = sym;\n\t}\n\tgetToNode() {\n\t\treturn this._to;\n\t}\n\tgetEdgeDirection() {\n\t\treturn this._edgeDirection;\n\t}\n\tgetClass() {\n\t\treturn DirectedEdge;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable];\n\t}\n}\nDirectedEdge.constructor_ = function () {\n\tthis._parentEdge = null;\n\tthis._from = null;\n\tthis._to = null;\n\tthis._p0 = null;\n\tthis._p1 = null;\n\tthis._sym = null;\n\tthis._edgeDirection = null;\n\tthis._quadrant = null;\n\tthis._angle = null;\n\tlet from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3];\n\tthis._from = from;\n\tthis._to = to;\n\tthis._edgeDirection = edgeDirection;\n\tthis._p0 = from.getCoordinate();\n\tthis._p1 = directionPt;\n\tvar dx = this._p1.x - this._p0.x;\n\tvar dy = this._p1.y - this._p0.y;\n\tthis._quadrant = Quadrant.quadrant(dx, dy);\n\tthis._angle = Math.atan2(dy, dx);\n};\n","import DirectedEdge from '../../planargraph/DirectedEdge';\nimport Assert from '../../util/Assert';\nexport default class LineMergeDirectedEdge extends DirectedEdge {\n\tconstructor() {\n\t\tsuper();\n\t\tLineMergeDirectedEdge.constructor_.apply(this, arguments);\n\t}\n\tgetNext() {\n\t\tif (this.getToNode().getDegree() !== 2) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.getToNode().getOutEdges().getEdges().get(0) === this.getSym()) {\n\t\t\treturn this.getToNode().getOutEdges().getEdges().get(1);\n\t\t}\n\t\tAssert.isTrue(this.getToNode().getOutEdges().getEdges().get(1) === this.getSym());\n\t\treturn this.getToNode().getOutEdges().getEdges().get(0);\n\t}\n\tgetClass() {\n\t\treturn LineMergeDirectedEdge;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineMergeDirectedEdge.constructor_ = function () {\n\tlet from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3];\n\tDirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection);\n};\n","import Node from './Node';\nimport GraphComponent from './GraphComponent';\nexport default class Edge extends GraphComponent {\n\tconstructor() {\n\t\tsuper();\n\t\tEdge.constructor_.apply(this, arguments);\n\t}\n\tisRemoved() {\n\t\treturn this._dirEdge === null;\n\t}\n\tsetDirectedEdges(de0, de1) {\n\t\tthis._dirEdge = [de0, de1];\n\t\tde0.setEdge(this);\n\t\tde1.setEdge(this);\n\t\tde0.setSym(de1);\n\t\tde1.setSym(de0);\n\t\tde0.getFromNode().addOutEdge(de0);\n\t\tde1.getFromNode().addOutEdge(de1);\n\t}\n\tgetDirEdge() {\n\t\tif (Number.isInteger(arguments[0])) {\n\t\t\tlet i = arguments[0];\n\t\t\treturn this._dirEdge[i];\n\t\t} else if (arguments[0] instanceof Node) {\n\t\t\tlet fromNode = arguments[0];\n\t\t\tif (this._dirEdge[0].getFromNode() === fromNode) return this._dirEdge[0];\n\t\t\tif (this._dirEdge[1].getFromNode() === fromNode) return this._dirEdge[1];\n\t\t\treturn null;\n\t\t}\n\t}\n\tremove() {\n\t\tthis._dirEdge = null;\n\t}\n\tgetOppositeNode(node) {\n\t\tif (this._dirEdge[0].getFromNode() === node) return this._dirEdge[0].getToNode();\n\t\tif (this._dirEdge[1].getFromNode() === node) return this._dirEdge[1].getToNode();\n\t\treturn null;\n\t}\n\tgetClass() {\n\t\treturn Edge;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdge.constructor_ = function () {\n\tthis._dirEdge = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 2) {\n\t\tlet de0 = arguments[0], de1 = arguments[1];\n\t\tthis.setDirectedEdges(de0, de1);\n\t}\n};\n","import Collections from '../../../../java/util/Collections';\nimport DirectedEdge from './DirectedEdge';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Edge from './Edge';\nexport default class DirectedEdgeStar {\n\tconstructor() {\n\t\tDirectedEdgeStar.constructor_.apply(this, arguments);\n\t}\n\tgetNextEdge(dirEdge) {\n\t\tvar i = this.getIndex(dirEdge);\n\t\treturn this._outEdges.get(this.getIndex(i + 1));\n\t}\n\tgetCoordinate() {\n\t\tvar it = this.iterator();\n\t\tif (!it.hasNext()) return null;\n\t\tvar e = it.next();\n\t\treturn e.getCoordinate();\n\t}\n\titerator() {\n\t\tthis.sortEdges();\n\t\treturn this._outEdges.iterator();\n\t}\n\tsortEdges() {\n\t\tif (!this._sorted) {\n\t\t\tCollections.sort(this._outEdges);\n\t\t\tthis._sorted = true;\n\t\t}\n\t}\n\tremove(de) {\n\t\tthis._outEdges.remove(de);\n\t}\n\tgetEdges() {\n\t\tthis.sortEdges();\n\t\treturn this._outEdges;\n\t}\n\tgetNextCWEdge(dirEdge) {\n\t\tvar i = this.getIndex(dirEdge);\n\t\treturn this._outEdges.get(this.getIndex(i - 1));\n\t}\n\tgetIndex() {\n\t\tif (arguments[0] instanceof Edge) {\n\t\t\tlet edge = arguments[0];\n\t\t\tthis.sortEdges();\n\t\t\tfor (var i = 0; i < this._outEdges.size(); i++) {\n\t\t\t\tvar de = this._outEdges.get(i);\n\t\t\t\tif (de.getEdge() === edge) return i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet dirEdge = arguments[0];\n\t\t\tthis.sortEdges();\n\t\t\tfor (var i = 0; i < this._outEdges.size(); i++) {\n\t\t\t\tvar de = this._outEdges.get(i);\n\t\t\t\tif (de === dirEdge) return i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t} else if (Number.isInteger(arguments[0])) {\n\t\t\tlet i = arguments[0];\n\t\t\tvar modi = i % this._outEdges.size();\n\t\t\tif (modi < 0) modi += this._outEdges.size();\n\t\t\treturn modi;\n\t\t}\n\t}\n\tadd(de) {\n\t\tthis._outEdges.add(de);\n\t\tthis._sorted = false;\n\t}\n\tgetDegree() {\n\t\treturn this._outEdges.size();\n\t}\n\tgetClass() {\n\t\treturn DirectedEdgeStar;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDirectedEdgeStar.constructor_ = function () {\n\tthis._outEdges = new ArrayList();\n\tthis._sorted = false;\n};\n","import DirectedEdgeStar from './DirectedEdgeStar';\nimport HashSet from '../../../../java/util/HashSet';\nimport DirectedEdge from './DirectedEdge';\nimport GraphComponent from './GraphComponent';\nexport default class Node extends GraphComponent {\n\tconstructor() {\n\t\tsuper();\n\t\tNode.constructor_.apply(this, arguments);\n\t}\n\tstatic getEdgesBetween(node0, node1) {\n\t\tvar edges0 = DirectedEdge.toEdges(node0.getOutEdges().getEdges());\n\t\tvar commonEdges = new HashSet(edges0);\n\t\tvar edges1 = DirectedEdge.toEdges(node1.getOutEdges().getEdges());\n\t\tcommonEdges.retainAll(edges1);\n\t\treturn commonEdges;\n\t}\n\tisRemoved() {\n\t\treturn this._pt === null;\n\t}\n\taddOutEdge(de) {\n\t\tthis._deStar.add(de);\n\t}\n\tgetCoordinate() {\n\t\treturn this._pt;\n\t}\n\tgetOutEdges() {\n\t\treturn this._deStar;\n\t}\n\tremove() {\n\t\tif (arguments.length === 0) {\n\t\t\tthis._pt = null;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet de = arguments[0];\n\t\t\tthis._deStar.remove(de);\n\t\t}\n\t}\n\tgetIndex(edge) {\n\t\treturn this._deStar.getIndex(edge);\n\t}\n\tgetDegree() {\n\t\treturn this._deStar.getDegree();\n\t}\n\tgetClass() {\n\t\treturn Node;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nNode.constructor_ = function () {\n\tthis._pt = null;\n\tthis._deStar = null;\n\tif (arguments.length === 1) {\n\t\tlet pt = arguments[0];\n\t\tNode.constructor_.call(this, pt, new DirectedEdgeStar());\n\t} else if (arguments.length === 2) {\n\t\tlet pt = arguments[0], deStar = arguments[1];\n\t\tthis._pt = pt;\n\t\tthis._deStar = deStar;\n\t}\n};\n","import Edge from '../../planargraph/Edge';\nexport default class LineMergeEdge extends Edge {\n\tconstructor() {\n\t\tsuper();\n\t\tLineMergeEdge.constructor_.apply(this, arguments);\n\t}\n\tgetLine() {\n\t\treturn this._line;\n\t}\n\tgetClass() {\n\t\treturn LineMergeEdge;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineMergeEdge.constructor_ = function () {\n\tthis._line = null;\n\tlet line = arguments[0];\n\tthis._line = line;\n};\n","import TreeMap from '../../../../java/util/TreeMap';\nexport default class NodeMap {\n\tconstructor() {\n\t\tNodeMap.constructor_.apply(this, arguments);\n\t}\n\tfind(coord) {\n\t\treturn this._nodeMap.get(coord);\n\t}\n\titerator() {\n\t\treturn this._nodeMap.values().iterator();\n\t}\n\tremove(pt) {\n\t\treturn this._nodeMap.remove(pt);\n\t}\n\tvalues() {\n\t\treturn this._nodeMap.values();\n\t}\n\tadd(n) {\n\t\tthis._nodeMap.put(n.getCoordinate(), n);\n\t\treturn n;\n\t}\n\tgetClass() {\n\t\treturn NodeMap;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nNodeMap.constructor_ = function () {\n\tthis._nodeMap = new TreeMap();\n};\n","import HashSet from '../../../../java/util/HashSet';\nimport Node from './Node';\nimport NodeMap from './NodeMap';\nimport DirectedEdge from './DirectedEdge';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Edge from './Edge';\nexport default class PlanarGraph {\n\tconstructor() {\n\t\tPlanarGraph.constructor_.apply(this, arguments);\n\t}\n\tfindNodesOfDegree(degree) {\n\t\tvar nodesFound = new ArrayList();\n\t\tfor (var i = this.nodeIterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (node.getDegree() === degree) nodesFound.add(node);\n\t\t}\n\t\treturn nodesFound;\n\t}\n\tdirEdgeIterator() {\n\t\treturn this._dirEdges.iterator();\n\t}\n\tedgeIterator() {\n\t\treturn this._edges.iterator();\n\t}\n\tremove() {\n\t\tif (arguments[0] instanceof Edge) {\n\t\t\tlet edge = arguments[0];\n\t\t\tthis.remove(edge.getDirEdge(0));\n\t\t\tthis.remove(edge.getDirEdge(1));\n\t\t\tthis._edges.remove(edge);\n\t\t\tedge.remove();\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet de = arguments[0];\n\t\t\tvar sym = de.getSym();\n\t\t\tif (sym !== null) sym.setSym(null);\n\t\t\tde.getFromNode().remove(de);\n\t\t\tde.remove();\n\t\t\tthis._dirEdges.remove(de);\n\t\t} else if (arguments[0] instanceof Node) {\n\t\t\tlet node = arguments[0];\n\t\t\tvar outEdges = node.getOutEdges().getEdges();\n\t\t\tfor (var i = outEdges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tvar sym = de.getSym();\n\t\t\t\tif (sym !== null) this.remove(sym);\n\t\t\t\tthis._dirEdges.remove(de);\n\t\t\t\tvar edge = de.getEdge();\n\t\t\t\tif (edge !== null) {\n\t\t\t\t\tthis._edges.remove(edge);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._nodeMap.remove(node.getCoordinate());\n\t\t\tnode.remove();\n\t\t}\n\t}\n\tfindNode(pt) {\n\t\treturn this._nodeMap.find(pt);\n\t}\n\tgetEdges() {\n\t\treturn this._edges;\n\t}\n\tnodeIterator() {\n\t\treturn this._nodeMap.iterator();\n\t}\n\tcontains() {\n\t\tif (arguments[0] instanceof Edge) {\n\t\t\tlet e = arguments[0];\n\t\t\treturn this._edges.contains(e);\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet de = arguments[0];\n\t\t\treturn this._dirEdges.contains(de);\n\t\t}\n\t}\n\tadd() {\n\t\tif (arguments[0] instanceof Node) {\n\t\t\tlet node = arguments[0];\n\t\t\tthis._nodeMap.add(node);\n\t\t} else if (arguments[0] instanceof Edge) {\n\t\t\tlet edge = arguments[0];\n\t\t\tthis._edges.add(edge);\n\t\t\tthis.add(edge.getDirEdge(0));\n\t\t\tthis.add(edge.getDirEdge(1));\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet dirEdge = arguments[0];\n\t\t\tthis._dirEdges.add(dirEdge);\n\t\t}\n\t}\n\tgetNodes() {\n\t\treturn this._nodeMap.values();\n\t}\n\tgetClass() {\n\t\treturn PlanarGraph;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPlanarGraph.constructor_ = function () {\n\tthis._edges = new HashSet();\n\tthis._dirEdges = new HashSet();\n\tthis._nodeMap = new NodeMap();\n};\n","import LineMergeDirectedEdge from './LineMergeDirectedEdge';\nimport Node from '../../planargraph/Node';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport LineMergeEdge from './LineMergeEdge';\nimport PlanarGraph from '../../planargraph/PlanarGraph';\nexport default class LineMergeGraph extends PlanarGraph {\n\tconstructor() {\n\t\tsuper();\n\t\tLineMergeGraph.constructor_.apply(this, arguments);\n\t}\n\taddEdge(lineString) {\n\t\tif (lineString.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\tvar coordinates = CoordinateArrays.removeRepeatedPoints(lineString.getCoordinates());\n\t\tif (coordinates.length <= 1) return null;\n\t\tvar startCoordinate = coordinates[0];\n\t\tvar endCoordinate = coordinates[coordinates.length - 1];\n\t\tvar startNode = this.getNode(startCoordinate);\n\t\tvar endNode = this.getNode(endCoordinate);\n\t\tvar directedEdge0 = new LineMergeDirectedEdge(startNode, endNode, coordinates[1], true);\n\t\tvar directedEdge1 = new LineMergeDirectedEdge(endNode, startNode, coordinates[coordinates.length - 2], false);\n\t\tvar edge = new LineMergeEdge(lineString);\n\t\tedge.setDirectedEdges(directedEdge0, directedEdge1);\n\t\tthis.add(edge);\n\t}\n\tgetNode(coordinate) {\n\t\tvar node = this.findNode(coordinate);\n\t\tif (node === null) {\n\t\t\tnode = new Node(coordinate);\n\t\t\tthis.add(node);\n\t\t}\n\t\treturn node;\n\t}\n\tgetClass() {\n\t\treturn LineMergeGraph;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineMergeGraph.constructor_ = function () {};\n","import LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport EdgeString from './EdgeString';\nimport LineMergeGraph from './LineMergeGraph';\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport GraphComponent from '../../planargraph/GraphComponent';\nexport default class LineMerger {\n\tconstructor() {\n\t\tLineMerger.constructor_.apply(this, arguments);\n\t}\n\tbuildEdgeStringsForUnprocessedNodes() {\n\t\tfor (var i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (!node.isMarked()) {\n\t\t\t\tAssert.isTrue(node.getDegree() === 2);\n\t\t\t\tthis.buildEdgeStringsStartingAt(node);\n\t\t\t\tnode.setMarked(true);\n\t\t\t}\n\t\t}\n\t}\n\tbuildEdgeStringsForNonDegree2Nodes() {\n\t\tfor (var i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (node.getDegree() !== 2) {\n\t\t\t\tthis.buildEdgeStringsStartingAt(node);\n\t\t\t\tnode.setMarked(true);\n\t\t\t}\n\t\t}\n\t}\n\tbuildEdgeStringsForObviousStartNodes() {\n\t\tthis.buildEdgeStringsForNonDegree2Nodes();\n\t}\n\tgetMergedLineStrings() {\n\t\tthis.merge();\n\t\treturn this._mergedLineStrings;\n\t}\n\tbuildEdgeStringsStartingAt(node) {\n\t\tfor (var i = node.getOutEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar directedEdge = i.next();\n\t\t\tif (directedEdge.getEdge().isMarked()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._edgeStrings.add(this.buildEdgeStringStartingWith(directedEdge));\n\t\t}\n\t}\n\tmerge() {\n\t\tif (this._mergedLineStrings !== null) {\n\t\t\treturn null;\n\t\t}\n\t\tGraphComponent.setMarked(this._graph.nodeIterator(), false);\n\t\tGraphComponent.setMarked(this._graph.edgeIterator(), false);\n\t\tthis._edgeStrings = new ArrayList();\n\t\tthis.buildEdgeStringsForObviousStartNodes();\n\t\tthis.buildEdgeStringsForIsolatedLoops();\n\t\tthis._mergedLineStrings = new ArrayList();\n\t\tfor (var i = this._edgeStrings.iterator(); i.hasNext(); ) {\n\t\t\tvar edgeString = i.next();\n\t\t\tthis._mergedLineStrings.add(edgeString.toLineString());\n\t\t}\n\t}\n\tbuildEdgeStringStartingWith(start) {\n\t\tvar edgeString = new EdgeString(this._factory);\n\t\tvar current = start;\n\t\tdo {\n\t\t\tedgeString.add(current);\n\t\t\tcurrent.getEdge().setMarked(true);\n\t\t\tcurrent = current.getNext();\n\t\t} while (current !== null && current !== start);\n\t\treturn edgeString;\n\t}\n\tadd() {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geometry = arguments[0];\n\t\t\tgeometry.apply(new (class {\n\t\t\t\tget interfaces_() {\n\t\t\t\t\treturn [GeometryComponentFilter];\n\t\t\t\t}\n\t\t\t\tfilter(component) {\n\t\t\t\t\tif (component instanceof LineString) {\n\t\t\t\t\t\tthis.add(component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})());\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geometries = arguments[0];\n\t\t\tthis._mergedLineStrings = null;\n\t\t\tfor (var i = geometries.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geometry = i.next();\n\t\t\t\tthis.add(geometry);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet lineString = arguments[0];\n\t\t\tif (this._factory === null) {\n\t\t\t\tthis._factory = lineString.getFactory();\n\t\t\t}\n\t\t\tthis._graph.addEdge(lineString);\n\t\t}\n\t}\n\tbuildEdgeStringsForIsolatedLoops() {\n\t\tthis.buildEdgeStringsForUnprocessedNodes();\n\t}\n\tgetClass() {\n\t\treturn LineMerger;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineMerger.constructor_ = function () {\n\tthis._graph = new LineMergeGraph();\n\tthis._mergedLineStrings = null;\n\tthis._factory = null;\n\tthis._edgeStrings = null;\n};\n","import WKTWriter from '../io/WKTWriter';\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence';\nimport Octant from './Octant';\nimport SegmentString from './SegmentString';\nexport default class BasicSegmentString {\n\tconstructor() {\n\t\tBasicSegmentString.constructor_.apply(this, arguments);\n\t}\n\tgetCoordinates() {\n\t\treturn this._pts;\n\t}\n\tsize() {\n\t\treturn this._pts.length;\n\t}\n\tgetCoordinate(i) {\n\t\treturn this._pts[i];\n\t}\n\tisClosed() {\n\t\treturn this._pts[0].equals(this._pts[this._pts.length - 1]);\n\t}\n\tgetSegmentOctant(index) {\n\t\tif (index === this._pts.length - 1) return -1;\n\t\treturn Octant.octant(this.getCoordinate(index), this.getCoordinate(index + 1));\n\t}\n\tsetData(data) {\n\t\tthis._data = data;\n\t}\n\tgetData() {\n\t\treturn this._data;\n\t}\n\ttoString() {\n\t\treturn WKTWriter.toLineString(new CoordinateArraySequence(this._pts));\n\t}\n\tgetClass() {\n\t\treturn BasicSegmentString;\n\t}\n\tget interfaces_() {\n\t\treturn [SegmentString];\n\t}\n}\nBasicSegmentString.constructor_ = function () {\n\tthis._pts = null;\n\tthis._data = null;\n\tlet pts = arguments[0], data = arguments[1];\n\tthis._pts = pts;\n\tthis._data = data;\n};\n","import SegmentIntersector from './SegmentIntersector';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class InteriorIntersectionFinder {\n\tconstructor() {\n\t\tInteriorIntersectionFinder.constructor_.apply(this, arguments);\n\t}\n\tstatic createAllIntersectionsFinder(li) {\n\t\tvar finder = new InteriorIntersectionFinder(li);\n\t\tfinder.setFindAllIntersections(true);\n\t\treturn finder;\n\t}\n\tstatic createAnyIntersectionFinder(li) {\n\t\treturn new InteriorIntersectionFinder(li);\n\t}\n\tstatic createIntersectionCounter(li) {\n\t\tvar finder = new InteriorIntersectionFinder(li);\n\t\tfinder.setFindAllIntersections(true);\n\t\tfinder.setKeepIntersections(false);\n\t\treturn finder;\n\t}\n\tgetInteriorIntersection() {\n\t\treturn this._interiorIntersection;\n\t}\n\tsetCheckEndSegmentsOnly(isCheckEndSegmentsOnly) {\n\t\tthis._isCheckEndSegmentsOnly = isCheckEndSegmentsOnly;\n\t}\n\tgetIntersectionSegments() {\n\t\treturn this._intSegments;\n\t}\n\tcount() {\n\t\treturn this._intersectionCount;\n\t}\n\tgetIntersections() {\n\t\treturn this._intersections;\n\t}\n\tsetFindAllIntersections(findAllIntersections) {\n\t\tthis._findAllIntersections = findAllIntersections;\n\t}\n\tsetKeepIntersections(keepIntersections) {\n\t\tthis._keepIntersections = keepIntersections;\n\t}\n\tprocessIntersections(e0, segIndex0, e1, segIndex1) {\n\t\tif (!this._findAllIntersections && this.hasIntersection()) return null;\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tif (this._isCheckEndSegmentsOnly) {\n\t\t\tvar isEndSegPresent = this.isEndSegment(e0, segIndex0) || this.isEndSegment(e1, segIndex1);\n\t\t\tif (!isEndSegPresent) return null;\n\t\t}\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tif (this._li.isInteriorIntersection()) {\n\t\t\t\tthis._intSegments = new Array(4).fill(null);\n\t\t\t\tthis._intSegments[0] = p00;\n\t\t\t\tthis._intSegments[1] = p01;\n\t\t\t\tthis._intSegments[2] = p10;\n\t\t\t\tthis._intSegments[3] = p11;\n\t\t\t\tthis._interiorIntersection = this._li.getIntersection(0);\n\t\t\t\tif (this._keepIntersections) this._intersections.add(this._interiorIntersection);\n\t\t\t\tthis._intersectionCount++;\n\t\t\t}\n\t\t}\n\t}\n\tisEndSegment(segStr, index) {\n\t\tif (index === 0) return true;\n\t\tif (index >= segStr.size() - 2) return true;\n\t\treturn false;\n\t}\n\thasIntersection() {\n\t\treturn this._interiorIntersection !== null;\n\t}\n\tisDone() {\n\t\tif (this._findAllIntersections) return false;\n\t\treturn this._interiorIntersection !== null;\n\t}\n\tgetClass() {\n\t\treturn InteriorIntersectionFinder;\n\t}\n\tget interfaces_() {\n\t\treturn [SegmentIntersector];\n\t}\n}\nInteriorIntersectionFinder.constructor_ = function () {\n\tthis._findAllIntersections = false;\n\tthis._isCheckEndSegmentsOnly = false;\n\tthis._li = null;\n\tthis._interiorIntersection = null;\n\tthis._intSegments = null;\n\tthis._intersections = new ArrayList();\n\tthis._intersectionCount = 0;\n\tthis._keepIntersections = true;\n\tlet li = arguments[0];\n\tthis._li = li;\n\tthis._interiorIntersection = null;\n};\n","import WKTWriter from '../io/WKTWriter';\nimport MCIndexNoder from './MCIndexNoder';\nimport TopologyException from '../geom/TopologyException';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport InteriorIntersectionFinder from './InteriorIntersectionFinder';\nexport default class FastNodingValidator {\n\tconstructor() {\n\t\tFastNodingValidator.constructor_.apply(this, arguments);\n\t}\n\tstatic computeIntersections(segStrings) {\n\t\tvar nv = new FastNodingValidator(segStrings);\n\t\tnv.setFindAllIntersections(true);\n\t\tnv.isValid();\n\t\treturn nv.getIntersections();\n\t}\n\texecute() {\n\t\tif (this._segInt !== null) return null;\n\t\tthis.checkInteriorIntersections();\n\t}\n\tgetIntersections() {\n\t\treturn this._segInt.getIntersections();\n\t}\n\tisValid() {\n\t\tthis.execute();\n\t\treturn this._isValid;\n\t}\n\tsetFindAllIntersections(findAllIntersections) {\n\t\tthis._findAllIntersections = findAllIntersections;\n\t}\n\tcheckInteriorIntersections() {\n\t\tthis._isValid = true;\n\t\tthis._segInt = new InteriorIntersectionFinder(this._li);\n\t\tthis._segInt.setFindAllIntersections(this._findAllIntersections);\n\t\tvar noder = new MCIndexNoder();\n\t\tnoder.setSegmentIntersector(this._segInt);\n\t\tnoder.computeNodes(this._segStrings);\n\t\tif (this._segInt.hasIntersection()) {\n\t\t\tthis._isValid = false;\n\t\t\treturn null;\n\t\t}\n\t}\n\tcheckValid() {\n\t\tthis.execute();\n\t\tif (!this._isValid) throw new TopologyException(this.getErrorMessage(), this._segInt.getInteriorIntersection());\n\t}\n\tgetErrorMessage() {\n\t\tif (this._isValid) return \"no intersections found\";\n\t\tvar intSegs = this._segInt.getIntersectionSegments();\n\t\treturn \"found non-noded intersection between \" + WKTWriter.toLineString(intSegs[0], intSegs[1]) + \" and \" + WKTWriter.toLineString(intSegs[2], intSegs[3]);\n\t}\n\tgetClass() {\n\t\treturn FastNodingValidator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nFastNodingValidator.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._segStrings = null;\n\tthis._findAllIntersections = false;\n\tthis._segInt = null;\n\tthis._isValid = true;\n\tlet segStrings = arguments[0];\n\tthis._segStrings = segStrings;\n};\n","import BasicSegmentString from '../noding/BasicSegmentString';\nimport FastNodingValidator from '../noding/FastNodingValidator';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class EdgeNodingValidator {\n\tconstructor() {\n\t\tEdgeNodingValidator.constructor_.apply(this, arguments);\n\t}\n\tstatic toSegmentStrings(edges) {\n\t\tvar segStrings = new ArrayList();\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tsegStrings.add(new BasicSegmentString(e.getCoordinates(), e));\n\t\t}\n\t\treturn segStrings;\n\t}\n\tstatic checkValid(edges) {\n\t\tvar validator = new EdgeNodingValidator(edges);\n\t\tvalidator.checkValid();\n\t}\n\tcheckValid() {\n\t\tthis._nv.checkValid();\n\t}\n\tgetClass() {\n\t\treturn EdgeNodingValidator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeNodingValidator.constructor_ = function () {\n\tthis._nv = null;\n\tlet edges = arguments[0];\n\tthis._nv = new FastNodingValidator(EdgeNodingValidator.toSegmentStrings(edges));\n};\n","import GeometryFactory from '../GeometryFactory';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default class GeometryCollectionMapper {\n\tconstructor() {\n\t\tGeometryCollectionMapper.constructor_.apply(this, arguments);\n\t}\n\tstatic map(gc, op) {\n\t\tvar mapper = new GeometryCollectionMapper(op);\n\t\treturn mapper.map(gc);\n\t}\n\tmap(gc) {\n\t\tvar mapped = new ArrayList();\n\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\tvar g = this._mapOp.map(gc.getGeometryN(i));\n\t\t\tif (!g.isEmpty()) mapped.add(g);\n\t\t}\n\t\treturn gc.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(mapped));\n\t}\n\tgetClass() {\n\t\treturn GeometryCollectionMapper;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryCollectionMapper.constructor_ = function () {\n\tthis._mapOp = null;\n\tlet mapOp = arguments[0];\n\tthis._mapOp = mapOp;\n};\n","import ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport OverlayOp from './OverlayOp';\nexport default class LineBuilder {\n\tconstructor() {\n\t\tLineBuilder.constructor_.apply(this, arguments);\n\t}\n\tcollectLines(opCode) {\n\t\tfor (var it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tthis.collectLineEdge(de, opCode, this._lineEdgesList);\n\t\t\tthis.collectBoundaryTouchEdge(de, opCode, this._lineEdgesList);\n\t\t}\n\t}\n\tlabelIsolatedLine(e, targetIndex) {\n\t\tvar loc = this._ptLocator.locate(e.getCoordinate(), this._op.getArgGeometry(targetIndex));\n\t\te.getLabel().setLocation(targetIndex, loc);\n\t}\n\tbuild(opCode) {\n\t\tthis.findCoveredLineEdges();\n\t\tthis.collectLines(opCode);\n\t\tthis.buildLines(opCode);\n\t\treturn this._resultLineList;\n\t}\n\tcollectLineEdge(de, opCode, edges) {\n\t\tvar label = de.getLabel();\n\t\tvar e = de.getEdge();\n\t\tif (de.isLineEdge()) {\n\t\t\tif (!de.isVisited() && OverlayOp.isResultOfOp(label, opCode) && !e.isCovered()) {\n\t\t\t\tedges.add(e);\n\t\t\t\tde.setVisitedEdge(true);\n\t\t\t}\n\t\t}\n\t}\n\tfindCoveredLineEdges() {\n\t\tfor (var nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().findCoveredLineEdges();\n\t\t}\n\t\tfor (var it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar e = de.getEdge();\n\t\t\tif (de.isLineEdge() && !e.isCoveredSet()) {\n\t\t\t\tvar isCovered = this._op.isCoveredByA(de.getCoordinate());\n\t\t\t\te.setCovered(isCovered);\n\t\t\t}\n\t\t}\n\t}\n\tlabelIsolatedLines(edgesList) {\n\t\tfor (var it = edgesList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tif (e.isIsolated()) {\n\t\t\t\tif (label.isNull(0)) this.labelIsolatedLine(e, 0); else this.labelIsolatedLine(e, 1);\n\t\t\t}\n\t\t}\n\t}\n\tbuildLines(opCode) {\n\t\tfor (var it = this._lineEdgesList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tvar line = this._geometryFactory.createLineString(e.getCoordinates());\n\t\t\tthis._resultLineList.add(line);\n\t\t\te.setInResult(true);\n\t\t}\n\t}\n\tcollectBoundaryTouchEdge(de, opCode, edges) {\n\t\tvar label = de.getLabel();\n\t\tif (de.isLineEdge()) return null;\n\t\tif (de.isVisited()) return null;\n\t\tif (de.isInteriorAreaEdge()) return null;\n\t\tif (de.getEdge().isInResult()) return null;\n\t\tAssert.isTrue(!(de.isInResult() || de.getSym().isInResult()) || !de.getEdge().isInResult());\n\t\tif (OverlayOp.isResultOfOp(label, opCode) && opCode === OverlayOp.INTERSECTION) {\n\t\t\tedges.add(de.getEdge());\n\t\t\tde.setVisitedEdge(true);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn LineBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineBuilder.constructor_ = function () {\n\tthis._op = null;\n\tthis._geometryFactory = null;\n\tthis._ptLocator = null;\n\tthis._lineEdgesList = new ArrayList();\n\tthis._resultLineList = new ArrayList();\n\tlet op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2];\n\tthis._op = op;\n\tthis._geometryFactory = geometryFactory;\n\tthis._ptLocator = ptLocator;\n};\n","import ArrayList from '../../../../../java/util/ArrayList';\nimport OverlayOp from './OverlayOp';\nexport default class PointBuilder {\n\tconstructor() {\n\t\tPointBuilder.constructor_.apply(this, arguments);\n\t}\n\tfilterCoveredNodeToPoint(n) {\n\t\tvar coord = n.getCoordinate();\n\t\tif (!this._op.isCoveredByLA(coord)) {\n\t\t\tvar pt = this._geometryFactory.createPoint(coord);\n\t\t\tthis._resultPointList.add(pt);\n\t\t}\n\t}\n\textractNonCoveredResultNodes(opCode) {\n\t\tfor (var nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar n = nodeit.next();\n\t\t\tif (n.isInResult()) continue;\n\t\t\tif (n.isIncidentEdgeInResult()) continue;\n\t\t\tif (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {\n\t\t\t\tvar label = n.getLabel();\n\t\t\t\tif (OverlayOp.isResultOfOp(label, opCode)) {\n\t\t\t\t\tthis.filterCoveredNodeToPoint(n);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tbuild(opCode) {\n\t\tthis.extractNonCoveredResultNodes(opCode);\n\t\treturn this._resultPointList;\n\t}\n\tgetClass() {\n\t\treturn PointBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPointBuilder.constructor_ = function () {\n\tthis._op = null;\n\tthis._geometryFactory = null;\n\tthis._resultPointList = new ArrayList();\n\tlet op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2];\n\tthis._op = op;\n\tthis._geometryFactory = geometryFactory;\n};\n","import LineString from '../../../geom/LineString';\nimport CoordinateList from '../../../geom/CoordinateList';\nimport Coordinate from '../../../geom/Coordinate';\nimport Double from '../../../../../../java/lang/Double';\nimport LineSegment from '../../../geom/LineSegment';\nexport default class LineStringSnapper {\n\tconstructor() {\n\t\tLineStringSnapper.constructor_.apply(this, arguments);\n\t}\n\tstatic isClosed(pts) {\n\t\tif (pts.length <= 1) return false;\n\t\treturn pts[0].equals2D(pts[pts.length - 1]);\n\t}\n\tsnapVertices(srcCoords, snapPts) {\n\t\tvar end = this._isClosed ? srcCoords.size() - 1 : srcCoords.size();\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar srcPt = srcCoords.get(i);\n\t\t\tvar snapVert = this.findSnapForVertex(srcPt, snapPts);\n\t\t\tif (snapVert !== null) {\n\t\t\t\tsrcCoords.set(i, new Coordinate(snapVert));\n\t\t\t\tif (i === 0 && this._isClosed) srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert));\n\t\t\t}\n\t\t}\n\t}\n\tfindSnapForVertex(pt, snapPts) {\n\t\tfor (var i = 0; i < snapPts.length; i++) {\n\t\t\tif (pt.equals2D(snapPts[i])) return null;\n\t\t\tif (pt.distance(snapPts[i]) < this._snapTolerance) return snapPts[i];\n\t\t}\n\t\treturn null;\n\t}\n\tsnapTo(snapPts) {\n\t\tvar coordList = new CoordinateList(this._srcPts);\n\t\tthis.snapVertices(coordList, snapPts);\n\t\tthis.snapSegments(coordList, snapPts);\n\t\tvar newPts = coordList.toCoordinateArray();\n\t\treturn newPts;\n\t}\n\tsnapSegments(srcCoords, snapPts) {\n\t\tif (snapPts.length === 0) return null;\n\t\tvar distinctPtCount = snapPts.length;\n\t\tif (snapPts[0].equals2D(snapPts[snapPts.length - 1])) distinctPtCount = snapPts.length - 1;\n\t\tfor (var i = 0; i < distinctPtCount; i++) {\n\t\t\tvar snapPt = snapPts[i];\n\t\t\tvar index = this.findSegmentIndexToSnap(snapPt, srcCoords);\n\t\t\tif (index >= 0) {\n\t\t\t\tsrcCoords.add(index + 1, new Coordinate(snapPt), false);\n\t\t\t}\n\t\t}\n\t}\n\tfindSegmentIndexToSnap(snapPt, srcCoords) {\n\t\tvar minDist = Double.MAX_VALUE;\n\t\tvar snapIndex = -1;\n\t\tfor (var i = 0; i < srcCoords.size() - 1; i++) {\n\t\t\tthis._seg.p0 = srcCoords.get(i);\n\t\t\tthis._seg.p1 = srcCoords.get(i + 1);\n\t\t\tif (this._seg.p0.equals2D(snapPt) || this._seg.p1.equals2D(snapPt)) {\n\t\t\t\tif (this._allowSnappingToSourceVertices) continue; else return -1;\n\t\t\t}\n\t\t\tvar dist = this._seg.distance(snapPt);\n\t\t\tif (dist < this._snapTolerance && dist < minDist) {\n\t\t\t\tminDist = dist;\n\t\t\t\tsnapIndex = i;\n\t\t\t}\n\t\t}\n\t\treturn snapIndex;\n\t}\n\tsetAllowSnappingToSourceVertices(allowSnappingToSourceVertices) {\n\t\tthis._allowSnappingToSourceVertices = allowSnappingToSourceVertices;\n\t}\n\tgetClass() {\n\t\treturn LineStringSnapper;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineStringSnapper.constructor_ = function () {\n\tthis._snapTolerance = 0.0;\n\tthis._srcPts = null;\n\tthis._seg = new LineSegment();\n\tthis._allowSnappingToSourceVertices = false;\n\tthis._isClosed = false;\n\tif (arguments[0] instanceof LineString && typeof arguments[1] === \"number\") {\n\t\tlet srcLine = arguments[0], snapTolerance = arguments[1];\n\t\tLineStringSnapper.constructor_.call(this, srcLine.getCoordinates(), snapTolerance);\n\t} else if (arguments[0] instanceof Array && typeof arguments[1] === \"number\") {\n\t\tlet srcPts = arguments[0], snapTolerance = arguments[1];\n\t\tthis._srcPts = srcPts;\n\t\tthis._isClosed = LineStringSnapper.isClosed(srcPts);\n\t\tthis._snapTolerance = snapTolerance;\n\t}\n};\n","import TreeSet from '../../../../../../java/util/TreeSet';\nimport GeometryTransformer from '../../../geom/util/GeometryTransformer';\nimport hasInterface from '../../../../../../hasInterface';\nimport Double from '../../../../../../java/lang/Double';\nimport LineStringSnapper from './LineStringSnapper';\nimport PrecisionModel from '../../../geom/PrecisionModel';\nimport Polygonal from '../../../geom/Polygonal';\nexport default class GeometrySnapper {\n\tconstructor() {\n\t\tGeometrySnapper.constructor_.apply(this, arguments);\n\t}\n\tstatic snap(g0, g1, snapTolerance) {\n\t\tvar snapGeom = new Array(2).fill(null);\n\t\tvar snapper0 = new GeometrySnapper(g0);\n\t\tsnapGeom[0] = snapper0.snapTo(g1, snapTolerance);\n\t\tvar snapper1 = new GeometrySnapper(g1);\n\t\tsnapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance);\n\t\treturn snapGeom;\n\t}\n\tstatic computeOverlaySnapTolerance() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet g = arguments[0];\n\t\t\tvar snapTolerance = GeometrySnapper.computeSizeBasedSnapTolerance(g);\n\t\t\tvar pm = g.getPrecisionModel();\n\t\t\tif (pm.getType() === PrecisionModel.FIXED) {\n\t\t\t\tvar fixedSnapTol = 1 / pm.getScale() * 2 / 1.415;\n\t\t\t\tif (fixedSnapTol > snapTolerance) snapTolerance = fixedSnapTol;\n\t\t\t}\n\t\t\treturn snapTolerance;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\t\treturn Math.min(GeometrySnapper.computeOverlaySnapTolerance(g0), GeometrySnapper.computeOverlaySnapTolerance(g1));\n\t\t}\n\t}\n\tstatic computeSizeBasedSnapTolerance(g) {\n\t\tvar env = g.getEnvelopeInternal();\n\t\tvar minDimension = Math.min(env.getHeight(), env.getWidth());\n\t\tvar snapTol = minDimension * GeometrySnapper.SNAP_PRECISION_FACTOR;\n\t\treturn snapTol;\n\t}\n\tstatic snapToSelf(geom, snapTolerance, cleanResult) {\n\t\tvar snapper0 = new GeometrySnapper(geom);\n\t\treturn snapper0.snapToSelf(snapTolerance, cleanResult);\n\t}\n\tsnapTo(snapGeom, snapTolerance) {\n\t\tvar snapPts = this.extractTargetCoordinates(snapGeom);\n\t\tvar snapTrans = new SnapTransformer(snapTolerance, snapPts);\n\t\treturn snapTrans.transform(this._srcGeom);\n\t}\n\tsnapToSelf(snapTolerance, cleanResult) {\n\t\tvar snapPts = this.extractTargetCoordinates(this._srcGeom);\n\t\tvar snapTrans = new SnapTransformer(snapTolerance, snapPts, true);\n\t\tvar snappedGeom = snapTrans.transform(this._srcGeom);\n\t\tvar result = snappedGeom;\n\t\tif (cleanResult && hasInterface(result, Polygonal)) {\n\t\t\tresult = snappedGeom.buffer(0);\n\t\t}\n\t\treturn result;\n\t}\n\tcomputeSnapTolerance(ringPts) {\n\t\tvar minSegLen = this.computeMinimumSegmentLength(ringPts);\n\t\tvar snapTol = minSegLen / 10;\n\t\treturn snapTol;\n\t}\n\textractTargetCoordinates(g) {\n\t\tvar ptSet = new TreeSet();\n\t\tvar pts = g.getCoordinates();\n\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\tptSet.add(pts[i]);\n\t\t}\n\t\treturn ptSet.toArray(new Array(0).fill(null));\n\t}\n\tcomputeMinimumSegmentLength(pts) {\n\t\tvar minSegLen = Double.MAX_VALUE;\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tvar segLen = pts[i].distance(pts[i + 1]);\n\t\t\tif (segLen < minSegLen) minSegLen = segLen;\n\t\t}\n\t\treturn minSegLen;\n\t}\n\tgetClass() {\n\t\treturn GeometrySnapper;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometrySnapper.constructor_ = function () {\n\tthis._srcGeom = null;\n\tlet srcGeom = arguments[0];\n\tthis._srcGeom = srcGeom;\n};\nGeometrySnapper.SNAP_PRECISION_FACTOR = 1e-9;\nclass SnapTransformer extends GeometryTransformer {\n\tconstructor() {\n\t\tsuper();\n\t\tSnapTransformer.constructor_.apply(this, arguments);\n\t}\n\tsnapLine(srcPts, snapPts) {\n\t\tvar snapper = new LineStringSnapper(srcPts, this._snapTolerance);\n\t\tsnapper.setAllowSnappingToSourceVertices(this._isSelfSnap);\n\t\treturn snapper.snapTo(snapPts);\n\t}\n\ttransformCoordinates(coords, parent) {\n\t\tvar srcPts = coords.toCoordinateArray();\n\t\tvar newPts = this.snapLine(srcPts, this._snapPts);\n\t\treturn this._factory.getCoordinateSequenceFactory().create(newPts);\n\t}\n\tgetClass() {\n\t\treturn SnapTransformer;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSnapTransformer.constructor_ = function () {\n\tthis._snapTolerance = null;\n\tthis._snapPts = null;\n\tthis._isSelfSnap = false;\n\tif (arguments.length === 2) {\n\t\tlet snapTolerance = arguments[0], snapPts = arguments[1];\n\t\tthis._snapTolerance = snapTolerance;\n\t\tthis._snapPts = snapPts;\n\t} else if (arguments.length === 3) {\n\t\tlet snapTolerance = arguments[0], snapPts = arguments[1], isSelfSnap = arguments[2];\n\t\tthis._snapTolerance = snapTolerance;\n\t\tthis._snapPts = snapPts;\n\t\tthis._isSelfSnap = isSelfSnap;\n\t}\n};\n","import Double from '../../../../java/lang/Double';\nimport Long from '../../../../java/lang/Long';\nexport default class CommonBits {\n\tconstructor() {\n\t\tthis._isFirst = true;\n\t\tthis._commonMantissaBitsCount = 53;\n\t\tthis._commonBits = new Long();\n\t\tthis._commonSignExp = null;\n\t}\n\tgetCommon() {\n\t\treturn Double.longBitsToDouble(this._commonBits);\n\t}\n\tadd(num) {\n\t\tvar numBits = Double.doubleToLongBits(num);\n\t\tif (this._isFirst) {\n\t\t\tthis._commonBits = numBits;\n\t\t\tthis._commonSignExp = CommonBits.signExpBits(this._commonBits);\n\t\t\tthis._isFirst = false;\n\t\t\treturn null;\n\t\t}\n\t\tvar numSignExp = CommonBits.signExpBits(numBits);\n\t\tif (numSignExp !== this._commonSignExp) {\n\t\t\tthis._commonBits.high = 0 | 0;\n\t\t\tthis._commonBits.low = 0 | 0;\n\t\t\treturn null;\n\t\t}\n\t\tthis._commonMantissaBitsCount = CommonBits.numCommonMostSigMantissaBits(this._commonBits, numBits);\n\t\tthis._commonBits = CommonBits.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount));\n\t}\n\ttoString() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet bits = arguments[0];\n\t\t\tvar x = Double.longBitsToDouble(bits);\n\t\t\tvar numStr = Long.toBinaryString(bits);\n\t\t\tvar padStr = \"0000000000000000000000000000000000000000000000000000000000000000\" + numStr;\n\t\t\tvar bitStr = padStr.substring(padStr.length - 64);\n\t\t\tvar str = bitStr.substring(0, 1) + \" \" + bitStr.substring(1, 12) + \"(exp) \" + bitStr.substring(12) + \" [ \" + x + \" ]\";\n\t\t\treturn str;\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn CommonBits;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n\tstatic getBit(bits, i) {\n\t\tvar mask = (1 << (i % 32));\n\t\tif (i < 32) {\n\t\t\treturn (bits.low & mask) != 0 ? 1 : 0;\n\t\t}\n\t\treturn (bits.high & mask) != 0 ? 1 : 0;\n\t}\n\tstatic signExpBits(num) {\n\t\treturn num.high >>> 20;\n\t}\n\tstatic zeroLowerBits(bits, nBits) {\n\t\tvar prop = 'low';\n\t\tif (nBits > 32) {\n\t\t\tbits.low = 0 | 0;\n\t\t\tnBits %= 32;\n\t\t\tprop = 'high';\n\t\t}\n\t\tif (nBits > 0) {\n\t\t\tvar mask = (nBits < 32) ? (~((1 << nBits) - 1)) : 0;\n\t\t\tbits[prop] &= mask;\n\t\t}\n\t\treturn bits;\n\t}\n\tstatic numCommonMostSigMantissaBits (num1, num2) {\n\t\tvar count = 0;\n\t\tfor (var i = 52; i >= 0; i--) {\n\t\t\tif (CommonBits.getBit(num1, i) !== CommonBits.getBit(num2, i)) return count;\n\t\t\tcount++;\n\t\t}\n\t\treturn 52;\n\t}\n}\n\n","import CommonBits from './CommonBits';\nimport CoordinateFilter from '../geom/CoordinateFilter';\nimport Coordinate from '../geom/Coordinate';\nimport CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter';\nexport default class CommonBitsRemover {\n\tconstructor() {\n\t\tCommonBitsRemover.constructor_.apply(this, arguments);\n\t}\n\taddCommonBits(geom) {\n\t\tvar trans = new Translater(this._commonCoord);\n\t\tgeom.apply(trans);\n\t\tgeom.geometryChanged();\n\t}\n\tremoveCommonBits(geom) {\n\t\tif (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) return geom;\n\t\tvar invCoord = new Coordinate(this._commonCoord);\n\t\tinvCoord.x = -invCoord.x;\n\t\tinvCoord.y = -invCoord.y;\n\t\tvar trans = new Translater(invCoord);\n\t\tgeom.apply(trans);\n\t\tgeom.geometryChanged();\n\t\treturn geom;\n\t}\n\tgetCommonCoordinate() {\n\t\treturn this._commonCoord;\n\t}\n\tadd(geom) {\n\t\tgeom.apply(this._ccFilter);\n\t\tthis._commonCoord = this._ccFilter.getCommonCoordinate();\n\t}\n\tgetClass() {\n\t\treturn CommonBitsRemover;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass CommonCoordinateFilter {\n\tconstructor() {\n\t\tCommonCoordinateFilter.constructor_.apply(this, arguments);\n\t}\n\tfilter(coord) {\n\t\tthis._commonBitsX.add(coord.x);\n\t\tthis._commonBitsY.add(coord.y);\n\t}\n\tgetCommonCoordinate() {\n\t\treturn new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon());\n\t}\n\tgetClass() {\n\t\treturn CommonCoordinateFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [CoordinateFilter];\n\t}\n}\nCommonCoordinateFilter.constructor_ = function () {\n\tthis._commonBitsX = new CommonBits();\n\tthis._commonBitsY = new CommonBits();\n};\nclass Translater {\n\tconstructor() {\n\t\tTranslater.constructor_.apply(this, arguments);\n\t}\n\tfilter(seq, i) {\n\t\tvar xp = seq.getOrdinate(i, 0) + this.trans.x;\n\t\tvar yp = seq.getOrdinate(i, 1) + this.trans.y;\n\t\tseq.setOrdinate(i, 0, xp);\n\t\tseq.setOrdinate(i, 1, yp);\n\t}\n\tisDone() {\n\t\treturn false;\n\t}\n\tisGeometryChanged() {\n\t\treturn true;\n\t}\n\tgetClass() {\n\t\treturn Translater;\n\t}\n\tget interfaces_() {\n\t\treturn [CoordinateSequenceFilter];\n\t}\n}\nTranslater.constructor_ = function () {\n\tthis.trans = null;\n\tlet trans = arguments[0];\n\tthis.trans = trans;\n};\nCommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter;\nCommonBitsRemover.Translater = Translater;\nCommonBitsRemover.constructor_ = function () {\n\tthis._commonCoord = null;\n\tthis._ccFilter = new CommonCoordinateFilter();\n};\n","import GeometrySnapper from './GeometrySnapper';\nimport System from '../../../../../../java/lang/System';\nimport CommonBitsRemover from '../../../precision/CommonBitsRemover';\nimport OverlayOp from '../OverlayOp';\nexport default class SnapOverlayOp {\n\tconstructor() {\n\t\tSnapOverlayOp.constructor_.apply(this, arguments);\n\t}\n\tstatic overlayOp(g0, g1, opCode) {\n\t\tvar op = new SnapOverlayOp(g0, g1);\n\t\treturn op.getResultGeometry(opCode);\n\t}\n\tstatic union(g0, g1) {\n\t\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION);\n\t}\n\tstatic intersection(g0, g1) {\n\t\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION);\n\t}\n\tstatic symDifference(g0, g1) {\n\t\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);\n\t}\n\tstatic difference(g0, g1) {\n\t\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE);\n\t}\n\tselfSnap(geom) {\n\t\tvar snapper0 = new GeometrySnapper(geom);\n\t\tvar snapGeom = snapper0.snapTo(geom, this._snapTolerance);\n\t\treturn snapGeom;\n\t}\n\tremoveCommonBits(geom) {\n\t\tthis._cbr = new CommonBitsRemover();\n\t\tthis._cbr.add(geom[0]);\n\t\tthis._cbr.add(geom[1]);\n\t\tvar remGeom = new Array(2).fill(null);\n\t\tremGeom[0] = this._cbr.removeCommonBits(geom[0].copy());\n\t\tremGeom[1] = this._cbr.removeCommonBits(geom[1].copy());\n\t\treturn remGeom;\n\t}\n\tprepareResult(geom) {\n\t\tthis._cbr.addCommonBits(geom);\n\t\treturn geom;\n\t}\n\tgetResultGeometry(opCode) {\n\t\tvar prepGeom = this.snap(this._geom);\n\t\tvar result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode);\n\t\treturn this.prepareResult(result);\n\t}\n\tcheckValid(g) {\n\t\tif (!g.isValid()) {\n\t\t\tSystem.out.println(\"Snapped geometry is invalid\");\n\t\t}\n\t}\n\tcomputeSnapTolerance() {\n\t\tthis._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1]);\n\t}\n\tsnap(geom) {\n\t\tvar remGeom = this.removeCommonBits(geom);\n\t\tvar snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], this._snapTolerance);\n\t\treturn snapGeom;\n\t}\n\tgetClass() {\n\t\treturn SnapOverlayOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSnapOverlayOp.constructor_ = function () {\n\tthis._geom = new Array(2).fill(null);\n\tthis._snapTolerance = null;\n\tthis._cbr = null;\n\tlet g1 = arguments[0], g2 = arguments[1];\n\tthis._geom[0] = g1;\n\tthis._geom[1] = g2;\n\tthis.computeSnapTolerance();\n};\n","import SnapOverlayOp from './SnapOverlayOp';\nimport RuntimeException from '../../../../../../java/lang/RuntimeException';\nimport OverlayOp from '../OverlayOp';\nexport default class SnapIfNeededOverlayOp {\n\tconstructor() {\n\t\tSnapIfNeededOverlayOp.constructor_.apply(this, arguments);\n\t}\n\tstatic overlayOp(g0, g1, opCode) {\n\t\tvar op = new SnapIfNeededOverlayOp(g0, g1);\n\t\treturn op.getResultGeometry(opCode);\n\t}\n\tstatic union(g0, g1) {\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.UNION);\n\t}\n\tstatic intersection(g0, g1) {\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION);\n\t}\n\tstatic symDifference(g0, g1) {\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);\n\t}\n\tstatic difference(g0, g1) {\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE);\n\t}\n\tgetResultGeometry(opCode) {\n\t\tvar result = null;\n\t\tvar isSuccess = false;\n\t\tvar savedException = null;\n\t\ttry {\n\t\t\tresult = OverlayOp.overlayOp(this._geom[0], this._geom[1], opCode);\n\t\t\tvar isValid = true;\n\t\t\tif (isValid) isSuccess = true;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof RuntimeException) {\n\t\t\t\tsavedException = ex;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\tif (!isSuccess) {\n\t\t\ttry {\n\t\t\t\tresult = SnapOverlayOp.overlayOp(this._geom[0], this._geom[1], opCode);\n\t\t\t} catch (ex) {\n\t\t\t\tif (ex instanceof RuntimeException) {\n\t\t\t\t\tthrow savedException;\n\t\t\t\t} else throw ex;\n\t\t\t} finally {}\n\t\t}\n\t\treturn result;\n\t}\n\tgetClass() {\n\t\treturn SnapIfNeededOverlayOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSnapIfNeededOverlayOp.constructor_ = function () {\n\tthis._geom = new Array(2).fill(null);\n\tlet g1 = arguments[0], g2 = arguments[1];\n\tthis._geom[0] = g1;\n\tthis._geom[1] = g2;\n};\n","import BoundaryNodeRule from '../algorithm/BoundaryNodeRule';\nimport GeometryGraph from '../geomgraph/GeometryGraph';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nexport default class GeometryGraphOperation {\n\tconstructor() {\n\t\tGeometryGraphOperation.constructor_.apply(this, arguments);\n\t}\n\tgetArgGeometry(i) {\n\t\treturn this._arg[i].getGeometry();\n\t}\n\tsetComputationPrecision(pm) {\n\t\tthis._resultPrecisionModel = pm;\n\t\tthis._li.setPrecisionModel(this._resultPrecisionModel);\n\t}\n\tgetClass() {\n\t\treturn GeometryGraphOperation;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryGraphOperation.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._resultPrecisionModel = null;\n\tthis._arg = null;\n\tif (arguments.length === 1) {\n\t\tlet g0 = arguments[0];\n\t\tthis.setComputationPrecision(g0.getPrecisionModel());\n\t\tthis._arg = new Array(1).fill(null);\n\t\tthis._arg[0] = new GeometryGraph(0, g0);\n\t\t;\n\t} else if (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tGeometryGraphOperation.constructor_.call(this, g0, g1, BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE);\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2];\n\t\tif (g0.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0) this.setComputationPrecision(g0.getPrecisionModel()); else this.setComputationPrecision(g1.getPrecisionModel());\n\t\tthis._arg = new Array(2).fill(null);\n\t\tthis._arg[0] = new GeometryGraph(0, g0, boundaryNodeRule);\n\t\tthis._arg[1] = new GeometryGraph(1, g1, boundaryNodeRule);\n\t}\n};\n","import PointLocator from '../../algorithm/PointLocator';\nimport Location from '../../geom/Location';\nimport EdgeNodingValidator from '../../geomgraph/EdgeNodingValidator';\nimport GeometryCollectionMapper from '../../geom/util/GeometryCollectionMapper';\nimport PolygonBuilder from './PolygonBuilder';\nimport Position from '../../geomgraph/Position';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport LineBuilder from './LineBuilder';\nimport PointBuilder from './PointBuilder';\nimport SnapIfNeededOverlayOp from './snap/SnapIfNeededOverlayOp';\nimport Label from '../../geomgraph/Label';\nimport OverlayNodeFactory from './OverlayNodeFactory';\nimport GeometryGraphOperation from '../GeometryGraphOperation';\nimport EdgeList from '../../geomgraph/EdgeList';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default class OverlayOp extends GeometryGraphOperation {\n\tconstructor() {\n\t\tsuper();\n\t\tOverlayOp.constructor_.apply(this, arguments);\n\t}\n\tstatic overlayOp(geom0, geom1, opCode) {\n\t\tvar gov = new OverlayOp(geom0, geom1);\n\t\tvar geomOv = gov.getResultGeometry(opCode);\n\t\treturn geomOv;\n\t}\n\tstatic union(geom, other) {\n\t\tif (geom.isEmpty() || other.isEmpty()) {\n\t\t\tif (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, geom, other, geom.getFactory());\n\t\t\tif (geom.isEmpty()) return other.copy();\n\t\t\tif (other.isEmpty()) return geom.copy();\n\t\t}\n\t\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\t\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.UNION);\n\t}\n\tstatic intersection(geom, other) {\n\t\tif (geom.isEmpty() || other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, geom, other, geom.getFactory());\n\t\tif (geom.isGeometryCollection()) {\n\t\t\tvar g2 = other;\n\t\t\treturn GeometryCollectionMapper.map(geom, new (class {\n\t\t\t\tget interfaces_() {\n\t\t\t\t\treturn [MapOp];\n\t\t\t\t}\n\t\t\t\tmap(g) {\n\t\t\t\t\treturn g.intersection(g2);\n\t\t\t\t}\n\t\t\t})());\n\t\t}\n\t\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\t\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.INTERSECTION);\n\t}\n\tstatic symDifference(geom, other) {\n\t\tif (geom.isEmpty() || other.isEmpty()) {\n\t\t\tif (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, geom, other, geom.getFactory());\n\t\t\tif (geom.isEmpty()) return other.copy();\n\t\t\tif (other.isEmpty()) return geom.copy();\n\t\t}\n\t\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\t\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.SYMDIFFERENCE);\n\t}\n\tstatic resultDimension(opCode, g0, g1) {\n\t\tvar dim0 = g0.getDimension();\n\t\tvar dim1 = g1.getDimension();\n\t\tvar resultDimension = -1;\n\t\tswitch (opCode) {\n\t\t\tcase OverlayOp.INTERSECTION:\n\t\t\t\tresultDimension = Math.min(dim0, dim1);\n\t\t\t\tbreak;\n\t\t\tcase OverlayOp.UNION:\n\t\t\t\tresultDimension = Math.max(dim0, dim1);\n\t\t\t\tbreak;\n\t\t\tcase OverlayOp.DIFFERENCE:\n\t\t\t\tresultDimension = dim0;\n\t\t\t\tbreak;\n\t\t\tcase OverlayOp.SYMDIFFERENCE:\n\t\t\t\tresultDimension = Math.max(dim0, dim1);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn resultDimension;\n\t}\n\tstatic createEmptyResult(overlayOpCode, a, b, geomFact) {\n\t\tvar result = null;\n\t\tswitch (OverlayOp.resultDimension(overlayOpCode, a, b)) {\n\t\t\tcase -1:\n\t\t\t\tresult = geomFact.createGeometryCollection();\n\t\t\t\tbreak;\n\t\t\tcase 0:\n\t\t\t\tresult = geomFact.createPoint();\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tresult = geomFact.createLineString();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tresult = geomFact.createPolygon();\n\t\t\t\tbreak;\n\t\t}\n\t\treturn result;\n\t}\n\tstatic difference(geom, other) {\n\t\tif (geom.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, geom, other, geom.getFactory());\n\t\tif (other.isEmpty()) return geom.copy();\n\t\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\t\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.DIFFERENCE);\n\t}\n\tstatic isResultOfOp() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet label = arguments[0], opCode = arguments[1];\n\t\t\tvar loc0 = label.getLocation(0);\n\t\t\tvar loc1 = label.getLocation(1);\n\t\t\treturn OverlayOp.isResultOfOp(loc0, loc1, opCode);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet loc0 = arguments[0], loc1 = arguments[1], overlayOpCode = arguments[2];\n\t\t\tif (loc0 === Location.BOUNDARY) loc0 = Location.INTERIOR;\n\t\t\tif (loc1 === Location.BOUNDARY) loc1 = Location.INTERIOR;\n\t\t\tswitch (overlayOpCode) {\n\t\t\t\tcase OverlayOp.INTERSECTION:\n\t\t\t\t\treturn loc0 === Location.INTERIOR && loc1 === Location.INTERIOR;\n\t\t\t\tcase OverlayOp.UNION:\n\t\t\t\t\treturn loc0 === Location.INTERIOR || loc1 === Location.INTERIOR;\n\t\t\t\tcase OverlayOp.DIFFERENCE:\n\t\t\t\t\treturn loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR;\n\t\t\t\tcase OverlayOp.SYMDIFFERENCE:\n\t\t\t\t\treturn loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR || loc0 !== Location.INTERIOR && loc1 === Location.INTERIOR;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\tinsertUniqueEdge(e) {\n\t\tvar existingEdge = this._edgeList.findEqualEdge(e);\n\t\tif (existingEdge !== null) {\n\t\t\tvar existingLabel = existingEdge.getLabel();\n\t\t\tvar labelToMerge = e.getLabel();\n\t\t\tif (!existingEdge.isPointwiseEqual(e)) {\n\t\t\t\tlabelToMerge = new Label(e.getLabel());\n\t\t\t\tlabelToMerge.flip();\n\t\t\t}\n\t\t\tvar depth = existingEdge.getDepth();\n\t\t\tif (depth.isNull()) {\n\t\t\t\tdepth.add(existingLabel);\n\t\t\t}\n\t\t\tdepth.add(labelToMerge);\n\t\t\texistingLabel.merge(labelToMerge);\n\t\t} else {\n\t\t\tthis._edgeList.add(e);\n\t\t}\n\t}\n\tgetGraph() {\n\t\treturn this._graph;\n\t}\n\tcancelDuplicateResultEdges() {\n\t\tfor (var it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar sym = de.getSym();\n\t\t\tif (de.isInResult() && sym.isInResult()) {\n\t\t\t\tde.setInResult(false);\n\t\t\t\tsym.setInResult(false);\n\t\t\t}\n\t\t}\n\t}\n\tisCoveredByLA(coord) {\n\t\tif (this.isCovered(coord, this._resultLineList)) return true;\n\t\tif (this.isCovered(coord, this._resultPolyList)) return true;\n\t\treturn false;\n\t}\n\tcomputeGeometry(resultPointList, resultLineList, resultPolyList, opcode) {\n\t\tvar geomList = new ArrayList();\n\t\tgeomList.addAll(resultPointList);\n\t\tgeomList.addAll(resultLineList);\n\t\tgeomList.addAll(resultPolyList);\n\t\tif (geomList.isEmpty()) return OverlayOp.createEmptyResult(opcode, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact);\n\t\treturn this._geomFact.buildGeometry(geomList);\n\t}\n\tmergeSymLabels() {\n\t\tfor (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().mergeSymLabels();\n\t\t}\n\t}\n\tisCovered(coord, geomList) {\n\t\tfor (var it = geomList.iterator(); it.hasNext(); ) {\n\t\t\tvar geom = it.next();\n\t\t\tvar loc = this._ptLocator.locate(coord, geom);\n\t\t\tif (loc !== Location.EXTERIOR) return true;\n\t\t}\n\t\treturn false;\n\t}\n\treplaceCollapsedEdges() {\n\t\tvar newEdges = new ArrayList();\n\t\tfor (var it = this._edgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tif (e.isCollapsed()) {\n\t\t\t\tit.remove();\n\t\t\t\tnewEdges.add(e.getCollapsedEdge());\n\t\t\t}\n\t\t}\n\t\tthis._edgeList.addAll(newEdges);\n\t}\n\tupdateNodeLabelling() {\n\t\tfor (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tvar lbl = node.getEdges().getLabel();\n\t\t\tnode.getLabel().merge(lbl);\n\t\t}\n\t}\n\tgetResultGeometry(overlayOpCode) {\n\t\tthis.computeOverlay(overlayOpCode);\n\t\treturn this._resultGeom;\n\t}\n\tinsertUniqueEdges(edges) {\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis.insertUniqueEdge(e);\n\t\t}\n\t}\n\tcomputeOverlay(opCode) {\n\t\tthis.copyPoints(0);\n\t\tthis.copyPoints(1);\n\t\tthis._arg[0].computeSelfNodes(this._li, false);\n\t\tthis._arg[1].computeSelfNodes(this._li, false);\n\t\tthis._arg[0].computeEdgeIntersections(this._arg[1], this._li, true);\n\t\tvar baseSplitEdges = new ArrayList();\n\t\tthis._arg[0].computeSplitEdges(baseSplitEdges);\n\t\tthis._arg[1].computeSplitEdges(baseSplitEdges);\n\t\tvar splitEdges = baseSplitEdges;\n\t\tthis.insertUniqueEdges(baseSplitEdges);\n\t\tthis.computeLabelsFromDepths();\n\t\tthis.replaceCollapsedEdges();\n\t\tEdgeNodingValidator.checkValid(this._edgeList.getEdges());\n\t\tthis._graph.addEdges(this._edgeList.getEdges());\n\t\tthis.computeLabelling();\n\t\tthis.labelIncompleteNodes();\n\t\tthis.findResultAreaEdges(opCode);\n\t\tthis.cancelDuplicateResultEdges();\n\t\tvar polyBuilder = new PolygonBuilder(this._geomFact);\n\t\tpolyBuilder.add(this._graph);\n\t\tthis._resultPolyList = polyBuilder.getPolygons();\n\t\tvar lineBuilder = new LineBuilder(this, this._geomFact, this._ptLocator);\n\t\tthis._resultLineList = lineBuilder.build(opCode);\n\t\tvar pointBuilder = new PointBuilder(this, this._geomFact, this._ptLocator);\n\t\tthis._resultPointList = pointBuilder.build(opCode);\n\t\tthis._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, opCode);\n\t}\n\tlabelIncompleteNode(n, targetIndex) {\n\t\tvar loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry());\n\t\tn.getLabel().setLocation(targetIndex, loc);\n\t}\n\tcopyPoints(argIndex) {\n\t\tfor (var i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n\t\t\tvar graphNode = i.next();\n\t\t\tvar newNode = this._graph.addNode(graphNode.getCoordinate());\n\t\t\tnewNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n\t\t}\n\t}\n\tfindResultAreaEdges(opCode) {\n\t\tfor (var it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tif (label.isArea() && !de.isInteriorAreaEdge() && OverlayOp.isResultOfOp(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), opCode)) {\n\t\t\t\tde.setInResult(true);\n\t\t\t}\n\t\t}\n\t}\n\tcomputeLabelsFromDepths() {\n\t\tfor (var it = this._edgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar lbl = e.getLabel();\n\t\t\tvar depth = e.getDepth();\n\t\t\tif (!depth.isNull()) {\n\t\t\t\tdepth.normalize();\n\t\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\t\tif (!lbl.isNull(i) && lbl.isArea() && !depth.isNull(i)) {\n\t\t\t\t\t\tif (depth.getDelta(i) === 0) {\n\t\t\t\t\t\t\tlbl.toLine(i);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tAssert.isTrue(!depth.isNull(i, Position.LEFT), \"depth of LEFT side has not been initialized\");\n\t\t\t\t\t\t\tlbl.setLocation(i, Position.LEFT, depth.getLocation(i, Position.LEFT));\n\t\t\t\t\t\t\tAssert.isTrue(!depth.isNull(i, Position.RIGHT), \"depth of RIGHT side has not been initialized\");\n\t\t\t\t\t\t\tlbl.setLocation(i, Position.RIGHT, depth.getLocation(i, Position.RIGHT));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcomputeLabelling() {\n\t\tfor (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().computeLabelling(this._arg);\n\t\t}\n\t\tthis.mergeSymLabels();\n\t\tthis.updateNodeLabelling();\n\t}\n\tlabelIncompleteNodes() {\n\t\tvar nodeCount = 0;\n\t\tfor (var ni = this._graph.getNodes().iterator(); ni.hasNext(); ) {\n\t\t\tvar n = ni.next();\n\t\t\tvar label = n.getLabel();\n\t\t\tif (n.isIsolated()) {\n\t\t\t\tnodeCount++;\n\t\t\t\tif (label.isNull(0)) this.labelIncompleteNode(n, 0); else this.labelIncompleteNode(n, 1);\n\t\t\t}\n\t\t\tn.getEdges().updateLabelling(label);\n\t\t}\n\t}\n\tisCoveredByA(coord) {\n\t\tif (this.isCovered(coord, this._resultPolyList)) return true;\n\t\treturn false;\n\t}\n\tgetClass() {\n\t\treturn OverlayOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nOverlayOp.constructor_ = function () {\n\tthis._ptLocator = new PointLocator();\n\tthis._geomFact = null;\n\tthis._resultGeom = null;\n\tthis._graph = null;\n\tthis._edgeList = new EdgeList();\n\tthis._resultPolyList = new ArrayList();\n\tthis._resultLineList = new ArrayList();\n\tthis._resultPointList = new ArrayList();\n\tlet g0 = arguments[0], g1 = arguments[1];\n\tGeometryGraphOperation.constructor_.call(this, g0, g1);\n\tthis._graph = new PlanarGraph(new OverlayNodeFactory());\n\tthis._geomFact = g0.getFactory();\n};\nOverlayOp.INTERSECTION = 1;\nOverlayOp.UNION = 2;\nOverlayOp.DIFFERENCE = 3;\nOverlayOp.SYMDIFFERENCE = 4;\n","import DirectedEdge from '../../planargraph/DirectedEdge';\nexport default class PolygonizeDirectedEdge extends DirectedEdge {\n\tconstructor() {\n\t\tsuper();\n\t\tPolygonizeDirectedEdge.constructor_.apply(this, arguments);\n\t}\n\tgetNext() {\n\t\treturn this._next;\n\t}\n\tisInRing() {\n\t\treturn this._edgeRing !== null;\n\t}\n\tsetRing(edgeRing) {\n\t\tthis._edgeRing = edgeRing;\n\t}\n\tsetLabel(label) {\n\t\tthis._label = label;\n\t}\n\tgetLabel() {\n\t\treturn this._label;\n\t}\n\tsetNext(next) {\n\t\tthis._next = next;\n\t}\n\tgetRing() {\n\t\treturn this._edgeRing;\n\t}\n\tgetClass() {\n\t\treturn PolygonizeDirectedEdge;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPolygonizeDirectedEdge.constructor_ = function () {\n\tthis._edgeRing = null;\n\tthis._next = null;\n\tthis._label = -1;\n\tlet from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3];\n\tDirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection);\n};\n","import Edge from '../../planargraph/Edge';\nexport default class PolygonizeEdge extends Edge {\n\tconstructor() {\n\t\tsuper();\n\t\tPolygonizeEdge.constructor_.apply(this, arguments);\n\t}\n\tgetLine() {\n\t\treturn this._line;\n\t}\n\tgetClass() {\n\t\treturn PolygonizeEdge;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPolygonizeEdge.constructor_ = function () {\n\tthis._line = null;\n\tlet line = arguments[0];\n\tthis._line = line;\n};\n","import CoordinateList from '../../geom/CoordinateList';\nimport WKTWriter from '../../io/WKTWriter';\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence';\nimport PointLocation from '../../algorithm/PointLocation';\nimport LinearRing from '../../geom/LinearRing';\nimport Exception from '../../../../../java/lang/Exception';\nimport Orientation from '../../algorithm/Orientation';\nimport System from '../../../../../java/lang/System';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Comparator from '../../../../../java/util/Comparator';\nimport Assert from '../../util/Assert';\nexport default class EdgeRing {\n\tconstructor() {\n\t\tEdgeRing.constructor_.apply(this, arguments);\n\t}\n\tstatic findDirEdgesInRing(startDE) {\n\t\tvar de = startDE;\n\t\tvar edges = new ArrayList();\n\t\tdo {\n\t\t\tedges.add(de);\n\t\t\tde = de.getNext();\n\t\t\tAssert.isTrue(de !== null, \"found null DE in ring\");\n\t\t\tAssert.isTrue(de === startDE || !de.isInRing(), \"found DE already in ring\");\n\t\t} while (de !== startDE);\n\t\treturn edges;\n\t}\n\tstatic addEdge(coords, isForward, coordList) {\n\t\tif (isForward) {\n\t\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\t\tcoordList.add(coords[i], false);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = coords.length - 1; i >= 0; i--) {\n\t\t\t\tcoordList.add(coords[i], false);\n\t\t\t}\n\t\t}\n\t}\n\tstatic findEdgeRingContaining(testEr, shellList) {\n\t\tvar testRing = testEr.getRing();\n\t\tvar testEnv = testRing.getEnvelopeInternal();\n\t\tvar testPt = testRing.getCoordinateN(0);\n\t\tvar minShell = null;\n\t\tvar minShellEnv = null;\n\t\tfor (var it = shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar tryShell = it.next();\n\t\t\tvar tryShellRing = tryShell.getRing();\n\t\t\tvar tryShellEnv = tryShellRing.getEnvelopeInternal();\n\t\t\tif (tryShellEnv.equals(testEnv)) continue;\n\t\t\tif (!tryShellEnv.contains(testEnv)) continue;\n\t\t\ttestPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryShellRing.getCoordinates());\n\t\t\tvar isContained = false;\n\t\t\tif (PointLocation.isInRing(testPt, tryShellRing.getCoordinates())) isContained = true;\n\t\t\tif (isContained) {\n\t\t\t\tif (minShell === null || minShellEnv.contains(tryShellEnv)) {\n\t\t\t\t\tminShell = tryShell;\n\t\t\t\t\tminShellEnv = minShell.getRing().getEnvelopeInternal();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn minShell;\n\t}\n\tisIncluded() {\n\t\treturn this._isIncluded;\n\t}\n\tgetCoordinates() {\n\t\tif (this._ringPts === null) {\n\t\t\tvar coordList = new CoordinateList();\n\t\t\tfor (var i = this._deList.iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tvar edge = de.getEdge();\n\t\t\t\tEdgeRing.addEdge(edge.getLine().getCoordinates(), de.getEdgeDirection(), coordList);\n\t\t\t}\n\t\t\tthis._ringPts = coordList.toCoordinateArray();\n\t\t}\n\t\treturn this._ringPts;\n\t}\n\tisIncludedSet() {\n\t\treturn this._isIncludedSet;\n\t}\n\tisValid() {\n\t\tthis.getCoordinates();\n\t\tif (this._ringPts.length <= 3) return false;\n\t\tthis.getRing();\n\t\treturn this._ring.isValid();\n\t}\n\tbuild(startDE) {\n\t\tvar de = startDE;\n\t\tdo {\n\t\t\tthis.add(de);\n\t\t\tde.setRing(this);\n\t\t\tde = de.getNext();\n\t\t\tAssert.isTrue(de !== null, \"found null DE in ring\");\n\t\t\tAssert.isTrue(de === startDE || !de.isInRing(), \"found DE already in ring\");\n\t\t} while (de !== startDE);\n\t}\n\tisOuterHole() {\n\t\tif (!this._isHole) return false;\n\t\treturn !this.hasShell();\n\t}\n\tgetPolygon() {\n\t\tvar holeLR = null;\n\t\tif (this._holes !== null) {\n\t\t\tholeLR = new Array(this._holes.size()).fill(null);\n\t\t\tfor (var i = 0; i < this._holes.size(); i++) {\n\t\t\t\tholeLR[i] = this._holes.get(i);\n\t\t\t}\n\t\t}\n\t\tvar poly = this._factory.createPolygon(this._ring, holeLR);\n\t\treturn poly;\n\t}\n\tisHole() {\n\t\treturn this._isHole;\n\t}\n\tisProcessed() {\n\t\treturn this._isProcessed;\n\t}\n\taddHole() {\n\t\tif (arguments[0] instanceof LinearRing) {\n\t\t\tlet hole = arguments[0];\n\t\t\tif (this._holes === null) this._holes = new ArrayList();\n\t\t\tthis._holes.add(hole);\n\t\t} else if (arguments[0] instanceof EdgeRing) {\n\t\t\tlet holeER = arguments[0];\n\t\t\tholeER.setShell(this);\n\t\t\tvar hole = holeER.getRing();\n\t\t\tif (this._holes === null) this._holes = new ArrayList();\n\t\t\tthis._holes.add(hole);\n\t\t}\n\t}\n\tsetIncluded(isIncluded) {\n\t\tthis._isIncluded = isIncluded;\n\t\tthis._isIncludedSet = true;\n\t}\n\tgetOuterHole() {\n\t\tif (this.isHole()) return null;\n\t\tfor (var i = 0; i < this._deList.size(); i++) {\n\t\t\tvar de = this._deList.get(i);\n\t\t\tvar adjRing = de.getSym().getRing();\n\t\t\tif (adjRing.isOuterHole()) return adjRing;\n\t\t}\n\t\treturn null;\n\t}\n\tcomputeHole() {\n\t\tvar ring = this.getRing();\n\t\tthis._isHole = Orientation.isCCW(ring.getCoordinates());\n\t}\n\thasShell() {\n\t\treturn this._shell !== null;\n\t}\n\tisOuterShell() {\n\t\treturn this.getOuterHole() !== null;\n\t}\n\tgetLineString() {\n\t\tthis.getCoordinates();\n\t\treturn this._factory.createLineString(this._ringPts);\n\t}\n\ttoString() {\n\t\treturn WKTWriter.toLineString(new CoordinateArraySequence(this.getCoordinates()));\n\t}\n\tgetShell() {\n\t\tif (this.isHole()) return this._shell;\n\t\treturn this;\n\t}\n\tadd(de) {\n\t\tthis._deList.add(de);\n\t}\n\tgetRing() {\n\t\tif (this._ring !== null) return this._ring;\n\t\tthis.getCoordinates();\n\t\tif (this._ringPts.length < 3) System.out.println(this._ringPts);\n\t\ttry {\n\t\t\tthis._ring = this._factory.createLinearRing(this._ringPts);\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof Exception) {\n\t\t\t\tSystem.out.println(this._ringPts);\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\treturn this._ring;\n\t}\n\tupdateIncluded() {\n\t\tif (this.isHole()) return null;\n\t\tfor (var i = 0; i < this._deList.size(); i++) {\n\t\t\tvar de = this._deList.get(i);\n\t\t\tvar adjShell = de.getSym().getRing().getShell();\n\t\t\tif (adjShell !== null && adjShell.isIncludedSet()) {\n\t\t\t\tthis.setIncluded(!adjShell.isIncluded());\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tsetShell(shell) {\n\t\tthis._shell = shell;\n\t}\n\tsetProcessed(isProcessed) {\n\t\tthis._isProcessed = isProcessed;\n\t}\n\tgetClass() {\n\t\treturn EdgeRing;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass EnvelopeComparator {\n\tconstructor() {\n\t\tEnvelopeComparator.constructor_.apply(this, arguments);\n\t}\n\tcompare(obj0, obj1) {\n\t\tvar r0 = obj0;\n\t\tvar r1 = obj1;\n\t\treturn r0.getRing().getEnvelope().compareTo(r1.getRing().getEnvelope());\n\t}\n\tgetClass() {\n\t\treturn EnvelopeComparator;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparator];\n\t}\n}\nEnvelopeComparator.constructor_ = function () {};\nEdgeRing.EnvelopeComparator = EnvelopeComparator;\nEdgeRing.constructor_ = function () {\n\tthis._factory = null;\n\tthis._deList = new ArrayList();\n\tthis._lowestEdge = null;\n\tthis._ring = null;\n\tthis._ringPts = null;\n\tthis._holes = null;\n\tthis._shell = null;\n\tthis._isHole = null;\n\tthis._isProcessed = false;\n\tthis._isIncludedSet = false;\n\tthis._isIncluded = false;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n};\n","import PolygonizeDirectedEdge from './PolygonizeDirectedEdge';\nimport HashSet from '../../../../../java/util/HashSet';\nimport Stack from '../../../../../java/util/Stack';\nimport Node from '../../planargraph/Node';\nimport PolygonizeEdge from './PolygonizeEdge';\nimport EdgeRing from './EdgeRing';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport PlanarGraph from '../../planargraph/PlanarGraph';\nexport default class PolygonizeGraph extends PlanarGraph {\n\tconstructor() {\n\t\tsuper();\n\t\tPolygonizeGraph.constructor_.apply(this, arguments);\n\t}\n\tstatic findLabeledEdgeRings(dirEdges) {\n\t\tvar edgeRingStarts = new ArrayList();\n\t\tvar currLabel = 1;\n\t\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isMarked()) continue;\n\t\t\tif (de.getLabel() >= 0) continue;\n\t\t\tedgeRingStarts.add(de);\n\t\t\tvar edges = EdgeRing.findDirEdgesInRing(de);\n\t\t\tPolygonizeGraph.label(edges, currLabel);\n\t\t\tcurrLabel++;\n\t\t}\n\t\treturn edgeRingStarts;\n\t}\n\tstatic getDegreeNonDeleted(node) {\n\t\tvar edges = node.getOutEdges().getEdges();\n\t\tvar degree = 0;\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (!de.isMarked()) degree++;\n\t\t}\n\t\treturn degree;\n\t}\n\tstatic deleteAllEdges(node) {\n\t\tvar edges = node.getOutEdges().getEdges();\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tde.setMarked(true);\n\t\t\tvar sym = de.getSym();\n\t\t\tif (sym !== null) sym.setMarked(true);\n\t\t}\n\t}\n\tstatic label(dirEdges, label) {\n\t\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tde.setLabel(label);\n\t\t}\n\t}\n\tstatic computeNextCWEdges(node) {\n\t\tvar deStar = node.getOutEdges();\n\t\tvar startDE = null;\n\t\tvar prevDE = null;\n\t\tfor (var i = deStar.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar outDE = i.next();\n\t\t\tif (outDE.isMarked()) continue;\n\t\t\tif (startDE === null) startDE = outDE;\n\t\t\tif (prevDE !== null) {\n\t\t\t\tvar sym = prevDE.getSym();\n\t\t\t\tsym.setNext(outDE);\n\t\t\t}\n\t\t\tprevDE = outDE;\n\t\t}\n\t\tif (prevDE !== null) {\n\t\t\tvar sym = prevDE.getSym();\n\t\t\tsym.setNext(startDE);\n\t\t}\n\t}\n\tstatic computeNextCCWEdges(node, label) {\n\t\tvar deStar = node.getOutEdges();\n\t\tvar firstOutDE = null;\n\t\tvar prevInDE = null;\n\t\tvar edges = deStar.getEdges();\n\t\tfor (var i = edges.size() - 1; i >= 0; i--) {\n\t\t\tvar de = edges.get(i);\n\t\t\tvar sym = de.getSym();\n\t\t\tvar outDE = null;\n\t\t\tif (de.getLabel() === label) outDE = de;\n\t\t\tvar inDE = null;\n\t\t\tif (sym.getLabel() === label) inDE = sym;\n\t\t\tif (outDE === null && inDE === null) continue;\n\t\t\tif (inDE !== null) {\n\t\t\t\tprevInDE = inDE;\n\t\t\t}\n\t\t\tif (outDE !== null) {\n\t\t\t\tif (prevInDE !== null) {\n\t\t\t\t\tprevInDE.setNext(outDE);\n\t\t\t\t\tprevInDE = null;\n\t\t\t\t}\n\t\t\t\tif (firstOutDE === null) firstOutDE = outDE;\n\t\t\t}\n\t\t}\n\t\tif (prevInDE !== null) {\n\t\t\tAssert.isTrue(firstOutDE !== null);\n\t\t\tprevInDE.setNext(firstOutDE);\n\t\t}\n\t}\n\tstatic getDegree(node, label) {\n\t\tvar edges = node.getOutEdges().getEdges();\n\t\tvar degree = 0;\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.getLabel() === label) degree++;\n\t\t}\n\t\treturn degree;\n\t}\n\tstatic findIntersectionNodes(startDE, label) {\n\t\tvar de = startDE;\n\t\tvar intNodes = null;\n\t\tdo {\n\t\t\tvar node = de.getFromNode();\n\t\t\tif (PolygonizeGraph.getDegree(node, label) > 1) {\n\t\t\t\tif (intNodes === null) intNodes = new ArrayList();\n\t\t\t\tintNodes.add(node);\n\t\t\t}\n\t\t\tde = de.getNext();\n\t\t\tAssert.isTrue(de !== null, \"found null DE in ring\");\n\t\t\tAssert.isTrue(de === startDE || !de.isInRing(), \"found DE already in ring\");\n\t\t} while (de !== startDE);\n\t\treturn intNodes;\n\t}\n\tfindEdgeRing(startDE) {\n\t\tvar er = new EdgeRing(this._factory);\n\t\ter.build(startDE);\n\t\treturn er;\n\t}\n\tcomputeDepthParity() {\n\t\tif (arguments.length === 0) {\n\t\t\twhile (true) {\n\t\t\t\tvar de = null;\n\t\t\t\tif (de === null) return null;\n\t\t\t\tthis.computeDepthParity(de);\n\t\t\t}\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet de = arguments[0];\n\t\t}\n\t}\n\tcomputeNextCWEdges() {\n\t\tfor (var iNode = this.nodeIterator(); iNode.hasNext(); ) {\n\t\t\tvar node = iNode.next();\n\t\t\tPolygonizeGraph.computeNextCWEdges(node);\n\t\t}\n\t}\n\taddEdge(line) {\n\t\tif (line.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\tvar linePts = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n\t\tif (linePts.length < 2) {\n\t\t\treturn null;\n\t\t}\n\t\tvar startPt = linePts[0];\n\t\tvar endPt = linePts[linePts.length - 1];\n\t\tvar nStart = this.getNode(startPt);\n\t\tvar nEnd = this.getNode(endPt);\n\t\tvar de0 = new PolygonizeDirectedEdge(nStart, nEnd, linePts[1], true);\n\t\tvar de1 = new PolygonizeDirectedEdge(nEnd, nStart, linePts[linePts.length - 2], false);\n\t\tvar edge = new PolygonizeEdge(line);\n\t\tedge.setDirectedEdges(de0, de1);\n\t\tthis.add(edge);\n\t}\n\tdeleteCutEdges() {\n\t\tthis.computeNextCWEdges();\n\t\tPolygonizeGraph.findLabeledEdgeRings(this._dirEdges);\n\t\tvar cutLines = new ArrayList();\n\t\tfor (var i = this._dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isMarked()) continue;\n\t\t\tvar sym = de.getSym();\n\t\t\tif (de.getLabel() === sym.getLabel()) {\n\t\t\t\tde.setMarked(true);\n\t\t\t\tsym.setMarked(true);\n\t\t\t\tvar e = de.getEdge();\n\t\t\t\tcutLines.add(e.getLine());\n\t\t\t}\n\t\t}\n\t\treturn cutLines;\n\t}\n\tgetEdgeRings() {\n\t\tthis.computeNextCWEdges();\n\t\tPolygonizeGraph.label(this._dirEdges, -1);\n\t\tvar maximalRings = PolygonizeGraph.findLabeledEdgeRings(this._dirEdges);\n\t\tthis.convertMaximalToMinimalEdgeRings(maximalRings);\n\t\tvar edgeRingList = new ArrayList();\n\t\tfor (var i = this._dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isMarked()) continue;\n\t\t\tif (de.isInRing()) continue;\n\t\t\tvar er = this.findEdgeRing(de);\n\t\t\tedgeRingList.add(er);\n\t\t}\n\t\treturn edgeRingList;\n\t}\n\tgetNode(pt) {\n\t\tvar node = this.findNode(pt);\n\t\tif (node === null) {\n\t\t\tnode = new Node(pt);\n\t\t\tthis.add(node);\n\t\t}\n\t\treturn node;\n\t}\n\tconvertMaximalToMinimalEdgeRings(ringEdges) {\n\t\tfor (var i = ringEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tvar intNodes = PolygonizeGraph.findIntersectionNodes(de, label);\n\t\t\tif (intNodes === null) continue;\n\t\t\tfor (var iNode = intNodes.iterator(); iNode.hasNext(); ) {\n\t\t\t\tvar node = iNode.next();\n\t\t\t\tPolygonizeGraph.computeNextCCWEdges(node, label);\n\t\t\t}\n\t\t}\n\t}\n\tdeleteDangles() {\n\t\tvar nodesToRemove = this.findNodesOfDegree(1);\n\t\tvar dangleLines = new HashSet();\n\t\tvar nodeStack = new Stack();\n\t\tfor (var i = nodesToRemove.iterator(); i.hasNext(); ) {\n\t\t\tnodeStack.push(i.next());\n\t\t}\n\t\twhile (!nodeStack.isEmpty()) {\n\t\t\tvar node = nodeStack.pop();\n\t\t\tPolygonizeGraph.deleteAllEdges(node);\n\t\t\tvar nodeOutEdges = node.getOutEdges().getEdges();\n\t\t\tfor (var i = nodeOutEdges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tde.setMarked(true);\n\t\t\t\tvar sym = de.getSym();\n\t\t\t\tif (sym !== null) sym.setMarked(true);\n\t\t\t\tvar e = de.getEdge();\n\t\t\t\tdangleLines.add(e.getLine());\n\t\t\t\tvar toNode = de.getToNode();\n\t\t\t\tif (PolygonizeGraph.getDegreeNonDeleted(toNode) === 1) nodeStack.push(toNode);\n\t\t\t}\n\t\t}\n\t\treturn dangleLines;\n\t}\n\tgetClass() {\n\t\treturn PolygonizeGraph;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPolygonizeGraph.constructor_ = function () {\n\tthis._factory = null;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n};\n","import LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport PolygonizeGraph from './PolygonizeGraph';\nimport hasInterface from '../../../../../hasInterface';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Collection from '../../../../../java/util/Collection';\nimport Collections from '../../../../../java/util/Collections';\nimport EdgeRing from './EdgeRing';\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default class Polygonizer {\n\tconstructor() {\n\t\tPolygonizer.constructor_.apply(this, arguments);\n\t}\n\tstatic findOuterShells(shellList) {\n\t\tfor (var i = shellList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\tvar outerHoleER = er.getOuterHole();\n\t\t\tif (outerHoleER !== null && !outerHoleER.isProcessed()) {\n\t\t\t\ter.setIncluded(true);\n\t\t\t\touterHoleER.setProcessed(true);\n\t\t\t}\n\t\t}\n\t}\n\tstatic extractPolygons(shellList, includeAll) {\n\t\tvar polyList = new ArrayList();\n\t\tfor (var i = shellList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\tif (includeAll || er.isIncluded()) {\n\t\t\t\tpolyList.add(er.getPolygon());\n\t\t\t}\n\t\t}\n\t\treturn polyList;\n\t}\n\tstatic assignHolesToShells(holeList, shellList) {\n\t\tfor (var i = holeList.iterator(); i.hasNext(); ) {\n\t\t\tvar holeER = i.next();\n\t\t\tPolygonizer.assignHoleToShell(holeER, shellList);\n\t\t}\n\t}\n\tstatic assignHoleToShell(holeER, shellList) {\n\t\tvar shell = EdgeRing.findEdgeRingContaining(holeER, shellList);\n\t\tif (shell !== null) {\n\t\t\tshell.addHole(holeER);\n\t\t}\n\t}\n\tstatic findDisjointShells(shellList) {\n\t\tPolygonizer.findOuterShells(shellList);\n\t\tvar isMoreToScan = null;\n\t\tdo {\n\t\t\tisMoreToScan = false;\n\t\t\tfor (var i = shellList.iterator(); i.hasNext(); ) {\n\t\t\t\tvar er = i.next();\n\t\t\t\tif (er.isIncludedSet()) continue;\n\t\t\t\ter.updateIncluded();\n\t\t\t\tif (!er.isIncludedSet()) {\n\t\t\t\t\tisMoreToScan = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} while (isMoreToScan);\n\t}\n\tgetGeometry() {\n\t\tif (this._geomFactory === null) this._geomFactory = new GeometryFactory();\n\t\tthis.polygonize();\n\t\tif (this._extractOnlyPolygonal) {\n\t\t\treturn this._geomFactory.buildGeometry(this._polyList);\n\t\t}\n\t\treturn this._geomFactory.createGeometryCollection(GeometryFactory.toGeometryArray(this._polyList));\n\t}\n\tgetInvalidRingLines() {\n\t\tthis.polygonize();\n\t\treturn this._invalidRingLines;\n\t}\n\tfindValidRings(edgeRingList, validEdgeRingList, invalidRingList) {\n\t\tfor (var i = edgeRingList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\tif (er.isValid()) validEdgeRingList.add(er); else invalidRingList.add(er.getLineString());\n\t\t}\n\t}\n\tpolygonize() {\n\t\tif (this._polyList !== null) return null;\n\t\tthis._polyList = new ArrayList();\n\t\tif (this._graph === null) return null;\n\t\tthis._dangles = this._graph.deleteDangles();\n\t\tthis._cutEdges = this._graph.deleteCutEdges();\n\t\tvar edgeRingList = this._graph.getEdgeRings();\n\t\tvar validEdgeRingList = new ArrayList();\n\t\tthis._invalidRingLines = new ArrayList();\n\t\tif (this._isCheckingRingsValid) {\n\t\t\tthis.findValidRings(edgeRingList, validEdgeRingList, this._invalidRingLines);\n\t\t} else {\n\t\t\tvalidEdgeRingList = edgeRingList;\n\t\t}\n\t\tthis.findShellsAndHoles(validEdgeRingList);\n\t\tPolygonizer.assignHolesToShells(this._holeList, this._shellList);\n\t\tCollections.sort(this._shellList, new EdgeRing.EnvelopeComparator());\n\t\tvar includeAll = true;\n\t\tif (this._extractOnlyPolygonal) {\n\t\t\tPolygonizer.findDisjointShells(this._shellList);\n\t\t\tincludeAll = false;\n\t\t}\n\t\tthis._polyList = Polygonizer.extractPolygons(this._shellList, includeAll);\n\t}\n\tgetDangles() {\n\t\tthis.polygonize();\n\t\treturn this._dangles;\n\t}\n\tgetCutEdges() {\n\t\tthis.polygonize();\n\t\treturn this._cutEdges;\n\t}\n\tgetPolygons() {\n\t\tthis.polygonize();\n\t\treturn this._polyList;\n\t}\n\tadd() {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geomList = arguments[0];\n\t\t\tfor (var i = geomList.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geometry = i.next();\n\t\t\t\tthis.add(geometry);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet line = arguments[0];\n\t\t\tthis._geomFactory = line.getFactory();\n\t\t\tif (this._graph === null) this._graph = new PolygonizeGraph(this._geomFactory);\n\t\t\tthis._graph.addEdge(line);\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tg.apply(this._lineStringAdder);\n\t\t}\n\t}\n\tsetCheckRingsValid(isCheckingRingsValid) {\n\t\tthis._isCheckingRingsValid = isCheckingRingsValid;\n\t}\n\tfindShellsAndHoles(edgeRingList) {\n\t\tthis._holeList = new ArrayList();\n\t\tthis._shellList = new ArrayList();\n\t\tfor (var i = edgeRingList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\ter.computeHole();\n\t\t\tif (er.isHole()) this._holeList.add(er); else this._shellList.add(er);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn Polygonizer;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass LineStringAdder {\n\tconstructor() {\n\t\tLineStringAdder.constructor_.apply(this, arguments);\n\t}\n\tfilter(g) {\n\t\tif (g instanceof LineString) this.p.add(g);\n\t}\n\tgetClass() {\n\t\treturn LineStringAdder;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryComponentFilter];\n\t}\n}\nLineStringAdder.constructor_ = function () {\n\tthis.p = null;\n\tlet p = arguments[0];\n\tthis.p = p;\n};\nPolygonizer.LineStringAdder = LineStringAdder;\nPolygonizer.constructor_ = function () {\n\tthis._lineStringAdder = new LineStringAdder(this);\n\tthis._graph = null;\n\tthis._dangles = new ArrayList();\n\tthis._cutEdges = new ArrayList();\n\tthis._invalidRingLines = new ArrayList();\n\tthis._holeList = null;\n\tthis._shellList = null;\n\tthis._polyList = null;\n\tthis._isCheckingRingsValid = true;\n\tthis._extractOnlyPolygonal = null;\n\tthis._geomFactory = null;\n\tif (arguments.length === 0) {\n\t\tPolygonizer.constructor_.call(this, false);\n\t} else if (arguments.length === 1) {\n\t\tlet extractOnlyPolygonal = arguments[0];\n\t\tthis._extractOnlyPolygonal = extractOnlyPolygonal;\n\t}\n};\n","import EdgeEnd from '../../geomgraph/EdgeEnd';\nimport Label from '../../geomgraph/Label';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default class EdgeEndBuilder {\n\tconstructor() {\n\t\tEdgeEndBuilder.constructor_.apply(this, arguments);\n\t}\n\tcreateEdgeEndForNext(edge, l, eiCurr, eiNext) {\n\t\tvar iNext = eiCurr.segmentIndex + 1;\n\t\tif (iNext >= edge.getNumPoints() && eiNext === null) return null;\n\t\tvar pNext = edge.getCoordinate(iNext);\n\t\tif (eiNext !== null && eiNext.segmentIndex === eiCurr.segmentIndex) pNext = eiNext.coord;\n\t\tvar e = new EdgeEnd(edge, eiCurr.coord, pNext, new Label(edge.getLabel()));\n\t\tl.add(e);\n\t}\n\tcreateEdgeEndForPrev(edge, l, eiCurr, eiPrev) {\n\t\tvar iPrev = eiCurr.segmentIndex;\n\t\tif (eiCurr.dist === 0.0) {\n\t\t\tif (iPrev === 0) return null;\n\t\t\tiPrev--;\n\t\t}\n\t\tvar pPrev = edge.getCoordinate(iPrev);\n\t\tif (eiPrev !== null && eiPrev.segmentIndex >= iPrev) pPrev = eiPrev.coord;\n\t\tvar label = new Label(edge.getLabel());\n\t\tlabel.flip();\n\t\tvar e = new EdgeEnd(edge, eiCurr.coord, pPrev, label);\n\t\tl.add(e);\n\t}\n\tcomputeEdgeEnds() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet edges = arguments[0];\n\t\t\tvar l = new ArrayList();\n\t\t\tfor (var i = edges; i.hasNext(); ) {\n\t\t\t\tvar e = i.next();\n\t\t\t\tthis.computeEdgeEnds(e, l);\n\t\t\t}\n\t\t\treturn l;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet edge = arguments[0], l = arguments[1];\n\t\t\tvar eiList = edge.getEdgeIntersectionList();\n\t\t\teiList.addEndpoints();\n\t\t\tvar it = eiList.iterator();\n\t\t\tvar eiPrev = null;\n\t\t\tvar eiCurr = null;\n\t\t\tif (!it.hasNext()) return null;\n\t\t\tvar eiNext = it.next();\n\t\t\tdo {\n\t\t\t\teiPrev = eiCurr;\n\t\t\t\teiCurr = eiNext;\n\t\t\t\teiNext = null;\n\t\t\t\tif (it.hasNext()) eiNext = it.next();\n\t\t\t\tif (eiCurr !== null) {\n\t\t\t\t\tthis.createEdgeEndForPrev(edge, l, eiCurr, eiPrev);\n\t\t\t\t\tthis.createEdgeEndForNext(edge, l, eiCurr, eiNext);\n\t\t\t\t}\n\t\t\t} while (eiCurr !== null);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn EdgeEndBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeEndBuilder.constructor_ = function () {};\n","import Location from '../../geom/Location';\nimport EdgeEnd from '../../geomgraph/EdgeEnd';\nimport Position from '../../geomgraph/Position';\nimport GeometryGraph from '../../geomgraph/GeometryGraph';\nimport Label from '../../geomgraph/Label';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Edge from '../../geomgraph/Edge';\nexport default class EdgeEndBundle extends EdgeEnd {\n\tconstructor() {\n\t\tsuper();\n\t\tEdgeEndBundle.constructor_.apply(this, arguments);\n\t}\n\tinsert(e) {\n\t\tthis._edgeEnds.add(e);\n\t}\n\tprint(out) {\n\t\tout.println(\"EdgeEndBundle--> Label: \" + this._label);\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ee = it.next();\n\t\t\tee.print(out);\n\t\t\tout.println();\n\t\t}\n\t}\n\titerator() {\n\t\treturn this._edgeEnds.iterator();\n\t}\n\tgetEdgeEnds() {\n\t\treturn this._edgeEnds;\n\t}\n\tcomputeLabelOn(geomIndex, boundaryNodeRule) {\n\t\tvar boundaryCount = 0;\n\t\tvar foundInterior = false;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar loc = e.getLabel().getLocation(geomIndex);\n\t\t\tif (loc === Location.BOUNDARY) boundaryCount++;\n\t\t\tif (loc === Location.INTERIOR) foundInterior = true;\n\t\t}\n\t\tvar loc = Location.NONE;\n\t\tif (foundInterior) loc = Location.INTERIOR;\n\t\tif (boundaryCount > 0) {\n\t\t\tloc = GeometryGraph.determineBoundary(boundaryNodeRule, boundaryCount);\n\t\t}\n\t\tthis._label.setLocation(geomIndex, loc);\n\t}\n\tcomputeLabelSide(geomIndex, side) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tif (e.getLabel().isArea()) {\n\t\t\t\tvar loc = e.getLabel().getLocation(geomIndex, side);\n\t\t\t\tif (loc === Location.INTERIOR) {\n\t\t\t\t\tthis._label.setLocation(geomIndex, side, Location.INTERIOR);\n\t\t\t\t\treturn null;\n\t\t\t\t} else if (loc === Location.EXTERIOR) this._label.setLocation(geomIndex, side, Location.EXTERIOR);\n\t\t\t}\n\t\t}\n\t}\n\tgetLabel() {\n\t\treturn this._label;\n\t}\n\tcomputeLabelSides(geomIndex) {\n\t\tthis.computeLabelSide(geomIndex, Position.LEFT);\n\t\tthis.computeLabelSide(geomIndex, Position.RIGHT);\n\t}\n\tupdateIM(im) {\n\t\tEdge.updateIM(this._label, im);\n\t}\n\tcomputeLabel(boundaryNodeRule) {\n\t\tvar isArea = false;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tif (e.getLabel().isArea()) isArea = true;\n\t\t}\n\t\tif (isArea) this._label = new Label(Location.NONE, Location.NONE, Location.NONE); else this._label = new Label(Location.NONE);\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tthis.computeLabelOn(i, boundaryNodeRule);\n\t\t\tif (isArea) this.computeLabelSides(i);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn EdgeEndBundle;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeEndBundle.constructor_ = function () {\n\tthis._edgeEnds = new ArrayList();\n\tif (arguments.length === 1) {\n\t\tlet e = arguments[0];\n\t\tEdgeEndBundle.constructor_.call(this, null, e);\n\t} else if (arguments.length === 2) {\n\t\tlet boundaryNodeRule = arguments[0], e = arguments[1];\n\t\tEdgeEnd.constructor_.call(this, e.getEdge(), e.getCoordinate(), e.getDirectedCoordinate(), new Label(e.getLabel()));\n\t\tthis.insert(e);\n\t}\n};\n","import EdgeEndStar from '../../geomgraph/EdgeEndStar';\nimport EdgeEndBundle from './EdgeEndBundle';\nexport default class EdgeEndBundleStar extends EdgeEndStar {\n\tconstructor() {\n\t\tsuper();\n\t\tEdgeEndBundleStar.constructor_.apply(this, arguments);\n\t}\n\tupdateIM(im) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar esb = it.next();\n\t\t\tesb.updateIM(im);\n\t\t}\n\t}\n\tinsert(e) {\n\t\tvar eb = this._edgeMap.get(e);\n\t\tif (eb === null) {\n\t\t\teb = new EdgeEndBundle(e);\n\t\t\tthis.insertEdgeEnd(e, eb);\n\t\t} else {\n\t\t\teb.insert(e);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn EdgeEndBundleStar;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEdgeEndBundleStar.constructor_ = function () {};\n","import Node from '../../geomgraph/Node';\nexport default class RelateNode extends Node {\n\tconstructor() {\n\t\tsuper();\n\t\tRelateNode.constructor_.apply(this, arguments);\n\t}\n\tupdateIMFromEdges(im) {\n\t\tthis._edges.updateIM(im);\n\t}\n\tcomputeIM(im) {\n\t\tim.setAtLeastIfValid(this._label.getLocation(0), this._label.getLocation(1), 0);\n\t}\n\tgetClass() {\n\t\treturn RelateNode;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRelateNode.constructor_ = function () {\n\tlet coord = arguments[0], edges = arguments[1];\n\tNode.constructor_.call(this, coord, edges);\n};\n","import EdgeEndBundleStar from './EdgeEndBundleStar';\nimport RelateNode from './RelateNode';\nimport NodeFactory from '../../geomgraph/NodeFactory';\nexport default class RelateNodeFactory extends NodeFactory {\n\tconstructor() {\n\t\tsuper();\n\t\tRelateNodeFactory.constructor_.apply(this, arguments);\n\t}\n\tcreateNode(coord) {\n\t\treturn new RelateNode(coord, new EdgeEndBundleStar());\n\t}\n\tgetClass() {\n\t\treturn RelateNodeFactory;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRelateNodeFactory.constructor_ = function () {};\n","import PointLocator from '../../algorithm/PointLocator';\nimport Location from '../../geom/Location';\nimport IntersectionMatrix from '../../geom/IntersectionMatrix';\nimport EdgeEndBuilder from './EdgeEndBuilder';\nimport NodeMap from '../../geomgraph/NodeMap';\nimport RelateNodeFactory from './RelateNodeFactory';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport Assert from '../../util/Assert';\nexport default class RelateComputer {\n\tconstructor() {\n\t\tRelateComputer.constructor_.apply(this, arguments);\n\t}\n\tinsertEdgeEnds(ee) {\n\t\tfor (var i = ee.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis._nodes.add(e);\n\t\t}\n\t}\n\tcomputeProperIntersectionIM(intersector, im) {\n\t\tvar dimA = this._arg[0].getGeometry().getDimension();\n\t\tvar dimB = this._arg[1].getGeometry().getDimension();\n\t\tvar hasProper = intersector.hasProperIntersection();\n\t\tvar hasProperInterior = intersector.hasProperInteriorIntersection();\n\t\tif (dimA === 2 && dimB === 2) {\n\t\t\tif (hasProper) im.setAtLeast(\"212101212\");\n\t\t} else if (dimA === 2 && dimB === 1) {\n\t\t\tif (hasProper) im.setAtLeast(\"FFF0FFFF2\");\n\t\t\tif (hasProperInterior) im.setAtLeast(\"1FFFFF1FF\");\n\t\t} else if (dimA === 1 && dimB === 2) {\n\t\t\tif (hasProper) im.setAtLeast(\"F0FFFFFF2\");\n\t\t\tif (hasProperInterior) im.setAtLeast(\"1F1FFFFFF\");\n\t\t} else if (dimA === 1 && dimB === 1) {\n\t\t\tif (hasProperInterior) im.setAtLeast(\"0FFFFFFFF\");\n\t\t}\n\t}\n\tlabelIsolatedEdges(thisIndex, targetIndex) {\n\t\tfor (var ei = this._arg[thisIndex].getEdgeIterator(); ei.hasNext(); ) {\n\t\t\tvar e = ei.next();\n\t\t\tif (e.isIsolated()) {\n\t\t\t\tthis.labelIsolatedEdge(e, targetIndex, this._arg[targetIndex].getGeometry());\n\t\t\t\tthis._isolatedEdges.add(e);\n\t\t\t}\n\t\t}\n\t}\n\tlabelIsolatedEdge(e, targetIndex, target) {\n\t\tif (target.getDimension() > 0) {\n\t\t\tvar loc = this._ptLocator.locate(e.getCoordinate(), target);\n\t\t\te.getLabel().setAllLocations(targetIndex, loc);\n\t\t} else {\n\t\t\te.getLabel().setAllLocations(targetIndex, Location.EXTERIOR);\n\t\t}\n\t}\n\tcomputeIM() {\n\t\tvar im = new IntersectionMatrix();\n\t\tim.set(Location.EXTERIOR, Location.EXTERIOR, 2);\n\t\tif (!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal())) {\n\t\t\tthis.computeDisjointIM(im);\n\t\t\treturn im;\n\t\t}\n\t\tthis._arg[0].computeSelfNodes(this._li, false);\n\t\tthis._arg[1].computeSelfNodes(this._li, false);\n\t\tvar intersector = this._arg[0].computeEdgeIntersections(this._arg[1], this._li, false);\n\t\tthis.computeIntersectionNodes(0);\n\t\tthis.computeIntersectionNodes(1);\n\t\tthis.copyNodesAndLabels(0);\n\t\tthis.copyNodesAndLabels(1);\n\t\tthis.labelIsolatedNodes();\n\t\tthis.computeProperIntersectionIM(intersector, im);\n\t\tvar eeBuilder = new EdgeEndBuilder();\n\t\tvar ee0 = eeBuilder.computeEdgeEnds(this._arg[0].getEdgeIterator());\n\t\tthis.insertEdgeEnds(ee0);\n\t\tvar ee1 = eeBuilder.computeEdgeEnds(this._arg[1].getEdgeIterator());\n\t\tthis.insertEdgeEnds(ee1);\n\t\tthis.labelNodeEdges();\n\t\tthis.labelIsolatedEdges(0, 1);\n\t\tthis.labelIsolatedEdges(1, 0);\n\t\tthis.updateIM(im);\n\t\treturn im;\n\t}\n\tlabelNodeEdges() {\n\t\tfor (var ni = this._nodes.iterator(); ni.hasNext(); ) {\n\t\t\tvar node = ni.next();\n\t\t\tnode.getEdges().computeLabelling(this._arg);\n\t\t}\n\t}\n\tcopyNodesAndLabels(argIndex) {\n\t\tfor (var i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n\t\t\tvar graphNode = i.next();\n\t\t\tvar newNode = this._nodes.addNode(graphNode.getCoordinate());\n\t\t\tnewNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n\t\t}\n\t}\n\tlabelIntersectionNodes(argIndex) {\n\t\tfor (var i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tvar n = this._nodes.find(ei.coord);\n\t\t\t\tif (n.getLabel().isNull(argIndex)) {\n\t\t\t\t\tif (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else n.setLabel(argIndex, Location.INTERIOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tlabelIsolatedNode(n, targetIndex) {\n\t\tvar loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry());\n\t\tn.getLabel().setAllLocations(targetIndex, loc);\n\t}\n\tcomputeIntersectionNodes(argIndex) {\n\t\tfor (var i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tvar n = this._nodes.addNode(ei.coord);\n\t\t\t\tif (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else {\n\t\t\t\t\tif (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tlabelIsolatedNodes() {\n\t\tfor (var ni = this._nodes.iterator(); ni.hasNext(); ) {\n\t\t\tvar n = ni.next();\n\t\t\tvar label = n.getLabel();\n\t\t\tAssert.isTrue(label.getGeometryCount() > 0, \"node with empty label found\");\n\t\t\tif (n.isIsolated()) {\n\t\t\t\tif (label.isNull(0)) this.labelIsolatedNode(n, 0); else this.labelIsolatedNode(n, 1);\n\t\t\t}\n\t\t}\n\t}\n\tupdateIM(im) {\n\t\tfor (var ei = this._isolatedEdges.iterator(); ei.hasNext(); ) {\n\t\t\tvar e = ei.next();\n\t\t\te.updateIM(im);\n\t\t}\n\t\tfor (var ni = this._nodes.iterator(); ni.hasNext(); ) {\n\t\t\tvar node = ni.next();\n\t\t\tnode.updateIM(im);\n\t\t\tnode.updateIMFromEdges(im);\n\t\t}\n\t}\n\tcomputeDisjointIM(im) {\n\t\tvar ga = this._arg[0].getGeometry();\n\t\tif (!ga.isEmpty()) {\n\t\t\tim.set(Location.INTERIOR, Location.EXTERIOR, ga.getDimension());\n\t\t\tim.set(Location.BOUNDARY, Location.EXTERIOR, ga.getBoundaryDimension());\n\t\t}\n\t\tvar gb = this._arg[1].getGeometry();\n\t\tif (!gb.isEmpty()) {\n\t\t\tim.set(Location.EXTERIOR, Location.INTERIOR, gb.getDimension());\n\t\t\tim.set(Location.EXTERIOR, Location.BOUNDARY, gb.getBoundaryDimension());\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn RelateComputer;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRelateComputer.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._ptLocator = new PointLocator();\n\tthis._arg = null;\n\tthis._nodes = new NodeMap(new RelateNodeFactory());\n\tthis._im = null;\n\tthis._isolatedEdges = new ArrayList();\n\tthis._invalidPoint = null;\n\tlet arg = arguments[0];\n\tthis._arg = arg;\n};\n","import LineString from '../../geom/LineString';\nimport Coordinate from '../../geom/Coordinate';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nexport default class RectangleContains {\n\tconstructor() {\n\t\tRectangleContains.constructor_.apply(this, arguments);\n\t}\n\tstatic contains(rectangle, b) {\n\t\tvar rc = new RectangleContains(rectangle);\n\t\treturn rc.contains(b);\n\t}\n\tisContainedInBoundary(geom) {\n\t\tif (geom instanceof Polygon) return false;\n\t\tif (geom instanceof Point) return this.isPointContainedInBoundary(geom);\n\t\tif (geom instanceof LineString) return this.isLineStringContainedInBoundary(geom);\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar comp = geom.getGeometryN(i);\n\t\t\tif (!this.isContainedInBoundary(comp)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tisLineSegmentContainedInBoundary(p0, p1) {\n\t\tif (p0.equals(p1)) return this.isPointContainedInBoundary(p0);\n\t\tif (p0.x === p1.x) {\n\t\t\tif (p0.x === this._rectEnv.getMinX() || p0.x === this._rectEnv.getMaxX()) return true;\n\t\t} else if (p0.y === p1.y) {\n\t\t\tif (p0.y === this._rectEnv.getMinY() || p0.y === this._rectEnv.getMaxY()) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tisLineStringContainedInBoundary(line) {\n\t\tvar seq = line.getCoordinateSequence();\n\t\tvar p0 = new Coordinate();\n\t\tvar p1 = new Coordinate();\n\t\tfor (var i = 0; i < seq.size() - 1; i++) {\n\t\t\tseq.getCoordinate(i, p0);\n\t\t\tseq.getCoordinate(i + 1, p1);\n\t\t\tif (!this.isLineSegmentContainedInBoundary(p0, p1)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tisPointContainedInBoundary() {\n\t\tif (arguments[0] instanceof Point) {\n\t\t\tlet point = arguments[0];\n\t\t\treturn this.isPointContainedInBoundary(point.getCoordinate());\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet pt = arguments[0];\n\t\t\treturn pt.x === this._rectEnv.getMinX() || pt.x === this._rectEnv.getMaxX() || pt.y === this._rectEnv.getMinY() || pt.y === this._rectEnv.getMaxY();\n\t\t}\n\t}\n\tcontains(geom) {\n\t\tif (!this._rectEnv.contains(geom.getEnvelopeInternal())) return false;\n\t\tif (this.isContainedInBoundary(geom)) return false;\n\t\treturn true;\n\t}\n\tgetClass() {\n\t\treturn RectangleContains;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRectangleContains.constructor_ = function () {\n\tthis._rectEnv = null;\n\tlet rectangle = arguments[0];\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n};\n","import Coordinate from '../geom/Coordinate';\nimport RobustLineIntersector from './RobustLineIntersector';\nimport Envelope from '../geom/Envelope';\nexport default class RectangleLineIntersector {\n\tconstructor() {\n\t\tRectangleLineIntersector.constructor_.apply(this, arguments);\n\t}\n\tintersects(p0, p1) {\n\t\tvar segEnv = new Envelope(p0, p1);\n\t\tif (!this._rectEnv.intersects(segEnv)) return false;\n\t\tif (this._rectEnv.intersects(p0)) return true;\n\t\tif (this._rectEnv.intersects(p1)) return true;\n\t\tif (p0.compareTo(p1) > 0) {\n\t\t\tvar tmp = p0;\n\t\t\tp0 = p1;\n\t\t\tp1 = tmp;\n\t\t}\n\t\tvar isSegUpwards = false;\n\t\tif (p1.y > p0.y) isSegUpwards = true;\n\t\tif (isSegUpwards) {\n\t\t\tthis._li.computeIntersection(p0, p1, this._diagDown0, this._diagDown1);\n\t\t} else {\n\t\t\tthis._li.computeIntersection(p0, p1, this._diagUp0, this._diagUp1);\n\t\t}\n\t\tif (this._li.hasIntersection()) return true;\n\t\treturn false;\n\t}\n\tgetClass() {\n\t\treturn RectangleLineIntersector;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRectangleLineIntersector.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._rectEnv = null;\n\tthis._diagUp0 = null;\n\tthis._diagUp1 = null;\n\tthis._diagDown0 = null;\n\tthis._diagDown1 = null;\n\tlet rectEnv = arguments[0];\n\tthis._rectEnv = rectEnv;\n\tthis._diagUp0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMinY());\n\tthis._diagUp1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMaxY());\n\tthis._diagDown0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMaxY());\n\tthis._diagDown1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMinY());\n};\n","import GeometryCollection from '../GeometryCollection';\nexport default class ShortCircuitedGeometryVisitor {\n\tconstructor() {\n\t\tShortCircuitedGeometryVisitor.constructor_.apply(this, arguments);\n\t}\n\tapplyTo(geom) {\n\t\tfor (var i = 0; i < geom.getNumGeometries() && !this._isDone; i++) {\n\t\t\tvar element = geom.getGeometryN(i);\n\t\t\tif (!(element instanceof GeometryCollection)) {\n\t\t\t\tthis.visit(element);\n\t\t\t\tif (this.isDone()) {\n\t\t\t\t\tthis._isDone = true;\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else this.applyTo(element);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn ShortCircuitedGeometryVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nShortCircuitedGeometryVisitor.constructor_ = function () {\n\tthis._isDone = false;\n};\n","import Coordinate from '../../geom/Coordinate';\nimport Polygon from '../../geom/Polygon';\nimport RectangleLineIntersector from '../../algorithm/RectangleLineIntersector';\nimport ShortCircuitedGeometryVisitor from '../../geom/util/ShortCircuitedGeometryVisitor';\nimport SimplePointInAreaLocator from '../../algorithm/locate/SimplePointInAreaLocator';\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter';\nexport default class RectangleIntersects {\n\tconstructor() {\n\t\tRectangleIntersects.constructor_.apply(this, arguments);\n\t}\n\tstatic intersects(rectangle, b) {\n\t\tvar rp = new RectangleIntersects(rectangle);\n\t\treturn rp.intersects(b);\n\t}\n\tintersects(geom) {\n\t\tif (!this._rectEnv.intersects(geom.getEnvelopeInternal())) return false;\n\t\tvar visitor = new EnvelopeIntersectsVisitor(this._rectEnv);\n\t\tvisitor.applyTo(geom);\n\t\tif (visitor.intersects()) return true;\n\t\tvar ecpVisitor = new GeometryContainsPointVisitor(this._rectangle);\n\t\tecpVisitor.applyTo(geom);\n\t\tif (ecpVisitor.containsPoint()) return true;\n\t\tvar riVisitor = new RectangleIntersectsSegmentVisitor(this._rectangle);\n\t\triVisitor.applyTo(geom);\n\t\tif (riVisitor.intersects()) return true;\n\t\treturn false;\n\t}\n\tgetClass() {\n\t\treturn RectangleIntersects;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRectangleIntersects.constructor_ = function () {\n\tthis._rectangle = null;\n\tthis._rectEnv = null;\n\tlet rectangle = arguments[0];\n\tthis._rectangle = rectangle;\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n};\nclass EnvelopeIntersectsVisitor extends ShortCircuitedGeometryVisitor {\n\tconstructor() {\n\t\tsuper();\n\t\tEnvelopeIntersectsVisitor.constructor_.apply(this, arguments);\n\t}\n\tisDone() {\n\t\treturn this._intersects === true;\n\t}\n\tvisit(element) {\n\t\tvar elementEnv = element.getEnvelopeInternal();\n\t\tif (!this._rectEnv.intersects(elementEnv)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this._rectEnv.contains(elementEnv)) {\n\t\t\tthis._intersects = true;\n\t\t\treturn null;\n\t\t}\n\t\tif (elementEnv.getMinX() >= this._rectEnv.getMinX() && elementEnv.getMaxX() <= this._rectEnv.getMaxX()) {\n\t\t\tthis._intersects = true;\n\t\t\treturn null;\n\t\t}\n\t\tif (elementEnv.getMinY() >= this._rectEnv.getMinY() && elementEnv.getMaxY() <= this._rectEnv.getMaxY()) {\n\t\t\tthis._intersects = true;\n\t\t\treturn null;\n\t\t}\n\t}\n\tintersects() {\n\t\treturn this._intersects;\n\t}\n\tgetClass() {\n\t\treturn EnvelopeIntersectsVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nEnvelopeIntersectsVisitor.constructor_ = function () {\n\tthis._rectEnv = null;\n\tthis._intersects = false;\n\tlet rectEnv = arguments[0];\n\tthis._rectEnv = rectEnv;\n};\nclass GeometryContainsPointVisitor extends ShortCircuitedGeometryVisitor {\n\tconstructor() {\n\t\tsuper();\n\t\tGeometryContainsPointVisitor.constructor_.apply(this, arguments);\n\t}\n\tisDone() {\n\t\treturn this._containsPoint === true;\n\t}\n\tvisit(geom) {\n\t\tif (!(geom instanceof Polygon)) return null;\n\t\tvar elementEnv = geom.getEnvelopeInternal();\n\t\tif (!this._rectEnv.intersects(elementEnv)) return null;\n\t\tvar rectPt = new Coordinate();\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tthis._rectSeq.getCoordinate(i, rectPt);\n\t\t\tif (!elementEnv.contains(rectPt)) continue;\n\t\t\tif (SimplePointInAreaLocator.containsPointInPolygon(rectPt, geom)) {\n\t\t\t\tthis._containsPoint = true;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tcontainsPoint() {\n\t\treturn this._containsPoint;\n\t}\n\tgetClass() {\n\t\treturn GeometryContainsPointVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryContainsPointVisitor.constructor_ = function () {\n\tthis._rectSeq = null;\n\tthis._rectEnv = null;\n\tthis._containsPoint = false;\n\tlet rectangle = arguments[0];\n\tthis._rectSeq = rectangle.getExteriorRing().getCoordinateSequence();\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n};\nclass RectangleIntersectsSegmentVisitor extends ShortCircuitedGeometryVisitor {\n\tconstructor() {\n\t\tsuper();\n\t\tRectangleIntersectsSegmentVisitor.constructor_.apply(this, arguments);\n\t}\n\tintersects() {\n\t\treturn this._hasIntersection;\n\t}\n\tisDone() {\n\t\treturn this._hasIntersection === true;\n\t}\n\tvisit(geom) {\n\t\tvar elementEnv = geom.getEnvelopeInternal();\n\t\tif (!this._rectEnv.intersects(elementEnv)) return null;\n\t\tvar lines = LinearComponentExtracter.getLines(geom);\n\t\tthis.checkIntersectionWithLineStrings(lines);\n\t}\n\tcheckIntersectionWithLineStrings(lines) {\n\t\tfor (var i = lines.iterator(); i.hasNext(); ) {\n\t\t\tvar testLine = i.next();\n\t\t\tthis.checkIntersectionWithSegments(testLine);\n\t\t\tif (this._hasIntersection) return null;\n\t\t}\n\t}\n\tcheckIntersectionWithSegments(testLine) {\n\t\tvar seq1 = testLine.getCoordinateSequence();\n\t\tfor (var j = 1; j < seq1.size(); j++) {\n\t\t\tseq1.getCoordinate(j - 1, this._p0);\n\t\t\tseq1.getCoordinate(j, this._p1);\n\t\t\tif (this._rectIntersector.intersects(this._p0, this._p1)) {\n\t\t\t\tthis._hasIntersection = true;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn RectangleIntersectsSegmentVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRectangleIntersectsSegmentVisitor.constructor_ = function () {\n\tthis._rectEnv = null;\n\tthis._rectIntersector = null;\n\tthis._hasIntersection = false;\n\tthis._p0 = new Coordinate();\n\tthis._p1 = new Coordinate();\n\tlet rectangle = arguments[0];\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n\tthis._rectIntersector = new RectangleLineIntersector(this._rectEnv);\n};\n","import RelateComputer from './RelateComputer';\nimport GeometryGraphOperation from '../GeometryGraphOperation';\nimport RectangleContains from '../predicate/RectangleContains';\nimport RectangleIntersects from '../predicate/RectangleIntersects';\nexport default class RelateOp extends GeometryGraphOperation {\n\tconstructor() {\n\t\tsuper();\n\t\tRelateOp.constructor_.apply(this, arguments);\n\t}\n\tstatic covers(g1, g2) {\n\t\tif (g2.getDimension() === 2 && g1.getDimension() < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tif (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!g1.getEnvelopeInternal().covers(g2.getEnvelopeInternal())) return false;\n\t\tif (g1.isRectangle()) {\n\t\t\treturn true;\n\t\t}\n\t\treturn new RelateOp(g1, g2).getIntersectionMatrix().isCovers();\n\t}\n\tstatic intersects(g1, g2) {\n\t\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\t\tif (g1.isRectangle()) {\n\t\t\treturn RectangleIntersects.intersects(g1, g2);\n\t\t}\n\t\tif (g2.isRectangle()) {\n\t\t\treturn RectangleIntersects.intersects(g2, g1);\n\t\t}\n\t\tif (g1.isGeometryCollection() || g2.isGeometryCollection()) {\n\t\t\tvar r = false;\n\t\t\tfor (var i = 0; i < g1.getNumGeometries(); i++) {\n\t\t\t\tfor (var j = 0; j < g2.getNumGeometries(); j++) {\n\t\t\t\t\tif (g1.getGeometryN(i).intersects(g2.getGeometryN(j))) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn new RelateOp(g1, g2).getIntersectionMatrix().isIntersects();\n\t}\n\tstatic touches(g1, g2) {\n\t\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\t\treturn new RelateOp(g1, g2).getIntersectionMatrix().isTouches(g1.getDimension(), g2.getDimension());\n\t}\n\tstatic relate() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet a = arguments[0], b = arguments[1];\n\t\t\tvar relOp = new RelateOp(a, b);\n\t\t\tvar im = relOp.getIntersectionMatrix();\n\t\t\treturn im;\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet a = arguments[0], b = arguments[1], boundaryNodeRule = arguments[2];\n\t\t\tvar relOp = new RelateOp(a, b, boundaryNodeRule);\n\t\t\tvar im = relOp.getIntersectionMatrix();\n\t\t\treturn im;\n\t\t}\n\t}\n\tstatic overlaps(g1, g2) {\n\t\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\t\treturn new RelateOp(g1, g2).getIntersectionMatrix().isOverlaps(g1.getDimension(), g2.getDimension());\n\t}\n\tstatic crosses(g1, g2) {\n\t\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\t\treturn new RelateOp(g1, g2).getIntersectionMatrix().isCrosses(g1.getDimension(), g2.getDimension());\n\t}\n\tstatic contains(g1, g2) {\n\t\tif (g2.getDimension() === 2 && g1.getDimension() < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tif (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!g1.getEnvelopeInternal().contains(g2.getEnvelopeInternal())) return false;\n\t\tif (g1.isRectangle()) {\n\t\t\treturn RectangleContains.contains(g1, g2);\n\t\t}\n\t\treturn new RelateOp(g1, g2).getIntersectionMatrix().isContains();\n\t}\n\tgetIntersectionMatrix() {\n\t\treturn this._relate.computeIM();\n\t}\n\tgetClass() {\n\t\treturn RelateOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRelateOp.constructor_ = function () {\n\tthis._relate = null;\n\tif (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tGeometryGraphOperation.constructor_.call(this, g0, g1);\n\t\tthis._relate = new RelateComputer(this._arg);\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2];\n\t\tGeometryGraphOperation.constructor_.call(this, g0, g1, boundaryNodeRule);\n\t\tthis._relate = new RelateComputer(this._arg);\n\t}\n};\n","import ArrayList from '../../../../../java/util/ArrayList';\nexport default class GeometryCombiner {\n\tconstructor() {\n\t\tGeometryCombiner.constructor_.apply(this, arguments);\n\t}\n\tstatic combine() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tvar combiner = new GeometryCombiner(geoms);\n\t\t\treturn combiner.combine();\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\t\tvar combiner = new GeometryCombiner(GeometryCombiner.createList(g0, g1));\n\t\t\treturn combiner.combine();\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet g0 = arguments[0], g1 = arguments[1], g2 = arguments[2];\n\t\t\tvar combiner = new GeometryCombiner(GeometryCombiner.createList(g0, g1, g2));\n\t\t\treturn combiner.combine();\n\t\t}\n\t}\n\tstatic extractFactory(geoms) {\n\t\tif (geoms.isEmpty()) return null;\n\t\treturn geoms.iterator().next().getFactory();\n\t}\n\tstatic createList() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet obj0 = arguments[0], obj1 = arguments[1];\n\t\t\tvar list = new ArrayList();\n\t\t\tlist.add(obj0);\n\t\t\tlist.add(obj1);\n\t\t\treturn list;\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet obj0 = arguments[0], obj1 = arguments[1], obj2 = arguments[2];\n\t\t\tvar list = new ArrayList();\n\t\t\tlist.add(obj0);\n\t\t\tlist.add(obj1);\n\t\t\tlist.add(obj2);\n\t\t\treturn list;\n\t\t}\n\t}\n\textractElements(geom, elems) {\n\t\tif (geom === null) return null;\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar elemGeom = geom.getGeometryN(i);\n\t\t\tif (this._skipEmpty && elemGeom.isEmpty()) continue;\n\t\t\telems.add(elemGeom);\n\t\t}\n\t}\n\tcombine() {\n\t\tvar elems = new ArrayList();\n\t\tfor (var i = this._inputGeoms.iterator(); i.hasNext(); ) {\n\t\t\tvar g = i.next();\n\t\t\tthis.extractElements(g, elems);\n\t\t}\n\t\tif (elems.size() === 0) {\n\t\t\tif (this._geomFactory !== null) {\n\t\t\t\treturn this._geomFactory.createGeometryCollection();\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\treturn this._geomFactory.buildGeometry(elems);\n\t}\n\tgetClass() {\n\t\treturn GeometryCombiner;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryCombiner.constructor_ = function () {\n\tthis._geomFactory = null;\n\tthis._skipEmpty = false;\n\tthis._inputGeoms = null;\n\tlet geoms = arguments[0];\n\tthis._geomFactory = GeometryCombiner.extractFactory(geoms);\n\tthis._inputGeoms = geoms;\n};\n","import PointLocator from '../../algorithm/PointLocator';\nimport Location from '../../geom/Location';\nimport TreeSet from '../../../../../java/util/TreeSet';\nimport GeometryCombiner from '../../geom/util/GeometryCombiner';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nexport default class PointGeometryUnion {\n\tconstructor() {\n\t\tPointGeometryUnion.constructor_.apply(this, arguments);\n\t}\n\tstatic union(pointGeom, otherGeom) {\n\t\tvar unioner = new PointGeometryUnion(pointGeom, otherGeom);\n\t\treturn unioner.union();\n\t}\n\tunion() {\n\t\tvar locater = new PointLocator();\n\t\tvar exteriorCoords = new TreeSet();\n\t\tfor (var i = 0; i < this._pointGeom.getNumGeometries(); i++) {\n\t\t\tvar point = this._pointGeom.getGeometryN(i);\n\t\t\tvar coord = point.getCoordinate();\n\t\t\tvar loc = locater.locate(coord, this._otherGeom);\n\t\t\tif (loc === Location.EXTERIOR) exteriorCoords.add(coord);\n\t\t}\n\t\tif (exteriorCoords.size() === 0) return this._otherGeom;\n\t\tvar ptComp = null;\n\t\tvar coords = CoordinateArrays.toCoordinateArray(exteriorCoords);\n\t\tif (coords.length === 1) {\n\t\t\tptComp = this._geomFact.createPoint(coords[0]);\n\t\t} else {\n\t\t\tptComp = this._geomFact.createMultiPointFromCoords(coords);\n\t\t}\n\t\treturn GeometryCombiner.combine(ptComp, this._otherGeom);\n\t}\n\tgetClass() {\n\t\treturn PointGeometryUnion;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPointGeometryUnion.constructor_ = function () {\n\tthis._pointGeom = null;\n\tthis._otherGeom = null;\n\tthis._geomFact = null;\n\tlet pointGeom = arguments[0], otherGeom = arguments[1];\n\tthis._pointGeom = pointGeom;\n\tthis._otherGeom = otherGeom;\n\tthis._geomFact = otherGeom.getFactory();\n};\n","import Geometry from '../Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../GeometryFilter';\nimport List from '../../../../../java/util/List';\nexport default class GeometryExtracter {\n\tconstructor() {\n\t\tGeometryExtracter.constructor_.apply(this, arguments);\n\t}\n\tstatic isOfType(geom, geometryType) {\n\t\tif (geom.getGeometryType() === geometryType) return true;\n\t\tif (geometryType === Geometry.TYPENAME_LINESTRING && geom.getGeometryType() === Geometry.TYPENAME_LINEARRING) return true;\n\t\treturn false;\n\t}\n\tstatic extract() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet geom = arguments[0], geometryType = arguments[1];\n\t\t\treturn GeometryExtracter.extract(geom, geometryType, new ArrayList());\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (hasInterface(arguments[2], List) && (arguments[0] instanceof Geometry && typeof arguments[1] === \"string\")) {\n\t\t\t\tlet geom = arguments[0], geometryType = arguments[1], list = arguments[2];\n\t\t\t\tif (geom.getGeometryType() === geometryType) {\n\t\t\t\t\tlist.add(geom);\n\t\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\t\tgeom.apply(new GeometryExtracter(geometryType, list));\n\t\t\t\t}\n\t\t\t\treturn list;\n\t\t\t} else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Geometry && arguments[1] instanceof Class)) {\n\t\t\t\tlet geom = arguments[0], clz = arguments[1], list = arguments[2];\n\t\t\t\treturn GeometryExtracter.extract(geom, GeometryExtracter.toGeometryType(clz), list);\n\t\t\t}\n\t\t}\n\t}\n\tfilter(geom) {\n\t\tif (this._geometryType === null || GeometryExtracter.isOfType(geom, this._geometryType)) this._comps.add(geom);\n\t}\n\tgetClass() {\n\t\treturn GeometryExtracter;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryFilter];\n\t}\n}\nGeometryExtracter.constructor_ = function () {\n\tthis._geometryType = null;\n\tthis._comps = null;\n\tlet geometryType = arguments[0], comps = arguments[1];\n\tthis._geometryType = geometryType;\n\tthis._comps = comps;\n};\n","import PolygonExtracter from '../../geom/util/PolygonExtracter';\nimport STRtree from '../../index/strtree/STRtree';\nimport Geometry from '../../geom/Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport GeometryCombiner from '../../geom/util/GeometryCombiner';\nimport Polygonal from '../../geom/Polygonal';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport List from '../../../../../java/util/List';\nexport default class CascadedPolygonUnion {\n\tconstructor() {\n\t\tCascadedPolygonUnion.constructor_.apply(this, arguments);\n\t}\n\tstatic restrictToPolygons(g) {\n\t\tif (hasInterface(g, Polygonal)) {\n\t\t\treturn g;\n\t\t}\n\t\tvar polygons = PolygonExtracter.getPolygons(g);\n\t\tif (polygons.size() === 1) return polygons.get(0);\n\t\treturn g.getFactory().createMultiPolygon(GeometryFactory.toPolygonArray(polygons));\n\t}\n\tstatic getGeometry(list, index) {\n\t\tif (index >= list.size()) return null;\n\t\treturn list.get(index);\n\t}\n\tstatic union(polys) {\n\t\tvar op = new CascadedPolygonUnion(polys);\n\t\treturn op.union();\n\t}\n\treduceToGeometries(geomTree) {\n\t\tvar geoms = new ArrayList();\n\t\tfor (var i = geomTree.iterator(); i.hasNext(); ) {\n\t\t\tvar o = i.next();\n\t\t\tvar geom = null;\n\t\t\tif (hasInterface(o, List)) {\n\t\t\t\tgeom = this.unionTree(o);\n\t\t\t} else if (o instanceof Geometry) {\n\t\t\t\tgeom = o;\n\t\t\t}\n\t\t\tgeoms.add(geom);\n\t\t}\n\t\treturn geoms;\n\t}\n\textractByEnvelope(env, geom, disjointGeoms) {\n\t\tvar intersectingGeoms = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar elem = geom.getGeometryN(i);\n\t\t\tif (elem.getEnvelopeInternal().intersects(env)) intersectingGeoms.add(elem); else disjointGeoms.add(elem);\n\t\t}\n\t\treturn this._geomFactory.buildGeometry(intersectingGeoms);\n\t}\n\tunionOptimized(g0, g1) {\n\t\tvar g0Env = g0.getEnvelopeInternal();\n\t\tvar g1Env = g1.getEnvelopeInternal();\n\t\tif (!g0Env.intersects(g1Env)) {\n\t\t\tvar combo = GeometryCombiner.combine(g0, g1);\n\t\t\treturn combo;\n\t\t}\n\t\tif (g0.getNumGeometries() <= 1 && g1.getNumGeometries() <= 1) return this.unionActual(g0, g1);\n\t\tvar commonEnv = g0Env.intersection(g1Env);\n\t\treturn this.unionUsingEnvelopeIntersection(g0, g1, commonEnv);\n\t}\n\tunion() {\n\t\tif (this._inputPolys === null) throw new IllegalStateException(\"union() method cannot be called twice\");\n\t\tif (this._inputPolys.isEmpty()) return null;\n\t\tthis._geomFactory = this._inputPolys.iterator().next().getFactory();\n\t\tvar index = new STRtree(CascadedPolygonUnion.STRTREE_NODE_CAPACITY);\n\t\tfor (var i = this._inputPolys.iterator(); i.hasNext(); ) {\n\t\t\tvar item = i.next();\n\t\t\tindex.insert(item.getEnvelopeInternal(), item);\n\t\t}\n\t\tthis._inputPolys = null;\n\t\tvar itemTree = index.itemsTree();\n\t\tvar unionAll = this.unionTree(itemTree);\n\t\treturn unionAll;\n\t}\n\tbinaryUnion() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geoms = arguments[0];\n\t\t\treturn this.binaryUnion(geoms, 0, geoms.size());\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet geoms = arguments[0], start = arguments[1], end = arguments[2];\n\t\t\tif (end - start <= 1) {\n\t\t\t\tvar g0 = CascadedPolygonUnion.getGeometry(geoms, start);\n\t\t\t\treturn this.unionSafe(g0, null);\n\t\t\t} else if (end - start === 2) {\n\t\t\t\treturn this.unionSafe(CascadedPolygonUnion.getGeometry(geoms, start), CascadedPolygonUnion.getGeometry(geoms, start + 1));\n\t\t\t} else {\n\t\t\t\tvar mid = Math.trunc((end + start) / 2);\n\t\t\t\tvar g0 = this.binaryUnion(geoms, start, mid);\n\t\t\t\tvar g1 = this.binaryUnion(geoms, mid, end);\n\t\t\t\treturn this.unionSafe(g0, g1);\n\t\t\t}\n\t\t}\n\t}\n\trepeatedUnion(geoms) {\n\t\tvar union = null;\n\t\tfor (var i = geoms.iterator(); i.hasNext(); ) {\n\t\t\tvar g = i.next();\n\t\t\tif (union === null) union = g.copy(); else union = union.union(g);\n\t\t}\n\t\treturn union;\n\t}\n\tunionSafe(g0, g1) {\n\t\tif (g0 === null && g1 === null) return null;\n\t\tif (g0 === null) return g1.copy();\n\t\tif (g1 === null) return g0.copy();\n\t\treturn this.unionOptimized(g0, g1);\n\t}\n\tunionActual(g0, g1) {\n\t\treturn CascadedPolygonUnion.restrictToPolygons(g0.union(g1));\n\t}\n\tunionTree(geomTree) {\n\t\tvar geoms = this.reduceToGeometries(geomTree);\n\t\tvar union = this.binaryUnion(geoms);\n\t\treturn union;\n\t}\n\tunionUsingEnvelopeIntersection(g0, g1, common) {\n\t\tvar disjointPolys = new ArrayList();\n\t\tvar g0Int = this.extractByEnvelope(common, g0, disjointPolys);\n\t\tvar g1Int = this.extractByEnvelope(common, g1, disjointPolys);\n\t\tvar union = this.unionActual(g0Int, g1Int);\n\t\tdisjointPolys.add(union);\n\t\tvar overallUnion = GeometryCombiner.combine(disjointPolys);\n\t\treturn overallUnion;\n\t}\n\tbufferUnion() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tvar factory = geoms.get(0).getFactory();\n\t\t\tvar gColl = factory.buildGeometry(geoms);\n\t\t\tvar unionAll = gColl.buffer(0.0);\n\t\t\treturn unionAll;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\t\tvar factory = g0.getFactory();\n\t\t\tvar gColl = factory.createGeometryCollection([g0, g1]);\n\t\t\tvar unionAll = gColl.buffer(0.0);\n\t\t\treturn unionAll;\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn CascadedPolygonUnion;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nCascadedPolygonUnion.constructor_ = function () {\n\tthis._inputPolys = null;\n\tthis._geomFactory = null;\n\tlet polys = arguments[0];\n\tthis._inputPolys = polys;\n\tif (this._inputPolys === null) this._inputPolys = new ArrayList();\n};\nCascadedPolygonUnion.STRTREE_NODE_CAPACITY = 4;\n","import Geometry from '../../geom/Geometry';\nimport PointGeometryUnion from './PointGeometryUnion';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryExtracter from '../../geom/util/GeometryExtracter';\nimport OverlayOp from '../overlay/OverlayOp';\nimport CascadedPolygonUnion from './CascadedPolygonUnion';\nexport default class UnaryUnionOp {\n\tconstructor() {\n\t\tUnaryUnionOp.constructor_.apply(this, arguments);\n\t}\n\tstatic union() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\t\tlet geoms = arguments[0];\n\t\t\t\tvar op = new UnaryUnionOp(geoms);\n\t\t\t\treturn op.union();\n\t\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\t\tlet geom = arguments[0];\n\t\t\t\tvar op = new UnaryUnionOp(geom);\n\t\t\t\treturn op.union();\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geoms = arguments[0], geomFact = arguments[1];\n\t\t\tvar op = new UnaryUnionOp(geoms, geomFact);\n\t\t\treturn op.union();\n\t\t}\n\t}\n\tunionNoOpt(g0) {\n\t\tvar empty = this._geomFact.createPoint();\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g0, empty, OverlayOp.UNION);\n\t}\n\tunionWithNull(g0, g1) {\n\t\tif (g0 === null && g1 === null) return null;\n\t\tif (g1 === null) return g0;\n\t\tif (g0 === null) return g1;\n\t\treturn g0.union(g1);\n\t}\n\textract() {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tfor (var i = geoms.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geom = i.next();\n\t\t\t\tthis.extract(geom);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (this._geomFact === null) this._geomFact = geom.getFactory();\n\t\t\tGeometryExtracter.extract(geom, Geometry.TYPENAME_POLYGON, this._polygons);\n\t\t\tGeometryExtracter.extract(geom, Geometry.TYPENAME_LINESTRING, this._lines);\n\t\t\tGeometryExtracter.extract(geom, Geometry.TYPENAME_POINT, this._points);\n\t\t}\n\t}\n\tunion() {\n\t\tif (this._geomFact === null) {\n\t\t\treturn null;\n\t\t}\n\t\tvar unionPoints = null;\n\t\tif (this._points.size() > 0) {\n\t\t\tvar ptGeom = this._geomFact.buildGeometry(this._points);\n\t\t\tunionPoints = this.unionNoOpt(ptGeom);\n\t\t}\n\t\tvar unionLines = null;\n\t\tif (this._lines.size() > 0) {\n\t\t\tvar lineGeom = this._geomFact.buildGeometry(this._lines);\n\t\t\tunionLines = this.unionNoOpt(lineGeom);\n\t\t}\n\t\tvar unionPolygons = null;\n\t\tif (this._polygons.size() > 0) {\n\t\t\tunionPolygons = CascadedPolygonUnion.union(this._polygons);\n\t\t}\n\t\tvar unionLA = this.unionWithNull(unionLines, unionPolygons);\n\t\tvar union = null;\n\t\tif (unionPoints === null) union = unionLA; else if (unionLA === null) union = unionPoints; else union = PointGeometryUnion.union(unionPoints, unionLA);\n\t\tif (union === null) return this._geomFact.createGeometryCollection();\n\t\treturn union;\n\t}\n\tgetClass() {\n\t\treturn UnaryUnionOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nUnaryUnionOp.constructor_ = function () {\n\tthis._polygons = new ArrayList();\n\tthis._lines = new ArrayList();\n\tthis._points = new ArrayList();\n\tthis._geomFact = null;\n\tif (arguments.length === 1) {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tthis.extract(geoms);\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tthis.extract(geom);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet geoms = arguments[0], geomFact = arguments[1];\n\t\tthis._geomFact = geomFact;\n\t\tthis.extract(geoms);\n\t}\n};\n","import Location from '../../geom/Location';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Position from '../../geomgraph/Position';\nimport Polygon from '../../geom/Polygon';\nimport MultiPolygon from '../../geom/MultiPolygon';\nimport MaximalEdgeRing from '../overlay/MaximalEdgeRing';\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default class ConnectedInteriorTester {\n\tconstructor() {\n\t\tConnectedInteriorTester.constructor_.apply(this, arguments);\n\t}\n\tstatic findDifferentPoint(coord, pt) {\n\t\tfor (var i = 0; i < coord.length; i++) {\n\t\t\tif (!coord[i].equals(pt)) return coord[i];\n\t\t}\n\t\treturn null;\n\t}\n\tvisitInteriorRing(ring, graph) {\n\t\tvar pts = ring.getCoordinates();\n\t\tvar pt0 = pts[0];\n\t\tvar pt1 = ConnectedInteriorTester.findDifferentPoint(pts, pt0);\n\t\tvar e = graph.findEdgeInSameDirection(pt0, pt1);\n\t\tvar de = graph.findEdgeEnd(e);\n\t\tvar intDe = null;\n\t\tif (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) {\n\t\t\tintDe = de;\n\t\t} else if (de.getSym().getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) {\n\t\t\tintDe = de.getSym();\n\t\t}\n\t\tAssert.isTrue(intDe !== null, \"unable to find dirEdge with Interior on RHS\");\n\t\tthis.visitLinkedDirectedEdges(intDe);\n\t}\n\tvisitShellInteriors(g, graph) {\n\t\tif (g instanceof Polygon) {\n\t\t\tvar p = g;\n\t\t\tthis.visitInteriorRing(p.getExteriorRing(), graph);\n\t\t}\n\t\tif (g instanceof MultiPolygon) {\n\t\t\tvar mp = g;\n\t\t\tfor (var i = 0; i < mp.getNumGeometries(); i++) {\n\t\t\t\tvar p = mp.getGeometryN(i);\n\t\t\t\tthis.visitInteriorRing(p.getExteriorRing(), graph);\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinate() {\n\t\treturn this._disconnectedRingcoord;\n\t}\n\tsetInteriorEdgesInResult(graph) {\n\t\tfor (var it = graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) {\n\t\t\t\tde.setInResult(true);\n\t\t\t}\n\t\t}\n\t}\n\tvisitLinkedDirectedEdges(start) {\n\t\tvar startDe = start;\n\t\tvar de = start;\n\t\tdo {\n\t\t\tAssert.isTrue(de !== null, \"found null Directed Edge\");\n\t\t\tde.setVisited(true);\n\t\t\tde = de.getNext();\n\t\t} while (de !== startDe);\n\t}\n\tbuildEdgeRings(dirEdges) {\n\t\tvar edgeRings = new ArrayList();\n\t\tfor (var it = dirEdges.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.isInResult() && de.getEdgeRing() === null) {\n\t\t\t\tvar er = new MaximalEdgeRing(de, this._geometryFactory);\n\t\t\t\ter.linkDirectedEdgesForMinimalEdgeRings();\n\t\t\t\tvar minEdgeRings = er.buildMinimalRings();\n\t\t\t\tedgeRings.addAll(minEdgeRings);\n\t\t\t}\n\t\t}\n\t\treturn edgeRings;\n\t}\n\thasUnvisitedShellEdge(edgeRings) {\n\t\tfor (var i = 0; i < edgeRings.size(); i++) {\n\t\t\tvar er = edgeRings.get(i);\n\t\t\tif (er.isHole()) continue;\n\t\t\tvar edges = er.getEdges();\n\t\t\tvar de = edges.get(0);\n\t\t\tif (de.getLabel().getLocation(0, Position.RIGHT) !== Location.INTERIOR) continue;\n\t\t\tfor (var j = 0; j < edges.size(); j++) {\n\t\t\t\tde = edges.get(j);\n\t\t\t\tif (!de.isVisited()) {\n\t\t\t\t\tthis._disconnectedRingcoord = de.getCoordinate();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tisInteriorsConnected() {\n\t\tvar splitEdges = new ArrayList();\n\t\tthis._geomGraph.computeSplitEdges(splitEdges);\n\t\tvar graph = new PlanarGraph(new OverlayNodeFactory());\n\t\tgraph.addEdges(splitEdges);\n\t\tthis.setInteriorEdgesInResult(graph);\n\t\tgraph.linkResultDirectedEdges();\n\t\tvar edgeRings = this.buildEdgeRings(graph.getEdgeEnds());\n\t\tthis.visitShellInteriors(this._geomGraph.getGeometry(), graph);\n\t\treturn !this.hasUnvisitedShellEdge(edgeRings);\n\t}\n\tgetClass() {\n\t\treturn ConnectedInteriorTester;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nConnectedInteriorTester.constructor_ = function () {\n\tthis._geometryFactory = new GeometryFactory();\n\tthis._geomGraph = null;\n\tthis._disconnectedRingcoord = null;\n\tlet geomGraph = arguments[0];\n\tthis._geomGraph = geomGraph;\n};\n","import Location from '../../geom/Location';\nimport EdgeEndBuilder from './EdgeEndBuilder';\nimport NodeMap from '../../geomgraph/NodeMap';\nimport RelateNodeFactory from './RelateNodeFactory';\nexport default class RelateNodeGraph {\n\tconstructor() {\n\t\tRelateNodeGraph.constructor_.apply(this, arguments);\n\t}\n\tinsertEdgeEnds(ee) {\n\t\tfor (var i = ee.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis._nodes.add(e);\n\t\t}\n\t}\n\tgetNodeIterator() {\n\t\treturn this._nodes.iterator();\n\t}\n\tcopyNodesAndLabels(geomGraph, argIndex) {\n\t\tfor (var nodeIt = geomGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n\t\t\tvar graphNode = nodeIt.next();\n\t\t\tvar newNode = this._nodes.addNode(graphNode.getCoordinate());\n\t\t\tnewNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n\t\t}\n\t}\n\tbuild(geomGraph) {\n\t\tthis.computeIntersectionNodes(geomGraph, 0);\n\t\tthis.copyNodesAndLabels(geomGraph, 0);\n\t\tvar eeBuilder = new EdgeEndBuilder();\n\t\tvar eeList = eeBuilder.computeEdgeEnds(geomGraph.getEdgeIterator());\n\t\tthis.insertEdgeEnds(eeList);\n\t}\n\tcomputeIntersectionNodes(geomGraph, argIndex) {\n\t\tfor (var edgeIt = geomGraph.getEdgeIterator(); edgeIt.hasNext(); ) {\n\t\t\tvar e = edgeIt.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tvar n = this._nodes.addNode(ei.coord);\n\t\t\t\tif (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else {\n\t\t\t\t\tif (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn RelateNodeGraph;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nRelateNodeGraph.constructor_ = function () {\n\tthis._nodes = new NodeMap(new RelateNodeFactory());\n};\n","import RelateNodeGraph from '../relate/RelateNodeGraph';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nexport default class ConsistentAreaTester {\n\tconstructor() {\n\t\tConsistentAreaTester.constructor_.apply(this, arguments);\n\t}\n\tisNodeEdgeAreaLabelsConsistent() {\n\t\tfor (var nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n\t\t\tvar node = nodeIt.next();\n\t\t\tif (!node.getEdges().isAreaLabelsConsistent(this._geomGraph)) {\n\t\t\t\tthis._invalidPoint = node.getCoordinate().copy();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tgetInvalidPoint() {\n\t\treturn this._invalidPoint;\n\t}\n\thasDuplicateRings() {\n\t\tfor (var nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n\t\t\tvar node = nodeIt.next();\n\t\t\tfor (var i = node.getEdges().iterator(); i.hasNext(); ) {\n\t\t\t\tvar eeb = i.next();\n\t\t\t\tif (eeb.getEdgeEnds().size() > 1) {\n\t\t\t\t\tthis._invalidPoint = eeb.getEdge().getCoordinate(0);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tisNodeConsistentArea() {\n\t\tvar intersector = this._geomGraph.computeSelfNodes(this._li, true, true);\n\t\tif (intersector.hasProperIntersection()) {\n\t\t\tthis._invalidPoint = intersector.getProperIntersectionPoint();\n\t\t\treturn false;\n\t\t}\n\t\tthis._nodeGraph.build(this._geomGraph);\n\t\treturn this.isNodeEdgeAreaLabelsConsistent();\n\t}\n\tgetClass() {\n\t\treturn ConsistentAreaTester;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nConsistentAreaTester.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._geomGraph = null;\n\tthis._nodeGraph = new RelateNodeGraph();\n\tthis._invalidPoint = null;\n\tlet geomGraph = arguments[0];\n\tthis._geomGraph = geomGraph;\n};\n","import STRtree from '../../index/strtree/STRtree';\nimport IsValidOp from './IsValidOp';\nimport PointLocation from '../../algorithm/PointLocation';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Envelope from '../../geom/Envelope';\nexport default class IndexedNestedRingTester {\n\tconstructor() {\n\t\tIndexedNestedRingTester.constructor_.apply(this, arguments);\n\t}\n\tbuildIndex() {\n\t\tthis._index = new STRtree();\n\t\tfor (var i = 0; i < this._rings.size(); i++) {\n\t\t\tvar ring = this._rings.get(i);\n\t\t\tvar env = ring.getEnvelopeInternal();\n\t\t\tthis._index.insert(env, ring);\n\t\t}\n\t}\n\tgetNestedPoint() {\n\t\treturn this._nestedPt;\n\t}\n\tisNonNested() {\n\t\tthis.buildIndex();\n\t\tfor (var i = 0; i < this._rings.size(); i++) {\n\t\t\tvar innerRing = this._rings.get(i);\n\t\t\tvar innerRingPts = innerRing.getCoordinates();\n\t\t\tvar results = this._index.query(innerRing.getEnvelopeInternal());\n\t\t\tfor (var j = 0; j < results.size(); j++) {\n\t\t\t\tvar searchRing = results.get(j);\n\t\t\t\tvar searchRingPts = searchRing.getCoordinates();\n\t\t\t\tif (innerRing === searchRing) continue;\n\t\t\t\tif (!innerRing.getEnvelopeInternal().intersects(searchRing.getEnvelopeInternal())) continue;\n\t\t\t\tvar innerRingPt = IsValidOp.findPtNotNode(innerRingPts, searchRing, this._graph);\n\t\t\t\tif (innerRingPt === null) continue;\n\t\t\t\tvar isInside = PointLocation.isInRing(innerRingPt, searchRingPts);\n\t\t\t\tif (isInside) {\n\t\t\t\t\tthis._nestedPt = innerRingPt;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tadd(ring) {\n\t\tthis._rings.add(ring);\n\t\tthis._totalEnv.expandToInclude(ring.getEnvelopeInternal());\n\t}\n\tgetClass() {\n\t\treturn IndexedNestedRingTester;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nIndexedNestedRingTester.constructor_ = function () {\n\tthis._graph = null;\n\tthis._rings = new ArrayList();\n\tthis._totalEnv = new Envelope();\n\tthis._index = null;\n\tthis._nestedPt = null;\n\tlet graph = arguments[0];\n\tthis._graph = graph;\n};\n","export default class TopologyValidationError {\n\tconstructor() {\n\t\tTopologyValidationError.constructor_.apply(this, arguments);\n\t}\n\tgetErrorType() {\n\t\treturn this._errorType;\n\t}\n\tgetMessage() {\n\t\treturn TopologyValidationError.errMsg[this._errorType];\n\t}\n\tgetCoordinate() {\n\t\treturn this._pt;\n\t}\n\ttoString() {\n\t\tvar locStr = \"\";\n\t\tif (this._pt !== null) locStr = \" at or near point \" + this._pt;\n\t\treturn this.getMessage() + locStr;\n\t}\n\tgetClass() {\n\t\treturn TopologyValidationError;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTopologyValidationError.constructor_ = function () {\n\tthis._errorType = null;\n\tthis._pt = null;\n\tif (arguments.length === 1) {\n\t\tlet errorType = arguments[0];\n\t\tTopologyValidationError.constructor_.call(this, errorType, null);\n\t} else if (arguments.length === 2) {\n\t\tlet errorType = arguments[0], pt = arguments[1];\n\t\tthis._errorType = errorType;\n\t\tif (pt !== null) this._pt = pt.copy();\n\t}\n};\nTopologyValidationError.ERROR = 0;\nTopologyValidationError.REPEATED_POINT = 1;\nTopologyValidationError.HOLE_OUTSIDE_SHELL = 2;\nTopologyValidationError.NESTED_HOLES = 3;\nTopologyValidationError.DISCONNECTED_INTERIOR = 4;\nTopologyValidationError.SELF_INTERSECTION = 5;\nTopologyValidationError.RING_SELF_INTERSECTION = 6;\nTopologyValidationError.NESTED_SHELLS = 7;\nTopologyValidationError.DUPLICATE_RINGS = 8;\nTopologyValidationError.TOO_FEW_POINTS = 9;\nTopologyValidationError.INVALID_COORDINATE = 10;\nTopologyValidationError.RING_NOT_CLOSED = 11;\nTopologyValidationError.errMsg = [\"Topology Validation Error\", \"Repeated Point\", \"Hole lies outside shell\", \"Holes are nested\", \"Interior is disconnected\", \"Self-intersection\", \"Ring Self-intersection\", \"Nested shells\", \"Duplicate Rings\", \"Too few distinct points in geometry component\", \"Invalid Coordinate\", \"Ring is not closed\"];\n","import Location from '../../geom/Location';\nimport TreeSet from '../../../../../java/util/TreeSet';\nimport LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport ConnectedInteriorTester from './ConnectedInteriorTester';\nimport Coordinate from '../../geom/Coordinate';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport MultiPoint from '../../geom/MultiPoint';\nimport PointLocation from '../../algorithm/PointLocation';\nimport LinearRing from '../../geom/LinearRing';\nimport Double from '../../../../../java/lang/Double';\nimport GeometryGraph from '../../geomgraph/GeometryGraph';\nimport MultiPolygon from '../../geom/MultiPolygon';\nimport ConsistentAreaTester from './ConsistentAreaTester';\nimport GeometryCollection from '../../geom/GeometryCollection';\nimport IndexedNestedRingTester from './IndexedNestedRingTester';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport TopologyValidationError from './TopologyValidationError';\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator';\nimport Assert from '../../util/Assert';\nexport default class IsValidOp {\n\tconstructor() {\n\t\tIsValidOp.constructor_.apply(this, arguments);\n\t}\n\tstatic findPtNotNode(testCoords, searchRing, graph) {\n\t\tvar searchEdge = graph.findEdge(searchRing);\n\t\tvar eiList = searchEdge.getEdgeIntersectionList();\n\t\tfor (var i = 0; i < testCoords.length; i++) {\n\t\t\tvar pt = testCoords[i];\n\t\t\tif (!eiList.isIntersection(pt)) return pt;\n\t\t}\n\t\treturn null;\n\t}\n\tstatic isValid() {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tvar isValidOp = new IsValidOp(geom);\n\t\t\treturn isValidOp.isValid();\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet coord = arguments[0];\n\t\t\tif (Double.isNaN(coord.x)) return false;\n\t\t\tif (Double.isInfinite(coord.x)) return false;\n\t\t\tif (Double.isNaN(coord.y)) return false;\n\t\t\tif (Double.isInfinite(coord.y)) return false;\n\t\t\treturn true;\n\t\t}\n\t}\n\tcheckInvalidCoordinates() {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet coords = arguments[0];\n\t\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\t\tif (!IsValidOp.isValid(coords[i])) {\n\t\t\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.INVALID_COORDINATE, coords[i]);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Polygon) {\n\t\t\tlet poly = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(poly.getExteriorRing().getCoordinates());\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\t\tthis.checkInvalidCoordinates(poly.getInteriorRingN(i).getCoordinates());\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t}\n\t}\n\tcheckHolesNotNested(p, graph) {\n\t\tvar nestedTester = new IndexedNestedRingTester(graph);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar innerHole = p.getInteriorRingN(i);\n\t\t\tnestedTester.add(innerHole);\n\t\t}\n\t\tvar isNonNested = nestedTester.isNonNested();\n\t\tif (!isNonNested) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.NESTED_HOLES, nestedTester.getNestedPoint());\n\t\t}\n\t}\n\tcheckConsistentArea(graph) {\n\t\tvar cat = new ConsistentAreaTester(graph);\n\t\tvar isValidArea = cat.isNodeConsistentArea();\n\t\tif (!isValidArea) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.SELF_INTERSECTION, cat.getInvalidPoint());\n\t\t\treturn null;\n\t\t}\n\t\tif (cat.hasDuplicateRings()) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.DUPLICATE_RINGS, cat.getInvalidPoint());\n\t\t}\n\t}\n\tisValid() {\n\t\tthis.checkValid(this._parentGeometry);\n\t\treturn this._validErr === null;\n\t}\n\tcheckShellInsideHole(shell, hole, graph) {\n\t\tvar shellPts = shell.getCoordinates();\n\t\tvar holePts = hole.getCoordinates();\n\t\tvar shellPt = IsValidOp.findPtNotNode(shellPts, hole, graph);\n\t\tif (shellPt !== null) {\n\t\t\tvar insideHole = PointLocation.isInRing(shellPt, holePts);\n\t\t\tif (!insideHole) {\n\t\t\t\treturn shellPt;\n\t\t\t}\n\t\t}\n\t\tvar holePt = IsValidOp.findPtNotNode(holePts, shell, graph);\n\t\tif (holePt !== null) {\n\t\t\tvar insideShell = PointLocation.isInRing(holePt, shellPts);\n\t\t\tif (insideShell) {\n\t\t\t\treturn holePt;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"points in shell and hole appear to be equal\");\n\t\treturn null;\n\t}\n\tcheckNoSelfIntersectingRings(graph) {\n\t\tfor (var i = graph.getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis.checkNoSelfIntersectingRing(e.getEdgeIntersectionList());\n\t\t\tif (this._validErr !== null) return null;\n\t\t}\n\t}\n\tcheckConnectedInteriors(graph) {\n\t\tvar cit = new ConnectedInteriorTester(graph);\n\t\tif (!cit.isInteriorsConnected()) this._validErr = new TopologyValidationError(TopologyValidationError.DISCONNECTED_INTERIOR, cit.getCoordinate());\n\t}\n\tcheckNoSelfIntersectingRing(eiList) {\n\t\tvar nodeSet = new TreeSet();\n\t\tvar isFirst = true;\n\t\tfor (var i = eiList.iterator(); i.hasNext(); ) {\n\t\t\tvar ei = i.next();\n\t\t\tif (isFirst) {\n\t\t\t\tisFirst = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nodeSet.contains(ei.coord)) {\n\t\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.RING_SELF_INTERSECTION, ei.coord);\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tnodeSet.add(ei.coord);\n\t\t\t}\n\t\t}\n\t}\n\tcheckHolesInShell(p, graph) {\n\t\tvar shell = p.getExteriorRing();\n\t\tvar pir = new IndexedPointInAreaLocator(shell);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tvar holePt = IsValidOp.findPtNotNode(hole.getCoordinates(), shell, graph);\n\t\t\tif (holePt === null) return null;\n\t\t\tvar outside = Location.EXTERIOR === pir.locate(holePt);\n\t\t\tif (outside) {\n\t\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.HOLE_OUTSIDE_SHELL, holePt);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tcheckTooFewPoints(graph) {\n\t\tif (graph.hasTooFewPoints()) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.TOO_FEW_POINTS, graph.getInvalidPoint());\n\t\t\treturn null;\n\t\t}\n\t}\n\tgetValidationError() {\n\t\tthis.checkValid(this._parentGeometry);\n\t\treturn this._validErr;\n\t}\n\tcheckValid() {\n\t\tif (arguments[0] instanceof Point) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t} else if (arguments[0] instanceof MultiPoint) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t} else if (arguments[0] instanceof LinearRing) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkClosedRing(g);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar li = new RobustLineIntersector();\n\t\t\tgraph.computeSelfNodes(li, true, true);\n\t\t\tthis.checkNoSelfIntersectingRings(graph);\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t} else if (arguments[0] instanceof Polygon) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkClosedRings(g);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConsistentArea(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tif (!this._isSelfTouchingRingFormingHoleValid) {\n\t\t\t\tthis.checkNoSelfIntersectingRings(graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tthis.checkHolesInShell(g, graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkHolesNotNested(g, graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConnectedInteriors(graph);\n\t\t} else if (arguments[0] instanceof MultiPolygon) {\n\t\t\tlet g = arguments[0];\n\t\t\tfor (var i = 0; i < g.getNumGeometries(); i++) {\n\t\t\t\tvar p = g.getGeometryN(i);\n\t\t\t\tthis.checkInvalidCoordinates(p);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t\tthis.checkClosedRings(p);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConsistentArea(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tif (!this._isSelfTouchingRingFormingHoleValid) {\n\t\t\t\tthis.checkNoSelfIntersectingRings(graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tfor (var i = 0; i < g.getNumGeometries(); i++) {\n\t\t\t\tvar p = g.getGeometryN(i);\n\t\t\t\tthis.checkHolesInShell(p, graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tfor (var i = 0; i < g.getNumGeometries(); i++) {\n\t\t\t\tvar p = g.getGeometryN(i);\n\t\t\t\tthis.checkHolesNotNested(p, graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tthis.checkShellsNotNested(g, graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConnectedInteriors(graph);\n\t\t} else if (arguments[0] instanceof GeometryCollection) {\n\t\t\tlet gc = arguments[0];\n\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\tvar g = gc.getGeometryN(i);\n\t\t\t\tthis.checkValid(g);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis._validErr = null;\n\t\t\tif (g.isEmpty()) return null;\n\t\t\tif (g instanceof Point) this.checkValid(g); else if (g instanceof MultiPoint) this.checkValid(g); else if (g instanceof LinearRing) this.checkValid(g); else if (g instanceof LineString) this.checkValid(g); else if (g instanceof Polygon) this.checkValid(g); else if (g instanceof MultiPolygon) this.checkValid(g); else if (g instanceof GeometryCollection) this.checkValid(g); else throw new UnsupportedOperationException(g.getClass().getName());\n\t\t}\n\t}\n\tsetSelfTouchingRingFormingHoleValid(isValid) {\n\t\tthis._isSelfTouchingRingFormingHoleValid = isValid;\n\t}\n\tcheckShellNotNested(shell, p, graph) {\n\t\tvar shellPts = shell.getCoordinates();\n\t\tvar polyShell = p.getExteriorRing();\n\t\tvar polyPts = polyShell.getCoordinates();\n\t\tvar shellPt = IsValidOp.findPtNotNode(shellPts, polyShell, graph);\n\t\tif (shellPt === null) return null;\n\t\tvar insidePolyShell = PointLocation.isInRing(shellPt, polyPts);\n\t\tif (!insidePolyShell) return null;\n\t\tif (p.getNumInteriorRing() <= 0) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, shellPt);\n\t\t\treturn null;\n\t\t}\n\t\tvar badNestedPt = null;\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tbadNestedPt = this.checkShellInsideHole(shell, hole, graph);\n\t\t\tif (badNestedPt === null) return null;\n\t\t}\n\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, badNestedPt);\n\t}\n\tcheckClosedRings(poly) {\n\t\tthis.checkClosedRing(poly.getExteriorRing());\n\t\tif (this._validErr !== null) return null;\n\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\tthis.checkClosedRing(poly.getInteriorRingN(i));\n\t\t\tif (this._validErr !== null) return null;\n\t\t}\n\t}\n\tcheckClosedRing(ring) {\n\t\tif (!ring.isClosed()) {\n\t\t\tvar pt = null;\n\t\t\tif (ring.getNumPoints() >= 1) pt = ring.getCoordinateN(0);\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.RING_NOT_CLOSED, pt);\n\t\t}\n\t}\n\tcheckShellsNotNested(mp, graph) {\n\t\tfor (var i = 0; i < mp.getNumGeometries(); i++) {\n\t\t\tvar p = mp.getGeometryN(i);\n\t\t\tvar shell = p.getExteriorRing();\n\t\t\tfor (var j = 0; j < mp.getNumGeometries(); j++) {\n\t\t\t\tif (i === j) continue;\n\t\t\t\tvar p2 = mp.getGeometryN(j);\n\t\t\t\tthis.checkShellNotNested(shell, p2, graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn IsValidOp;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nIsValidOp.constructor_ = function () {\n\tthis._parentGeometry = null;\n\tthis._isSelfTouchingRingFormingHoleValid = false;\n\tthis._validErr = null;\n\tlet parentGeometry = arguments[0];\n\tthis._parentGeometry = parentGeometry;\n};\n","import LineString from '../geom/LineString';\nimport CoordinateList from '../geom/CoordinateList';\nimport Geometry from '../geom/Geometry';\nimport Coordinate from '../geom/Coordinate';\nimport GeometryEditor from '../geom/util/GeometryEditor';\nimport LinearRing from '../geom/LinearRing';\nexport default class PrecisionReducerCoordinateOperation extends GeometryEditor.CoordinateOperation {\n\tconstructor() {\n\t\tsuper();\n\t\tPrecisionReducerCoordinateOperation.constructor_.apply(this, arguments);\n\t}\n\tedit() {\n\t\tif (arguments.length === 2 && (arguments[1] instanceof Geometry && arguments[0] instanceof Array)) {\n\t\t\tlet coordinates = arguments[0], geom = arguments[1];\n\t\t\tif (coordinates.length === 0) return null;\n\t\t\tvar reducedCoords = new Array(coordinates.length).fill(null);\n\t\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\t\tvar coord = new Coordinate(coordinates[i]);\n\t\t\t\tthis._targetPM.makePrecise(coord);\n\t\t\t\treducedCoords[i] = coord;\n\t\t\t}\n\t\t\tvar noRepeatedCoordList = new CoordinateList(reducedCoords, false);\n\t\t\tvar noRepeatedCoords = noRepeatedCoordList.toCoordinateArray();\n\t\t\tvar minLength = 0;\n\t\t\tif (geom instanceof LineString) minLength = 2;\n\t\t\tif (geom instanceof LinearRing) minLength = 4;\n\t\t\tvar collapsedCoords = reducedCoords;\n\t\t\tif (this._removeCollapsed) collapsedCoords = null;\n\t\t\tif (noRepeatedCoords.length < minLength) {\n\t\t\t\treturn collapsedCoords;\n\t\t\t}\n\t\t\treturn noRepeatedCoords;\n\t\t} else return super.edit.apply(this, arguments);\n\t}\n\tgetClass() {\n\t\treturn PrecisionReducerCoordinateOperation;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nPrecisionReducerCoordinateOperation.constructor_ = function () {\n\tthis._targetPM = null;\n\tthis._removeCollapsed = true;\n\tlet targetPM = arguments[0], removeCollapsed = arguments[1];\n\tthis._targetPM = targetPM;\n\tthis._removeCollapsed = removeCollapsed;\n};\n","import hasInterface from '../../../../hasInterface';\nimport GeometryFactory from '../geom/GeometryFactory';\nimport IsValidOp from '../operation/valid/IsValidOp';\nimport GeometryEditor from '../geom/util/GeometryEditor';\nimport BufferOp from '../operation/buffer/BufferOp';\nimport Polygonal from '../geom/Polygonal';\nimport PrecisionReducerCoordinateOperation from './PrecisionReducerCoordinateOperation';\nexport default class GeometryPrecisionReducer {\n\tconstructor() {\n\t\tGeometryPrecisionReducer.constructor_.apply(this, arguments);\n\t}\n\tstatic reduce(g, precModel) {\n\t\tvar reducer = new GeometryPrecisionReducer(precModel);\n\t\treturn reducer.reduce(g);\n\t}\n\tstatic reducePointwise(g, precModel) {\n\t\tvar reducer = new GeometryPrecisionReducer(precModel);\n\t\treducer.setPointwise(true);\n\t\treturn reducer.reduce(g);\n\t}\n\tfixPolygonalTopology(geom) {\n\t\tvar geomToBuffer = geom;\n\t\tif (!this._changePrecisionModel) {\n\t\t\tgeomToBuffer = this.changePM(geom, this._targetPM);\n\t\t}\n\t\tvar bufGeom = BufferOp.bufferOp(geomToBuffer, 0);\n\t\tvar finalGeom = bufGeom;\n\t\tif (!this._changePrecisionModel) {\n\t\t\tfinalGeom = bufGeom.copy();\n\t\t\tthis.changePM(finalGeom, geom.getPrecisionModel());\n\t\t}\n\t\treturn finalGeom;\n\t}\n\treducePointwise(geom) {\n\t\tvar geomEdit = null;\n\t\tif (this._changePrecisionModel) {\n\t\t\tvar newFactory = this.createFactory(geom.getFactory(), this._targetPM);\n\t\t\tgeomEdit = new GeometryEditor(newFactory);\n\t\t} else geomEdit = new GeometryEditor();\n\t\tvar finalRemoveCollapsed = this._removeCollapsed;\n\t\tif (geom.getDimension() >= 2) finalRemoveCollapsed = true;\n\t\tvar reduceGeom = geomEdit.edit(geom, new PrecisionReducerCoordinateOperation(this._targetPM, finalRemoveCollapsed));\n\t\treturn reduceGeom;\n\t}\n\tchangePM(geom, newPM) {\n\t\tvar geomEditor = this.createEditor(geom.getFactory(), newPM);\n\t\treturn geomEditor.edit(geom, new GeometryEditor.NoOpGeometryOperation());\n\t}\n\tsetRemoveCollapsedComponents(removeCollapsed) {\n\t\tthis._removeCollapsed = removeCollapsed;\n\t}\n\tcreateFactory(inputFactory, pm) {\n\t\tvar newFactory = new GeometryFactory(pm, inputFactory.getSRID(), inputFactory.getCoordinateSequenceFactory());\n\t\treturn newFactory;\n\t}\n\tsetChangePrecisionModel(changePrecisionModel) {\n\t\tthis._changePrecisionModel = changePrecisionModel;\n\t}\n\treduce(geom) {\n\t\tvar reducePW = this.reducePointwise(geom);\n\t\tif (this._isPointwise) return reducePW;\n\t\tif (!hasInterface(reducePW, Polygonal)) return reducePW;\n\t\tif (IsValidOp.isValid(reducePW)) return reducePW;\n\t\treturn this.fixPolygonalTopology(reducePW);\n\t}\n\tsetPointwise(isPointwise) {\n\t\tthis._isPointwise = isPointwise;\n\t}\n\tcreateEditor(geomFactory, newPM) {\n\t\tif (geomFactory.getPrecisionModel() === newPM) return new GeometryEditor();\n\t\tvar newFactory = this.createFactory(geomFactory, newPM);\n\t\tvar geomEdit = new GeometryEditor(newFactory);\n\t\treturn geomEdit;\n\t}\n\tgetClass() {\n\t\treturn GeometryPrecisionReducer;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nGeometryPrecisionReducer.constructor_ = function () {\n\tthis._targetPM = null;\n\tthis._removeCollapsed = true;\n\tthis._changePrecisionModel = false;\n\tthis._isPointwise = false;\n\tlet pm = arguments[0];\n\tthis._targetPM = pm;\n};\n","import CoordinateList from '../geom/CoordinateList';\nimport Coordinate from '../geom/Coordinate';\nimport LineSegment from '../geom/LineSegment';\nexport default class DouglasPeuckerLineSimplifier {\n\tconstructor() {\n\t\tDouglasPeuckerLineSimplifier.constructor_.apply(this, arguments);\n\t}\n\tstatic simplify(pts, distanceTolerance) {\n\t\tvar simp = new DouglasPeuckerLineSimplifier(pts);\n\t\tsimp.setDistanceTolerance(distanceTolerance);\n\t\treturn simp.simplify();\n\t}\n\tsimplifySection(i, j) {\n\t\tif (i + 1 === j) {\n\t\t\treturn null;\n\t\t}\n\t\tthis._seg.p0 = this._pts[i];\n\t\tthis._seg.p1 = this._pts[j];\n\t\tvar maxDistance = -1.0;\n\t\tvar maxIndex = i;\n\t\tfor (var k = i + 1; k < j; k++) {\n\t\t\tvar distance = this._seg.distance(this._pts[k]);\n\t\t\tif (distance > maxDistance) {\n\t\t\t\tmaxDistance = distance;\n\t\t\t\tmaxIndex = k;\n\t\t\t}\n\t\t}\n\t\tif (maxDistance <= this._distanceTolerance) {\n\t\t\tfor (var k = i + 1; k < j; k++) {\n\t\t\t\tthis._usePt[k] = false;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.simplifySection(i, maxIndex);\n\t\t\tthis.simplifySection(maxIndex, j);\n\t\t}\n\t}\n\tsetDistanceTolerance(distanceTolerance) {\n\t\tthis._distanceTolerance = distanceTolerance;\n\t}\n\tsimplify() {\n\t\tthis._usePt = new Array(this._pts.length).fill(null);\n\t\tfor (var i = 0; i < this._pts.length; i++) {\n\t\t\tthis._usePt[i] = true;\n\t\t}\n\t\tthis.simplifySection(0, this._pts.length - 1);\n\t\tvar coordList = new CoordinateList();\n\t\tfor (var i = 0; i < this._pts.length; i++) {\n\t\t\tif (this._usePt[i]) coordList.add(new Coordinate(this._pts[i]));\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t}\n\tgetClass() {\n\t\treturn DouglasPeuckerLineSimplifier;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDouglasPeuckerLineSimplifier.constructor_ = function () {\n\tthis._pts = null;\n\tthis._usePt = null;\n\tthis._distanceTolerance = null;\n\tthis._seg = new LineSegment();\n\tlet pts = arguments[0];\n\tthis._pts = pts;\n};\n","import DouglasPeuckerLineSimplifier from './DouglasPeuckerLineSimplifier';\nimport GeometryTransformer from '../geom/util/GeometryTransformer';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Polygon from '../geom/Polygon';\nimport LinearRing from '../geom/LinearRing';\nimport MultiPolygon from '../geom/MultiPolygon';\nexport default class DouglasPeuckerSimplifier {\n\tconstructor() {\n\t\tDouglasPeuckerSimplifier.constructor_.apply(this, arguments);\n\t}\n\tstatic simplify(geom, distanceTolerance) {\n\t\tvar tss = new DouglasPeuckerSimplifier(geom);\n\t\ttss.setDistanceTolerance(distanceTolerance);\n\t\treturn tss.getResultGeometry();\n\t}\n\tsetEnsureValid(isEnsureValidTopology) {\n\t\tthis._isEnsureValidTopology = isEnsureValidTopology;\n\t}\n\tgetResultGeometry() {\n\t\tif (this._inputGeom.isEmpty()) return this._inputGeom.copy();\n\t\treturn new DPTransformer(this._isEnsureValidTopology, this._distanceTolerance).transform(this._inputGeom);\n\t}\n\tsetDistanceTolerance(distanceTolerance) {\n\t\tif (distanceTolerance < 0.0) throw new IllegalArgumentException(\"Tolerance must be non-negative\");\n\t\tthis._distanceTolerance = distanceTolerance;\n\t}\n\tgetClass() {\n\t\treturn DouglasPeuckerSimplifier;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass DPTransformer extends GeometryTransformer {\n\tconstructor() {\n\t\tsuper();\n\t\tDPTransformer.constructor_.apply(this, arguments);\n\t}\n\ttransformPolygon(geom, parent) {\n\t\tif (geom.isEmpty()) return null;\n\t\tvar rawGeom = super.transformPolygon.call(this, geom, parent);\n\t\tif (parent instanceof MultiPolygon) {\n\t\t\treturn rawGeom;\n\t\t}\n\t\treturn this.createValidArea(rawGeom);\n\t}\n\tcreateValidArea(rawAreaGeom) {\n\t\tif (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0);\n\t\treturn rawAreaGeom;\n\t}\n\ttransformCoordinates(coords, parent) {\n\t\tvar inputPts = coords.toCoordinateArray();\n\t\tvar newPts = null;\n\t\tif (inputPts.length === 0) {\n\t\t\tnewPts = new Array(0).fill(null);\n\t\t} else {\n\t\t\tnewPts = DouglasPeuckerLineSimplifier.simplify(inputPts, this._distanceTolerance);\n\t\t}\n\t\treturn this._factory.getCoordinateSequenceFactory().create(newPts);\n\t}\n\ttransformMultiPolygon(geom, parent) {\n\t\tvar rawGeom = super.transformMultiPolygon.call(this, geom, parent);\n\t\treturn this.createValidArea(rawGeom);\n\t}\n\ttransformLinearRing(geom, parent) {\n\t\tvar removeDegenerateRings = parent instanceof Polygon;\n\t\tvar simpResult = super.transformLinearRing.call(this, geom, parent);\n\t\tif (removeDegenerateRings && !(simpResult instanceof LinearRing)) return null;\n\t\t;\n\t\treturn simpResult;\n\t}\n\tgetClass() {\n\t\treturn DPTransformer;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDPTransformer.constructor_ = function () {\n\tthis._isEnsureValidTopology = true;\n\tthis._distanceTolerance = null;\n\tlet isEnsureValidTopology = arguments[0], distanceTolerance = arguments[1];\n\tthis._isEnsureValidTopology = isEnsureValidTopology;\n\tthis._distanceTolerance = distanceTolerance;\n};\nDouglasPeuckerSimplifier.DPTransformer = DPTransformer;\nDouglasPeuckerSimplifier.constructor_ = function () {\n\tthis._inputGeom = null;\n\tthis._distanceTolerance = null;\n\tthis._isEnsureValidTopology = true;\n\tlet inputGeom = arguments[0];\n\tthis._inputGeom = inputGeom;\n};\n","import LineSegment from '../geom/LineSegment';\nexport default class TaggedLineSegment extends LineSegment {\n\tconstructor() {\n\t\tsuper();\n\t\tTaggedLineSegment.constructor_.apply(this, arguments);\n\t}\n\tgetIndex() {\n\t\treturn this._index;\n\t}\n\tgetParent() {\n\t\treturn this._parent;\n\t}\n\tgetClass() {\n\t\treturn TaggedLineSegment;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTaggedLineSegment.constructor_ = function () {\n\tthis._parent = null;\n\tthis._index = null;\n\tif (arguments.length === 2) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tTaggedLineSegment.constructor_.call(this, p0, p1, null, -1);\n\t} else if (arguments.length === 4) {\n\t\tlet p0 = arguments[0], p1 = arguments[1], parent = arguments[2], index = arguments[3];\n\t\tLineSegment.constructor_.call(this, p0, p1);\n\t\tthis._parent = parent;\n\t\tthis._index = index;\n\t}\n};\n","import TaggedLineSegment from './TaggedLineSegment';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class TaggedLineString {\n\tconstructor() {\n\t\tTaggedLineString.constructor_.apply(this, arguments);\n\t}\n\tstatic extractCoordinates(segs) {\n\t\tvar pts = new Array(segs.size() + 1).fill(null);\n\t\tvar seg = null;\n\t\tfor (var i = 0; i < segs.size(); i++) {\n\t\t\tseg = segs.get(i);\n\t\t\tpts[i] = seg.p0;\n\t\t}\n\t\tpts[pts.length - 1] = seg.p1;\n\t\treturn pts;\n\t}\n\taddToResult(seg) {\n\t\tthis._resultSegs.add(seg);\n\t}\n\tasLineString() {\n\t\treturn this._parentLine.getFactory().createLineString(TaggedLineString.extractCoordinates(this._resultSegs));\n\t}\n\tgetResultSize() {\n\t\tvar resultSegsSize = this._resultSegs.size();\n\t\treturn resultSegsSize === 0 ? 0 : resultSegsSize + 1;\n\t}\n\tgetParent() {\n\t\treturn this._parentLine;\n\t}\n\tgetSegment(i) {\n\t\treturn this._segs[i];\n\t}\n\tgetParentCoordinates() {\n\t\treturn this._parentLine.getCoordinates();\n\t}\n\tgetMinimumSize() {\n\t\treturn this._minimumSize;\n\t}\n\tasLinearRing() {\n\t\treturn this._parentLine.getFactory().createLinearRing(TaggedLineString.extractCoordinates(this._resultSegs));\n\t}\n\tgetSegments() {\n\t\treturn this._segs;\n\t}\n\tinit() {\n\t\tvar pts = this._parentLine.getCoordinates();\n\t\tthis._segs = new Array(pts.length - 1).fill(null);\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tvar seg = new TaggedLineSegment(pts[i], pts[i + 1], this._parentLine, i);\n\t\t\tthis._segs[i] = seg;\n\t\t}\n\t}\n\tgetResultCoordinates() {\n\t\treturn TaggedLineString.extractCoordinates(this._resultSegs);\n\t}\n\tgetClass() {\n\t\treturn TaggedLineString;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTaggedLineString.constructor_ = function () {\n\tthis._parentLine = null;\n\tthis._segs = null;\n\tthis._resultSegs = new ArrayList();\n\tthis._minimumSize = null;\n\tif (arguments.length === 1) {\n\t\tlet parentLine = arguments[0];\n\t\tTaggedLineString.constructor_.call(this, parentLine, 2);\n\t} else if (arguments.length === 2) {\n\t\tlet parentLine = arguments[0], minimumSize = arguments[1];\n\t\tthis._parentLine = parentLine;\n\t\tthis._minimumSize = minimumSize;\n\t\tthis.init();\n\t}\n};\n","import Quadtree from '../index/quadtree/Quadtree';\nimport ItemVisitor from '../index/ItemVisitor';\nimport LineSegment from '../geom/LineSegment';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Envelope from '../geom/Envelope';\nimport TaggedLineString from './TaggedLineString';\nexport default class LineSegmentIndex {\n\tconstructor() {\n\t\tLineSegmentIndex.constructor_.apply(this, arguments);\n\t}\n\tremove(seg) {\n\t\tthis._index.remove(new Envelope(seg.p0, seg.p1), seg);\n\t}\n\tadd() {\n\t\tif (arguments[0] instanceof TaggedLineString) {\n\t\t\tlet line = arguments[0];\n\t\t\tvar segs = line.getSegments();\n\t\t\tfor (var i = 0; i < segs.length; i++) {\n\t\t\t\tvar seg = segs[i];\n\t\t\t\tthis.add(seg);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineSegment) {\n\t\t\tlet seg = arguments[0];\n\t\t\tthis._index.insert(new Envelope(seg.p0, seg.p1), seg);\n\t\t}\n\t}\n\tquery(querySeg) {\n\t\tvar env = new Envelope(querySeg.p0, querySeg.p1);\n\t\tvar visitor = new LineSegmentVisitor(querySeg);\n\t\tthis._index.query(env, visitor);\n\t\tvar itemsFound = visitor.getItems();\n\t\treturn itemsFound;\n\t}\n\tgetClass() {\n\t\treturn LineSegmentIndex;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineSegmentIndex.constructor_ = function () {\n\tthis._index = new Quadtree();\n};\nclass LineSegmentVisitor {\n\tconstructor() {\n\t\tLineSegmentVisitor.constructor_.apply(this, arguments);\n\t}\n\tvisitItem(item) {\n\t\tvar seg = item;\n\t\tif (Envelope.intersects(seg.p0, seg.p1, this._querySeg.p0, this._querySeg.p1)) this._items.add(item);\n\t}\n\tgetItems() {\n\t\treturn this._items;\n\t}\n\tgetClass() {\n\t\treturn LineSegmentVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [ItemVisitor];\n\t}\n}\nLineSegmentVisitor.constructor_ = function () {\n\tthis._querySeg = null;\n\tthis._items = new ArrayList();\n\tlet querySeg = arguments[0];\n\tthis._querySeg = querySeg;\n};\n","import LineSegment from '../geom/LineSegment';\nimport LineSegmentIndex from './LineSegmentIndex';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nexport default class TaggedLineStringSimplifier {\n\tconstructor() {\n\t\tTaggedLineStringSimplifier.constructor_.apply(this, arguments);\n\t}\n\tstatic isInLineSection(line, sectionIndex, seg) {\n\t\tif (seg.getParent() !== line.getParent()) return false;\n\t\tvar segIndex = seg.getIndex();\n\t\tif (segIndex >= sectionIndex[0] && segIndex < sectionIndex[1]) return true;\n\t\treturn false;\n\t}\n\tflatten(start, end) {\n\t\tvar p0 = this._linePts[start];\n\t\tvar p1 = this._linePts[end];\n\t\tvar newSeg = new LineSegment(p0, p1);\n\t\tthis.remove(this._line, start, end);\n\t\tthis._outputIndex.add(newSeg);\n\t\treturn newSeg;\n\t}\n\thasBadIntersection(parentLine, sectionIndex, candidateSeg) {\n\t\tif (this.hasBadOutputIntersection(candidateSeg)) return true;\n\t\tif (this.hasBadInputIntersection(parentLine, sectionIndex, candidateSeg)) return true;\n\t\treturn false;\n\t}\n\tsetDistanceTolerance(distanceTolerance) {\n\t\tthis._distanceTolerance = distanceTolerance;\n\t}\n\tsimplifySection(i, j, depth) {\n\t\tdepth += 1;\n\t\tvar sectionIndex = new Array(2).fill(null);\n\t\tif (i + 1 === j) {\n\t\t\tvar newSeg = this._line.getSegment(i);\n\t\t\tthis._line.addToResult(newSeg);\n\t\t\treturn null;\n\t\t}\n\t\tvar isValidToSimplify = true;\n\t\tif (this._line.getResultSize() < this._line.getMinimumSize()) {\n\t\t\tvar worstCaseSize = depth + 1;\n\t\t\tif (worstCaseSize < this._line.getMinimumSize()) isValidToSimplify = false;\n\t\t}\n\t\tvar distance = new Array(1).fill(null);\n\t\tvar furthestPtIndex = this.findFurthestPoint(this._linePts, i, j, distance);\n\t\tif (distance[0] > this._distanceTolerance) isValidToSimplify = false;\n\t\tvar candidateSeg = new LineSegment();\n\t\tcandidateSeg.p0 = this._linePts[i];\n\t\tcandidateSeg.p1 = this._linePts[j];\n\t\tsectionIndex[0] = i;\n\t\tsectionIndex[1] = j;\n\t\tif (this.hasBadIntersection(this._line, sectionIndex, candidateSeg)) isValidToSimplify = false;\n\t\tif (isValidToSimplify) {\n\t\t\tvar newSeg = this.flatten(i, j);\n\t\t\tthis._line.addToResult(newSeg);\n\t\t\treturn null;\n\t\t}\n\t\tthis.simplifySection(i, furthestPtIndex, depth);\n\t\tthis.simplifySection(furthestPtIndex, j, depth);\n\t}\n\thasBadOutputIntersection(candidateSeg) {\n\t\tvar querySegs = this._outputIndex.query(candidateSeg);\n\t\tfor (var i = querySegs.iterator(); i.hasNext(); ) {\n\t\t\tvar querySeg = i.next();\n\t\t\tif (this.hasInteriorIntersection(querySeg, candidateSeg)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tfindFurthestPoint(pts, i, j, maxDistance) {\n\t\tvar seg = new LineSegment();\n\t\tseg.p0 = pts[i];\n\t\tseg.p1 = pts[j];\n\t\tvar maxDist = -1.0;\n\t\tvar maxIndex = i;\n\t\tfor (var k = i + 1; k < j; k++) {\n\t\t\tvar midPt = pts[k];\n\t\t\tvar distance = seg.distance(midPt);\n\t\t\tif (distance > maxDist) {\n\t\t\t\tmaxDist = distance;\n\t\t\t\tmaxIndex = k;\n\t\t\t}\n\t\t}\n\t\tmaxDistance[0] = maxDist;\n\t\treturn maxIndex;\n\t}\n\tsimplify(line) {\n\t\tthis._line = line;\n\t\tthis._linePts = line.getParentCoordinates();\n\t\tthis.simplifySection(0, this._linePts.length - 1, 0);\n\t}\n\tremove(line, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar seg = line.getSegment(i);\n\t\t\tthis._inputIndex.remove(seg);\n\t\t}\n\t}\n\thasInteriorIntersection(seg0, seg1) {\n\t\tthis._li.computeIntersection(seg0.p0, seg0.p1, seg1.p0, seg1.p1);\n\t\treturn this._li.isInteriorIntersection();\n\t}\n\thasBadInputIntersection(parentLine, sectionIndex, candidateSeg) {\n\t\tvar querySegs = this._inputIndex.query(candidateSeg);\n\t\tfor (var i = querySegs.iterator(); i.hasNext(); ) {\n\t\t\tvar querySeg = i.next();\n\t\t\tif (this.hasInteriorIntersection(querySeg, candidateSeg)) {\n\t\t\t\tif (TaggedLineStringSimplifier.isInLineSection(parentLine, sectionIndex, querySeg)) continue;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetClass() {\n\t\treturn TaggedLineStringSimplifier;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTaggedLineStringSimplifier.constructor_ = function () {\n\tthis._li = new RobustLineIntersector();\n\tthis._inputIndex = new LineSegmentIndex();\n\tthis._outputIndex = new LineSegmentIndex();\n\tthis._line = null;\n\tthis._linePts = null;\n\tthis._distanceTolerance = 0.0;\n\tlet inputIndex = arguments[0], outputIndex = arguments[1];\n\tthis._inputIndex = inputIndex;\n\tthis._outputIndex = outputIndex;\n};\n","import TaggedLineStringSimplifier from './TaggedLineStringSimplifier';\nimport LineSegmentIndex from './LineSegmentIndex';\nexport default class TaggedLinesSimplifier {\n\tconstructor() {\n\t\tTaggedLinesSimplifier.constructor_.apply(this, arguments);\n\t}\n\tsetDistanceTolerance(distanceTolerance) {\n\t\tthis._distanceTolerance = distanceTolerance;\n\t}\n\tsimplify(taggedLines) {\n\t\tfor (var i = taggedLines.iterator(); i.hasNext(); ) {\n\t\t\tthis._inputIndex.add(i.next());\n\t\t}\n\t\tfor (var i = taggedLines.iterator(); i.hasNext(); ) {\n\t\t\tvar tlss = new TaggedLineStringSimplifier(this._inputIndex, this._outputIndex);\n\t\t\ttlss.setDistanceTolerance(this._distanceTolerance);\n\t\t\ttlss.simplify(i.next());\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn TaggedLinesSimplifier;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTaggedLinesSimplifier.constructor_ = function () {\n\tthis._inputIndex = new LineSegmentIndex();\n\tthis._outputIndex = new LineSegmentIndex();\n\tthis._distanceTolerance = 0.0;\n};\n","import LineString from '../geom/LineString';\nimport HashMap from '../../../../java/util/HashMap';\nimport GeometryTransformer from '../geom/util/GeometryTransformer';\nimport TaggedLinesSimplifier from './TaggedLinesSimplifier';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport GeometryComponentFilter from '../geom/GeometryComponentFilter';\nimport TaggedLineString from './TaggedLineString';\nexport default class TopologyPreservingSimplifier {\n\tconstructor() {\n\t\tTopologyPreservingSimplifier.constructor_.apply(this, arguments);\n\t}\n\tstatic simplify(geom, distanceTolerance) {\n\t\tvar tss = new TopologyPreservingSimplifier(geom);\n\t\ttss.setDistanceTolerance(distanceTolerance);\n\t\treturn tss.getResultGeometry();\n\t}\n\tgetResultGeometry() {\n\t\tif (this._inputGeom.isEmpty()) return this._inputGeom.copy();\n\t\tthis._linestringMap = new HashMap();\n\t\tthis._inputGeom.apply(new LineStringMapBuilderFilter(this));\n\t\tthis._lineSimplifier.simplify(this._linestringMap.values());\n\t\tvar result = new LineStringTransformer(this._linestringMap).transform(this._inputGeom);\n\t\treturn result;\n\t}\n\tsetDistanceTolerance(distanceTolerance) {\n\t\tif (distanceTolerance < 0.0) throw new IllegalArgumentException(\"Tolerance must be non-negative\");\n\t\tthis._lineSimplifier.setDistanceTolerance(distanceTolerance);\n\t}\n\tgetClass() {\n\t\treturn TopologyPreservingSimplifier;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass LineStringTransformer extends GeometryTransformer {\n\tconstructor() {\n\t\tsuper();\n\t\tLineStringTransformer.constructor_.apply(this, arguments);\n\t}\n\ttransformCoordinates(coords, parent) {\n\t\tif (coords.size() === 0) return null;\n\t\tif (parent instanceof LineString) {\n\t\t\tvar taggedLine = this._linestringMap.get(parent);\n\t\t\treturn this.createCoordinateSequence(taggedLine.getResultCoordinates());\n\t\t}\n\t\treturn super.transformCoordinates.call(this, coords, parent);\n\t}\n\tgetClass() {\n\t\treturn LineStringTransformer;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLineStringTransformer.constructor_ = function () {\n\tthis._linestringMap = null;\n\tlet linestringMap = arguments[0];\n\tthis._linestringMap = linestringMap;\n};\nclass LineStringMapBuilderFilter {\n\tconstructor() {\n\t\tLineStringMapBuilderFilter.constructor_.apply(this, arguments);\n\t}\n\tfilter(geom) {\n\t\tif (geom instanceof LineString) {\n\t\t\tvar line = geom;\n\t\t\tif (line.isEmpty()) return null;\n\t\t\tvar minSize = line.isClosed() ? 4 : 2;\n\t\t\tvar taggedLine = new TaggedLineString(line, minSize);\n\t\t\tthis.tps._linestringMap.put(line, taggedLine);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn LineStringMapBuilderFilter;\n\t}\n\tget interfaces_() {\n\t\treturn [GeometryComponentFilter];\n\t}\n}\nLineStringMapBuilderFilter.constructor_ = function () {\n\tthis.tps = null;\n\tlet tps = arguments[0];\n\tthis.tps = tps;\n};\nTopologyPreservingSimplifier.LineStringTransformer = LineStringTransformer;\nTopologyPreservingSimplifier.LineStringMapBuilderFilter = LineStringMapBuilderFilter;\nTopologyPreservingSimplifier.constructor_ = function () {\n\tthis._inputGeom = null;\n\tthis._lineSimplifier = new TaggedLinesSimplifier();\n\tthis._linestringMap = null;\n\tlet inputGeom = arguments[0];\n\tthis._inputGeom = inputGeom;\n};\n","import Coordinate from '../geom/Coordinate';\nexport default class SplitSegment {\n\tconstructor() {\n\t\tSplitSegment.constructor_.apply(this, arguments);\n\t}\n\tstatic pointAlongReverse(seg, segmentLengthFraction) {\n\t\tvar coord = new Coordinate();\n\t\tcoord.x = seg.p1.x - segmentLengthFraction * (seg.p1.x - seg.p0.x);\n\t\tcoord.y = seg.p1.y - segmentLengthFraction * (seg.p1.y - seg.p0.y);\n\t\treturn coord;\n\t}\n\tsplitAt() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet pt = arguments[0];\n\t\t\tvar minFrac = this._minimumLen / this._segLen;\n\t\t\tif (pt.distance(this._seg.p0) < this._minimumLen) {\n\t\t\t\tthis._splitPt = this._seg.pointAlong(minFrac);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (pt.distance(this._seg.p1) < this._minimumLen) {\n\t\t\t\tthis._splitPt = SplitSegment.pointAlongReverse(this._seg, minFrac);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tthis._splitPt = pt;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet length = arguments[0], endPt = arguments[1];\n\t\t\tvar actualLen = this.getConstrainedLength(length);\n\t\t\tvar frac = actualLen / this._segLen;\n\t\t\tif (endPt.equals2D(this._seg.p0)) this._splitPt = this._seg.pointAlong(frac); else this._splitPt = SplitSegment.pointAlongReverse(this._seg, frac);\n\t\t}\n\t}\n\tsetMinimumLength(minLen) {\n\t\tthis._minimumLen = minLen;\n\t}\n\tgetConstrainedLength(len) {\n\t\tif (len < this._minimumLen) return this._minimumLen;\n\t\treturn len;\n\t}\n\tgetSplitPoint() {\n\t\treturn this._splitPt;\n\t}\n\tgetClass() {\n\t\treturn SplitSegment;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSplitSegment.constructor_ = function () {\n\tthis._seg = null;\n\tthis._segLen = null;\n\tthis._splitPt = null;\n\tthis._minimumLen = 0.0;\n\tlet seg = arguments[0];\n\tthis._seg = seg;\n\tthis._segLen = seg.getLength();\n};\n","export default class ConstraintSplitPointFinder {\n\tconstructor() {\n\t\tConstraintSplitPointFinder.constructor_.apply(this, arguments);\n\t}\n\tfindSplitPoint(seg, encroachPt) {}\n\tgetClass() {\n\t\treturn ConstraintSplitPointFinder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nConstraintSplitPointFinder.constructor_ = function () {};\n","import SplitSegment from './SplitSegment';\nimport ConstraintSplitPointFinder from './ConstraintSplitPointFinder';\nexport default class NonEncroachingSplitPointFinder {\n\tconstructor() {\n\t\tNonEncroachingSplitPointFinder.constructor_.apply(this, arguments);\n\t}\n\tstatic projectedSplitPoint(seg, encroachPt) {\n\t\tvar lineSeg = seg.getLineSegment();\n\t\tvar projPt = lineSeg.project(encroachPt);\n\t\treturn projPt;\n\t}\n\tfindSplitPoint(seg, encroachPt) {\n\t\tvar lineSeg = seg.getLineSegment();\n\t\tvar segLen = lineSeg.getLength();\n\t\tvar midPtLen = segLen / 2;\n\t\tvar splitSeg = new SplitSegment(lineSeg);\n\t\tvar projPt = NonEncroachingSplitPointFinder.projectedSplitPoint(seg, encroachPt);\n\t\tvar nonEncroachDiam = projPt.distance(encroachPt) * 2 * 0.8;\n\t\tvar maxSplitLen = nonEncroachDiam;\n\t\tif (maxSplitLen > midPtLen) {\n\t\t\tmaxSplitLen = midPtLen;\n\t\t}\n\t\tsplitSeg.setMinimumLength(maxSplitLen);\n\t\tsplitSeg.splitAt(projPt);\n\t\treturn splitSeg.getSplitPoint();\n\t}\n\tgetClass() {\n\t\treturn NonEncroachingSplitPointFinder;\n\t}\n\tget interfaces_() {\n\t\treturn [ConstraintSplitPointFinder];\n\t}\n}\nNonEncroachingSplitPointFinder.constructor_ = function () {};\n","import WKTWriter from '../../io/WKTWriter';\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence';\nimport DD from '../../math/DD';\nimport System from '../../../../../java/lang/System';\nimport Triangle from '../../geom/Triangle';\nexport default class TrianglePredicate {\n\tconstructor() {\n\t\tTrianglePredicate.constructor_.apply(this, arguments);\n\t}\n\tstatic triArea(a, b, c) {\n\t\treturn (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\n\t}\n\tstatic isInCircleDDNormalized(a, b, c, p) {\n\t\tvar adx = DD.valueOf(a.x).selfSubtract(p.x);\n\t\tvar ady = DD.valueOf(a.y).selfSubtract(p.y);\n\t\tvar bdx = DD.valueOf(b.x).selfSubtract(p.x);\n\t\tvar bdy = DD.valueOf(b.y).selfSubtract(p.y);\n\t\tvar cdx = DD.valueOf(c.x).selfSubtract(p.x);\n\t\tvar cdy = DD.valueOf(c.y).selfSubtract(p.y);\n\t\tvar abdet = adx.multiply(bdy).selfSubtract(bdx.multiply(ady));\n\t\tvar bcdet = bdx.multiply(cdy).selfSubtract(cdx.multiply(bdy));\n\t\tvar cadet = cdx.multiply(ady).selfSubtract(adx.multiply(cdy));\n\t\tvar alift = adx.multiply(adx).selfAdd(ady.multiply(ady));\n\t\tvar blift = bdx.multiply(bdx).selfAdd(bdy.multiply(bdy));\n\t\tvar clift = cdx.multiply(cdx).selfAdd(cdy.multiply(cdy));\n\t\tvar sum = alift.selfMultiply(bcdet).selfAdd(blift.selfMultiply(cadet)).selfAdd(clift.selfMultiply(abdet));\n\t\tvar isInCircle = sum.doubleValue() > 0;\n\t\treturn isInCircle;\n\t}\n\tstatic checkRobustInCircle(a, b, c, p) {\n\t\tvar nonRobustInCircle = TrianglePredicate.isInCircleNonRobust(a, b, c, p);\n\t\tvar isInCircleDD = TrianglePredicate.isInCircleDDSlow(a, b, c, p);\n\t\tvar isInCircleCC = TrianglePredicate.isInCircleCC(a, b, c, p);\n\t\tvar circumCentre = Triangle.circumcentre(a, b, c);\n\t\tSystem.out.println(\"p radius diff a = \" + Math.abs(p.distance(circumCentre) - a.distance(circumCentre)) / a.distance(circumCentre));\n\t\tif (nonRobustInCircle !== isInCircleDD || nonRobustInCircle !== isInCircleCC) {\n\t\t\tSystem.out.println(\"inCircle robustness failure (double result = \" + nonRobustInCircle + \", DD result = \" + isInCircleDD + \", CC result = \" + isInCircleCC + \")\");\n\t\t\tSystem.out.println(WKTWriter.toLineString(new CoordinateArraySequence([a, b, c, p])));\n\t\t\tSystem.out.println(\"Circumcentre = \" + WKTWriter.toPoint(circumCentre) + \" radius = \" + a.distance(circumCentre));\n\t\t\tSystem.out.println(\"p radius diff a = \" + Math.abs(p.distance(circumCentre) / a.distance(circumCentre) - 1));\n\t\t\tSystem.out.println(\"p radius diff b = \" + Math.abs(p.distance(circumCentre) / b.distance(circumCentre) - 1));\n\t\t\tSystem.out.println(\"p radius diff c = \" + Math.abs(p.distance(circumCentre) / c.distance(circumCentre) - 1));\n\t\t\tSystem.out.println();\n\t\t}\n\t}\n\tstatic isInCircleDDFast(a, b, c, p) {\n\t\tvar aTerm = DD.sqr(a.x).selfAdd(DD.sqr(a.y)).selfMultiply(TrianglePredicate.triAreaDDFast(b, c, p));\n\t\tvar bTerm = DD.sqr(b.x).selfAdd(DD.sqr(b.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, c, p));\n\t\tvar cTerm = DD.sqr(c.x).selfAdd(DD.sqr(c.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, p));\n\t\tvar pTerm = DD.sqr(p.x).selfAdd(DD.sqr(p.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, c));\n\t\tvar sum = aTerm.selfSubtract(bTerm).selfAdd(cTerm).selfSubtract(pTerm);\n\t\tvar isInCircle = sum.doubleValue() > 0;\n\t\treturn isInCircle;\n\t}\n\tstatic isInCircleCC(a, b, c, p) {\n\t\tvar cc = Triangle.circumcentre(a, b, c);\n\t\tvar ccRadius = a.distance(cc);\n\t\tvar pRadiusDiff = p.distance(cc) - ccRadius;\n\t\treturn pRadiusDiff <= 0;\n\t}\n\tstatic isInCircleNormalized(a, b, c, p) {\n\t\tvar adx = a.x - p.x;\n\t\tvar ady = a.y - p.y;\n\t\tvar bdx = b.x - p.x;\n\t\tvar bdy = b.y - p.y;\n\t\tvar cdx = c.x - p.x;\n\t\tvar cdy = c.y - p.y;\n\t\tvar abdet = adx * bdy - bdx * ady;\n\t\tvar bcdet = bdx * cdy - cdx * bdy;\n\t\tvar cadet = cdx * ady - adx * cdy;\n\t\tvar alift = adx * adx + ady * ady;\n\t\tvar blift = bdx * bdx + bdy * bdy;\n\t\tvar clift = cdx * cdx + cdy * cdy;\n\t\tvar disc = alift * bcdet + blift * cadet + clift * abdet;\n\t\treturn disc > 0;\n\t}\n\tstatic isInCircleDDSlow(a, b, c, p) {\n\t\tvar px = DD.valueOf(p.x);\n\t\tvar py = DD.valueOf(p.y);\n\t\tvar ax = DD.valueOf(a.x);\n\t\tvar ay = DD.valueOf(a.y);\n\t\tvar bx = DD.valueOf(b.x);\n\t\tvar by = DD.valueOf(b.y);\n\t\tvar cx = DD.valueOf(c.x);\n\t\tvar cy = DD.valueOf(c.y);\n\t\tvar aTerm = ax.multiply(ax).add(ay.multiply(ay)).multiply(TrianglePredicate.triAreaDDSlow(bx, by, cx, cy, px, py));\n\t\tvar bTerm = bx.multiply(bx).add(by.multiply(by)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, cx, cy, px, py));\n\t\tvar cTerm = cx.multiply(cx).add(cy.multiply(cy)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, px, py));\n\t\tvar pTerm = px.multiply(px).add(py.multiply(py)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, cx, cy));\n\t\tvar sum = aTerm.subtract(bTerm).add(cTerm).subtract(pTerm);\n\t\tvar isInCircle = sum.doubleValue() > 0;\n\t\treturn isInCircle;\n\t}\n\tstatic isInCircleNonRobust(a, b, c, p) {\n\t\tvar isInCircle = (a.x * a.x + a.y * a.y) * TrianglePredicate.triArea(b, c, p) - (b.x * b.x + b.y * b.y) * TrianglePredicate.triArea(a, c, p) + (c.x * c.x + c.y * c.y) * TrianglePredicate.triArea(a, b, p) - (p.x * p.x + p.y * p.y) * TrianglePredicate.triArea(a, b, c) > 0;\n\t\treturn isInCircle;\n\t}\n\tstatic isInCircleRobust(a, b, c, p) {\n\t\treturn TrianglePredicate.isInCircleNormalized(a, b, c, p);\n\t}\n\tstatic triAreaDDSlow(ax, ay, bx, by, cx, cy) {\n\t\treturn bx.subtract(ax).multiply(cy.subtract(ay)).subtract(by.subtract(ay).multiply(cx.subtract(ax)));\n\t}\n\tstatic triAreaDDFast(a, b, c) {\n\t\tvar t1 = DD.valueOf(b.x).selfSubtract(a.x).selfMultiply(DD.valueOf(c.y).selfSubtract(a.y));\n\t\tvar t2 = DD.valueOf(b.y).selfSubtract(a.y).selfMultiply(DD.valueOf(c.x).selfSubtract(a.x));\n\t\treturn t1.selfSubtract(t2);\n\t}\n\tgetClass() {\n\t\treturn TrianglePredicate;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTrianglePredicate.constructor_ = function () {};\n","import NotRepresentableException from '../../algorithm/NotRepresentableException';\nimport Coordinate from '../../geom/Coordinate';\nimport TrianglePredicate from './TrianglePredicate';\nimport System from '../../../../../java/lang/System';\nimport HCoordinate from '../../algorithm/HCoordinate';\nexport default class Vertex {\n\tconstructor() {\n\t\tVertex.constructor_.apply(this, arguments);\n\t}\n\tstatic interpolateZ() {\n\t\tif (arguments.length === 3) {\n\t\t\tlet p = arguments[0], p0 = arguments[1], p1 = arguments[2];\n\t\t\tvar segLen = p0.distance(p1);\n\t\t\tvar ptLen = p.distance(p0);\n\t\t\tvar dz = p1.z - p0.z;\n\t\t\tvar pz = p0.z + dz * (ptLen / segLen);\n\t\t\treturn pz;\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet p = arguments[0], v0 = arguments[1], v1 = arguments[2], v2 = arguments[3];\n\t\t\tvar x0 = v0.x;\n\t\t\tvar y0 = v0.y;\n\t\t\tvar a = v1.x - x0;\n\t\t\tvar b = v2.x - x0;\n\t\t\tvar c = v1.y - y0;\n\t\t\tvar d = v2.y - y0;\n\t\t\tvar det = a * d - b * c;\n\t\t\tvar dx = p.x - x0;\n\t\t\tvar dy = p.y - y0;\n\t\t\tvar t = (d * dx - b * dy) / det;\n\t\t\tvar u = (-c * dx + a * dy) / det;\n\t\t\tvar z = v0.z + t * (v1.z - v0.z) + u * (v2.z - v0.z);\n\t\t\treturn z;\n\t\t}\n\t}\n\tcircleCenter(b, c) {\n\t\tvar a = new Vertex(this.getX(), this.getY());\n\t\tvar cab = this.bisector(a, b);\n\t\tvar cbc = this.bisector(b, c);\n\t\tvar hcc = new HCoordinate(cab, cbc);\n\t\tvar cc = null;\n\t\ttry {\n\t\t\tcc = new Vertex(hcc.getX(), hcc.getY());\n\t\t} catch (nre) {\n\t\t\tif (nre instanceof NotRepresentableException) {\n\t\t\t\tSystem.err.println(\"a: \" + a + \" b: \" + b + \" c: \" + c);\n\t\t\t\tSystem.err.println(nre);\n\t\t\t} else throw nre;\n\t\t} finally {}\n\t\treturn cc;\n\t}\n\tdot(v) {\n\t\treturn this._p.x * v.getX() + this._p.y * v.getY();\n\t}\n\tmagn() {\n\t\treturn Math.sqrt(this._p.x * this._p.x + this._p.y * this._p.y);\n\t}\n\tgetZ() {\n\t\treturn this._p.z;\n\t}\n\tbisector(a, b) {\n\t\tvar dx = b.getX() - a.getX();\n\t\tvar dy = b.getY() - a.getY();\n\t\tvar l1 = new HCoordinate(a.getX() + dx / 2.0, a.getY() + dy / 2.0, 1.0);\n\t\tvar l2 = new HCoordinate(a.getX() - dy + dx / 2.0, a.getY() + dx + dy / 2.0, 1.0);\n\t\treturn new HCoordinate(l1, l2);\n\t}\n\tequals() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet _x = arguments[0];\n\t\t\tif (this._p.x === _x.getX() && this._p.y === _x.getY()) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet _x = arguments[0], tolerance = arguments[1];\n\t\t\tif (this._p.distance(_x.getCoordinate()) < tolerance) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\tgetCoordinate() {\n\t\treturn this._p;\n\t}\n\tisInCircle(a, b, c) {\n\t\treturn TrianglePredicate.isInCircleRobust(a._p, b._p, c._p, this._p);\n\t}\n\tinterpolateZValue(v0, v1, v2) {\n\t\tvar x0 = v0.getX();\n\t\tvar y0 = v0.getY();\n\t\tvar a = v1.getX() - x0;\n\t\tvar b = v2.getX() - x0;\n\t\tvar c = v1.getY() - y0;\n\t\tvar d = v2.getY() - y0;\n\t\tvar det = a * d - b * c;\n\t\tvar dx = this.getX() - x0;\n\t\tvar dy = this.getY() - y0;\n\t\tvar t = (d * dx - b * dy) / det;\n\t\tvar u = (-c * dx + a * dy) / det;\n\t\tvar z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ());\n\t\treturn z;\n\t}\n\tmidPoint(a) {\n\t\tvar xm = (this._p.x + a.getX()) / 2.0;\n\t\tvar ym = (this._p.y + a.getY()) / 2.0;\n\t\tvar zm = (this._p.z + a.getZ()) / 2.0;\n\t\treturn new Vertex(xm, ym, zm);\n\t}\n\trightOf(e) {\n\t\treturn this.isCCW(e.dest(), e.orig());\n\t}\n\tisCCW(b, c) {\n\t\treturn (b._p.x - this._p.x) * (c._p.y - this._p.y) - (b._p.y - this._p.y) * (c._p.x - this._p.x) > 0;\n\t}\n\tgetX() {\n\t\treturn this._p.x;\n\t}\n\tcrossProduct(v) {\n\t\treturn this._p.x * v.getY() - this._p.y * v.getX();\n\t}\n\tsetZ(_z) {\n\t\tthis._p.z = _z;\n\t}\n\ttimes(c) {\n\t\treturn new Vertex(c * this._p.x, c * this._p.y);\n\t}\n\tcross() {\n\t\treturn new Vertex(this._p.y, -this._p.x);\n\t}\n\tleftOf(e) {\n\t\treturn this.isCCW(e.orig(), e.dest());\n\t}\n\ttoString() {\n\t\treturn \"POINT (\" + this._p.x + \" \" + this._p.y + \")\";\n\t}\n\tsub(v) {\n\t\treturn new Vertex(this._p.x - v.getX(), this._p.y - v.getY());\n\t}\n\tgetY() {\n\t\treturn this._p.y;\n\t}\n\tclassify(p0, p1) {\n\t\tvar p2 = this;\n\t\tvar a = p1.sub(p0);\n\t\tvar b = p2.sub(p0);\n\t\tvar sa = a.crossProduct(b);\n\t\tif (sa > 0.0) return Vertex.LEFT;\n\t\tif (sa < 0.0) return Vertex.RIGHT;\n\t\tif (a.getX() * b.getX() < 0.0 || a.getY() * b.getY() < 0.0) return Vertex.BEHIND;\n\t\tif (a.magn() < b.magn()) return Vertex.BEYOND;\n\t\tif (p0.equals(p2)) return Vertex.ORIGIN;\n\t\tif (p1.equals(p2)) return Vertex.DESTINATION;\n\t\treturn Vertex.BETWEEN;\n\t}\n\tsum(v) {\n\t\treturn new Vertex(this._p.x + v.getX(), this._p.y + v.getY());\n\t}\n\tdistance(v1, v2) {\n\t\treturn Math.sqrt(Math.pow(v2.getX() - v1.getX(), 2.0) + Math.pow(v2.getY() - v1.getY(), 2.0));\n\t}\n\tcircumRadiusRatio(b, c) {\n\t\tvar x = this.circleCenter(b, c);\n\t\tvar radius = this.distance(x, b);\n\t\tvar edgeLength = this.distance(this, b);\n\t\tvar el = this.distance(b, c);\n\t\tif (el < edgeLength) {\n\t\t\tedgeLength = el;\n\t\t}\n\t\tel = this.distance(c, this);\n\t\tif (el < edgeLength) {\n\t\t\tedgeLength = el;\n\t\t}\n\t\treturn radius / edgeLength;\n\t}\n\tgetClass() {\n\t\treturn Vertex;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nVertex.constructor_ = function () {\n\tthis._p = null;\n\tif (arguments.length === 1) {\n\t\tlet _p = arguments[0];\n\t\tthis._p = new Coordinate(_p);\n\t} else if (arguments.length === 2) {\n\t\tlet _x = arguments[0], _y = arguments[1];\n\t\tthis._p = new Coordinate(_x, _y);\n\t} else if (arguments.length === 3) {\n\t\tlet _x = arguments[0], _y = arguments[1], _z = arguments[2];\n\t\tthis._p = new Coordinate(_x, _y, _z);\n\t}\n};\nVertex.LEFT = 0;\nVertex.RIGHT = 1;\nVertex.BEYOND = 2;\nVertex.BEHIND = 3;\nVertex.BETWEEN = 4;\nVertex.ORIGIN = 5;\nVertex.DESTINATION = 6;\n","import Vertex from './quadedge/Vertex';\nexport default class ConstraintVertex extends Vertex {\n\tconstructor() {\n\t\tsuper();\n\t\tConstraintVertex.constructor_.apply(this, arguments);\n\t}\n\tgetConstraint() {\n\t\treturn this._constraint;\n\t}\n\tsetOnConstraint(isOnConstraint) {\n\t\tthis._isOnConstraint = isOnConstraint;\n\t}\n\tmerge(other) {\n\t\tif (other._isOnConstraint) {\n\t\t\tthis._isOnConstraint = true;\n\t\t\tthis._constraint = other._constraint;\n\t\t}\n\t}\n\tisOnConstraint() {\n\t\treturn this._isOnConstraint;\n\t}\n\tsetConstraint(constraint) {\n\t\tthis._isOnConstraint = true;\n\t\tthis._constraint = constraint;\n\t}\n\tgetClass() {\n\t\treturn ConstraintVertex;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nConstraintVertex.constructor_ = function () {\n\tthis._isOnConstraint = null;\n\tthis._constraint = null;\n\tlet p = arguments[0];\n\tVertex.constructor_.call(this, p);\n};\n","import WKTWriter from '../../io/WKTWriter';\nimport LineSegment from '../../geom/LineSegment';\nexport default class QuadEdge {\n\tconstructor() {\n\t\tQuadEdge.constructor_.apply(this, arguments);\n\t}\n\tstatic makeEdge(o, d) {\n\t\tvar q0 = new QuadEdge();\n\t\tvar q1 = new QuadEdge();\n\t\tvar q2 = new QuadEdge();\n\t\tvar q3 = new QuadEdge();\n\t\tq0._rot = q1;\n\t\tq1._rot = q2;\n\t\tq2._rot = q3;\n\t\tq3._rot = q0;\n\t\tq0.setNext(q0);\n\t\tq1.setNext(q3);\n\t\tq2.setNext(q2);\n\t\tq3.setNext(q1);\n\t\tvar base = q0;\n\t\tbase.setOrig(o);\n\t\tbase.setDest(d);\n\t\treturn base;\n\t}\n\tstatic swap(e) {\n\t\tvar a = e.oPrev();\n\t\tvar b = e.sym().oPrev();\n\t\tQuadEdge.splice(e, a);\n\t\tQuadEdge.splice(e.sym(), b);\n\t\tQuadEdge.splice(e, a.lNext());\n\t\tQuadEdge.splice(e.sym(), b.lNext());\n\t\te.setOrig(a.dest());\n\t\te.setDest(b.dest());\n\t}\n\tstatic splice(a, b) {\n\t\tvar alpha = a.oNext().rot();\n\t\tvar beta = b.oNext().rot();\n\t\tvar t1 = b.oNext();\n\t\tvar t2 = a.oNext();\n\t\tvar t3 = beta.oNext();\n\t\tvar t4 = alpha.oNext();\n\t\ta.setNext(t1);\n\t\tb.setNext(t2);\n\t\talpha.setNext(t3);\n\t\tbeta.setNext(t4);\n\t}\n\tstatic connect(a, b) {\n\t\tvar e = QuadEdge.makeEdge(a.dest(), b.orig());\n\t\tQuadEdge.splice(e, a.lNext());\n\t\tQuadEdge.splice(e.sym(), b);\n\t\treturn e;\n\t}\n\tequalsNonOriented(qe) {\n\t\tif (this.equalsOriented(qe)) return true;\n\t\tif (this.equalsOriented(qe.sym())) return true;\n\t\treturn false;\n\t}\n\ttoLineSegment() {\n\t\treturn new LineSegment(this._vertex.getCoordinate(), this.dest().getCoordinate());\n\t}\n\tdest() {\n\t\treturn this.sym().orig();\n\t}\n\toNext() {\n\t\treturn this._next;\n\t}\n\tequalsOriented(qe) {\n\t\tif (this.orig().getCoordinate().equals2D(qe.orig().getCoordinate()) && this.dest().getCoordinate().equals2D(qe.dest().getCoordinate())) return true;\n\t\treturn false;\n\t}\n\tdNext() {\n\t\treturn this.sym().oNext().sym();\n\t}\n\tlPrev() {\n\t\treturn this._next.sym();\n\t}\n\trPrev() {\n\t\treturn this.sym().oNext();\n\t}\n\trot() {\n\t\treturn this._rot;\n\t}\n\toPrev() {\n\t\treturn this._rot._next._rot;\n\t}\n\tsym() {\n\t\treturn this._rot._rot;\n\t}\n\tsetOrig(o) {\n\t\tthis._vertex = o;\n\t}\n\tlNext() {\n\t\treturn this.invRot().oNext().rot();\n\t}\n\tgetLength() {\n\t\treturn this.orig().getCoordinate().distance(this.dest().getCoordinate());\n\t}\n\tinvRot() {\n\t\treturn this._rot.sym();\n\t}\n\tsetDest(d) {\n\t\tthis.sym().setOrig(d);\n\t}\n\tsetData(data) {\n\t\tthis._data = data;\n\t}\n\tgetData() {\n\t\treturn this._data;\n\t}\n\tdelete() {\n\t\tthis._rot = null;\n\t}\n\torig() {\n\t\treturn this._vertex;\n\t}\n\trNext() {\n\t\treturn this._rot._next.invRot();\n\t}\n\ttoString() {\n\t\tvar p0 = this._vertex.getCoordinate();\n\t\tvar p1 = this.dest().getCoordinate();\n\t\treturn WKTWriter.toLineString(p0, p1);\n\t}\n\tisLive() {\n\t\treturn this._rot !== null;\n\t}\n\tgetPrimary() {\n\t\tif (this.orig().getCoordinate().compareTo(this.dest().getCoordinate()) <= 0) return this; else return this.sym();\n\t}\n\tdPrev() {\n\t\treturn this.invRot().oNext().invRot();\n\t}\n\tsetNext(next) {\n\t\tthis._next = next;\n\t}\n\tgetClass() {\n\t\treturn QuadEdge;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nQuadEdge.constructor_ = function () {\n\tthis._rot = null;\n\tthis._vertex = null;\n\tthis._next = null;\n\tthis._data = null;\n};\n","import QuadEdge from './quadedge/QuadEdge';\nexport default class IncrementalDelaunayTriangulator {\n\tconstructor() {\n\t\tIncrementalDelaunayTriangulator.constructor_.apply(this, arguments);\n\t}\n\tinsertSite(v) {\n\t\tvar e = this._subdiv.locate(v);\n\t\tif (this._subdiv.isVertexOfEdge(e, v)) {\n\t\t\treturn e;\n\t\t} else if (this._subdiv.isOnEdge(e, v.getCoordinate())) {\n\t\t\te = e.oPrev();\n\t\t\tthis._subdiv.delete(e.oNext());\n\t\t}\n\t\tvar base = this._subdiv.makeEdge(e.orig(), v);\n\t\tQuadEdge.splice(base, e);\n\t\tvar startEdge = base;\n\t\tdo {\n\t\t\tbase = this._subdiv.connect(e, base.sym());\n\t\t\te = base.oPrev();\n\t\t} while (e.lNext() !== startEdge);\n\t\tdo {\n\t\t\tvar t = e.oPrev();\n\t\t\tif (t.dest().rightOf(e) && v.isInCircle(e.orig(), t.dest(), e.dest())) {\n\t\t\t\tQuadEdge.swap(e);\n\t\t\t\te = e.oPrev();\n\t\t\t} else if (e.oNext() === startEdge) {\n\t\t\t\treturn base;\n\t\t\t} else {\n\t\t\t\te = e.oNext().lPrev();\n\t\t\t}\n\t\t} while (true);\n\t}\n\tinsertSites(vertices) {\n\t\tfor (var i = vertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tthis.insertSite(v);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn IncrementalDelaunayTriangulator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nIncrementalDelaunayTriangulator.constructor_ = function () {\n\tthis._subdiv = null;\n\tthis._isUsingTolerance = false;\n\tlet subdiv = arguments[0];\n\tthis._subdiv = subdiv;\n\tthis._isUsingTolerance = subdiv.getTolerance() > 0.0;\n};\n","export default class QuadEdgeLocator {\n\tconstructor() {\n\t\tQuadEdgeLocator.constructor_.apply(this, arguments);\n\t}\n\tlocate(v) {}\n\tgetClass() {\n\t\treturn QuadEdgeLocator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nQuadEdgeLocator.constructor_ = function () {};\n","import QuadEdgeLocator from './QuadEdgeLocator';\nexport default class LastFoundQuadEdgeLocator {\n\tconstructor() {\n\t\tLastFoundQuadEdgeLocator.constructor_.apply(this, arguments);\n\t}\n\tinit() {\n\t\tthis._lastEdge = this.findEdge();\n\t}\n\tlocate(v) {\n\t\tif (!this._lastEdge.isLive()) {\n\t\t\tthis.init();\n\t\t}\n\t\tvar e = this._subdiv.locateFromEdge(v, this._lastEdge);\n\t\tthis._lastEdge = e;\n\t\treturn e;\n\t}\n\tfindEdge() {\n\t\tvar edges = this._subdiv.getEdges();\n\t\treturn edges.iterator().next();\n\t}\n\tgetClass() {\n\t\treturn LastFoundQuadEdgeLocator;\n\t}\n\tget interfaces_() {\n\t\treturn [QuadEdgeLocator];\n\t}\n}\nLastFoundQuadEdgeLocator.constructor_ = function () {\n\tthis._subdiv = null;\n\tthis._lastEdge = null;\n\tlet subdiv = arguments[0];\n\tthis._subdiv = subdiv;\n\tthis.init();\n};\n","import LineSegment from '../../geom/LineSegment';\nimport RuntimeException from '../../../../../java/lang/RuntimeException';\nexport default class LocateFailureException extends RuntimeException {\n\tconstructor() {\n\t\tsuper();\n\t\tLocateFailureException.constructor_.apply(this, arguments);\n\t}\n\tstatic msgWithSpatial(msg, seg) {\n\t\tif (seg !== null) return msg + \" [ \" + seg + \" ]\";\n\t\treturn msg;\n\t}\n\tgetSegment() {\n\t\treturn this._seg;\n\t}\n\tgetClass() {\n\t\treturn LocateFailureException;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLocateFailureException.constructor_ = function () {\n\tthis._seg = null;\n\tif (arguments.length === 1) {\n\t\tif (typeof arguments[0] === \"string\") {\n\t\t\tlet msg = arguments[0];\n\t\t\tRuntimeException.constructor_.call(this, msg);\n\t\t} else if (arguments[0] instanceof LineSegment) {\n\t\t\tlet seg = arguments[0];\n\t\t\tRuntimeException.constructor_.call(this, \"Locate failed to converge (at edge: \" + seg + \"). Possible causes include invalid Subdivision topology or very close sites\");\n\t\t\tthis._seg = new LineSegment(seg);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet msg = arguments[0], seg = arguments[1];\n\t\tRuntimeException.constructor_.call(this, LocateFailureException.msgWithSpatial(msg, seg));\n\t\tthis._seg = new LineSegment(seg);\n\t}\n};\n","export default class TriangleVisitor {\n\tconstructor() {\n\t\tTriangleVisitor.constructor_.apply(this, arguments);\n\t}\n\tvisit(triEdges) {}\n\tgetClass() {\n\t\treturn TriangleVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nTriangleVisitor.constructor_ = function () {};\n","import QuadEdge from './QuadEdge';\nimport CoordinateList from '../../geom/CoordinateList';\nimport HashSet from '../../../../../java/util/HashSet';\nimport WKTWriter from '../../io/WKTWriter';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Coordinate from '../../geom/Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Stack from '../../../../../java/util/Stack';\nimport LastFoundQuadEdgeLocator from './LastFoundQuadEdgeLocator';\nimport LocateFailureException from './LocateFailureException';\nimport Vertex from './Vertex';\nimport System from '../../../../../java/lang/System';\nimport LineSegment from '../../geom/LineSegment';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Envelope from '../../geom/Envelope';\nimport Triangle from '../../geom/Triangle';\nimport TriangleVisitor from './TriangleVisitor';\nexport default class QuadEdgeSubdivision {\n\tconstructor() {\n\t\tQuadEdgeSubdivision.constructor_.apply(this, arguments);\n\t}\n\tstatic getTriangleEdges(startQE, triEdge) {\n\t\ttriEdge[0] = startQE;\n\t\ttriEdge[1] = triEdge[0].lNext();\n\t\ttriEdge[2] = triEdge[1].lNext();\n\t\tif (triEdge[2].lNext() !== triEdge[0]) throw new IllegalArgumentException(\"Edges do not form a triangle\");\n\t}\n\tgetTriangleVertices(includeFrame) {\n\t\tvar visitor = new TriangleVertexListVisitor();\n\t\tthis.visitTriangles(visitor, includeFrame);\n\t\treturn visitor.getTriangleVertices();\n\t}\n\tisFrameVertex(v) {\n\t\tif (v.equals(this._frameVertex[0])) return true;\n\t\tif (v.equals(this._frameVertex[1])) return true;\n\t\tif (v.equals(this._frameVertex[2])) return true;\n\t\treturn false;\n\t}\n\tisVertexOfEdge(e, v) {\n\t\tif (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tconnect(a, b) {\n\t\tvar q = QuadEdge.connect(a, b);\n\t\tthis._quadEdges.add(q);\n\t\treturn q;\n\t}\n\tgetVoronoiCellPolygon(qe, geomFact) {\n\t\tvar cellPts = new ArrayList();\n\t\tvar startQE = qe;\n\t\tdo {\n\t\t\tvar cc = qe.rot().orig().getCoordinate();\n\t\t\tcellPts.add(cc);\n\t\t\tqe = qe.oPrev();\n\t\t} while (qe !== startQE);\n\t\tvar coordList = new CoordinateList();\n\t\tcoordList.addAll(cellPts, false);\n\t\tcoordList.closeRing();\n\t\tif (coordList.size() < 4) {\n\t\t\tSystem.out.println(coordList);\n\t\t\tcoordList.add(coordList.get(coordList.size() - 1), true);\n\t\t}\n\t\tvar pts = coordList.toCoordinateArray();\n\t\tvar cellPoly = geomFact.createPolygon(geomFact.createLinearRing(pts));\n\t\tvar v = startQE.orig();\n\t\tcellPoly.setUserData(v.getCoordinate());\n\t\treturn cellPoly;\n\t}\n\tsetLocator(locator) {\n\t\tthis._locator = locator;\n\t}\n\tinitSubdiv() {\n\t\tvar ea = this.makeEdge(this._frameVertex[0], this._frameVertex[1]);\n\t\tvar eb = this.makeEdge(this._frameVertex[1], this._frameVertex[2]);\n\t\tQuadEdge.splice(ea.sym(), eb);\n\t\tvar ec = this.makeEdge(this._frameVertex[2], this._frameVertex[0]);\n\t\tQuadEdge.splice(eb.sym(), ec);\n\t\tQuadEdge.splice(ec.sym(), ea);\n\t\treturn ea;\n\t}\n\tisFrameBorderEdge(e) {\n\t\tvar leftTri = new Array(3).fill(null);\n\t\tQuadEdgeSubdivision.getTriangleEdges(e, leftTri);\n\t\tvar rightTri = new Array(3).fill(null);\n\t\tQuadEdgeSubdivision.getTriangleEdges(e.sym(), rightTri);\n\t\tvar vLeftTriOther = e.lNext().dest();\n\t\tif (this.isFrameVertex(vLeftTriOther)) return true;\n\t\tvar vRightTriOther = e.sym().lNext().dest();\n\t\tif (this.isFrameVertex(vRightTriOther)) return true;\n\t\treturn false;\n\t}\n\tmakeEdge(o, d) {\n\t\tvar q = QuadEdge.makeEdge(o, d);\n\t\tthis._quadEdges.add(q);\n\t\treturn q;\n\t}\n\tvisitTriangles(triVisitor, includeFrame) {\n\t\tthis._visitedKey++;\n\t\tvar edgeStack = new Stack();\n\t\tedgeStack.push(this._startingEdge);\n\t\tvar visitedEdges = new HashSet();\n\t\twhile (!edgeStack.empty()) {\n\t\t\tvar edge = edgeStack.pop();\n\t\t\tif (!visitedEdges.contains(edge)) {\n\t\t\t\tvar triEdges = this.fetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges);\n\t\t\t\tif (triEdges !== null) triVisitor.visit(triEdges);\n\t\t\t}\n\t\t}\n\t}\n\tisFrameEdge(e) {\n\t\tif (this.isFrameVertex(e.orig()) || this.isFrameVertex(e.dest())) return true;\n\t\treturn false;\n\t}\n\tisOnEdge(e, p) {\n\t\tthis._seg.setCoordinates(e.orig().getCoordinate(), e.dest().getCoordinate());\n\t\tvar dist = this._seg.distance(p);\n\t\treturn dist < this._edgeCoincidenceTolerance;\n\t}\n\tgetEnvelope() {\n\t\treturn new Envelope(this._frameEnv);\n\t}\n\tcreateFrame(env) {\n\t\tvar deltaX = env.getWidth();\n\t\tvar deltaY = env.getHeight();\n\t\tvar offset = 0.0;\n\t\tif (deltaX > deltaY) {\n\t\t\toffset = deltaX * 10.0;\n\t\t} else {\n\t\t\toffset = deltaY * 10.0;\n\t\t}\n\t\tthis._frameVertex[0] = new Vertex((env.getMaxX() + env.getMinX()) / 2.0, env.getMaxY() + offset);\n\t\tthis._frameVertex[1] = new Vertex(env.getMinX() - offset, env.getMinY() - offset);\n\t\tthis._frameVertex[2] = new Vertex(env.getMaxX() + offset, env.getMinY() - offset);\n\t\tthis._frameEnv = new Envelope(this._frameVertex[0].getCoordinate(), this._frameVertex[1].getCoordinate());\n\t\tthis._frameEnv.expandToInclude(this._frameVertex[2].getCoordinate());\n\t}\n\tgetTriangleCoordinates(includeFrame) {\n\t\tvar visitor = new TriangleCoordinatesVisitor();\n\t\tthis.visitTriangles(visitor, includeFrame);\n\t\treturn visitor.getTriangles();\n\t}\n\tgetVertices(includeFrame) {\n\t\tvar vertices = new HashSet();\n\t\tfor (var i = this._quadEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar qe = i.next();\n\t\t\tvar v = qe.orig();\n\t\t\tif (includeFrame || !this.isFrameVertex(v)) vertices.add(v);\n\t\t\tvar vd = qe.dest();\n\t\t\tif (includeFrame || !this.isFrameVertex(vd)) vertices.add(vd);\n\t\t}\n\t\treturn vertices;\n\t}\n\tfetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges) {\n\t\tvar curr = edge;\n\t\tvar edgeCount = 0;\n\t\tvar isFrame = false;\n\t\tdo {\n\t\t\tthis._triEdges[edgeCount] = curr;\n\t\t\tif (this.isFrameEdge(curr)) isFrame = true;\n\t\t\tvar sym = curr.sym();\n\t\t\tif (!visitedEdges.contains(sym)) edgeStack.push(sym);\n\t\t\tvisitedEdges.add(curr);\n\t\t\tedgeCount++;\n\t\t\tcurr = curr.lNext();\n\t\t} while (curr !== edge);\n\t\tif (isFrame && !includeFrame) return null;\n\t\treturn this._triEdges;\n\t}\n\tgetEdges() {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this._quadEdges;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet geomFact = arguments[0];\n\t\t\tvar quadEdges = this.getPrimaryEdges(false);\n\t\t\tvar edges = new Array(quadEdges.size()).fill(null);\n\t\t\tvar i = 0;\n\t\t\tfor (var it = quadEdges.iterator(); it.hasNext(); ) {\n\t\t\t\tvar qe = it.next();\n\t\t\t\tedges[i++] = geomFact.createLineString([qe.orig().getCoordinate(), qe.dest().getCoordinate()]);\n\t\t\t}\n\t\t\treturn geomFact.createMultiLineString(edges);\n\t\t}\n\t}\n\tgetVertexUniqueEdges(includeFrame) {\n\t\tvar edges = new ArrayList();\n\t\tvar visitedVertices = new HashSet();\n\t\tfor (var i = this._quadEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar qe = i.next();\n\t\t\tvar v = qe.orig();\n\t\t\tif (!visitedVertices.contains(v)) {\n\t\t\t\tvisitedVertices.add(v);\n\t\t\t\tif (includeFrame || !this.isFrameVertex(v)) {\n\t\t\t\t\tedges.add(qe);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar qd = qe.sym();\n\t\t\tvar vd = qd.orig();\n\t\t\tif (!visitedVertices.contains(vd)) {\n\t\t\t\tvisitedVertices.add(vd);\n\t\t\t\tif (includeFrame || !this.isFrameVertex(vd)) {\n\t\t\t\t\tedges.add(qd);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn edges;\n\t}\n\tgetTriangleEdges(includeFrame) {\n\t\tvar visitor = new TriangleEdgesListVisitor();\n\t\tthis.visitTriangles(visitor, includeFrame);\n\t\treturn visitor.getTriangleEdges();\n\t}\n\tgetPrimaryEdges(includeFrame) {\n\t\tthis._visitedKey++;\n\t\tvar edges = new ArrayList();\n\t\tvar edgeStack = new Stack();\n\t\tedgeStack.push(this._startingEdge);\n\t\tvar visitedEdges = new HashSet();\n\t\twhile (!edgeStack.empty()) {\n\t\t\tvar edge = edgeStack.pop();\n\t\t\tif (!visitedEdges.contains(edge)) {\n\t\t\t\tvar priQE = edge.getPrimary();\n\t\t\t\tif (includeFrame || !this.isFrameEdge(priQE)) edges.add(priQE);\n\t\t\t\tedgeStack.push(edge.oNext());\n\t\t\t\tedgeStack.push(edge.sym().oNext());\n\t\t\t\tvisitedEdges.add(edge);\n\t\t\t\tvisitedEdges.add(edge.sym());\n\t\t\t}\n\t\t}\n\t\treturn edges;\n\t}\n\tdelete(e) {\n\t\tQuadEdge.splice(e, e.oPrev());\n\t\tQuadEdge.splice(e.sym(), e.sym().oPrev());\n\t\tvar eSym = e.sym();\n\t\tvar eRot = e.rot();\n\t\tvar eRotSym = e.rot().sym();\n\t\tthis._quadEdges.remove(e);\n\t\tthis._quadEdges.remove(eSym);\n\t\tthis._quadEdges.remove(eRot);\n\t\tthis._quadEdges.remove(eRotSym);\n\t\te.delete();\n\t\teSym.delete();\n\t\teRot.delete();\n\t\teRotSym.delete();\n\t}\n\tlocateFromEdge(v, startEdge) {\n\t\tvar iter = 0;\n\t\tvar maxIter = this._quadEdges.size();\n\t\tvar e = startEdge;\n\t\twhile (true) {\n\t\t\titer++;\n\t\t\tif (iter > maxIter) {\n\t\t\t\tthrow new LocateFailureException(e.toLineSegment());\n\t\t\t}\n\t\t\tif (v.equals(e.orig()) || v.equals(e.dest())) {\n\t\t\t\tbreak;\n\t\t\t} else if (v.rightOf(e)) {\n\t\t\t\te = e.sym();\n\t\t\t} else if (!v.rightOf(e.oNext())) {\n\t\t\t\te = e.oNext();\n\t\t\t} else if (!v.rightOf(e.dPrev())) {\n\t\t\t\te = e.dPrev();\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn e;\n\t}\n\tgetTolerance() {\n\t\treturn this._tolerance;\n\t}\n\tgetVoronoiCellPolygons(geomFact) {\n\t\tthis.visitTriangles(new TriangleCircumcentreVisitor(), true);\n\t\tvar cells = new ArrayList();\n\t\tvar edges = this.getVertexUniqueEdges(false);\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar qe = i.next();\n\t\t\tcells.add(this.getVoronoiCellPolygon(qe, geomFact));\n\t\t}\n\t\treturn cells;\n\t}\n\tgetVoronoiDiagram(geomFact) {\n\t\tvar vorCells = this.getVoronoiCellPolygons(geomFact);\n\t\treturn geomFact.createGeometryCollection(GeometryFactory.toGeometryArray(vorCells));\n\t}\n\tgetTriangles(geomFact) {\n\t\tvar triPtsList = this.getTriangleCoordinates(false);\n\t\tvar tris = new Array(triPtsList.size()).fill(null);\n\t\tvar i = 0;\n\t\tfor (var it = triPtsList.iterator(); it.hasNext(); ) {\n\t\t\tvar triPt = it.next();\n\t\t\ttris[i++] = geomFact.createPolygon(geomFact.createLinearRing(triPt));\n\t\t}\n\t\treturn geomFact.createGeometryCollection(tris);\n\t}\n\tinsertSite(v) {\n\t\tvar e = this.locate(v);\n\t\tif (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) {\n\t\t\treturn e;\n\t\t}\n\t\tvar base = this.makeEdge(e.orig(), v);\n\t\tQuadEdge.splice(base, e);\n\t\tvar startEdge = base;\n\t\tdo {\n\t\t\tbase = this.connect(e, base.sym());\n\t\t\te = base.oPrev();\n\t\t} while (e.lNext() !== startEdge);\n\t\treturn startEdge;\n\t}\n\tlocate() {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Vertex) {\n\t\t\t\tlet v = arguments[0];\n\t\t\t\treturn this._locator.locate(v);\n\t\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this._locator.locate(new Vertex(p));\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tvar e = this._locator.locate(new Vertex(p0));\n\t\t\tif (e === null) return null;\n\t\t\tvar base = e;\n\t\t\tif (e.dest().getCoordinate().equals2D(p0)) base = e.sym();\n\t\t\tvar locEdge = base;\n\t\t\tdo {\n\t\t\t\tif (locEdge.dest().getCoordinate().equals2D(p1)) return locEdge;\n\t\t\t\tlocEdge = locEdge.oNext();\n\t\t\t} while (locEdge !== base);\n\t\t\treturn null;\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn QuadEdgeSubdivision;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nclass TriangleCircumcentreVisitor {\n\tconstructor() {\n\t\tTriangleCircumcentreVisitor.constructor_.apply(this, arguments);\n\t}\n\tvisit(triEdges) {\n\t\tvar a = triEdges[0].orig().getCoordinate();\n\t\tvar b = triEdges[1].orig().getCoordinate();\n\t\tvar c = triEdges[2].orig().getCoordinate();\n\t\tvar cc = Triangle.circumcentre(a, b, c);\n\t\tvar ccVertex = new Vertex(cc);\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\ttriEdges[i].rot().setOrig(ccVertex);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn TriangleCircumcentreVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [TriangleVisitor];\n\t}\n}\nTriangleCircumcentreVisitor.constructor_ = function () {};\nclass TriangleEdgesListVisitor {\n\tconstructor() {\n\t\tTriangleEdgesListVisitor.constructor_.apply(this, arguments);\n\t}\n\tgetTriangleEdges() {\n\t\treturn this._triList;\n\t}\n\tvisit(triEdges) {\n\t\tthis._triList.add(triEdges);\n\t}\n\tgetClass() {\n\t\treturn TriangleEdgesListVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [TriangleVisitor];\n\t}\n}\nTriangleEdgesListVisitor.constructor_ = function () {\n\tthis._triList = new ArrayList();\n};\nclass TriangleVertexListVisitor {\n\tconstructor() {\n\t\tTriangleVertexListVisitor.constructor_.apply(this, arguments);\n\t}\n\tvisit(triEdges) {\n\t\tthis._triList.add([triEdges[0].orig(), triEdges[1].orig(), triEdges[2].orig()]);\n\t}\n\tgetTriangleVertices() {\n\t\treturn this._triList;\n\t}\n\tgetClass() {\n\t\treturn TriangleVertexListVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [TriangleVisitor];\n\t}\n}\nTriangleVertexListVisitor.constructor_ = function () {\n\tthis._triList = new ArrayList();\n};\nclass TriangleCoordinatesVisitor {\n\tconstructor() {\n\t\tTriangleCoordinatesVisitor.constructor_.apply(this, arguments);\n\t}\n\tcheckTriangleSize(pts) {\n\t\tvar loc = \"\";\n\t\tif (pts.length >= 2) loc = WKTWriter.toLineString(pts[0], pts[1]); else {\n\t\t\tif (pts.length >= 1) loc = WKTWriter.toPoint(pts[0]);\n\t\t}\n\t}\n\tvisit(triEdges) {\n\t\tthis._coordList.clear();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tvar v = triEdges[i].orig();\n\t\t\tthis._coordList.add(v.getCoordinate());\n\t\t}\n\t\tif (this._coordList.size() > 0) {\n\t\t\tthis._coordList.closeRing();\n\t\t\tvar pts = this._coordList.toCoordinateArray();\n\t\t\tif (pts.length !== 4) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tthis._triCoords.add(pts);\n\t\t}\n\t}\n\tgetTriangles() {\n\t\treturn this._triCoords;\n\t}\n\tgetClass() {\n\t\treturn TriangleCoordinatesVisitor;\n\t}\n\tget interfaces_() {\n\t\treturn [TriangleVisitor];\n\t}\n}\nTriangleCoordinatesVisitor.constructor_ = function () {\n\tthis._coordList = new CoordinateList();\n\tthis._triCoords = new ArrayList();\n};\nQuadEdgeSubdivision.TriangleCircumcentreVisitor = TriangleCircumcentreVisitor;\nQuadEdgeSubdivision.TriangleEdgesListVisitor = TriangleEdgesListVisitor;\nQuadEdgeSubdivision.TriangleVertexListVisitor = TriangleVertexListVisitor;\nQuadEdgeSubdivision.TriangleCoordinatesVisitor = TriangleCoordinatesVisitor;\nQuadEdgeSubdivision.constructor_ = function () {\n\tthis._visitedKey = 0;\n\tthis._quadEdges = new ArrayList();\n\tthis._startingEdge = null;\n\tthis._tolerance = null;\n\tthis._edgeCoincidenceTolerance = null;\n\tthis._frameVertex = new Array(3).fill(null);\n\tthis._frameEnv = null;\n\tthis._locator = null;\n\tthis._seg = new LineSegment();\n\tthis._triEdges = new Array(3).fill(null);\n\tlet env = arguments[0], tolerance = arguments[1];\n\tthis._tolerance = tolerance;\n\tthis._edgeCoincidenceTolerance = tolerance / QuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR;\n\tthis.createFrame(env);\n\tthis._startingEdge = this.initSubdiv();\n\tthis._locator = new LastFoundQuadEdgeLocator(this);\n};\nQuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR = 1000;\n","import Coordinate from '../geom/Coordinate';\nimport LineSegment from '../geom/LineSegment';\nexport default class Segment {\n\tconstructor() {\n\t\tSegment.constructor_.apply(this, arguments);\n\t}\n\tgetLineSegment() {\n\t\treturn this._ls;\n\t}\n\tgetEndZ() {\n\t\tvar p = this._ls.getCoordinate(1);\n\t\treturn p.z;\n\t}\n\tgetStartZ() {\n\t\tvar p = this._ls.getCoordinate(0);\n\t\treturn p.z;\n\t}\n\tintersection(s) {\n\t\treturn this._ls.intersection(s.getLineSegment());\n\t}\n\tgetStart() {\n\t\treturn this._ls.getCoordinate(0);\n\t}\n\tgetEnd() {\n\t\treturn this._ls.getCoordinate(1);\n\t}\n\tgetEndY() {\n\t\tvar p = this._ls.getCoordinate(1);\n\t\treturn p.y;\n\t}\n\tgetStartX() {\n\t\tvar p = this._ls.getCoordinate(0);\n\t\treturn p.x;\n\t}\n\tequalsTopo(s) {\n\t\treturn this._ls.equalsTopo(s.getLineSegment());\n\t}\n\tgetStartY() {\n\t\tvar p = this._ls.getCoordinate(0);\n\t\treturn p.y;\n\t}\n\tsetData(data) {\n\t\tthis._data = data;\n\t}\n\tgetData() {\n\t\treturn this._data;\n\t}\n\tgetEndX() {\n\t\tvar p = this._ls.getCoordinate(1);\n\t\treturn p.x;\n\t}\n\ttoString() {\n\t\treturn this._ls.toString();\n\t}\n\tgetClass() {\n\t\treturn Segment;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nSegment.constructor_ = function () {\n\tthis._ls = null;\n\tthis._data = null;\n\tif (arguments.length === 2) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tthis._ls = new LineSegment(p0, p1);\n\t} else if (arguments.length === 3) {\n\t\tlet p0 = arguments[0], p1 = arguments[1], data = arguments[2];\n\t\tthis._ls = new LineSegment(p0, p1);\n\t\tthis._data = data;\n\t} else if (arguments.length === 6) {\n\t\tlet x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5];\n\t\tSegment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2));\n\t} else if (arguments.length === 7) {\n\t\tlet x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5], data = arguments[6];\n\t\tSegment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data);\n\t}\n};\n","import GeometryFactory from '../geom/GeometryFactory';\nimport NonEncroachingSplitPointFinder from './NonEncroachingSplitPointFinder';\nimport ConstraintVertex from './ConstraintVertex';\nimport Coordinate from '../geom/Coordinate';\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator';\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision';\nimport Double from '../../../../java/lang/Double';\nimport LastFoundQuadEdgeLocator from './quadedge/LastFoundQuadEdgeLocator';\nimport Segment from './Segment';\nimport ConvexHull from '../algorithm/ConvexHull';\nimport KdTree from '../index/kdtree/KdTree';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Envelope from '../geom/Envelope';\nexport default class ConformingDelaunayTriangulator {\n\tconstructor() {\n\t\tConformingDelaunayTriangulator.constructor_.apply(this, arguments);\n\t}\n\tstatic computeVertexEnvelope(vertices) {\n\t\tvar env = new Envelope();\n\t\tfor (var i = vertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tenv.expandToInclude(v.getCoordinate());\n\t\t}\n\t\treturn env;\n\t}\n\tgetInitialVertices() {\n\t\treturn this._initialVertices;\n\t}\n\tgetKDT() {\n\t\treturn this._kdt;\n\t}\n\tenforceConstraints() {\n\t\tthis.addConstraintVertices();\n\t\tvar count = 0;\n\t\tvar splits = 0;\n\t\tdo {\n\t\t\tsplits = this.enforceGabriel(this._segments);\n\t\t\tcount++;\n\t\t} while (splits > 0 && count < ConformingDelaunayTriangulator.MAX_SPLIT_ITER);\n\t}\n\tinsertSites(vertices) {\n\t\tfor (var i = vertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tthis.insertSite(v);\n\t\t}\n\t}\n\tgetVertexFactory() {\n\t\treturn this._vertexFactory;\n\t}\n\tgetPointArray() {\n\t\tvar pts = new Array(this._initialVertices.size() + this._segVertices.size()).fill(null);\n\t\tvar index = 0;\n\t\tfor (var i = this._initialVertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tpts[index++] = v.getCoordinate();\n\t\t}\n\t\tfor (var i2 = this._segVertices.iterator(); i2.hasNext(); ) {\n\t\t\tvar v = i2.next();\n\t\t\tpts[index++] = v.getCoordinate();\n\t\t}\n\t\treturn pts;\n\t}\n\tsetConstraints(segments, segVertices) {\n\t\tthis._segments = segments;\n\t\tthis._segVertices = segVertices;\n\t}\n\tcomputeConvexHull() {\n\t\tvar fact = new GeometryFactory();\n\t\tvar coords = this.getPointArray();\n\t\tvar hull = new ConvexHull(coords, fact);\n\t\tthis._convexHull = hull.getConvexHull();\n\t}\n\taddConstraintVertices() {\n\t\tthis.computeConvexHull();\n\t\tthis.insertSites(this._segVertices);\n\t}\n\tfindNonGabrielPoint(seg) {\n\t\tvar p = seg.getStart();\n\t\tvar q = seg.getEnd();\n\t\tvar midPt = new Coordinate((p.x + q.x) / 2.0, (p.y + q.y) / 2.0);\n\t\tvar segRadius = p.distance(midPt);\n\t\tvar env = new Envelope(midPt);\n\t\tenv.expandBy(segRadius);\n\t\tvar result = this._kdt.query(env);\n\t\tvar closestNonGabriel = null;\n\t\tvar minDist = Double.MAX_VALUE;\n\t\tfor (var i = result.iterator(); i.hasNext(); ) {\n\t\t\tvar nextNode = i.next();\n\t\t\tvar testPt = nextNode.getCoordinate();\n\t\t\tif (testPt.equals2D(p) || testPt.equals2D(q)) continue;\n\t\t\tvar testRadius = midPt.distance(testPt);\n\t\t\tif (testRadius < segRadius) {\n\t\t\t\tvar testDist = testRadius;\n\t\t\t\tif (closestNonGabriel === null || testDist < minDist) {\n\t\t\t\t\tclosestNonGabriel = testPt;\n\t\t\t\t\tminDist = testDist;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn closestNonGabriel;\n\t}\n\tgetConstraintSegments() {\n\t\treturn this._segments;\n\t}\n\tsetSplitPointFinder(splitFinder) {\n\t\tthis._splitFinder = splitFinder;\n\t}\n\tgetConvexHull() {\n\t\treturn this._convexHull;\n\t}\n\tgetTolerance() {\n\t\treturn this._tolerance;\n\t}\n\tenforceGabriel(segsToInsert) {\n\t\tvar newSegments = new ArrayList();\n\t\tvar splits = 0;\n\t\tvar segsToRemove = new ArrayList();\n\t\tfor (var i = segsToInsert.iterator(); i.hasNext(); ) {\n\t\t\tvar seg = i.next();\n\t\t\tvar encroachPt = this.findNonGabrielPoint(seg);\n\t\t\tif (encroachPt === null) continue;\n\t\t\tthis._splitPt = this._splitFinder.findSplitPoint(seg, encroachPt);\n\t\t\tvar splitVertex = this.createVertex(this._splitPt, seg);\n\t\t\tvar insertedVertex = this.insertSite(splitVertex);\n\t\t\tif (!insertedVertex.getCoordinate().equals2D(this._splitPt)) {}\n\t\t\tvar s1 = new Segment(seg.getStartX(), seg.getStartY(), seg.getStartZ(), splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getData());\n\t\t\tvar s2 = new Segment(splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getEndX(), seg.getEndY(), seg.getEndZ(), seg.getData());\n\t\t\tnewSegments.add(s1);\n\t\t\tnewSegments.add(s2);\n\t\t\tsegsToRemove.add(seg);\n\t\t\tsplits = splits + 1;\n\t\t}\n\t\tsegsToInsert.removeAll(segsToRemove);\n\t\tsegsToInsert.addAll(newSegments);\n\t\treturn splits;\n\t}\n\tcreateVertex() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet p = arguments[0];\n\t\t\tvar v = null;\n\t\t\tif (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, null); else v = new ConstraintVertex(p);\n\t\t\treturn v;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p = arguments[0], seg = arguments[1];\n\t\t\tvar v = null;\n\t\t\tif (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, seg); else v = new ConstraintVertex(p);\n\t\t\tv.setOnConstraint(true);\n\t\t\treturn v;\n\t\t}\n\t}\n\tgetSubdivision() {\n\t\treturn this._subdiv;\n\t}\n\tcomputeBoundingBox() {\n\t\tvar vertexEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._initialVertices);\n\t\tvar segEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._segVertices);\n\t\tvar allPointsEnv = new Envelope(vertexEnv);\n\t\tallPointsEnv.expandToInclude(segEnv);\n\t\tvar deltaX = allPointsEnv.getWidth() * 0.2;\n\t\tvar deltaY = allPointsEnv.getHeight() * 0.2;\n\t\tvar delta = Math.max(deltaX, deltaY);\n\t\tthis._computeAreaEnv = new Envelope(allPointsEnv);\n\t\tthis._computeAreaEnv.expandBy(delta);\n\t}\n\tsetVertexFactory(vertexFactory) {\n\t\tthis._vertexFactory = vertexFactory;\n\t}\n\tformInitialDelaunay() {\n\t\tthis.computeBoundingBox();\n\t\tthis._subdiv = new QuadEdgeSubdivision(this._computeAreaEnv, this._tolerance);\n\t\tthis._subdiv.setLocator(new LastFoundQuadEdgeLocator(this._subdiv));\n\t\tthis._incDel = new IncrementalDelaunayTriangulator(this._subdiv);\n\t\tthis.insertSites(this._initialVertices);\n\t}\n\tinsertSite() {\n\t\tif (arguments[0] instanceof ConstraintVertex) {\n\t\t\tlet v = arguments[0];\n\t\t\tvar kdnode = this._kdt.insert(v.getCoordinate(), v);\n\t\t\tif (!kdnode.isRepeated()) {\n\t\t\t\tthis._incDel.insertSite(v);\n\t\t\t} else {\n\t\t\t\tvar snappedV = kdnode.getData();\n\t\t\t\tsnappedV.merge(v);\n\t\t\t\treturn snappedV;\n\t\t\t}\n\t\t\treturn v;\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\tthis.insertSite(this.createVertex(p));\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn ConformingDelaunayTriangulator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nConformingDelaunayTriangulator.constructor_ = function () {\n\tthis._initialVertices = null;\n\tthis._segVertices = null;\n\tthis._segments = new ArrayList();\n\tthis._subdiv = null;\n\tthis._incDel = null;\n\tthis._convexHull = null;\n\tthis._splitFinder = new NonEncroachingSplitPointFinder();\n\tthis._kdt = null;\n\tthis._vertexFactory = null;\n\tthis._computeAreaEnv = null;\n\tthis._splitPt = null;\n\tthis._tolerance = null;\n\tlet initialVertices = arguments[0], tolerance = arguments[1];\n\tthis._initialVertices = new ArrayList(initialVertices);\n\tthis._tolerance = tolerance;\n\tthis._kdt = new KdTree(tolerance);\n};\nConformingDelaunayTriangulator.MAX_SPLIT_ITER = 99;\n","import CoordinateList from '../geom/CoordinateList';\nimport Geometry from '../geom/Geometry';\nimport Arrays from '../../../../java/util/Arrays';\nimport hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator';\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision';\nimport Vertex from './quadedge/Vertex';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Envelope from '../geom/Envelope';\nexport default class DelaunayTriangulationBuilder {\n\tconstructor() {\n\t\tDelaunayTriangulationBuilder.constructor_.apply(this, arguments);\n\t}\n\tstatic extractUniqueCoordinates(geom) {\n\t\tif (geom === null) return new CoordinateList();\n\t\tvar coords = geom.getCoordinates();\n\t\treturn DelaunayTriangulationBuilder.unique(coords);\n\t}\n\tstatic envelope(coords) {\n\t\tvar env = new Envelope();\n\t\tfor (var i = coords.iterator(); i.hasNext(); ) {\n\t\t\tvar coord = i.next();\n\t\t\tenv.expandToInclude(coord);\n\t\t}\n\t\treturn env;\n\t}\n\tstatic unique(coords) {\n\t\tvar coordsCopy = CoordinateArrays.copyDeep(coords);\n\t\tArrays.sort(coordsCopy);\n\t\tvar coordList = new CoordinateList(coordsCopy, false);\n\t\treturn coordList;\n\t}\n\tstatic toVertices(coords) {\n\t\tvar verts = new ArrayList();\n\t\tfor (var i = coords.iterator(); i.hasNext(); ) {\n\t\t\tvar coord = i.next();\n\t\t\tverts.add(new Vertex(coord));\n\t\t}\n\t\treturn verts;\n\t}\n\tcreate() {\n\t\tif (this._subdiv !== null) return null;\n\t\tvar siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords);\n\t\tvar vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords);\n\t\tthis._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance);\n\t\tvar triangulator = new IncrementalDelaunayTriangulator(this._subdiv);\n\t\ttriangulator.insertSites(vertices);\n\t}\n\tsetTolerance(tolerance) {\n\t\tthis._tolerance = tolerance;\n\t}\n\tsetSites() {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet coords = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords));\n\t\t}\n\t}\n\tgetEdges(geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getEdges(geomFact);\n\t}\n\tgetSubdivision() {\n\t\tthis.create();\n\t\treturn this._subdiv;\n\t}\n\tgetTriangles(geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getTriangles(geomFact);\n\t}\n\tgetClass() {\n\t\treturn DelaunayTriangulationBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nDelaunayTriangulationBuilder.constructor_ = function () {\n\tthis._siteCoords = null;\n\tthis._tolerance = 0.0;\n\tthis._subdiv = null;\n};\n","import ConformingDelaunayTriangulator from './ConformingDelaunayTriangulator';\nimport ConstraintVertex from './ConstraintVertex';\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder';\nimport Segment from './Segment';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default class ConformingDelaunayTriangulationBuilder {\n\tconstructor() {\n\t\tConformingDelaunayTriangulationBuilder.constructor_.apply(this, arguments);\n\t}\n\tstatic createConstraintSegments() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geom = arguments[0];\n\t\t\tvar lines = LinearComponentExtracter.getLines(geom);\n\t\t\tvar constraintSegs = new ArrayList();\n\t\t\tfor (var i = lines.iterator(); i.hasNext(); ) {\n\t\t\t\tvar line = i.next();\n\t\t\t\tConformingDelaunayTriangulationBuilder.createConstraintSegments(line, constraintSegs);\n\t\t\t}\n\t\t\treturn constraintSegs;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet line = arguments[0], constraintSegs = arguments[1];\n\t\t\tvar coords = line.getCoordinates();\n\t\t\tfor (var i = 1; i < coords.length; i++) {\n\t\t\t\tconstraintSegs.add(new Segment(coords[i - 1], coords[i]));\n\t\t\t}\n\t\t}\n\t}\n\tcreateSiteVertices(coords) {\n\t\tvar verts = new ArrayList();\n\t\tfor (var i = coords.iterator(); i.hasNext(); ) {\n\t\t\tvar coord = i.next();\n\t\t\tif (this._constraintVertexMap.containsKey(coord)) continue;\n\t\t\tverts.add(new ConstraintVertex(coord));\n\t\t}\n\t\treturn verts;\n\t}\n\tcreate() {\n\t\tif (this._subdiv !== null) return null;\n\t\tvar siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords);\n\t\tvar segments = new ArrayList();\n\t\tif (this._constraintLines !== null) {\n\t\t\tsiteEnv.expandToInclude(this._constraintLines.getEnvelopeInternal());\n\t\t\tthis.createVertices(this._constraintLines);\n\t\t\tsegments = ConformingDelaunayTriangulationBuilder.createConstraintSegments(this._constraintLines);\n\t\t}\n\t\tvar sites = this.createSiteVertices(this._siteCoords);\n\t\tvar cdt = new ConformingDelaunayTriangulator(sites, this._tolerance);\n\t\tcdt.setConstraints(segments, new ArrayList(this._constraintVertexMap.values()));\n\t\tcdt.formInitialDelaunay();\n\t\tcdt.enforceConstraints();\n\t\tthis._subdiv = cdt.getSubdivision();\n\t}\n\tsetTolerance(tolerance) {\n\t\tthis._tolerance = tolerance;\n\t}\n\tsetConstraints(constraintLines) {\n\t\tthis._constraintLines = constraintLines;\n\t}\n\tsetSites(geom) {\n\t\tthis._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);\n\t}\n\tgetEdges(geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getEdges(geomFact);\n\t}\n\tgetSubdivision() {\n\t\tthis.create();\n\t\treturn this._subdiv;\n\t}\n\tgetTriangles(geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getTriangles(geomFact);\n\t}\n\tcreateVertices(geom) {\n\t\tvar coords = geom.getCoordinates();\n\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\tvar v = new ConstraintVertex(coords[i]);\n\t\t\tthis._constraintVertexMap.put(coords[i], v);\n\t\t}\n\t}\n\tgetClass() {\n\t\treturn ConformingDelaunayTriangulationBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nConformingDelaunayTriangulationBuilder.constructor_ = function () {\n\tthis._siteCoords = null;\n\tthis._constraintLines = null;\n\tthis._tolerance = 0.0;\n\tthis._subdiv = null;\n\tthis._constraintVertexMap = new TreeMap();\n};\n","import Geometry from '../geom/Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport GeometryFactory from '../geom/GeometryFactory';\nimport Collection from '../../../../java/util/Collection';\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator';\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision';\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class VoronoiDiagramBuilder {\n\tconstructor() {\n\t\tVoronoiDiagramBuilder.constructor_.apply(this, arguments);\n\t}\n\tstatic clipGeometryCollection(geom, clipEnv) {\n\t\tvar clipPoly = geom.getFactory().toGeometry(clipEnv);\n\t\tvar clipped = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar g = geom.getGeometryN(i);\n\t\t\tvar result = null;\n\t\t\tif (clipEnv.contains(g.getEnvelopeInternal())) result = g; else if (clipEnv.intersects(g.getEnvelopeInternal())) {\n\t\t\t\tresult = clipPoly.intersection(g);\n\t\t\t\tresult.setUserData(g.getUserData());\n\t\t\t}\n\t\t\tif (result !== null && !result.isEmpty()) {\n\t\t\t\tclipped.add(result);\n\t\t\t}\n\t\t}\n\t\treturn geom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(clipped));\n\t}\n\tcreate() {\n\t\tif (this._subdiv !== null) return null;\n\t\tvar siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords);\n\t\tthis._diagramEnv = siteEnv;\n\t\tvar expandBy = Math.max(this._diagramEnv.getWidth(), this._diagramEnv.getHeight());\n\t\tthis._diagramEnv.expandBy(expandBy);\n\t\tif (this._clipEnv !== null) this._diagramEnv.expandToInclude(this._clipEnv);\n\t\tvar vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords);\n\t\tthis._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance);\n\t\tvar triangulator = new IncrementalDelaunayTriangulator(this._subdiv);\n\t\ttriangulator.insertSites(vertices);\n\t}\n\tgetDiagram(geomFact) {\n\t\tthis.create();\n\t\tvar polys = this._subdiv.getVoronoiDiagram(geomFact);\n\t\treturn VoronoiDiagramBuilder.clipGeometryCollection(polys, this._diagramEnv);\n\t}\n\tsetTolerance(tolerance) {\n\t\tthis._tolerance = tolerance;\n\t}\n\tsetSites() {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet coords = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords));\n\t\t}\n\t}\n\tsetClipEnvelope(clipEnv) {\n\t\tthis._clipEnv = clipEnv;\n\t}\n\tgetSubdivision() {\n\t\tthis.create();\n\t\treturn this._subdiv;\n\t}\n\tgetClass() {\n\t\treturn VoronoiDiagramBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nVoronoiDiagramBuilder.constructor_ = function () {\n\tthis._siteCoords = null;\n\tthis._tolerance = 0.0;\n\tthis._subdiv = null;\n\tthis._clipEnv = null;\n\tthis._diagramEnv = null;\n};\n","import Coordinate from '../geom/Coordinate';\nimport LineSegment from '../geom/LineSegment';\nimport Comparable from '../../../../java/lang/Comparable';\nexport default class LinearLocation {\n\tconstructor() {\n\t\tLinearLocation.constructor_.apply(this, arguments);\n\t}\n\tstatic getEndLocation(linear) {\n\t\tvar loc = new LinearLocation();\n\t\tloc.setToEnd(linear);\n\t\treturn loc;\n\t}\n\tstatic pointAlongSegmentByFraction(p0, p1, frac) {\n\t\tif (frac <= 0.0) return p0;\n\t\tif (frac >= 1.0) return p1;\n\t\tvar x = (p1.x - p0.x) * frac + p0.x;\n\t\tvar y = (p1.y - p0.y) * frac + p0.y;\n\t\tvar z = (p1.z - p0.z) * frac + p0.z;\n\t\treturn new Coordinate(x, y, z);\n\t}\n\tstatic compareLocationValues(componentIndex0, segmentIndex0, segmentFraction0, componentIndex1, segmentIndex1, segmentFraction1) {\n\t\tif (componentIndex0 < componentIndex1) return -1;\n\t\tif (componentIndex0 > componentIndex1) return 1;\n\t\tif (segmentIndex0 < segmentIndex1) return -1;\n\t\tif (segmentIndex0 > segmentIndex1) return 1;\n\t\tif (segmentFraction0 < segmentFraction1) return -1;\n\t\tif (segmentFraction0 > segmentFraction1) return 1;\n\t\treturn 0;\n\t}\n\tgetSegmentIndex() {\n\t\treturn this._segmentIndex;\n\t}\n\tgetComponentIndex() {\n\t\treturn this._componentIndex;\n\t}\n\tisEndpoint(linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar nseg = lineComp.getNumPoints() - 1;\n\t\treturn this._segmentIndex >= nseg || this._segmentIndex === nseg && this._segmentFraction >= 1.0;\n\t}\n\tisValid(linearGeom) {\n\t\tif (this._componentIndex < 0 || this._componentIndex >= linearGeom.getNumGeometries()) return false;\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tif (this._segmentIndex < 0 || this._segmentIndex > lineComp.getNumPoints()) return false;\n\t\tif (this._segmentIndex === lineComp.getNumPoints() && this._segmentFraction !== 0.0) return false;\n\t\tif (this._segmentFraction < 0.0 || this._segmentFraction > 1.0) return false;\n\t\treturn true;\n\t}\n\tnormalize() {\n\t\tif (this._segmentFraction < 0.0) {\n\t\t\tthis._segmentFraction = 0.0;\n\t\t}\n\t\tif (this._segmentFraction > 1.0) {\n\t\t\tthis._segmentFraction = 1.0;\n\t\t}\n\t\tif (this._componentIndex < 0) {\n\t\t\tthis._componentIndex = 0;\n\t\t\tthis._segmentIndex = 0;\n\t\t\tthis._segmentFraction = 0.0;\n\t\t}\n\t\tif (this._segmentIndex < 0) {\n\t\t\tthis._segmentIndex = 0;\n\t\t\tthis._segmentFraction = 0.0;\n\t\t}\n\t\tif (this._segmentFraction === 1.0) {\n\t\t\tthis._segmentFraction = 0.0;\n\t\t\tthis._segmentIndex += 1;\n\t\t}\n\t}\n\ttoLowest(linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar nseg = lineComp.getNumPoints() - 1;\n\t\tif (this._segmentIndex < nseg) return this;\n\t\treturn new LinearLocation(this._componentIndex, nseg, 1.0, false);\n\t}\n\tgetCoordinate(linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar p0 = lineComp.getCoordinateN(this._segmentIndex);\n\t\tif (this._segmentIndex >= lineComp.getNumPoints() - 1) return p0;\n\t\tvar p1 = lineComp.getCoordinateN(this._segmentIndex + 1);\n\t\treturn LinearLocation.pointAlongSegmentByFraction(p0, p1, this._segmentFraction);\n\t}\n\tgetSegmentFraction() {\n\t\treturn this._segmentFraction;\n\t}\n\tgetSegment(linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar p0 = lineComp.getCoordinateN(this._segmentIndex);\n\t\tif (this._segmentIndex >= lineComp.getNumPoints() - 1) {\n\t\t\tvar prev = lineComp.getCoordinateN(lineComp.getNumPoints() - 2);\n\t\t\treturn new LineSegment(prev, p0);\n\t\t}\n\t\tvar p1 = lineComp.getCoordinateN(this._segmentIndex + 1);\n\t\treturn new LineSegment(p0, p1);\n\t}\n\tclamp(linear) {\n\t\tif (this._componentIndex >= linear.getNumGeometries()) {\n\t\t\tthis.setToEnd(linear);\n\t\t\treturn null;\n\t\t}\n\t\tif (this._segmentIndex >= linear.getNumPoints()) {\n\t\t\tvar line = linear.getGeometryN(this._componentIndex);\n\t\t\tthis._segmentIndex = line.getNumPoints() - 1;\n\t\t\tthis._segmentFraction = 1.0;\n\t\t}\n\t}\n\tsetToEnd(linear) {\n\t\tthis._componentIndex = linear.getNumGeometries() - 1;\n\t\tvar lastLine = linear.getGeometryN(this._componentIndex);\n\t\tthis._segmentIndex = lastLine.getNumPoints() - 1;\n\t\tthis._segmentFraction = 1.0;\n\t}\n\tcompareTo(o) {\n\t\tvar other = o;\n\t\tif (this._componentIndex < other._componentIndex) return -1;\n\t\tif (this._componentIndex > other._componentIndex) return 1;\n\t\tif (this._segmentIndex < other._segmentIndex) return -1;\n\t\tif (this._segmentIndex > other._segmentIndex) return 1;\n\t\tif (this._segmentFraction < other._segmentFraction) return -1;\n\t\tif (this._segmentFraction > other._segmentFraction) return 1;\n\t\treturn 0;\n\t}\n\tcopy() {\n\t\treturn new LinearLocation(this._componentIndex, this._segmentIndex, this._segmentFraction);\n\t}\n\ttoString() {\n\t\treturn \"LinearLoc[\" + this._componentIndex + \", \" + this._segmentIndex + \", \" + this._segmentFraction + \"]\";\n\t}\n\tisOnSameSegment(loc) {\n\t\tif (this._componentIndex !== loc._componentIndex) return false;\n\t\tif (this._segmentIndex === loc._segmentIndex) return true;\n\t\tif (loc._segmentIndex - this._segmentIndex === 1 && loc._segmentFraction === 0.0) return true;\n\t\tif (this._segmentIndex - loc._segmentIndex === 1 && this._segmentFraction === 0.0) return true;\n\t\treturn false;\n\t}\n\tsnapToVertex(linearGeom, minDistance) {\n\t\tif (this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0) return null;\n\t\tvar segLen = this.getSegmentLength(linearGeom);\n\t\tvar lenToStart = this._segmentFraction * segLen;\n\t\tvar lenToEnd = segLen - lenToStart;\n\t\tif (lenToStart <= lenToEnd && lenToStart < minDistance) {\n\t\t\tthis._segmentFraction = 0.0;\n\t\t} else if (lenToEnd <= lenToStart && lenToEnd < minDistance) {\n\t\t\tthis._segmentFraction = 1.0;\n\t\t}\n\t}\n\tcompareLocationValues(componentIndex1, segmentIndex1, segmentFraction1) {\n\t\tif (this._componentIndex < componentIndex1) return -1;\n\t\tif (this._componentIndex > componentIndex1) return 1;\n\t\tif (this._segmentIndex < segmentIndex1) return -1;\n\t\tif (this._segmentIndex > segmentIndex1) return 1;\n\t\tif (this._segmentFraction < segmentFraction1) return -1;\n\t\tif (this._segmentFraction > segmentFraction1) return 1;\n\t\treturn 0;\n\t}\n\tgetSegmentLength(linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar segIndex = this._segmentIndex;\n\t\tif (this._segmentIndex >= lineComp.getNumPoints() - 1) segIndex = lineComp.getNumPoints() - 2;\n\t\tvar p0 = lineComp.getCoordinateN(segIndex);\n\t\tvar p1 = lineComp.getCoordinateN(segIndex + 1);\n\t\treturn p0.distance(p1);\n\t}\n\tisVertex() {\n\t\treturn this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0;\n\t}\n\tgetClass() {\n\t\treturn LinearLocation;\n\t}\n\tget interfaces_() {\n\t\treturn [Comparable];\n\t}\n}\nLinearLocation.constructor_ = function () {\n\tthis._componentIndex = 0;\n\tthis._segmentIndex = 0;\n\tthis._segmentFraction = 0.0;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet loc = arguments[0];\n\t\tthis._componentIndex = loc._componentIndex;\n\t\tthis._segmentIndex = loc._segmentIndex;\n\t\tthis._segmentFraction = loc._segmentFraction;\n\t} else if (arguments.length === 2) {\n\t\tlet segmentIndex = arguments[0], segmentFraction = arguments[1];\n\t\tLinearLocation.constructor_.call(this, 0, segmentIndex, segmentFraction);\n\t} else if (arguments.length === 3) {\n\t\tlet componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2];\n\t\tthis._componentIndex = componentIndex;\n\t\tthis._segmentIndex = segmentIndex;\n\t\tthis._segmentFraction = segmentFraction;\n\t\tthis.normalize();\n\t} else if (arguments.length === 4) {\n\t\tlet componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2], doNormalize = arguments[3];\n\t\tthis._componentIndex = componentIndex;\n\t\tthis._segmentIndex = segmentIndex;\n\t\tthis._segmentFraction = segmentFraction;\n\t\tif (doNormalize) this.normalize();\n\t}\n};\n","import hasInterface from '../../../../hasInterface';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Lineal from '../geom/Lineal';\nexport default class LinearIterator {\n\tconstructor() {\n\t\tLinearIterator.constructor_.apply(this, arguments);\n\t}\n\tstatic segmentEndVertexIndex(loc) {\n\t\tif (loc.getSegmentFraction() > 0.0) return loc.getSegmentIndex() + 1;\n\t\treturn loc.getSegmentIndex();\n\t}\n\tgetComponentIndex() {\n\t\treturn this._componentIndex;\n\t}\n\tgetLine() {\n\t\treturn this._currentLine;\n\t}\n\tgetVertexIndex() {\n\t\treturn this._vertexIndex;\n\t}\n\tgetSegmentEnd() {\n\t\tif (this._vertexIndex < this.getLine().getNumPoints() - 1) return this._currentLine.getCoordinateN(this._vertexIndex + 1);\n\t\treturn null;\n\t}\n\tnext() {\n\t\tif (!this.hasNext()) return null;\n\t\tthis._vertexIndex++;\n\t\tif (this._vertexIndex >= this._currentLine.getNumPoints()) {\n\t\t\tthis._componentIndex++;\n\t\t\tthis.loadCurrentLine();\n\t\t\tthis._vertexIndex = 0;\n\t\t}\n\t}\n\tloadCurrentLine() {\n\t\tif (this._componentIndex >= this._numLines) {\n\t\t\tthis._currentLine = null;\n\t\t\treturn null;\n\t\t}\n\t\tthis._currentLine = this._linearGeom.getGeometryN(this._componentIndex);\n\t}\n\tgetSegmentStart() {\n\t\treturn this._currentLine.getCoordinateN(this._vertexIndex);\n\t}\n\tisEndOfLine() {\n\t\tif (this._componentIndex >= this._numLines) return false;\n\t\tif (this._vertexIndex < this._currentLine.getNumPoints() - 1) return false;\n\t\treturn true;\n\t}\n\thasNext() {\n\t\tif (this._componentIndex >= this._numLines) return false;\n\t\tif (this._componentIndex === this._numLines - 1 && this._vertexIndex >= this._currentLine.getNumPoints()) return false;\n\t\treturn true;\n\t}\n\tgetClass() {\n\t\treturn LinearIterator;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLinearIterator.constructor_ = function () {\n\tthis._linearGeom = null;\n\tthis._numLines = null;\n\tthis._currentLine = null;\n\tthis._componentIndex = 0;\n\tthis._vertexIndex = 0;\n\tif (arguments.length === 1) {\n\t\tlet linear = arguments[0];\n\t\tLinearIterator.constructor_.call(this, linear, 0, 0);\n\t} else if (arguments.length === 2) {\n\t\tlet linear = arguments[0], start = arguments[1];\n\t\tLinearIterator.constructor_.call(this, linear, start.getComponentIndex(), LinearIterator.segmentEndVertexIndex(start));\n\t} else if (arguments.length === 3) {\n\t\tlet linearGeom = arguments[0], componentIndex = arguments[1], vertexIndex = arguments[2];\n\t\tif (!hasInterface(linearGeom, Lineal)) throw new IllegalArgumentException(\"Lineal geometry is required\");\n\t\tthis._linearGeom = linearGeom;\n\t\tthis._numLines = linearGeom.getNumGeometries();\n\t\tthis._componentIndex = componentIndex;\n\t\tthis._vertexIndex = vertexIndex;\n\t\tthis.loadCurrentLine();\n\t}\n};\n","import LinearIterator from './LinearIterator';\nimport LinearLocation from './LinearLocation';\nimport Double from '../../../../java/lang/Double';\nimport LineSegment from '../geom/LineSegment';\nimport Assert from '../util/Assert';\nexport default class LocationIndexOfPoint {\n\tconstructor() {\n\t\tLocationIndexOfPoint.constructor_.apply(this, arguments);\n\t}\n\tstatic indexOf(linearGeom, inputPt) {\n\t\tvar locater = new LocationIndexOfPoint(linearGeom);\n\t\treturn locater.indexOf(inputPt);\n\t}\n\tstatic indexOfAfter(linearGeom, inputPt, minIndex) {\n\t\tvar locater = new LocationIndexOfPoint(linearGeom);\n\t\treturn locater.indexOfAfter(inputPt, minIndex);\n\t}\n\tindexOf(inputPt) {\n\t\treturn this.indexOfFromStart(inputPt, null);\n\t}\n\tindexOfFromStart(inputPt, minIndex) {\n\t\tvar minDistance = Double.MAX_VALUE;\n\t\tvar minComponentIndex = 0;\n\t\tvar minSegmentIndex = 0;\n\t\tvar minFrac = -1.0;\n\t\tvar seg = new LineSegment();\n\t\tfor (var it = new LinearIterator(this._linearGeom); it.hasNext(); it.next()) {\n\t\t\tif (!it.isEndOfLine()) {\n\t\t\t\tseg.p0 = it.getSegmentStart();\n\t\t\t\tseg.p1 = it.getSegmentEnd();\n\t\t\t\tvar segDistance = seg.distance(inputPt);\n\t\t\t\tvar segFrac = seg.segmentFraction(inputPt);\n\t\t\t\tvar candidateComponentIndex = it.getComponentIndex();\n\t\t\t\tvar candidateSegmentIndex = it.getVertexIndex();\n\t\t\t\tif (segDistance < minDistance) {\n\t\t\t\t\tif (minIndex === null || minIndex.compareLocationValues(candidateComponentIndex, candidateSegmentIndex, segFrac) < 0) {\n\t\t\t\t\t\tminComponentIndex = candidateComponentIndex;\n\t\t\t\t\t\tminSegmentIndex = candidateSegmentIndex;\n\t\t\t\t\t\tminFrac = segFrac;\n\t\t\t\t\t\tminDistance = segDistance;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minDistance === Double.MAX_VALUE) {\n\t\t\treturn new LinearLocation(minIndex);\n\t\t}\n\t\tvar loc = new LinearLocation(minComponentIndex, minSegmentIndex, minFrac);\n\t\treturn loc;\n\t}\n\tindexOfAfter(inputPt, minIndex) {\n\t\tif (minIndex === null) return this.indexOf(inputPt);\n\t\tvar endLoc = LinearLocation.getEndLocation(this._linearGeom);\n\t\tif (endLoc.compareTo(minIndex) <= 0) return endLoc;\n\t\tvar closestAfter = this.indexOfFromStart(inputPt, minIndex);\n\t\tAssert.isTrue(closestAfter.compareTo(minIndex) >= 0, \"computed location is before specified minimum location\");\n\t\treturn closestAfter;\n\t}\n\tgetClass() {\n\t\treturn LocationIndexOfPoint;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLocationIndexOfPoint.constructor_ = function () {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n};\n","import LocationIndexOfPoint from './LocationIndexOfPoint';\nexport default class LocationIndexOfLine {\n\tconstructor() {\n\t\tLocationIndexOfLine.constructor_.apply(this, arguments);\n\t}\n\tstatic indicesOf(linearGeom, subLine) {\n\t\tvar locater = new LocationIndexOfLine(linearGeom);\n\t\treturn locater.indicesOf(subLine);\n\t}\n\tindicesOf(subLine) {\n\t\tvar startPt = subLine.getGeometryN(0).getCoordinateN(0);\n\t\tvar lastLine = subLine.getGeometryN(subLine.getNumGeometries() - 1);\n\t\tvar endPt = lastLine.getCoordinateN(lastLine.getNumPoints() - 1);\n\t\tvar locPt = new LocationIndexOfPoint(this._linearGeom);\n\t\tvar subLineLoc = new Array(2).fill(null);\n\t\tsubLineLoc[0] = locPt.indexOf(startPt);\n\t\tif (subLine.getLength() === 0.0) {\n\t\t\tsubLineLoc[1] = subLineLoc[0].copy();\n\t\t} else {\n\t\t\tsubLineLoc[1] = locPt.indexOfAfter(endPt, subLineLoc[0]);\n\t\t}\n\t\treturn subLineLoc;\n\t}\n\tgetClass() {\n\t\treturn LocationIndexOfLine;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLocationIndexOfLine.constructor_ = function () {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n};\n","import CoordinateList from '../geom/CoordinateList';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default class LinearGeometryBuilder {\n\tconstructor() {\n\t\tLinearGeometryBuilder.constructor_.apply(this, arguments);\n\t}\n\tgetGeometry() {\n\t\tthis.endLine();\n\t\treturn this._geomFact.buildGeometry(this._lines);\n\t}\n\tgetLastCoordinate() {\n\t\treturn this._lastPt;\n\t}\n\tendLine() {\n\t\tif (this._coordList === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this._ignoreInvalidLines && this._coordList.size() < 2) {\n\t\t\tthis._coordList = null;\n\t\t\treturn null;\n\t\t}\n\t\tvar rawPts = this._coordList.toCoordinateArray();\n\t\tvar pts = rawPts;\n\t\tif (this._fixInvalidLines) pts = this.validCoordinateSequence(rawPts);\n\t\tthis._coordList = null;\n\t\tvar line = null;\n\t\ttry {\n\t\t\tline = this._geomFact.createLineString(pts);\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof IllegalArgumentException) {\n\t\t\t\tif (!this._ignoreInvalidLines) throw ex;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\tif (line !== null) this._lines.add(line);\n\t}\n\tsetFixInvalidLines(fixInvalidLines) {\n\t\tthis._fixInvalidLines = fixInvalidLines;\n\t}\n\tadd() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet pt = arguments[0];\n\t\t\tthis.add(pt, true);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet pt = arguments[0], allowRepeatedPoints = arguments[1];\n\t\t\tif (this._coordList === null) this._coordList = new CoordinateList();\n\t\t\tthis._coordList.add(pt, allowRepeatedPoints);\n\t\t\tthis._lastPt = pt;\n\t\t}\n\t}\n\tsetIgnoreInvalidLines(ignoreInvalidLines) {\n\t\tthis._ignoreInvalidLines = ignoreInvalidLines;\n\t}\n\tvalidCoordinateSequence(pts) {\n\t\tif (pts.length >= 2) return pts;\n\t\tvar validPts = [pts[0], pts[0]];\n\t\treturn validPts;\n\t}\n\tgetClass() {\n\t\treturn LinearGeometryBuilder;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLinearGeometryBuilder.constructor_ = function () {\n\tthis._geomFact = null;\n\tthis._lines = new ArrayList();\n\tthis._coordList = null;\n\tthis._ignoreInvalidLines = false;\n\tthis._fixInvalidLines = false;\n\tthis._lastPt = null;\n\tlet geomFact = arguments[0];\n\tthis._geomFact = geomFact;\n};\n","import LineString from '../geom/LineString';\nimport CoordinateList from '../geom/CoordinateList';\nimport LinearIterator from './LinearIterator';\nimport Assert from '../util/Assert';\nimport LinearGeometryBuilder from './LinearGeometryBuilder';\nimport MultiLineString from '../geom/MultiLineString';\nexport default class ExtractLineByLocation {\n\tconstructor() {\n\t\tExtractLineByLocation.constructor_.apply(this, arguments);\n\t}\n\tstatic extract(line, start, end) {\n\t\tvar ls = new ExtractLineByLocation(line);\n\t\treturn ls.extract(start, end);\n\t}\n\tcomputeLinear(start, end) {\n\t\tvar builder = new LinearGeometryBuilder(this._line.getFactory());\n\t\tbuilder.setFixInvalidLines(true);\n\t\tif (!start.isVertex()) builder.add(start.getCoordinate(this._line));\n\t\tfor (var it = new LinearIterator(this._line, start); it.hasNext(); it.next()) {\n\t\t\tif (end.compareLocationValues(it.getComponentIndex(), it.getVertexIndex(), 0.0) < 0) break;\n\t\t\tvar pt = it.getSegmentStart();\n\t\t\tbuilder.add(pt);\n\t\t\tif (it.isEndOfLine()) builder.endLine();\n\t\t}\n\t\tif (!end.isVertex()) builder.add(end.getCoordinate(this._line));\n\t\treturn builder.getGeometry();\n\t}\n\tcomputeLine(start, end) {\n\t\tvar coordinates = this._line.getCoordinates();\n\t\tvar newCoordinates = new CoordinateList();\n\t\tvar startSegmentIndex = start.getSegmentIndex();\n\t\tif (start.getSegmentFraction() > 0.0) startSegmentIndex += 1;\n\t\tvar lastSegmentIndex = end.getSegmentIndex();\n\t\tif (end.getSegmentFraction() === 1.0) lastSegmentIndex += 1;\n\t\tif (lastSegmentIndex >= coordinates.length) lastSegmentIndex = coordinates.length - 1;\n\t\tif (!start.isVertex()) newCoordinates.add(start.getCoordinate(this._line));\n\t\tfor (var i = startSegmentIndex; i <= lastSegmentIndex; i++) {\n\t\t\tnewCoordinates.add(coordinates[i]);\n\t\t}\n\t\tif (!end.isVertex()) newCoordinates.add(end.getCoordinate(this._line));\n\t\tif (newCoordinates.size() <= 0) newCoordinates.add(start.getCoordinate(this._line));\n\t\tvar newCoordinateArray = newCoordinates.toCoordinateArray();\n\t\tif (newCoordinateArray.length <= 1) {\n\t\t\tnewCoordinateArray = [newCoordinateArray[0], newCoordinateArray[0]];\n\t\t}\n\t\treturn this._line.getFactory().createLineString(newCoordinateArray);\n\t}\n\textract(start, end) {\n\t\tif (end.compareTo(start) < 0) {\n\t\t\treturn this.reverse(this.computeLinear(end, start));\n\t\t}\n\t\treturn this.computeLinear(start, end);\n\t}\n\treverse(linear) {\n\t\tif (linear instanceof LineString) return linear.reverse();\n\t\tif (linear instanceof MultiLineString) return linear.reverse();\n\t\tAssert.shouldNeverReachHere(\"non-linear geometry encountered\");\n\t\treturn null;\n\t}\n\tgetClass() {\n\t\treturn ExtractLineByLocation;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nExtractLineByLocation.constructor_ = function () {\n\tthis._line = null;\n\tlet line = arguments[0];\n\tthis._line = line;\n};\n","import LineString from '../geom/LineString';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport LinearLocation from './LinearLocation';\nimport LocationIndexOfPoint from './LocationIndexOfPoint';\nimport LocationIndexOfLine from './LocationIndexOfLine';\nimport ExtractLineByLocation from './ExtractLineByLocation';\nimport MultiLineString from '../geom/MultiLineString';\nexport default class LocationIndexedLine {\n\tconstructor() {\n\t\tLocationIndexedLine.constructor_.apply(this, arguments);\n\t}\n\tclampIndex(index) {\n\t\tvar loc = index.copy();\n\t\tloc.clamp(this._linearGeom);\n\t\treturn loc;\n\t}\n\tproject(pt) {\n\t\treturn LocationIndexOfPoint.indexOf(this._linearGeom, pt);\n\t}\n\tcheckGeometryType() {\n\t\tif (!(this._linearGeom instanceof LineString || this._linearGeom instanceof MultiLineString)) throw new IllegalArgumentException(\"Input geometry must be linear\");\n\t}\n\textractPoint() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet index = arguments[0];\n\t\t\treturn index.getCoordinate(this._linearGeom);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], offsetDistance = arguments[1];\n\t\t\tvar indexLow = index.toLowest(this._linearGeom);\n\t\t\treturn indexLow.getSegment(this._linearGeom).pointAlongOffset(indexLow.getSegmentFraction(), offsetDistance);\n\t\t}\n\t}\n\tisValidIndex(index) {\n\t\treturn index.isValid(this._linearGeom);\n\t}\n\tgetEndIndex() {\n\t\treturn LinearLocation.getEndLocation(this._linearGeom);\n\t}\n\tgetStartIndex() {\n\t\treturn new LinearLocation();\n\t}\n\tindexOfAfter(pt, minIndex) {\n\t\treturn LocationIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex);\n\t}\n\textractLine(startIndex, endIndex) {\n\t\treturn ExtractLineByLocation.extract(this._linearGeom, startIndex, endIndex);\n\t}\n\tindexOf(pt) {\n\t\treturn LocationIndexOfPoint.indexOf(this._linearGeom, pt);\n\t}\n\tindicesOf(subLine) {\n\t\treturn LocationIndexOfLine.indicesOf(this._linearGeom, subLine);\n\t}\n\tgetClass() {\n\t\treturn LocationIndexedLine;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLocationIndexedLine.constructor_ = function () {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n\tthis.checkGeometryType();\n};\n","import LinearIterator from './LinearIterator';\nimport Double from '../../../../java/lang/Double';\nimport LineSegment from '../geom/LineSegment';\nimport Assert from '../util/Assert';\nexport default class LengthIndexOfPoint {\n\tconstructor() {\n\t\tLengthIndexOfPoint.constructor_.apply(this, arguments);\n\t}\n\tstatic indexOf(linearGeom, inputPt) {\n\t\tvar locater = new LengthIndexOfPoint(linearGeom);\n\t\treturn locater.indexOf(inputPt);\n\t}\n\tstatic indexOfAfter(linearGeom, inputPt, minIndex) {\n\t\tvar locater = new LengthIndexOfPoint(linearGeom);\n\t\treturn locater.indexOfAfter(inputPt, minIndex);\n\t}\n\tindexOf(inputPt) {\n\t\treturn this.indexOfFromStart(inputPt, -1.0);\n\t}\n\tindexOfFromStart(inputPt, minIndex) {\n\t\tvar minDistance = Double.MAX_VALUE;\n\t\tvar ptMeasure = minIndex;\n\t\tvar segmentStartMeasure = 0.0;\n\t\tvar seg = new LineSegment();\n\t\tvar it = new LinearIterator(this._linearGeom);\n\t\twhile (it.hasNext()) {\n\t\t\tif (!it.isEndOfLine()) {\n\t\t\t\tseg.p0 = it.getSegmentStart();\n\t\t\t\tseg.p1 = it.getSegmentEnd();\n\t\t\t\tvar segDistance = seg.distance(inputPt);\n\t\t\t\tvar segMeasureToPt = this.segmentNearestMeasure(seg, inputPt, segmentStartMeasure);\n\t\t\t\tif (segDistance < minDistance && segMeasureToPt > minIndex) {\n\t\t\t\t\tptMeasure = segMeasureToPt;\n\t\t\t\t\tminDistance = segDistance;\n\t\t\t\t}\n\t\t\t\tsegmentStartMeasure += seg.getLength();\n\t\t\t}\n\t\t\tit.next();\n\t\t}\n\t\treturn ptMeasure;\n\t}\n\tindexOfAfter(inputPt, minIndex) {\n\t\tif (minIndex < 0.0) return this.indexOf(inputPt);\n\t\tvar endIndex = this._linearGeom.getLength();\n\t\tif (endIndex < minIndex) return endIndex;\n\t\tvar closestAfter = this.indexOfFromStart(inputPt, minIndex);\n\t\tAssert.isTrue(closestAfter >= minIndex, \"computed index is before specified minimum index\");\n\t\treturn closestAfter;\n\t}\n\tsegmentNearestMeasure(seg, inputPt, segmentStartMeasure) {\n\t\tvar projFactor = seg.projectionFactor(inputPt);\n\t\tif (projFactor <= 0.0) return segmentStartMeasure;\n\t\tif (projFactor <= 1.0) return segmentStartMeasure + projFactor * seg.getLength();\n\t\treturn segmentStartMeasure + seg.getLength();\n\t}\n\tgetClass() {\n\t\treturn LengthIndexOfPoint;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLengthIndexOfPoint.constructor_ = function () {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n};\n","import LinearIterator from './LinearIterator';\nimport LinearLocation from './LinearLocation';\nexport default class LengthLocationMap {\n\tconstructor() {\n\t\tLengthLocationMap.constructor_.apply(this, arguments);\n\t}\n\tstatic getLength(linearGeom, loc) {\n\t\tvar locater = new LengthLocationMap(linearGeom);\n\t\treturn locater.getLength(loc);\n\t}\n\tstatic getLocation() {\n\t\tif (arguments.length === 2) {\n\t\t\tlet linearGeom = arguments[0], length = arguments[1];\n\t\t\tvar locater = new LengthLocationMap(linearGeom);\n\t\t\treturn locater.getLocation(length);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet linearGeom = arguments[0], length = arguments[1], resolveLower = arguments[2];\n\t\t\tvar locater = new LengthLocationMap(linearGeom);\n\t\t\treturn locater.getLocation(length, resolveLower);\n\t\t}\n\t}\n\tgetLength(loc) {\n\t\tvar totalLength = 0.0;\n\t\tvar it = new LinearIterator(this._linearGeom);\n\t\twhile (it.hasNext()) {\n\t\t\tif (!it.isEndOfLine()) {\n\t\t\t\tvar p0 = it.getSegmentStart();\n\t\t\t\tvar p1 = it.getSegmentEnd();\n\t\t\t\tvar segLen = p1.distance(p0);\n\t\t\t\tif (loc.getComponentIndex() === it.getComponentIndex() && loc.getSegmentIndex() === it.getVertexIndex()) {\n\t\t\t\t\treturn totalLength + segLen * loc.getSegmentFraction();\n\t\t\t\t}\n\t\t\t\ttotalLength += segLen;\n\t\t\t}\n\t\t\tit.next();\n\t\t}\n\t\treturn totalLength;\n\t}\n\tresolveHigher(loc) {\n\t\tif (!loc.isEndpoint(this._linearGeom)) return loc;\n\t\tvar compIndex = loc.getComponentIndex();\n\t\tif (compIndex >= this._linearGeom.getNumGeometries() - 1) return loc;\n\t\tdo {\n\t\t\tcompIndex++;\n\t\t} while (compIndex < this._linearGeom.getNumGeometries() - 1 && this._linearGeom.getGeometryN(compIndex).getLength() === 0);\n\t\treturn new LinearLocation(compIndex, 0, 0.0);\n\t}\n\tgetLocation() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet length = arguments[0];\n\t\t\treturn this.getLocation(length, true);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet length = arguments[0], resolveLower = arguments[1];\n\t\t\tvar forwardLength = length;\n\t\t\tif (length < 0.0) {\n\t\t\t\tvar lineLen = this._linearGeom.getLength();\n\t\t\t\tforwardLength = lineLen + length;\n\t\t\t}\n\t\t\tvar loc = this.getLocationForward(forwardLength);\n\t\t\tif (resolveLower) {\n\t\t\t\treturn loc;\n\t\t\t}\n\t\t\treturn this.resolveHigher(loc);\n\t\t}\n\t}\n\tgetLocationForward(length) {\n\t\tif (length <= 0.0) return new LinearLocation();\n\t\tvar totalLength = 0.0;\n\t\tvar it = new LinearIterator(this._linearGeom);\n\t\twhile (it.hasNext()) {\n\t\t\tif (it.isEndOfLine()) {\n\t\t\t\tif (totalLength === length) {\n\t\t\t\t\tvar compIndex = it.getComponentIndex();\n\t\t\t\t\tvar segIndex = it.getVertexIndex();\n\t\t\t\t\treturn new LinearLocation(compIndex, segIndex, 0.0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar p0 = it.getSegmentStart();\n\t\t\t\tvar p1 = it.getSegmentEnd();\n\t\t\t\tvar segLen = p1.distance(p0);\n\t\t\t\tif (totalLength + segLen > length) {\n\t\t\t\t\tvar frac = (length - totalLength) / segLen;\n\t\t\t\t\tvar compIndex = it.getComponentIndex();\n\t\t\t\t\tvar segIndex = it.getVertexIndex();\n\t\t\t\t\treturn new LinearLocation(compIndex, segIndex, frac);\n\t\t\t\t}\n\t\t\t\ttotalLength += segLen;\n\t\t\t}\n\t\t\tit.next();\n\t\t}\n\t\treturn LinearLocation.getEndLocation(this._linearGeom);\n\t}\n\tgetClass() {\n\t\treturn LengthLocationMap;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLengthLocationMap.constructor_ = function () {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n};\n","import LocationIndexedLine from './LocationIndexedLine';\nimport LengthIndexOfPoint from './LengthIndexOfPoint';\nimport LocationIndexOfLine from './LocationIndexOfLine';\nimport LengthLocationMap from './LengthLocationMap';\nimport ExtractLineByLocation from './ExtractLineByLocation';\nexport default class LengthIndexedLine {\n\tconstructor() {\n\t\tLengthIndexedLine.constructor_.apply(this, arguments);\n\t}\n\tclampIndex(index) {\n\t\tvar posIndex = this.positiveIndex(index);\n\t\tvar startIndex = this.getStartIndex();\n\t\tif (posIndex < startIndex) return startIndex;\n\t\tvar endIndex = this.getEndIndex();\n\t\tif (posIndex > endIndex) return endIndex;\n\t\treturn posIndex;\n\t}\n\tlocationOf() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet index = arguments[0];\n\t\t\treturn LengthLocationMap.getLocation(this._linearGeom, index);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], resolveLower = arguments[1];\n\t\t\treturn LengthLocationMap.getLocation(this._linearGeom, index, resolveLower);\n\t\t}\n\t}\n\tproject(pt) {\n\t\treturn LengthIndexOfPoint.indexOf(this._linearGeom, pt);\n\t}\n\tpositiveIndex(index) {\n\t\tif (index >= 0.0) return index;\n\t\treturn this._linearGeom.getLength() + index;\n\t}\n\textractPoint() {\n\t\tif (arguments.length === 1) {\n\t\t\tlet index = arguments[0];\n\t\t\tvar loc = LengthLocationMap.getLocation(this._linearGeom, index);\n\t\t\treturn loc.getCoordinate(this._linearGeom);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], offsetDistance = arguments[1];\n\t\t\tvar loc = LengthLocationMap.getLocation(this._linearGeom, index);\n\t\t\tvar locLow = loc.toLowest(this._linearGeom);\n\t\t\treturn locLow.getSegment(this._linearGeom).pointAlongOffset(locLow.getSegmentFraction(), offsetDistance);\n\t\t}\n\t}\n\tisValidIndex(index) {\n\t\treturn index >= this.getStartIndex() && index <= this.getEndIndex();\n\t}\n\tgetEndIndex() {\n\t\treturn this._linearGeom.getLength();\n\t}\n\tgetStartIndex() {\n\t\treturn 0.0;\n\t}\n\tindexOfAfter(pt, minIndex) {\n\t\treturn LengthIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex);\n\t}\n\textractLine(startIndex, endIndex) {\n\t\tvar lil = new LocationIndexedLine(this._linearGeom);\n\t\tvar startIndex2 = this.clampIndex(startIndex);\n\t\tvar endIndex2 = this.clampIndex(endIndex);\n\t\tvar resolveStartLower = startIndex2 === endIndex2;\n\t\tvar startLoc = this.locationOf(startIndex2, resolveStartLower);\n\t\tvar endLoc = this.locationOf(endIndex2);\n\t\treturn ExtractLineByLocation.extract(this._linearGeom, startLoc, endLoc);\n\t}\n\tindexOf(pt) {\n\t\treturn LengthIndexOfPoint.indexOf(this._linearGeom, pt);\n\t}\n\tindicesOf(subLine) {\n\t\tvar locIndex = LocationIndexOfLine.indicesOf(this._linearGeom, subLine);\n\t\tvar index = [LengthLocationMap.getLength(this._linearGeom, locIndex[0]), LengthLocationMap.getLength(this._linearGeom, locIndex[1])];\n\t\treturn index;\n\t}\n\tgetClass() {\n\t\treturn LengthIndexedLine;\n\t}\n\tget interfaces_() {\n\t\treturn [];\n\t}\n}\nLengthIndexedLine.constructor_ = function () {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n};\n","import SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp';\nimport OverlayOp from '../overlay/OverlayOp';\nexport default class UnionOp {\n\tget interfaces_() {\n\t\treturn [];\n\t}\n\tgetClass() {\n\t\treturn UnionOp;\n\t}\n\tstatic union(g, other) {\n\t\tif (g.isEmpty() || other.isEmpty()) {\n\t\t\tif (g.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, g, other, g.getFactory());\n\t\t\tif (g.isEmpty()) return other.copy();\n\t\t\tif (other.isEmpty()) return g.copy();\n\t\t}\n\t\tg.checkNotGeometryCollection(g);\n\t\tg.checkNotGeometryCollection(other);\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.UNION);\n\t}\n}","import WKTWriter from './io/WKTWriter';\nimport GeometryCollectionMapper from './geom/util/GeometryCollectionMapper';\nimport IsValidOp from './operation/valid/IsValidOp';\nimport InteriorPointArea from './algorithm/InteriorPointArea';\nimport UnaryUnionOp from './operation/union/UnaryUnionOp';\nimport UnionOp from './operation/union/UnionOp';\nimport SnapIfNeededOverlayOp from './operation/overlay/snap/SnapIfNeededOverlayOp';\nimport InteriorPointLine from './algorithm/InteriorPointLine';\nimport IsSimpleOp from './operation/IsSimpleOp';\nimport BufferOp from './operation/buffer/BufferOp';\nimport ConvexHull from './algorithm/ConvexHull';\nimport Centroid from './algorithm/Centroid';\nimport RelateOp from './operation/relate/RelateOp';\nimport InteriorPointPoint from './algorithm/InteriorPointPoint';\nimport DistanceOp from './operation/distance/DistanceOp';\nimport OverlayOp from './operation/overlay/OverlayOp';\nimport Geometry from './geom/Geometry';\n\nGeometry.prototype.equalsTopo = function (g) {\n\tif (!this.getEnvelopeInternal().equals(g.getEnvelopeInternal())) return false;\n\treturn RelateOp.relate(this, g).isEquals(this.getDimension(), g.getDimension());\n}\nGeometry.prototype.union = function() {\n\tif (arguments.length === 0) {\n\t\treturn UnaryUnionOp.union(this);\n\t} else if (arguments.length === 1) {\n\t\tlet other = arguments[0];\n\t\treturn UnionOp.union(this, other);\n\t}\n}\nGeometry.prototype.isValid = function() {\n\treturn IsValidOp.isValid(this);\n}\nGeometry.prototype.intersection = function(other) {\n\tif (this.isEmpty() || other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, this, other, this._factory);\n\tif (this.isGeometryCollection()) {\n\t\tvar g2 = other;\n\t\treturn GeometryCollectionMapper.map(this, {\n\t\t\tinterfaces_: [MapOp],\n\t\t\tmap: function(g) {\n\t\t\t\treturn g.intersection(g2);\n\t\t\t}\n\t\t});\n\t}\n\tthis.checkNotGeometryCollection(this);\n\tthis.checkNotGeometryCollection(other);\n\treturn SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.INTERSECTION);\n}\nGeometry.prototype.covers = function(g) {\n\treturn RelateOp.covers(this, g);\n}\nGeometry.prototype.coveredBy = function(g) {\n\treturn RelateOp.covers(g, this);\n}\nGeometry.prototype.touches = function(g) {\n\treturn RelateOp.touches(this, g);\n}\nGeometry.prototype.intersects = function(g) {\n\treturn RelateOp.intersects(this, g);\n}\nGeometry.prototype.within = function(g) {\n\treturn RelateOp.contains(g, this);\n}\nGeometry.prototype.overlaps = function(g) {\n\treturn RelateOp.overlaps(this, g);\n}\nGeometry.prototype.disjoint = function(g) {\n\treturn RelateOp.disjoint(this, g);\n}\nGeometry.prototype.crosses = function(g) {\n\treturn RelateOp.crosses(this, g);\n}\nGeometry.prototype.buffer = function() {\n\tif (arguments.length === 1) {\n\t\tlet distance = arguments[0];\n\t\treturn BufferOp.bufferOp(this, distance);\n\t} else if (arguments.length === 2) {\n\t\tlet distance = arguments[0], quadrantSegments = arguments[1];\n\t\treturn BufferOp.bufferOp(this, distance, quadrantSegments);\n\t} else if (arguments.length === 3) {\n\t\tlet distance = arguments[0], quadrantSegments = arguments[1], endCapStyle = arguments[2];\n\t\treturn BufferOp.bufferOp(this, distance, quadrantSegments, endCapStyle);\n\t}\n}\nGeometry.prototype.convexHull = function() {\n\treturn new ConvexHull(this).getConvexHull();\n}\nGeometry.prototype.relate = function(...args) {\n\tif (arguments.length === 1) {\n\t\tlet geometry = arguments[0];\n\t\treturn RelateOp.relate(this, geometry);\n\t} else if (arguments.length === 2) {\n\t\tlet geometry = arguments[0], intersectionPattern = arguments[1];\n\t\treturn RelateOp.relate(this, geometry).matches(intersectionPattern);\n\t}\n}\nGeometry.prototype.getCentroid = function() {\n\tif (this.isEmpty()) return this._factory.createPoint();\n\tvar centPt = Centroid.getCentroid(this);\n\treturn this.createPointFromInternalCoord(centPt, this);\n}\nGeometry.prototype.getInteriorPoint = function() {\n\tif (this.isEmpty()) return this._factory.createPoint();\n\tvar interiorPt = null;\n\tvar dim = this.getDimension();\n\tif (dim === 0) {\n\t\tvar intPt = new InteriorPointPoint(this);\n\t\tinteriorPt = intPt.getInteriorPoint();\n\t} else if (dim === 1) {\n\t\tvar intPt = new InteriorPointLine(this);\n\t\tinteriorPt = intPt.getInteriorPoint();\n\t} else {\n\t\tvar intPt = new InteriorPointArea(this);\n\t\tinteriorPt = intPt.getInteriorPoint();\n\t}\n\treturn this.createPointFromInternalCoord(interiorPt, this);\n}\nGeometry.prototype.symDifference = function(other) {\n\tif (this.isEmpty() || other.isEmpty()) {\n\t\tif (this.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, this, other, this._factory);\n\t\tif (this.isEmpty()) return other.copy();\n\t\tif (other.isEmpty()) return this.copy();\n\t}\n\tthis.checkNotGeometryCollection(this);\n\tthis.checkNotGeometryCollection(other);\n\treturn SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.SYMDIFFERENCE);\n}\nGeometry.prototype.createPointFromInternalCoord = function(coord, exemplar) {\n\texemplar.getPrecisionModel().makePrecise(coord);\n\treturn exemplar.getFactory().createPoint(coord);\n}\nGeometry.prototype.toText = function() {\n\tvar writer = new WKTWriter();\n\treturn writer.write(this);\n}\nGeometry.prototype.toString = function() {\n\tthis.toText();\n}\nGeometry.prototype.contains = function(g) {\n\treturn RelateOp.contains(this, g);\n}\nGeometry.prototype.difference = function(other) {\n\tif (this.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, this, other, this._factory);\n\tif (other.isEmpty()) return this.copy();\n\tthis.checkNotGeometryCollection(this);\n\tthis.checkNotGeometryCollection(other);\n\treturn SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.DIFFERENCE);\n}\nGeometry.prototype.isSimple = function() {\n\tvar op = new IsSimpleOp(this);\n\treturn op.isSimple();\n}\nGeometry.prototype.isWithinDistance = function(geom, distance) {\n\tvar envDist = this.getEnvelopeInternal().distance(geom.getEnvelopeInternal());\n\tif (envDist > distance) return false;\n\treturn DistanceOp.isWithinDistance(this, geom, distance);\n}\nGeometry.prototype.distance = function(g) {\n\treturn DistanceOp.distance(this, g);\n}\nGeometry.prototype.isEquivalentClass = function(other) {\n\treturn this.getClass() === other.getClass();\n}\n\n","import './Array'\nimport './Number'\nimport './Math'\n\nimport * as geom from './org/locationtech/jts/geom'\nimport * as algorithm from './org/locationtech/jts/algorithm'\nimport * as densify from './org/locationtech/jts/densify'\nimport * as dissolve from './org/locationtech/jts/dissolve'\nimport * as geomgraph from './org/locationtech/jts/geomgraph'\nimport * as index from './org/locationtech/jts/index'\nimport * as io from './org/locationtech/jts/io'\nimport * as noding from './org/locationtech/jts/noding'\nimport * as operation from './org/locationtech/jts/operation'\nimport * as precision from './org/locationtech/jts/precision'\nimport * as simplify from './org/locationtech/jts/simplify'\nimport * as triangulate from './org/locationtech/jts/triangulate'\nimport * as linearref from './org/locationtech/jts/linearref'\n\nimport './org/locationtech/jts/monkey'\n\nconst version = 'npm_package_version (git_hash)'\nexport {\n version,\n algorithm,\n densify,\n dissolve,\n geom,\n geomgraph,\n index,\n io,\n noding,\n operation,\n precision,\n simplify,\n triangulate,\n linearref\n}\n"],"names":["Array","prototype","Object","defineProperty","configurable","value","fill","undefined","TypeError","arrayLike","length","Math","max","min","relativeStart","arguments","parseInt","Number","relativeEnd","writable","isFinite","isInteger","val","floor","parseFloat","isNaN","trunc","x","ceil","log2","log","LOG2E","NumberUtil","constructor","constructor_","apply","equalsWithTolerance","x1","x2","tolerance","abs","getClass","interfaces_","IllegalArgumentException","Long","high","low","toBinaryString","i","result","mask","Double","n","isInfinite","MAX_VALUE","Float64Array","Int32Array","EXP_BIT_MASK","SIGNIF_BIT_MASK","f64buf","i32buf","buffer","doubleToLongBits","longBitsToDouble","bits","BIAS","pow","MAX_REL_BITS_INTEGER","y","f","skip","sign","exp","NEGATIVE_INFINITY","Infinity","fract","NaN","Comparable","Clonable","Comparator","Serializable","RuntimeException","message","name","stack","Error","call","create","AssertionFailedException","Assert","shouldNeverReachHere","isTrue","assertion","equals","expectedValue","actualValue","Coordinate","hashCode","setOrdinate","ordinateIndex","X","Y","Z","z","equals2D","other","c","getOrdinate","equals3D","equalInZ","compareTo","o","clone","coord","e","CloneNotSupportedException","copy","toString","distance3D","dx","dy","dz","sqrt","distance","setCoordinate","Cloneable","DimensionalComparator","compare","a","b","o1","o2","c1","c2","compX","compY","_dimensionsToTest","compZ","dimensionsToTest","NULL_ORDINATE","serialVersionUID","indexOf","Iterator","hasNext","next","remove","Collection","add","addAll","isEmpty","iterator","size","toArray","IndexOutOfBoundsException","List","get","set","NoSuchElementException","OperationNotSupported","ArrayList","array_","ensureCapacity","push","splice","clear","index","element","oldElement","Iterator_","array","len","found","removeAll","arrayList","arrayList_","position_","CoordinateList","getCoordinate","hasInterface","coll","allowRepeated","isChanged","toCoordinateArray","coordArrayType","last","obj","direction","prev","start","end","inc","closeRing","Envelope","intersects","p1","p2","q","q1","q2","minq","maxq","minp","maxp","getArea","getWidth","getHeight","otherEnvelope","isNull","_maxx","getMaxX","_maxy","getMaxY","_minx","getMinX","_miny","getMinY","intersection","env","intMinX","intMinY","intMaxX","intMaxY","covers","p","envminx","envmaxx","envminy","envmaxy","expandToInclude","minExtent","w","h","translate","transX","transY","init","setToNull","maxExtent","expandBy","deltaX","deltaY","contains","centre","y1","y2","Exception","NotRepresentableException","StringBuffer","str","append","setCharAt","substr","Integer","intValue","Character","isWhitespace","toUpperCase","DD","sqr","valueOf","selfMultiply","parse","strlen","charAt","isNegative","signCh","numDigits","numBeforeDec","ch","isDigit","d","TEN","selfAdd","expStr","substring","ex","NumberFormatException","val2","numDecPlaces","scale","divide","multiply","negate","createNaN","dd","magnitude","xAbs","xLog10","xMag","xApprox","stringOfChar","buf","le","_hi","_lo","extractSignificantDigits","insertDecimalPoint","mag","gt","lt","ONE","decimalPointPos","MAX_PRINT_DIGITS","digit","rebiasBy10","digitChar","subtract","continueExtractingDigits","remMag","doubleValue","isZero","selfSubtract","getSpecialNumberString","selfDivide","yhi","ylo","hc","tc","hy","ty","C","U","u","SPLIT","dump","zhi","zlo","ge","r","s","reciprocal","fhi","flo","rint","plus5","setValue","ax","axdd","diffSq","d2","H","S","T","t","hx","tx","selfSqr","toStandardNotation","toSciNotation","specialStr","sigDigits","num","numZeroes","zeroes","SCI_NOT_ZERO","digits","SCI_NOT_EXPONENT_CHAR","IllegalStateException","trailingDigits","digitsWithDecimal","isPositive","hi","lo","signum","PI","TWO_PI","PI_2","E","EPS","CGAlgorithmsDD","orientationIndex","orientationIndexFilter","dx1","dy1","dx2","dy2","signOfDet2x2","det","denom1","denom2","denom","numx1","numx2","numx","fracP","numy1","numy2","numy","fracQ","pa","pb","pc","detsum","detleft","detright","errbound","DP_SAFE_EPSILON","Orientation","isCCW","ring","nPts","hiPt","hiIndex","iPrev","iNext","disc","CLOCKWISE","RIGHT","COUNTERCLOCKWISE","LEFT","COLLINEAR","STRAIGHT","System","arraycopy","src","srcPos","dest","destPos","getProperty","HCoordinate","px","py","pw","qx","qy","qw","xInt","yInt","getY","getX","_x","_y","_w","MathUtil","log10","ln","LOG_10","v1","v2","v3","v4","clamp","wrap","average","Distance","segmentToSegment","A","B","D","pointToSegment","noIntersection","r_num","s_num","len2","pointToLinePerpendicular","pointToSegmentString","line","minDistance","dist","CoordinateSequence","getCoordinateCopy","getDimension","expandEnvelope","M","CoordinateSequenceFactory","GeometryComponentFilter","filter","geom","Geometry","isGeometryCollection","getTypeCode","TYPECODE_GEOMETRYCOLLECTION","getFactory","_factory","getGeometryN","isRectangle","g","equalsTopo","equalsExact","geometryChanged","geometryChangedFilter","geometryChangedAction","_envelope","equalsNorm","norm","getLength","getNumGeometries","compareToSameClass","comp","getUserData","_userData","getSRID","_SRID","getEnvelope","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","equal","normalize","getPrecisionModel","computeEnvelopeInternal","setSRID","SRID","setUserData","userData","j","aElement","bElement","comparison","isGeometryCollectionOrDerived","TYPECODE_MULTIPOINT","TYPECODE_MULTILINESTRING","TYPECODE_MULTIPOLYGON","hasNonEmptyElements","geometries","hasNullElements","factory","TYPECODE_POINT","TYPECODE_LINESTRING","TYPECODE_LINEARRING","TYPECODE_POLYGON","TYPENAME_POINT","TYPENAME_MULTIPOINT","TYPENAME_LINESTRING","TYPENAME_LINEARRING","TYPENAME_MULTILINESTRING","TYPENAME_POLYGON","TYPENAME_MULTIPOLYGON","TYPENAME_GEOMETRYCOLLECTION","CoordinateFilter","BoundaryNodeRule","isInBoundary","boundaryCount","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","CoordinateArrays","isRing","pts","ptNotInList","testPts","testPt","scroll","coordinates","firstCoordinate","newCoordinates","coord1","coord2","coordinateComparator","coordList","hasRepeatedPoints","removeRepeatedPoints","reverse","mid","tmp","removeNull","nonNull","newCoord","copyDeep","srcStart","destStart","isEqualReversed","pts1","pts2","envelope","atLeastNCoordinatesOrNothing","coordinate","increasingDirection","minCoordinate","minCoord","extract","npts","extractPts","iPts","ForwardComparator","BidirectionalComparator","forwardComp","isEqualRev","OLDcompare","dir1","dir2","i1","i2","comparePt","Map","put","values","entrySet","SortedMap","Set","HashSet","javascript","util","hashSet","hashSet_","BLACK","RED","colorOf","color","parentOf","parent","setColor","leftOf","left","rightOf","right","TreeMap","root_","size_","key","cmp","getValue","getKey","oldValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","l","containsKey","Lineal","SortedSet","TreeSet","treeSet","treeSet_","Arrays","sort","comparator","slice","concat","asList","Dimension","toDimensionSymbol","dimensionValue","FALSE","SYM_FALSE","TRUE","SYM_TRUE","DONTCARE","SYM_DONTCARE","P","SYM_P","L","SYM_L","SYM_A","toDimensionValue","dimensionSymbol","GeometryFilter","CoordinateSequenceFilter","seq","isDone","isGeometryChanged","GeometryCollection","_geometries","getCoordinates","getNumPoints","k","childCoordinates","area","isEquivalentClass","otherCollection","getBoundaryDimension","dimension","sum","numPoints","revGeoms","createGeometryCollection","theseElements","otherElements","gc","n1","n2","thisGeom","otherGeom","holeComp","getBoundary","getGeometryType","MultiLineString","isClosed","nLines","revLines","createMultiLineString","BoundaryOp","lineStrings","bop","bnRule","boundaryMultiLineString","mLine","_geom","getEmptyMultiPoint","bdyPts","computeBoundaryCoordinates","_geomFact","createPoint","createMultiPointFromCoords","LineString","boundaryLineString","closedEndpointOnBoundary","_bnRule","getStartPoint","createMultiPoint","getEndPoint","_endpointMap","addEndpoint","getCoordinateN","it","entry","counter","valence","count","pt","Counter","Length","ofLine","x0","y0","PrintStream","StringReader","DecimalFormat","ByteArrayOutputStream","IOException","LineNumberReader","StringUtil","chars","String","getStackTrace","os","ps","printStackTrace","depth","stackTrace","stringReader","lineNumberReader","readLine","NEWLINE","split","separator","separatorlen","tokenList","tmpString","pos","token","res","SIMPLE_ORDINATE_FORMAT","format","spaces","StringBuilder","CoordinateSequences","copyCoord","minDim","dim","isEqual","cs1","cs2","cs1Size","cs2Size","extend","fact","newseq","swap","cs","builder","ensureValidRing","createClosedRing","_points","isSimple","otherLineString","getPointN","revLine","createLineString","getCoordinateSequence","points","getCoordinateSequenceFactory","isCoordinate","Puntal","Point","_coordinates","point","Area","ofRing","ofRingSigned","p0","Polygonal","Polygon","_shell","shellCoordinates","_holes","getNumInteriorRing","prevX","prevY","xChanged","yChanged","otherPolygon","thisShell","otherPolygonShell","clockwise","uniqueCoordinates","poly","convexHull","getExteriorRing","otherShell","shellComp","nHole1","nHole2","thisHole","getInteriorRingN","otherHole","rings","createLinearRing","shellCopy","holeCopies","shell","holes","MultiPoint","isValid","LinearRing","rev","validateConstruction","MINIMUM_VALID_SIZE","GeometryFactory","MultiPolygon","createMultiPolygon","allRings","polygon","allRingsArray","polygons","GeometryEditor","setCopyUserData","isUserDataCopied","_isUserDataCopied","edit","geometry","operation","editInternal","editGeometryCollection","editPolygon","getName","collection","collectionForType","newPolygon","createPolygon","hole","GeometryEditorOperation","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","CoordinateArraySequence","_dimension","cloneCoordinates","strBuilder","coordSeq","CoordinateArraySequenceFactory","instance","instanceObject","readResolve","is","createCollection","sharedDelete","has","mapHas","sharedGet","sharedSet","keys","sharedKeys","sharedValues","entries","mapEntries","forEach","sharedForEach","sharedClear","proto","objectOnly","_keys","_values","_itp","sharedSize","list","sharedIterator","itp","array2","done","v","callback","context","MapImpl","MapPolyfill","HashMap","map_","MapInterface","PrecisionModel","mostPrecise","pm1","pm2","otherPrecisionModel","_modelType","_scale","getMaximumSignificantDigits","otherSigDigits","getScale","isFloating","FLOATING","FLOATING_SINGLE","getType","description","FIXED","makePrecise","floatSingleVal","round","maxSigDigits","setScale","Type","nameToTypeMap","_name","modelType","pm","maximumPreciseValue","toMultiPolygonArray","multiPolygons","multiPolygonArray","toGeometryArray","geometryArray","getDefaultCoordinateSequenceFactory","toMultiLineStringArray","multiLineStrings","multiLineStringArray","toLineStringArray","lineStringArray","toMultiPointArray","multiPoints","multiPointArray","toLinearRingArray","linearRings","linearRingArray","toPointArray","pointArray","toPolygonArray","polygonArray","createPointFromInternalCoord","exemplar","buildGeometry","geomList","geomClass","isHeterogeneous","hasGeometryCollection","partClass","geom0","isCollection","_coordinateSequenceFactory","createGeometry","editor","_precisionModel","ptSeq","coordinateSequenceFactory","precisionModel","regExes","WKTParser","geometryFactory","read","wkt","type","replace","matches","typeStr","exec","search","emptyTypeStr","toLowerCase","write","extractGeometry","wktType","data","multipoint","join","linestring","linearring","multilinestring","multipolygon","geometrycollection","coords","trim","components","trimParens","lines","parenComma","doubleParenComma","wktArray","WKTWriter","parser","toLineString","LineIntersector","computeEdgeDistance","pdx","pdy","nonRobustComputeEdgeDistance","getIndexAlongSegment","segmentIndex","intIndex","computeIntLineIndex","_intLineIndex","getTopologySummary","catBuilder","isEndPoint","_isProper","isCollinear","computeIntersection","p3","p4","_inputLines","_result","computeIntersect","getIntersectionNum","map","dist0","getEdgeDistance","dist1","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","inputLineIndex","_intPt","getIntersection","NO_INTERSECTION","COLLINEAR_INTERSECTION","getEndpoint","ptIndex","isIntersection","getIntersectionAlongSegment","_pa","_pb","DONT_INTERSECT","DO_INTERSECT","POINT_INTERSECTION","RobustLineIntersector","nearestEndpoint","nearestPt","minDist","isInSegmentEnvelopes","intPt","env0","env1","normalizeToMinimum","n3","n4","normPt","smallestInAbsValue","safeHCoordinateIntersection","intersectionWithNormalization","x3","x4","xabs","checkDD","intPtDD","isIn","out","println","normalizeToEnvCentre","computeCollinearIntersection","p1q1p2","p1q2p2","q1p1q2","q1p2q2","n00","n01","n10","n11","minX0","minY0","maxX0","maxY0","minX1","minY1","maxX1","maxY1","intMidX","intMidY","Pq1","Pq2","Qp1","Qp2","collinear","LineSegment","midPoint","minX","seg","orient0","orient1","geomFactory","isVertical","li","project","projectionFactor","pf0","pf1","newp0","newp1","angle","atan2","distancePerpendicular","minY","closestPoints","closestPt","close00","closestPoint","close01","close10","close11","factor","maxX","comp0","temp","lineIntersection","maxY","pointAlongOffset","segmentLengthFraction","offsetDistance","segx","segy","ux","uy","offsetx","offsety","setCoordinates","ls","segmentFraction","inputPt","segFrac","isHorizontal","pointAlong","bits0","java","lang","hash0","bits1","hash1","Location","toLocationSymbol","locationValue","EXTERIOR","BOUNDARY","INTERIOR","NONE","IntersectionMatrix","actualDimensionValue","requiredDimensionSymbol","actualDimensionSymbols","requiredDimensionSymbols","m","isIntersects","isDisjoint","isCovers","hasPointInCommon","_matrix","isCoveredBy","dimensionSymbols","row","col","column","isContains","setAtLeast","minimumDimensionSymbols","minimumDimensionValue","setAtLeastIfValid","isWithin","isTouches","dimensionOfGeometryA","dimensionOfGeometryB","isOverlaps","isEquals","ai","bi","setAll","transpose","im","isCrosses","elements","Angle","toDegrees","radians","PI_TIMES_2","isAcute","dx0","dy0","dotprod","isObtuse","interiorAngle","anglePrev","angleNext","normalizePositive","angleBetween","tip1","tail","tip2","a1","a2","diff","ang1","ang2","delAngle","toRadians","angleDegrees","getTurn","crossproduct","sin","angleBetweenOriented","angDel","PI_OVER_2","PI_OVER_4","Triangle","signedArea","m00","m01","m10","m11","interpolateZ","v0","longestSideLength","lenAB","lenBC","lenCA","maxLen","circumcentre","cx","cy","ay","bx","by","ccx","ccy","perpendicularBisector","l1","l2","angleBisector","len0","frac","splitPt","area3D","uz","vx","vy","vz","crossx","crossy","crossz","absSq","centroid","inCentre","len1","circum","inCentreX","inCentreY","PointPairDistance","_pt","setMinimum","ptDist","_isNull","initialize","_distance","getDistance","setMaximum","DistanceToPoint","computeDistance","tempSegment","segment","DiscreteHausdorffDistance","g0","g1","densifyFrac","setDensifyFraction","_ptDist","_densifyFrac","compute","computeOrientedDistance","_g0","_g1","discreteGeom","distFilter","MaxPointDistanceFilter","getMaxPointDistance","fracFilter","MaxDensifiedByFractionDistanceFilter","orientedDistance","_minPtDist","_maxPtDist","_euclideanDist","delx","_numSubSegs","dely","fraction","ItemVisitor","visitItem","item","PointOnGeometryLocator","locate","IntervalRTreeNode","getMin","_min","queryMin","queryMax","_max","getMax","NodeComparator","mid1","mid2","POSITIVE_INFINITY","IntervalRTreeLeafNode","query","visitor","_item","Collections","reverseOrder","alen","singletonList","IntervalRTreeBranchNode","buildExtent","_node1","_node2","SortedPackedIntervalRTree","buildTree","_leaves","buildLevel","insert","_root","buildRoot","printNode","node","_level","LinearComponentExtracter","getGeometry","getLines","forceToLineString","geoms","_isForcedToLineString","_lines","setForceToLineString","isForcedToLineString","ArrayListVisitor","_items","getItems","RayCrossingCounter","locatePointInRing","countSegment","isOnSegment","getLocation","_p","_isPointOnSegment","minx","maxx","orient","_crossingCount","isPointInPolygon","IndexedPointInAreaLocator","rcc","SegmentVisitor","_index","_counter","IntervalIndexedGeometry","addLine","PointLocation","isOnLine","lineIntersector","locateInRing","isInRing","GeometryCollectionIterator","isAtomic","_atStart","_parent","_subcollectionIterator","UnsupportedOperationException","SimplePointInAreaLocator","locatePointInPolygon","shellLoc","holeLoc","containsPointInPolygon","locateInGeometry","geomi","g2","loc","SimilarityMeasure","measure","AreaSimilarityMeasure","areaInt","areaUnion","union","HausdorffSimilarityMeasure","diagonalSize","width","hgt","DENSIFY_FRACTION","envSize","SimilarityMeasureCombiner","combine","measure1","measure2","Centroid","area2","centroid3","getCentroid","cent","setAreaBasePoint","basePt","_areaBasePt","addPoint","_ptCount","_ptCentSum","addLineSegments","lineLen","segmentLen","midx","_lineCentSum","midy","_totalLength","addHole","isPositiveArea","addTriangle","_areasum2","_cg3","addShell","_triangleCent3","EmptyStackException","Stack","pop","peek","empty","UniqueCoordinateArrayFilter","filterCoordinates","ConvexHull","extractCoordinates","preSort","RadialComparator","computeOctRing","inputPts","octPts","computeOctPts","lineOrPolygon","cleanRing","_geomFactory","linearRing","original","cleanedRing","previousDistinctCoordinate","currentCoordinate","nextCoordinate","isBetween","cleanedRingCoordinates","c3","reduce","polyPts","reducedSet","reducedPts","padArray3","getConvexHull","_inputPts","sortedPts","cHS","grahamScan","cH","pad","polarCompare","dxp","dyp","dxq","dyq","op","oq","_origin","origin","InteriorPointArea","avg","addPolygon","bisector","horizontalBisector","intersections","widestIntersection","widestGeometry","_interiorPoint","_maxWidth","getInteriorPoint","bisectY","SafeBisectorFinder","getBisectorY","finder","updateInterval","_centreY","_loY","_hiY","process","_poly","InteriorPointLine","addEndpoints","addInterior","_centroid","_minDistance","InteriorPointPoint","MinimumBoundingCircle","pointWitMinAngleWithX","minSin","minAngPt","lowestPoint","pointWithMinAngleWithSegment","Q","minAng","ang","getRadius","_radius","getDiameter","_extremalPts","_input","_centre","getExtremalPoints","computeCirclePoints","hullPts","R","computeCentre","getFarthestPoints","getCircle","centrePoint","getCentre","MinimumDiameter","nextIndex","computeC","getMinimumDiameter","getMinimumRectangle","computeSegmentForLine","getWidthCoordinate","computeMinimumDiameter","_minWidthPt","getSupportingSegment","_inputGeom","_minBaseSeg","computeWidthConvex","convexGeom","_convexHullPts","_minWidth","computeConvexRingMinDiameter","currMaxIndex","findMaxPerpDistance","_isConvex","startIndex","maxPerpDistance","nextPerpDistance","maxIndex","_minPtIndex","minPara","maxPara","minPerp","maxPerp","paraC","perpC","maxPerpLine","minPerpLine","maxParaLine","minParaLine","inputGeom","isConvex","GeometryTransformer","transformPoint","transformCoordinates","transformPolygon","isAllValidLinearRings","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transGeomList","transformGeom","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","transform","_pruneEmptyGeometry","_preserveGeometryCollectionType","seqSize","_preserveType","_preserveCollections","Densifier","densifyPoints","distanceTolerance","precModel","densifiedSegCount","densifiedSegLen","segFract","densify","densifier","setDistanceTolerance","getResultGeometry","DensifyTransformer","_distanceTolerance","roughGeom","createValidArea","newPts","roughAreaGeom","Quadrant","isNorthern","quad","NE","NW","isOpposite","quad1","quad2","commonHalfPlane","isInHalfPlane","halfPlane","SE","SW","quadrant","HalfEdge","e0","e1","_sym","_next","find","oNext","_orig","insertAfter","ecmp","ePrev","orig","save","setNext","sym","degree","compareAngularDirection","quadrant2","prevNode","setSym","MarkHalfEdge","setMarkBoth","isMarked","setMark","markBoth","mark","_isMarked","EdgeGraph","isValidEdge","eAdj","_vertexMap","eAdjDest","createEdge","addEdge","eSame","getVertexEdges","findEdge","DissolveHalfEdge","setStart","_isStart","isStart","DissolveEdgeGraph","LineDissolver","dissolve","getResult","updateRingStartEdge","_ringStartEdge","computeResult","eNode","stackEdges","buildLines","buildRing","eStartRing","eNext","buildLine","eStart","_nodeEdgeStack","edges","_graph","component","lineString","doneStart","PointLocator","locateInPolygonRing","updateLocationInfo","_isIn","_numBoundaries","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","ml","mpoly","ptCoord","_boundaryRule","boundaryRule","Position","opposite","position","ON","MonotoneChain","computeIntersections","mc","si","mce","computeIntersectsForChain","chainIndex","SweepLineEvent","isDelete","_eventType","DELETE","setDeleteEventIndex","deleteEventIndex","_deleteEventIndex","getObject","_obj","pe","_xValue","getInsertEvent","_insertEvent","isInsert","INSERT","isSameLabel","ev","_label","getDeleteEventIndex","insertEvent","label","EdgeSetIntersector","SegmentIntersector","isAdjacentSegments","isTrivialIntersection","segIndex0","segIndex1","_li","maxSegIndex","getProperIntersectionPoint","_properIntersectionPoint","setIsDoneIfProperInt","isDoneWhenProperInt","_isDoneWhenProperInt","hasProperInteriorIntersection","_hasProperInterior","isBoundaryPointInternal","bdyNodes","hasProperIntersection","_hasProper","_hasIntersection","_isDone","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","_bdyNodes","addIntersections","numTests","p00","p01","p10","p11","_recordIsolated","setIsolated","_numIntersections","_includeProper","_isSelfIntersection","includeProper","recordIsolated","SimpleMCSweepLineIntersector","prepareEvents","events","nOverlaps","processOverlaps","edges0","edges1","addEdges","testAllSegments","edge","edgeSet","getMonotoneChainEdge","getStartIndexes","ev0","mc0","ev1","mc1","TopologyLocation","setAllLocations","locValue","location","setAllLocationsIfNull","isLine","merge","gl","newLoc","getLocations","flip","setLocations","on","posIndex","isArea","isAnyNull","setLocation","locIndex","isEqualOnSide","allPositionsEqual","Label","toLineLabel","lineLabel","getGeometryCount","elt","geomIndex","lbl","side","toLine","onLoc","leftLoc","rightLoc","EdgeIntersection","getSegmentIndex","print","maxSegmentIndex","EdgeIntersectionList","ei","_nodeMap","addSplitEdges","edgeList","eiPrev","newEdge","createSplitEdge","ei0","ei1","lastSegStartPt","useIntPt1","ipt","Edge","eiNew","MonotoneChainIndexer","toIntArray","getChainStartIndices","startIndexList","findChainEnd","chainQuad","MonotoneChainEdge","chainIndex0","chainIndex1","start0","end0","start1","end1","overlaps","mid0","computeIntersects","mcb","Depth","depthAtLocation","NULL_VALUE","getDepth","_depth","setDepth","depthValue","minDepth","newValue","getDelta","GraphComponent","setVisited","isVisited","_isVisited","setInResult","isInResult","_isInResult","isCovered","_isCovered","isCoveredSet","_isCoveredSet","setLabel","getLabel","setCovered","updateIM","computeIM","getCollapsedEdge","newe","isIsolated","_isIsolated","setName","isEqualForward","isEqualReverse","iRev","_depthDelta","isCollapsed","getMaximumSegmentIndex","getDepthDelta","printReverse","_mce","_env","addIntersection","normalizedSegmentIndex","nextSegIndex","nextPt","eiList","isPointwiseEqual","setDepthDelta","depthDelta","getEdgeIntersectionList","Node","isIncidentEdgeInResult","getEdges","de","getEdge","_coord","computeMergedLocation","label2","eltIndex","nLoc","argIndex","onLocation","_edges","mergeLabel","thisLoc","setNode","setLabelBoundary","NodeMap","nodeMap","addNode","nodeFact","createNode","getBoundaryNodes","EdgeEnd","compareDirection","_dx","_dy","_quadrant","_p0","_p1","getDy","_node","className","lastDotPos","lastIndexOf","getDirectedCoordinate","getDx","_edge","getQuadrant","getNode","computeLabel","boundaryNodeRule","TopologyException","msg","msgWithCoord","DirectedEdge","depthFactor","currLocation","nextLocation","getNextMin","_nextMin","computeDirectedLabel","_isForward","getNext","depthVal","isInteriorAreaEdge","setNextMin","nextMin","setMinEdgeRing","minEdgeRing","_minEdgeRing","isLineEdge","isExteriorIfArea0","isExteriorIfArea1","setEdgeRing","edgeRing","_edgeRing","getMinEdgeRing","getSym","isForward","printEdge","setVisitedEdge","setEdgeDepths","directionFactor","oppositePos","delta","oppositeDepth","getEdgeRing","NodeFactory","PlanarGraph","linkResultDirectedEdges","nodes","nodeit","printEdges","_nodes","getNodeIterator","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","_edgeEndList","debugPrint","getEdgeIterator","findEdgeInSameDirection","eCoord","insertEdge","findEdgeEnd","ee","edgesToAdd","de1","de2","getNodes","GeometryGraph","determineBoundary","insertBoundaryPoint","_boundaryNodeRule","computeSelfNodes","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","_parentGeom","computeAllSegments","addSelfIntersectionNodes","_argIndex","computeSplitEdges","edgelist","computeEdgeIntersections","getBoundaryNodeRule","hasTooFewPoints","_hasTooFewPoints","insertPoint","addPolygonRing","addLineString","_invalidPoint","_lineEdgeMap","getInvalidPoint","getBoundaryPoints","_boundaryNodes","addSelfIntersectionNode","_useBoundaryDeterminationRule","lr","cwLeft","cwRight","eLoc","eiIt","addCollection","_areaPtLocator","_ptLocator","parentGeom","KdNodeVisitor","visit","KdNode","isRepeated","_count","getRight","_right","setLeft","_left","getData","_data","getCount","getLeft","increment","setRight","KdTree","toCoordinates","kdnodes","includeRepeated","_tolerance","matchNode","findBestMatchNode","insertExact","queryEnv","queryNode","currentNode","odd","discriminant","searchLeft","searchRight","BestMatchVisitor","queryEnvelope","leafNode","isOddLevel","isLessThan","isInTolerance","_numberOfNodes","update","_matchNode","_matchDist","NodeBase","getSubnodeIndex","centrex","centrey","subnodeIndex","hasChildren","_subnode","isPrunable","hasItems","addAllItems","resultItems","getNodeCount","subSize","addAllItemsFromOverlapping","searchEnv","isSearchMatch","visitItems","itemEnv","maxSubDepth","sqd","DoubleBits","exponent","CVTFWD","powerOf2","NumW","Qty","Sign","Expo","Mant","Bin","Inf","ExW","Key","computeQuadLevel","dMax","level","getLevel","computeKey","quadSize","getPoint","createExpanded","addEnv","expandEnv","largerNode","insertNode","_centrex","_centrey","getSubnode","createSubnode","miny","maxy","sqEnv","childNode","IntervalSize","isZeroWidth","maxAbs","scaledInterval","MIN_BINARY_EXPONENT","Root","insertContained","tree","isZeroX","isZeroY","SpatialIndex","Quadtree","ensureExtent","collectStats","insertEnv","_minExtent","queryAll","foundItems","posEnv","delX","delY","Boundable","getBounds","ItemBoundable","getItem","_bounds","bounds","PriorityQueue","poll","minItem","_size","reorder","child","AbstractNode","_childBoundables","getChildBoundables","addChildBoundable","childBoundable","computeBounds","BoundablePair","isComposite","expandToQueue","priQ","isComp1","_boundable1","isComp2","_boundable2","expand","isLeaves","nd","bndComposite","bndOther","children","bp","_itemDistance","getBoundable","boundable1","boundable2","itemDistance","AbstractSTRtree","compareDoubles","queryInternal","searchBounds","childBoundables","getIntersectsOp","getNodeCapacity","_nodeCapacity","lastNode","build","removeItem","childToRemove","itemsTree","valuesTree","valuesTreeForNode","valuesTreeForChild","_built","_itemBoundables","boundablesAtLevel","boundables","top","boundable","createHigherLevels","getRoot","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","IntersectsOp","DEFAULT_NODE_CAPACITY","nodeCapacity","ItemDistance","item1","item2","STRtree","centreX","kNearestNeighbors","items","centreY","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","yComparator","minLeafCount","xComparator","nearestNeighbour","itemDist","initBndPair","maxDistance","distanceLowerBound","minPair","bndPair","currentDistance","bnd","bp1","bp2","aBounds","bBounds","geometryTypes","GeoJSONParser","json","JSON","Feature","feature","bbox","FeatureCollection","featureCollection","features","sub","geoJson","shellGeoJson","holeGeoJson","GeoJSONReader","GeoJSONWriter","WKTReader","p2c","OL3Parser","olReference","ol","inject","convertFromPoint","convertFromLineString","convertFromLinearRing","convertFromPolygon","convertFromMultiPoint","convertFromMultiLineString","convertFromMultiPolygon","convertFromCollection","getLinearRings","multiPoint","getPoints","multiLineString","getLineStrings","multiPolygon","getPolygons","getGeometries","convertToPoint","convertToLineString","convertToLinearRing","convertToPolygon","convertToMultiPoint","convertToMultiLineString","convertToMultiPolygon","convertToCollection","geometryCollection","SegmentPointComparator","relativeSign","octant","xSign","ySign","compareValue","compareSign0","compareSign1","SegmentNode","_segmentOctant","_isInterior","isInterior","_segString","segString","segmentOctant","SegmentNodeList","getSplitCoordinates","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","NodedSegmentString","getSegmentOctant","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","pt0","splitn","splitnPts","ptn","Octant","adx","ady","SegmentString","setData","NodableSegmentString","getNodedSubstrings","segStrings","resultEdgelist","ss","getNodeList","_pts","safeOctant","addIntersectionNode","_nodeList","MonotoneChainOverlapAction","overlap","mc2","start2","getLineSegment","_overlapSeg1","_overlapSeg2","computeSelect","mcs","select","_end","_start","computeOverlaps","mco","setId","id","_id","getEndIndex","getStartIndex","getContext","_context","getId","MonotoneChainBuilder","safeStart","getChains","mcList","Noder","computeNodes","SinglePassNoder","setSegmentIntersector","segInt","_segInt","MCIndexNoder","getMonotoneChains","_monoChains","_nodedSegStrings","getIndex","segStr","segChains","_idCounter","inputSegStrings","intersectChains","overlapAction","SegmentOverlapAction","queryChain","overlapChains","testChain","_nOverlaps","ss1","ss2","_si","processIntersections","ScaledNoder","rescale","_scaleFactor","_offsetX","_offsetY","nodedSegmentStrings","roundPts","roundPtsNoDup","isIntegerPrecision","splitSS","_noder","_isScaled","intSegStrings","noder","scaleFactor","IsSimpleOp","isSimpleMultiPoint","mp","_nonSimpleLocation","isSimplePolygonal","isSimpleLinearGeometry","hasClosedEndpointIntersection","graph","endPoints","eiInfo","getNonSimpleLocation","hasNonEndpointIntersection","_isClosedEndpointsInInterior","EndpointInfo","computeSimple","isSimpleGeometryCollection","BufferParameters","bufferDistanceError","quadSegs","alpha","cos","getEndCapStyle","_endCapStyle","isSingleSided","_isSingleSided","setQuadrantSegments","_quadrantSegments","_joinStyle","JOIN_BEVEL","JOIN_MITRE","_mitreLimit","JOIN_ROUND","DEFAULT_QUADRANT_SEGMENTS","getJoinStyle","setJoinStyle","joinStyle","setSimplifyFactor","simplifyFactor","_simplifyFactor","getSimplifyFactor","getQuadrantSegments","setEndCapStyle","endCapStyle","getMitreLimit","setMitreLimit","mitreLimit","setSingleSided","CAP_ROUND","DEFAULT_MITRE_LIMIT","DEFAULT_SIMPLIFY_FACTOR","quadrantSegments","CAP_FLAT","CAP_SQUARE","RightmostEdgeFinder","_minCoord","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","_minDe","_minIndex","pPrev","pNext","orientation","usePrev","_orientedDe","findRightmostEdgeAtNode","star","getRightmostEdge","dirEdgeList","rightmostSide","LinkedList","addLast","removeFirst","shift","BufferSubgraph","clearVisitedEdges","_dirEdgeList","getRightmostCoordinate","_rightMostCoord","computeNodeDepth","startEdge","computeDepths","copySymDepths","computeDepth","outsideDepth","_finder","addReachable","findResultEdges","nodesVisited","nodeQueue","startNode","adjNode","edgeEnv","dirEdge","nodeStack","symNode","getDirectedEdges","EdgeRing","computeRing","_ring","_geometryFactory","_isHole","computePoints","_startDe","isFirstEdge","addPoints","getLinearRing","computeMaxNodeDegree","_maxNodeDegree","getOutgoingDegree","isHole","containsPoint","isShell","getMaxNodeDegree","getShell","deLabel","setShell","toPolygon","holeLR","MinimalEdgeRing","er","MaximalEdgeRing","buildMinimalRings","minEdgeRings","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","PolygonBuilder","sortShellsAndHoles","edgeRings","shellList","freeHoleList","computePolygons","resultPolyList","placeFreeHoles","findEdgeRingContaining","buildMinimalEdgeRings","maxEdgeRings","findShell","placePolygonHoles","_shellList","buildMaximalEdgeRings","dirEdges","testEr","testRing","testEnv","minShell","minEnv","tryShell","tryRing","tryEnv","isContained","shellCount","BufferInputLineSimplifier","simplify","inputLine","distanceTol","simp","isDeletable","i0","_inputLine","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","midIndex","findNextNonDeletedIndex","lastIndex","isMiddleVertexDeleted","_distanceTol","_isDeleted","isShallowConcavity","isAngleToSimplify","_angleOrientation","NUM_PTS_TO_CHECK","collapseLine","INIT","KEEP","OffsetSegmentString","_ptList","COORDINATE_ARRAY_TYPE","addPt","bufPt","isRedundant","addPts","lastPt","_minimimVertexDistance","startPt","last2Pt","setMinimumVertexDistance","minimimVertexDistance","OffsetSegmentGenerator","addNextSegment","addStartPoint","_s0","_s1","_s2","_seg0","computeOffsetSegment","_side","_offset0","_seg1","_offset1","outsideTurn","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","offsetL","offsetR","_bufParams","_segList","addDirectedFillet","squareCapSideOffset","squareCapLOffset","squareCapROffset","addMitreJoin","offset0","offset1","isMitreWithinLimit","mitreRatio","addLimitedMitreJoin","OFFSET_SEGMENT_SEPARATION_FACTOR","addBevelJoin","addCornerFillet","createSquare","addSegments","addFirstSegment","radius","startAngle","endAngle","addLastSegment","initSideSegments","s1","s2","ang0","angDiff","angDiffHalf","midAng","mitreMidAng","mitreDist","bevelDelta","bevelHalfLen","bevelMidX","bevelMidY","bevelMidPt","mitreMidLine","bevelEndLeft","bevelEndRight","totalAngle","nSegs","_filletAngleQuantum","initAngle","currAngleInc","currAngle","offset","sideSign","_hasNarrowConcaveAngle","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","_closingSegLengthFactor","createCircle","_maxCurveSegmentError","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","numInt","hasNarrowConcaveAngle","bufParams","MAX_CLOSING_SEG_LEN_FACTOR","OffsetCurveBuilder","copyCoordinates","getOffsetCurve","isRightSide","posDistance","segGen","getSegGen","computePointCurve","computeOffsetCurve","curvePts","computeSingleSidedBufferCurve","distTol","simplifyTolerance","simp2","simp1","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","lineCoord","getBufferParameters","bufDistance","getRingCurve","SubgraphDepthLocater","findStabbedSegments","stabbingRayLeftPt","stabbedSegments","_subgraphs","bsg","_seg","ds","DepthSegment","_leftDepth","_upwardSeg","orientIndex","compareX","seg0","seg1","compare0","subgraphs","OffsetCurveSetBuilder","curve","_curveBuilder","addCurve","offsetSide","shellCoord","isErodedCompletely","holeCoord","isTriangleErodedCompletely","triangleCoord","bufferDistance","tri","distToCentre","_curveList","getCurves","cwLeftLoc","cwRightLoc","ringCoord","envMinDimension","curveBuilder","EdgeEndStar","getNextCW","_edgeList","iNextCW","propagateSideLabels","startLoc","currLoc","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","checkAreaLabelsConsistent","lastEdgeIndex","startLabel","findIndex","eSearch","_edgeMap","_ptInAreaLocation","computeLabelling","hasDimensionalCollapseEdge","getDegree","insertEdgeEnd","DirectedEdgeStar","getResultAreaEdges","firstOut","incoming","state","_SCANNING_FOR_INCOMING","_resultAreaEdgeList","nextOut","nextIn","_LINKING_TO_OUTGOING","de0","deLast","quad0","updateLabelling","nodeLabel","prevOut","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","currDepth","nextDe","mergeSymLabels","findCoveredLineEdges","eLabel","OverlayNodeFactory","OrientedCoordinateArray","compareOriented","orientation1","orientation2","limit1","limit2","compPt","done1","done2","oca","_orientation","EdgeList","edgeColl","findEdgeIndex","findEqualEdge","matchEdge","_ocaMap","IntersectionAdder","getLineIntersector","numIntersections","numInteriorIntersections","_hasInterior","numProperIntersections","hasInteriorIntersection","BufferBuilder","lLoc","rLoc","convertSegStrings","setWorkingPrecisionModel","_workingPrecisionModel","insertUniqueEdge","existingEdge","existingLabel","labelToMerge","mergeDelta","existingDelta","newDelta","buildSubgraphs","subgraphList","polyBuilder","processedGraphs","subgraph","locater","createSubgraphs","createEmptyResultGeometry","emptyGeom","getNoder","_workingNoder","curveSetBuilder","bufferSegStrList","computeNodedEdges","resultGeom","nodedSegStrings","oldLabel","setNoder","NodingValidator","checkEndPtVertexIntersections","_segStrings","checkInteriorIntersections","ss0","pts0","checkValid","checkCollapses","checkCollapse","HotPixel","intersectsScaled","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersectsToleranceSquare","initCorners","_corner","copyScaled","_p0Scaled","_p1Scaled","_originalPt","pScaled","getSafeEnvelope","_safeEnv","safeTolerance","SAFE_ENV_EXPANSION_FACTOR","intersectsPixelClosure","intersectsLeft","intersectsBottom","addSnappedNode","segIndex","_ptScaled","MonotoneChainSelectAction","selectedSegment","MCIndexPointSnapper","snap","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","isNodeAdded","_isNodeAdded","_parentEdge","_hotPixelVertexIndex","_hotPixel","InteriorIntersectionFinderAdder","_interiorIntersections","getInteriorIntersections","MCIndexSnapRounder","checkCorrectness","inputSegmentStrings","resultSegStrings","nv","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","_pointSnapper","snapPts","snapPt","_pm","BufferOp","bufferOp","gBuf","geomBuf","bufOp","params","precisionScaleFactor","maxPrecisionDigits","envMax","expandByDistance","bufEnvMax","bufEnvPrecisionDigits","minUnitLog10","bufferFixedPrecision","fixedPM","bufBuilder","_resultGeometry","_argGeom","bufferReducedPrecision","precDigits","MAX_PRECISION_DIGITS","_saveException","precisionDigits","sizeBasedScaleFactor","computeGeometry","bufferOriginalPrecision","argPM","CAP_BUTT","PolygonExtracter","_comps","comps","GeometryLocation","isInsideArea","_segIndex","INSIDE_AREA","getGeometryComponent","_component","PointExtracter","ConnectedElementLocationFilter","locations","_locations","DistanceOp","distOp","isWithinDistance","envDist","nearestPoints","computeContainmentDistance","locPtPoly","_terminateDistance","polyGeomIndex","polyGeom","locationsIndex","polys","insideLocs","_minDistanceLocation","locs","ptLoc","computeMinDistanceLinesPoints","locGeom","computeMinDistance","computeFacetDistance","lines0","lines1","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPts","coord0","segClosestPoint","line0","line1","points0","points1","pt1","terminateDistance","EdgeString","forwardDirectedEdges","reverseDirectedEdges","coordinateList","_directedEdges","directedEdge","getEdgeDirection","getLine","getComponentWithVisitedState","visitedState","visited","setMarked","marked","setContext","toEdges","isRemoved","_from","_angle","getDirectionPt","getAngle","getFromNode","setEdge","getToNode","_to","_edgeDirection","from","to","directionPt","edgeDirection","LineMergeDirectedEdge","getOutEdges","_dirEdge","setDirectedEdges","addOutEdge","getDirEdge","fromNode","getOppositeNode","getNextEdge","_outEdges","sortEdges","_sorted","getNextCWEdge","modi","getEdgesBetween","node0","node1","commonEdges","retainAll","_deStar","deStar","LineMergeEdge","_line","findNodesOfDegree","nodesFound","nodeIterator","dirEdgeIterator","_dirEdges","edgeIterator","outEdges","findNode","LineMergeGraph","startCoordinate","endCoordinate","endNode","directedEdge0","directedEdge1","LineMerger","buildEdgeStringsForUnprocessedNodes","buildEdgeStringsStartingAt","buildEdgeStringsForNonDegree2Nodes","buildEdgeStringsForObviousStartNodes","getMergedLineStrings","_mergedLineStrings","_edgeStrings","buildEdgeStringStartingWith","buildEdgeStringsForIsolatedLoops","edgeString","current","BasicSegmentString","InteriorIntersectionFinder","createAllIntersectionsFinder","setFindAllIntersections","createAnyIntersectionFinder","createIntersectionCounter","setKeepIntersections","getInteriorIntersection","_interiorIntersection","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","_isCheckEndSegmentsOnly","getIntersectionSegments","_intSegments","_intersectionCount","getIntersections","_intersections","findAllIntersections","_findAllIntersections","keepIntersections","_keepIntersections","isEndSegPresent","isEndSegment","FastNodingValidator","execute","_isValid","getErrorMessage","intSegs","EdgeNodingValidator","toSegmentStrings","validator","_nv","GeometryCollectionMapper","mapper","mapped","_mapOp","mapOp","LineBuilder","collectLines","opCode","_op","getGraph","collectLineEdge","_lineEdgesList","collectBoundaryTouchEdge","labelIsolatedLine","targetIndex","getArgGeometry","_resultLineList","OverlayOp","isResultOfOp","isCoveredByA","labelIsolatedLines","edgesList","INTERSECTION","ptLocator","PointBuilder","filterCoveredNodeToPoint","isCoveredByLA","_resultPointList","extractNonCoveredResultNodes","LineStringSnapper","snapVertices","srcCoords","_isClosed","srcPt","snapVert","findSnapForVertex","_snapTolerance","snapTo","_srcPts","snapSegments","distinctPtCount","findSegmentIndexToSnap","snapIndex","_allowSnappingToSourceVertices","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","srcLine","snapTolerance","srcPts","GeometrySnapper","snapGeom","snapper0","snapper1","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","fixedSnapTol","minDimension","snapTol","SNAP_PRECISION_FACTOR","snapToSelf","cleanResult","extractTargetCoordinates","snapTrans","SnapTransformer","_srcGeom","snappedGeom","computeSnapTolerance","ringPts","minSegLen","computeMinimumSegmentLength","ptSet","segLen","srcGeom","snapLine","snapper","_isSelfSnap","_snapPts","isSelfSnap","CommonBits","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","numBits","signExpBits","numSignExp","numCommonMostSigMantissaBits","zeroLowerBits","numStr","padStr","bitStr","getBit","nBits","prop","num1","num2","CommonBitsRemover","addCommonBits","trans","Translater","_commonCoord","removeCommonBits","invCoord","getCommonCoordinate","_ccFilter","CommonCoordinateFilter","_commonBitsX","_commonBitsY","xp","yp","SnapOverlayOp","overlayOp","UNION","symDifference","SYMDIFFERENCE","difference","DIFFERENCE","selfSnap","_cbr","remGeom","prepareResult","prepGeom","SnapIfNeededOverlayOp","isSuccess","savedException","GeometryGraphOperation","_arg","setComputationPrecision","_resultPrecisionModel","geom1","gov","geomOv","createEmptyResult","MapOp","resultDimension","dim0","dim1","overlayOpCode","geomFact","loc0","loc1","cancelDuplicateResultEdges","_resultPolyList","resultPointList","resultLineList","opcode","replaceCollapsedEdges","newEdges","updateNodeLabelling","computeOverlay","_resultGeom","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","lineBuilder","pointBuilder","labelIncompleteNode","graphNode","newNode","ni","nodeCount","PolygonizeDirectedEdge","setRing","getRing","PolygonizeEdge","findDirEdgesInRing","startDE","minShellEnv","tryShellRing","tryShellEnv","isIncluded","_isIncluded","_ringPts","_deList","isIncludedSet","_isIncludedSet","isOuterHole","hasShell","getPolygon","isProcessed","_isProcessed","holeER","setIncluded","getOuterHole","adjRing","computeHole","isOuterShell","getLineString","updateIncluded","adjShell","setProcessed","EnvelopeComparator","obj0","obj1","r0","r1","_lowestEdge","PolygonizeGraph","findLabeledEdgeRings","edgeRingStarts","currLabel","getDegreeNonDeleted","deleteAllEdges","computeNextCWEdges","prevDE","outDE","computeNextCCWEdges","firstOutDE","prevInDE","inDE","findIntersectionNodes","intNodes","findEdgeRing","computeDepthParity","iNode","linePts","endPt","nStart","nEnd","deleteCutEdges","cutLines","getEdgeRings","maximalRings","convertMaximalToMinimalEdgeRings","edgeRingList","ringEdges","deleteDangles","nodesToRemove","dangleLines","nodeOutEdges","toNode","Polygonizer","findOuterShells","outerHoleER","extractPolygons","includeAll","polyList","assignHolesToShells","holeList","assignHoleToShell","findDisjointShells","isMoreToScan","polygonize","_extractOnlyPolygonal","_polyList","getInvalidRingLines","_invalidRingLines","findValidRings","validEdgeRingList","invalidRingList","_dangles","_cutEdges","_isCheckingRingsValid","findShellsAndHoles","_holeList","getDangles","getCutEdges","_lineStringAdder","setCheckRingsValid","isCheckingRingsValid","LineStringAdder","extractOnlyPolygonal","EdgeEndBuilder","createEdgeEndForNext","eiCurr","eiNext","createEdgeEndForPrev","computeEdgeEnds","EdgeEndBundle","_edgeEnds","computeLabelOn","foundInterior","computeLabelSide","computeLabelSides","EdgeEndBundleStar","esb","eb","RelateNode","updateIMFromEdges","RelateNodeFactory","RelateComputer","insertEdgeEnds","computeProperIntersectionIM","intersector","dimA","dimB","hasProper","hasProperInterior","labelIsolatedEdges","thisIndex","labelIsolatedEdge","_isolatedEdges","target","computeDisjointIM","computeIntersectionNodes","copyNodesAndLabels","labelIsolatedNodes","eeBuilder","ee0","ee1","labelNodeEdges","labelIntersectionNodes","labelIsolatedNode","ga","gb","_im","arg","RectangleContains","rectangle","rc","isContainedInBoundary","isPointContainedInBoundary","isLineStringContainedInBoundary","isLineSegmentContainedInBoundary","_rectEnv","RectangleLineIntersector","segEnv","isSegUpwards","_diagDown0","_diagDown1","_diagUp0","_diagUp1","rectEnv","ShortCircuitedGeometryVisitor","applyTo","RectangleIntersects","rp","EnvelopeIntersectsVisitor","ecpVisitor","GeometryContainsPointVisitor","_rectangle","riVisitor","RectangleIntersectsSegmentVisitor","_intersects","elementEnv","_containsPoint","rectPt","_rectSeq","checkIntersectionWithLineStrings","testLine","checkIntersectionWithSegments","seq1","_rectIntersector","RelateOp","getIntersectionMatrix","touches","relate","relOp","crosses","_relate","GeometryCombiner","combiner","createList","extractFactory","obj2","extractElements","elems","elemGeom","_skipEmpty","_inputGeoms","PointGeometryUnion","pointGeom","unioner","exteriorCoords","_pointGeom","_otherGeom","ptComp","GeometryExtracter","isOfType","geometryType","Class","clz","toGeometryType","_geometryType","CascadedPolygonUnion","restrictToPolygons","reduceToGeometries","geomTree","unionTree","extractByEnvelope","disjointGeoms","intersectingGeoms","elem","unionOptimized","g0Env","g1Env","combo","unionActual","commonEnv","unionUsingEnvelopeIntersection","_inputPolys","STRTREE_NODE_CAPACITY","itemTree","unionAll","binaryUnion","unionSafe","repeatedUnion","common","disjointPolys","g0Int","g1Int","overallUnion","bufferUnion","gColl","UnaryUnionOp","unionNoOpt","unionWithNull","_polygons","unionPoints","ptGeom","unionLines","lineGeom","unionPolygons","unionLA","ConnectedInteriorTester","findDifferentPoint","visitInteriorRing","intDe","visitLinkedDirectedEdges","visitShellInteriors","_disconnectedRingcoord","setInteriorEdgesInResult","startDe","buildEdgeRings","hasUnvisitedShellEdge","isInteriorsConnected","_geomGraph","RelateNodeGraph","nodeIt","eeList","edgeIt","ConsistentAreaTester","isNodeEdgeAreaLabelsConsistent","_nodeGraph","hasDuplicateRings","eeb","isNodeConsistentArea","IndexedNestedRingTester","buildIndex","_rings","getNestedPoint","_nestedPt","isNonNested","innerRing","innerRingPts","results","searchRing","searchRingPts","innerRingPt","IsValidOp","findPtNotNode","isInside","_totalEnv","TopologyValidationError","getErrorType","_errorType","getMessage","errMsg","locStr","errorType","ERROR","REPEATED_POINT","HOLE_OUTSIDE_SHELL","NESTED_HOLES","DISCONNECTED_INTERIOR","SELF_INTERSECTION","RING_SELF_INTERSECTION","NESTED_SHELLS","DUPLICATE_RINGS","TOO_FEW_POINTS","INVALID_COORDINATE","RING_NOT_CLOSED","testCoords","searchEdge","isValidOp","checkInvalidCoordinates","_validErr","checkHolesNotNested","nestedTester","innerHole","checkConsistentArea","cat","isValidArea","_parentGeometry","checkShellInsideHole","shellPts","holePts","shellPt","insideHole","holePt","insideShell","checkNoSelfIntersectingRings","checkNoSelfIntersectingRing","checkConnectedInteriors","cit","nodeSet","isFirst","checkHolesInShell","pir","outside","checkTooFewPoints","getValidationError","checkClosedRing","checkClosedRings","_isSelfTouchingRingFormingHoleValid","checkShellsNotNested","setSelfTouchingRingFormingHoleValid","checkShellNotNested","polyShell","insidePolyShell","badNestedPt","parentGeometry","PrecisionReducerCoordinateOperation","reducedCoords","_targetPM","noRepeatedCoordList","noRepeatedCoords","minLength","collapsedCoords","_removeCollapsed","targetPM","removeCollapsed","GeometryPrecisionReducer","reducer","reducePointwise","setPointwise","fixPolygonalTopology","geomToBuffer","_changePrecisionModel","changePM","bufGeom","finalGeom","geomEdit","newFactory","createFactory","finalRemoveCollapsed","reduceGeom","newPM","geomEditor","createEditor","setRemoveCollapsedComponents","inputFactory","setChangePrecisionModel","changePrecisionModel","reducePW","_isPointwise","isPointwise","DouglasPeuckerLineSimplifier","simplifySection","_usePt","DouglasPeuckerSimplifier","tss","setEnsureValid","isEnsureValidTopology","_isEnsureValidTopology","DPTransformer","rawGeom","rawAreaGeom","removeDegenerateRings","simpResult","TaggedLineSegment","getParent","TaggedLineString","segs","addToResult","_resultSegs","asLineString","_parentLine","getResultSize","resultSegsSize","getSegment","_segs","getParentCoordinates","getMinimumSize","_minimumSize","asLinearRing","getSegments","getResultCoordinates","parentLine","minimumSize","LineSegmentIndex","querySeg","LineSegmentVisitor","itemsFound","_querySeg","TaggedLineStringSimplifier","isInLineSection","sectionIndex","flatten","_linePts","newSeg","_outputIndex","hasBadIntersection","candidateSeg","hasBadOutputIntersection","hasBadInputIntersection","isValidToSimplify","worstCaseSize","furthestPtIndex","findFurthestPoint","querySegs","maxDist","midPt","_inputIndex","inputIndex","outputIndex","TaggedLinesSimplifier","taggedLines","tlss","TopologyPreservingSimplifier","_linestringMap","LineStringMapBuilderFilter","_lineSimplifier","LineStringTransformer","taggedLine","linestringMap","minSize","tps","SplitSegment","pointAlongReverse","splitAt","minFrac","_minimumLen","_segLen","_splitPt","actualLen","getConstrainedLength","setMinimumLength","minLen","getSplitPoint","ConstraintSplitPointFinder","findSplitPoint","encroachPt","NonEncroachingSplitPointFinder","projectedSplitPoint","lineSeg","projPt","midPtLen","splitSeg","nonEncroachDiam","maxSplitLen","TrianglePredicate","triArea","isInCircleDDNormalized","bdx","bdy","cdx","cdy","abdet","bcdet","cadet","alift","blift","clift","isInCircle","checkRobustInCircle","nonRobustInCircle","isInCircleNonRobust","isInCircleDD","isInCircleDDSlow","isInCircleCC","circumCentre","toPoint","isInCircleDDFast","aTerm","triAreaDDFast","bTerm","cTerm","pTerm","cc","ccRadius","pRadiusDiff","isInCircleNormalized","triAreaDDSlow","isInCircleRobust","t1","t2","Vertex","ptLen","pz","circleCenter","cab","cbc","hcc","nre","err","dot","magn","getZ","interpolateZValue","xm","ym","zm","crossProduct","setZ","_z","times","cross","classify","sa","BEHIND","BEYOND","ORIGIN","DESTINATION","BETWEEN","circumRadiusRatio","edgeLength","el","ConstraintVertex","getConstraint","_constraint","setOnConstraint","isOnConstraint","_isOnConstraint","setConstraint","constraint","QuadEdge","makeEdge","q0","q3","_rot","base","setOrig","setDest","oPrev","lNext","rot","beta","t3","t4","connect","equalsNonOriented","qe","equalsOriented","toLineSegment","_vertex","dNext","lPrev","rPrev","invRot","delete","rNext","isLive","getPrimary","dPrev","IncrementalDelaunayTriangulator","insertSite","_subdiv","isVertexOfEdge","isOnEdge","insertSites","vertices","_isUsingTolerance","subdiv","getTolerance","QuadEdgeLocator","LastFoundQuadEdgeLocator","_lastEdge","locateFromEdge","LocateFailureException","msgWithSpatial","TriangleVisitor","triEdges","QuadEdgeSubdivision","getTriangleEdges","startQE","triEdge","getTriangleVertices","includeFrame","TriangleVertexListVisitor","visitTriangles","isFrameVertex","_frameVertex","_quadEdges","getVoronoiCellPolygon","cellPts","cellPoly","setLocator","locator","_locator","initSubdiv","ea","ec","isFrameBorderEdge","leftTri","rightTri","vLeftTriOther","vRightTriOther","triVisitor","_visitedKey","edgeStack","_startingEdge","visitedEdges","fetchTriangleToVisit","isFrameEdge","_edgeCoincidenceTolerance","_frameEnv","createFrame","getTriangleCoordinates","TriangleCoordinatesVisitor","getTriangles","getVertices","vd","curr","edgeCount","isFrame","_triEdges","quadEdges","getPrimaryEdges","getVertexUniqueEdges","visitedVertices","qd","TriangleEdgesListVisitor","priQE","eSym","eRot","eRotSym","iter","maxIter","getVoronoiCellPolygons","TriangleCircumcentreVisitor","cells","getVoronoiDiagram","vorCells","triPtsList","tris","triPt","locEdge","ccVertex","_triList","checkTriangleSize","_coordList","_triCoords","EDGE_COINCIDENCE_TOL_FACTOR","Segment","_ls","getEndZ","getStartZ","getStart","getEnd","getEndY","getStartX","getStartY","getEndX","z1","z2","ConformingDelaunayTriangulator","computeVertexEnvelope","getInitialVertices","_initialVertices","getKDT","_kdt","enforceConstraints","addConstraintVertices","splits","enforceGabriel","_segments","MAX_SPLIT_ITER","getVertexFactory","_vertexFactory","getPointArray","_segVertices","setConstraints","segments","segVertices","computeConvexHull","hull","_convexHull","findNonGabrielPoint","segRadius","closestNonGabriel","nextNode","testRadius","testDist","getConstraintSegments","setSplitPointFinder","splitFinder","_splitFinder","segsToInsert","newSegments","segsToRemove","splitVertex","createVertex","insertedVertex","getSubdivision","computeBoundingBox","vertexEnv","allPointsEnv","_computeAreaEnv","setVertexFactory","vertexFactory","formInitialDelaunay","_incDel","kdnode","snappedV","initialVertices","DelaunayTriangulationBuilder","extractUniqueCoordinates","unique","coordsCopy","toVertices","verts","siteEnv","_siteCoords","triangulator","setTolerance","setSites","ConformingDelaunayTriangulationBuilder","createConstraintSegments","constraintSegs","createSiteVertices","_constraintVertexMap","_constraintLines","createVertices","sites","cdt","constraintLines","VoronoiDiagramBuilder","clipGeometryCollection","clipEnv","clipPoly","clipped","_diagramEnv","_clipEnv","getDiagram","setClipEnvelope","LinearLocation","getEndLocation","linear","setToEnd","pointAlongSegmentByFraction","compareLocationValues","componentIndex0","segmentIndex0","segmentFraction0","componentIndex1","segmentIndex1","segmentFraction1","_segmentIndex","getComponentIndex","_componentIndex","isEndpoint","linearGeom","lineComp","nseg","_segmentFraction","toLowest","getSegmentFraction","lastLine","isOnSameSegment","snapToVertex","getSegmentLength","lenToStart","lenToEnd","isVertex","componentIndex","doNormalize","LinearIterator","segmentEndVertexIndex","_currentLine","getVertexIndex","_vertexIndex","getSegmentEnd","loadCurrentLine","_numLines","_linearGeom","getSegmentStart","isEndOfLine","LocationIndexOfPoint","indexOfAfter","minIndex","indexOfFromStart","minComponentIndex","minSegmentIndex","segDistance","candidateComponentIndex","candidateSegmentIndex","endLoc","closestAfter","LocationIndexOfLine","indicesOf","subLine","locPt","subLineLoc","LinearGeometryBuilder","endLine","getLastCoordinate","_lastPt","_ignoreInvalidLines","rawPts","_fixInvalidLines","validCoordinateSequence","setFixInvalidLines","fixInvalidLines","allowRepeatedPoints","setIgnoreInvalidLines","ignoreInvalidLines","validPts","ExtractLineByLocation","computeLinear","computeLine","startSegmentIndex","lastSegmentIndex","newCoordinateArray","LocationIndexedLine","clampIndex","checkGeometryType","extractPoint","indexLow","isValidIndex","extractLine","LengthIndexOfPoint","ptMeasure","segmentStartMeasure","segMeasureToPt","segmentNearestMeasure","projFactor","LengthLocationMap","resolveLower","totalLength","resolveHigher","compIndex","forwardLength","getLocationForward","LengthIndexedLine","positiveIndex","locationOf","locLow","lil","startIndex2","endIndex2","resolveStartLower","UnionOp","coveredBy","within","disjoint","args","intersectionPattern","centPt","interiorPt","toText","writer","version"],"mappings":"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"}